load->model('Information_model'); $this->load->model('infoContents_model'); $this->load->model('infoMetas_model'); $this->load->model('logs_model'); $this->site_code = $this->input->get('site_code') ? $this->input->get('site_code') : $this->config->item('site_code'); header('Access-Control-Allow-Origin: *'); } /** * 根据关键词搜索信息 */ public function list_info_by_keys() { // 防止超时 set_time_limit(0); // json参数 $site = $this->input->get_post('site'); $keys = $this->input->get_post('keys'); $key_arr = explode(',', $keys); // 容错 if ( empty($site) || empty($keys) || mb_stripos($keys, '/') === false ) { echo json_encode([]); return false; } // 关键字信息 $rs = $this->Information_model->list_by_keywords($site, $key_arr); // 调整数据 foreach ($rs as $info) { $key_with_content = []; foreach ($key_arr as $key) { // 链接 $sub_url = mb_stripos($info->ic_url, $key) !== false ? $info->ic_url : ''; if ($sub_url) { $sub_url = str_replace($key, '@@@' . $key . '@@@', $sub_url); $sub_url = explode('@@@', $sub_url); } // 图片 $sub_ic_photo = mb_stripos($info->ic_photo, $key) !== false ? $info->ic_photo : ''; if ($sub_ic_photo) { $sub_ic_photo = str_replace($key, '@@@' . $key . '@@@', $sub_ic_photo); $sub_ic_photo = explode('@@@', $sub_ic_photo); } $limitStr = 100; // 信息内容 $pos_content = 0; $pos_content = mb_stripos($info->ic_content, $key); $sub_content = []; while ($pos_content) { $_str = '[...' . mb_substr($info->ic_content, $pos_content - $limitStr, mb_strlen($key) + $limitStr * 2) . '...]'; $_str = str_replace($key, '@@@' . $key . '@@@', $_str); $_str = explode('@@@', $_str); array_push($sub_content, $_str); $pos_content = mb_stripos($info->ic_content, $key, $pos_content + mb_strlen($key)); } // amp_json $sub_content2 = []; // if ($info->amp_json) { // $pos_content2 = 0; // $pos_content2 = mb_stripos($info->amp_json, $key); // while ($pos_content2) { // $_str = '[...' . mb_substr($info->amp_json, $pos_content2 - $limitStr, mb_strlen($key) + $limitStr * 2) . '...]'; // $_str = str_replace($key, '@@@' . $key . '@@@', $_str); // $_str = explode('@@@', $_str); // array_push($sub_content2, $_str); // $pos_content2 = mb_stripos($info->amp_json, $key, $pos_content2 + mb_strlen($key)); // } // } // amp_body $sub_content3 = []; // if ($info->amp_body) { // $pos_content3 = 0; // $pos_content3 = mb_stripos($info->amp_body, $key); // while ($pos_content3) { // $_str = '[...' . mb_substr($info->amp_body, $pos_content3 - $limitStr, mb_strlen($key) + $limitStr * 2) . '...]'; // $_str = str_replace($key, '@@@' . $key . '@@@', $_str); // $_str = explode('@@@', $_str); // array_push($sub_content3, $_str); // $pos_content3 = mb_stripos($info->amp_body, $key, $pos_content3 + mb_strlen($key)); // } // } if ($sub_url != '' || count($sub_content) != 0 || count($sub_content2) != 0 || count($sub_content3) != 0) { array_push( $key_with_content, [ 'key' => $key, 'sub_url' => $sub_url, 'sub_ic_photo' => $sub_ic_photo, 'sub_content' => $sub_content, 'sub_json' => $sub_content2, 'sub_body' => $sub_content3, ] ); } } $info->ic_content = $key_with_content; unset($info->amp_json); unset($info->amp_body); } echo json_encode($rs); } /** * 更新含有关键的信息 */ public function update_info_by_keys() { // json参数 $site = $this->input->get_post('site'); $keys = $this->input->get_post('keys'); $keyArr = explode('@', $keys); // ic_id@oldurl@newurl@is_id //sleep(2); //echo ($keys); //return true; // 容错1 if ( empty($site) || count($keyArr) != 4 || mb_stripos($keys, '/') === false || mb_stripos($keys, 'undefined') !== false || mb_stripos($keys, 'null') !== false || mb_stripos($keys, '@@') !== false || mb_stripos($keys, '@ @') !== false ) { echo json_encode(['err' => '容错1']); return false; } // 参数解析 $ic_id = $keyArr[0]; $oldStr = $keyArr[1]; $newStr = $keyArr[2]; $is_id = $keyArr[3]; // 容错2 if ( empty($ic_id) || empty($is_id) || empty($newStr) || empty($oldStr) || mb_stripos($newStr, '/') === false || mb_stripos($oldStr, '/') === false ) { echo json_encode(['err' => '容错2']); return false; } // ic_info $ic = $this->infoContents_model->get_ic_contents2($ic_id); if (! empty($ic)) { $ic->ic_content = str_ireplace($oldStr, $newStr, $ic->ic_content); $this->infoContents_model->force_update($ic_id, $ic->ic_content); $ic->ic_url = str_ireplace($oldStr, $newStr, $ic->ic_url); $this->infoContents_model->force_update_url($ic_id, $ic->ic_url); $ic->ic_photo = str_ireplace($oldStr, $newStr, $ic->ic_photo); $this->infoContents_model->force_update_ic_photo($ic_id, $ic->ic_photo); } // amp_json // $meta = $this->infoMetas_model->get($ic_id, 'AMP_JSON'); // if (! empty($meta)) { // $meta = str_ireplace($oldStr, $newStr, $meta); // $this->infoMetas_model->update($ic_id, 'AMP_JSON', $meta); // } // amp_body_pc // $meta = $this->infoMetas_model->get($ic_id, 'AMP_BODY_PC'); // if (! empty($meta)) { // $meta = str_ireplace($oldStr, $newStr, $meta); // $this->infoMetas_model->update($ic_id, 'AMP_BODY_PC', $meta); // } echo json_encode($keyArr); } /** * 无条件获取信息内容 * @param mixed $ic_id */ public function get_by_icid($ic_id) { $ic = $this->infoContents_model->get_ic_contents2($ic_id); $json = json_decode($this->infoMetas_model->get($ic_id, 'AMP_JSON')); $use = $this->infoMetas_model->get($ic_id, 'AMP_BODY_PC_STATUS'); if ($ic) { echo json_encode( [ 'state' => 0, 'ic_url' => $ic->ic_url, 'ic_sitecode' => $ic->ic_sitecode, 'ic_content' => $ic->ic_content, 'pc_use' => $use, 'json' => [], //$json, ] ); } else { echo json_encode( [ 'state' => -1, 'msg' => 'not content by ' . $ic_id, ] ); } } /** * 无条件更新信息内容(上线前内容) */ public function update_by_icid() { $ic_id = $this->input->get_post('ic_id'); $ic_content = $this->input->get_post('ic_content'); $backup = $this->input->get_post('backup'); // 先备份 - 测试时不备份 if ($backup == 'backup') { $is = $this->infoContents_model->get_isid_by_icid($ic_id); $ic = $this->infoContents_model->get_ic_contents2($ic_id); $this->logs_model->backup($is->is_id, $ic->ic_content); } $rs = $this->infoContents_model->force_update($ic_id, $ic_content); echo json_encode(['status' => 1]); } /** * 无条件更新信息内容(上线前内容) */ public function isid_by_icid2() { $ic_id = $this->input->get_post('ic_id'); $is = $this->infoContents_model->get_isid_by_icid($ic_id); if (isset($is->is_id)) { echo json_encode(['status' => 1, 'isid' => $is->is_id]); } else { echo json_encode(['status' => 0, 'isid' => $is->$ic_id]); } } /** * 列举使用旧版构建工具的信息,用于批量替换更新。 * @param mixed $site */ public function list_use_hb() { $site = $this->input->get('site'); $api = $this->input->get('api'); $rs = $this->infoContents_model->list_use_hb($site); if ($api) { $_rs = []; foreach ($rs as $value) { array_push($_rs, [ 'id' => $value->ic_id, 'data' => $value->ic_url, 'status' => 0, ]); } $rs = $_rs; } echo json_encode($rs); } /** * 转化旧版构建工具数据(上线前的准备)- 不使用。 * @param mixed $ic_id */ public function migrate_hb($dev = 'prod') { $ic_id = $this->input->get('id'); // 本地测试参数 $api = 'https://hmk.arachina.com/beta/3733/server_render2'; if ($dev == 'dev') { $api = 'http://127.0.0.1:3733/server_render2'; // sleep(1); } // 请求api $json = $this->infoMetas_model->get($ic_id, 'AMP_JSON'); if (! empty($json)) { // 请求转化服务器 $post_data = 'json=' . urlencode($json); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $api); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); curl_setopt($ch, CURLOPT_TIMEOUT, 120); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //禁止直接显示获取的内容 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $curl_rs = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($curl_rs && ($httpCode == 200 || $httpCode == 201)) { // 先备份 - 测试时不备份 if ($dev != 'dev') { $is = $this->infoContents_model->get_isid_by_icid($ic_id); $ic = $this->infoContents_model->get_ic_contents2($ic_id); $this->logs_model->backup($is->is_id, $ic->ic_content); } // 移除外部包裹标签 $curl_rs = str_replace(['', ''], '', $curl_rs); //cdn域名替换res $curl_rs = str_replace('//cdn.chinahighlights.ru', '//res.chinahighlights.ru', $curl_rs); $curl_rs = str_replace('//cdn.arachina.com', '//res.arachina.com', $curl_rs); $curl_rs = str_replace('//cdn.chinarundreisen.com', '//res.chinarundreisen.com', $curl_rs); $curl_rs = str_replace('//cdn.voyageschine.com', '//res.voyageschine.com', $curl_rs); $curl_rs = str_replace('//cdn.viaje-a-china.com', '//res.viaje-a-china.com', $curl_rs); $curl_rs = str_replace('//cdn.viaggio-in-cina.it', '//res.viaggio-in-cina.it', $curl_rs); // 强制更新信息内容 $this->infoContents_model->force_update($ic_id, $curl_rs); echo json_encode(['status' => 1]); } else { echo json_encode(['status' => -1, 'msg' => 'err1']); } } else { echo json_encode(['status' => -1, 'msg' => 'err2']); } } } //end of infofix