/** * 推送文章页 * * @param int $id 文章id */ public function articlepush($c_id, $publicdata, $last_html_precent, $html_precent) { set_time_limit(0); $paths = []; $result = $publicdata['result']; $result['navs'] = $this->publicnavs($c_id); $result['index_navs'] = $result['navs']; $customer_info = CustomerInfo::where('cus_id', $this->cus_id)->first(); if ($customer_info->lang == 'en') { $lang['the_last'] = 'The last one'; $lang['the_first'] = 'The first one'; } else { $lang['the_last'] = '已经是最后一篇'; $lang['the_first'] = '已经是第一篇'; } if (is_array($result['navs']) && !empty($result['navs'])) { foreach ($result['navs'] as $nav) { if ($nav['current'] == 1) { $pagenavs = $nav['childmenu']; break; } else { $pagenavs = array(); } } } if (empty($pagenavs)) { $pagenavs = array(); } $result['pagenavs'] = $pagenavs; $result['posnavs'] = $this->getPosNavs($c_id); $result['enlarge'] = 0; $article_type = Classify::where('id', $c_id)->pluck('article_type'); if ($article_type == 1) { //新闻内容 $viewname = 'content-news'; } elseif ($article_type == 2) { //产品内容 $viewname = 'content-product'; $result['enlarge'] = $customer_info->enlarge; if ($result['enlarge'] && $this->type == 'pc') { $result['footscript'] .= '<script type="text/javascript" src="http://swap.5067.org/js/img.js"></script>'; } } else { //跳转404 } $result['article']['category'] = $result['posnavs'][count($result['posnavs']) - 1]; $json_keys = $this->getJsonKey($viewname . '.html'); if (count($json_keys)) { foreach ((array) $json_keys as $key) { $result[$key] = $this->detailList($this->pagedata($key, $publicdata['pagedata'])); } } $articles = Articles::where($this->type . '_show', '1')->where('c_id', $c_id)->where('use_url', '0')->orderBy('is_top', 'desc')->orderBy('sort', 'asc')->orderBy('created_at', 'desc')->get()->toArray(); $content = $publicdata['repleace'][$viewname . '.html']; $content = preg_replace($publicdata['pattern'], $publicdata['repleace'], $content); foreach ((array) $articles as $key => $article) { $the_result = array(); $the_result = $result; $a_moreimg = Moreimg::where('a_id', $article['id'])->get()->toArray(); array_unshift($a_moreimg, array('title' => $article['title'], 'img' => $article['img'])); $images = array(); if (count($a_moreimg)) { $i = 0; foreach ((array) $a_moreimg as $a_img) { $images[$i]['title'] = $a_img['title']; $images[$i]['image'] = $a_img['img'] ? $this->source_dir . 'l/articles/' . $a_img['img'] : ''; $i++; } } $the_result['title'] = $customer_info->title != "" ? $customer_info->title . '-' . $article['title'] : $article['title']; $the_result['keywords'] = $article['keywords'] != "" ? $article['keywords'] : $customer_info->keywords; $the_result['description'] = $article['introduction'] != "" ? $article['introduction'] : $customer_info->description; $the_result['article']['title'] = $article['title']; $the_result['article']['keywords'] = $article['keywords']; $the_result['article']['description'] = $article['introduction']; $the_result['article']['viewcount'] = '<em id="article-viewcount">0</em>'; if (!isset($articles[$key + 1])) { $the_result['article']['next']['title'] = $lang['the_last']; $the_result['article']['next']['link'] = ''; } else { $the_result['article']['next']['title'] = $articles[$key + 1]['title']; $the_result['article']['next']['link'] = $this->domain . '/detail/' . $articles[$key + 1]['id'] . '.html'; } if (!isset($articles[$key - 1])) { $the_result['article']['prev']['title'] = $lang['the_first']; $the_result['article']['prev']['link'] = ''; } else { $the_result['article']['prev']['title'] = $articles[$key - 1]['title']; $the_result['article']['prev']['link'] = $this->domain . '/detail/' . $articles[$key - 1]['id'] . '.html'; } $the_result['article']['image'] = $article['img'] ? $this->source_dir . 'l/articles/' . $article['img'] : ''; $the_result['article']['images'] = $images; $the_result['article']['content'] = preg_replace('/\\/customers\\/' . $this->customer . '/i', '', $article['content']); $the_result['article']['description'] = $article['introduction']; $the_result['article']['pubdate'] = $article['created_at']; $the_result['article']['pubtimestamp'] = strtotime($article['created_at']); //关联文章查询 // $pa = new PhpAnalysis(); // // $pa->SetSource($article['title']); // // //设置分词属性 // $pa->resultType = 2; // $pa->differMax = true; // $pa->StartAnalysis(); // // //获取你想要的结果 // $keywords = $pa->GetFinallyIndex(); // if (count($keywords)) { // $relation_where = ""; // foreach ((array) $keywords as $key => $word) { // $relation_where.="or title like '%$key%' "; // } // $relation_where = ltrim($relation_where, 'or'); // $prefix = Config::get('database.connections.mysql.prefix'); // $related_data = DB::select("select id,title,img as image,introduction,created_at,c_id from {$prefix}article where cus_id={$this->cus_id} and ($relation_where)"); // $related = array(); // if (count($related_data)) { // foreach ((array) $related_data as $val) { // $temp_arr = array(); // $temp_arr['title'] = $val->title; // $temp_arr['description'] = $val->introduction; // $temp_arr['image'] = $this->source_dir . 'l/articles/' . $val->image; // if ($this->showtype == 'preview') { // $temp_arr['link'] = $this->domain . '/detail/' . $val->id; // $temp_arr['category']['link'] = $this->domain . '/category/' . $val->id . '.html'; // } else { // $temp_arr['link'] = $this->domain . '/detail/' . $val->id . '.html'; // $temp_arr['category']['link'] = $this->domain . '/category/' . $val->id . '.html'; // } // $temp_arr['pubdate'] = $val->created_at; // $temp_arr['pubtimestamp'] = strtotime($val->created_at); // $a_c_info = Classify::where('id', $val->c_id)->first(); // $temp_arr['category']['name'] = $a_c_info->name; // $temp_arr['category']['en_name'] = $a_c_info->en_name; // $temp_arr['category']['icon'] = '<i class="iconfont">' . $a_c_info->icon . '</i>'; // $related[] = $temp_arr; // } // } // } $related = array(); for (; count($related) < 6 && count($related) < count($articles);) { $k = rand(0, count($articles) - 1); $related[$k]['link'] = $this->domain . '/detail/' . $articles[$k]['id'] . '.html'; $related[$k]['category']['link'] = $this->domain . '/category/' . $articles[$k]['id'] . '.html'; $related[$k]['title'] = $articles[$k]['title']; $related[$k]['description'] = $articles[$k]['introduction']; $related[$k]['image'] = $articles[$k]['img'] ? $this->source_dir . 'l/articles/' . $articles[$k]['img'] : ''; $related[$k]['pubdate'] = $articles[$k]['created_at']; $related[$k]['pubtimestamp'] = strtotime($articles[$k]['created_at']); $a_c_info = Classify::where('id', $articles[$k]['c_id'])->first(); $related[$k]['category']['name'] = $a_c_info->name; $related[$k]['category']['en_name'] = $a_c_info->en_name; $related[$k]['category']['icon'] = '<i class="iconfont">' . $a_c_info->icon . '</i>'; } $the_result['related'] = $related; $output = $this->pushdisplay($the_result, $content); if (!count($result['footer_navs'])) { $output = preg_replace('/<a href="' . str_replace("/", "\\/", $result['site_url']) . '"( target="_blank")?( )?>首页<\\/a>( )?\\|([\\s]+)?(<br \\/>)?(<br>)?/is', "", $output); $output = preg_replace('/<a href="' . str_replace("/", "\\/", $result['site_url']) . '"( target="_blank")?( )?>Home<\\/a>( )?\\|([\\s]+)?(<br \\/>)?(<br>)?/is', "", $output); } $path = $this->type == 'pc' ? public_path('customers/' . $this->customer . '/detail/' . $article['id'] . '.html') : public_path('customers/' . $this->customer . '/mobile/detail/' . $article['id'] . '.html'); file_put_contents($path, $output); $paths[] = $path; $nowpercent = $last_html_precent + $html_precent; if (floor($nowpercent) !== floor($last_html_precent)) { echo '<div class="prompt">' . floor($nowpercent) . '%</div><script type="text/javascript">refresh(' . floor($nowpercent) . ');</script>'; ob_flush(); flush(); PushQueue::where('pushtime', '<', time() - 60)->delete(); PushQueue::where('cus_id', $this->cus_id)->update(['pushtime' => time()]); } $last_html_precent += $html_precent; } return $paths; }
public function articleInfo() { $id = Input::get('id'); $article = Articles::find($id); $customer = Auth::user()->name; if ($article) { if ($article->img != '') { $img = array(); $img[] = asset("customers/{$customer}/images/l/articles") . '/' . $article->img; $moreimg = Moreimg::where('a_id', $id)->lists('img'); if (count($moreimg)) { foreach ($moreimg as $v) { $img[] = asset("customers/{$customer}/images/l/articles") . '/' . $v; } } $article->img = $img; } $return_msg = array('err' => 0, 'msg' => '', 'data' => $article->toArray()); } else { $return_msg = array('err' => 3001, 'msg' => '该文章不存在'); } return Response::json($return_msg); }
/** * 显示文章页 * * @param int $id 文章id */ public function articlePreview($id) { $article = Articles::find($id); $a_moreimg = Moreimg::where('a_id', $id)->get()->toArray(); array_unshift($a_moreimg, array('title' => $article->title, 'img' => $article->img)); $images = array(); if (count($a_moreimg)) { $i = 0; foreach ($a_moreimg as $a_img) { $images[$i]['title'] = $a_img['title']; $images[$i]['image'] = $this->source_dir . 'l/articles/' . $a_img['img']; $i++; } } $list_id = Articles::where('c_id', $article->c_id)->where($this->type . '_show', '1')->orderBy('is_top', 'desc')->orderBy('created_at', 'desc')->select('id', 'title', 'img', 'introduction', 'created_at')->lists('id'); foreach ($list_id as $key => $val) { $article_prev = NULL; $article_next = NULL; if ($val == $id) { if ($key != 0) { $prev_id = $list_id[$key - 1]; $article_prev = Articles::find($prev_id); } if ($key < count($list_id) - 1) { $next_id = $list_id[$key + 1]; $article_next = Articles::find($next_id); } break; } } $result = $this->pagePublic($article->c_id); foreach ($result['navs'] as $nav) { if ($nav['current'] == 1) { $pagenavs = $nav['childmenu']; break; } else { $pagenavs = []; } } $result['pagenavs'] = $pagenavs; $result['posnavs'] = $this->getPosNavs($article->c_id); $result['title'] = $article->title; $result['keywords'] = $article->keywords; $result['description'] = $article->introduction; $result['article']['title'] = $article->title; $result['article']['keywords'] = $article->keywords; $result['article']['description'] = $article->introduction; $result['article']['viewcount'] = '<em id="article-viewcount">0</em>'; $article_type = Articles::leftJoin('classify', 'classify.id', '=', 'article.c_id')->where('article.id', $id)->pluck('article_type'); if ($article_type == 1) { //新闻内容 $viewname = 'content-news'; } elseif ($article_type == 2) { //产品内容 $viewname = 'content-product'; } else { //跳转404 } //关联文章查询 $pa = new PhpAnalysis(); $pa->SetSource($article->title); //设置分词属性 $pa->resultType = 2; $pa->differMax = true; $pa->StartAnalysis(); //获取你想要的结果 $keywords = $pa->GetFinallyIndex(); if (count($keywords)) { $relation_where = ""; foreach ($keywords as $key => $word) { $relation_where .= "or title like '%{$key}%' "; } $relation_where = ltrim($relation_where, 'or'); $prefix = Config::get('database.connections.mysql.prefix'); $related_data = DB::select("select id,title,img as image,introduction,created_at,c_id from {$prefix}article where cus_id={$this->cus_id} and ({$relation_where})"); $related = array(); if (count($related_data)) { foreach ($related_data as $val) { $temp_arr = []; $temp_arr['title'] = $val->title; $temp_arr['description'] = $val->introduction; $temp_arr['image'] = $this->source_dir . 'l/articles/' . $val->image; if ($this->showtype == 'preview') { $temp_arr['link'] = $this->domain . '/detail/' . $val->id; $temp_arr['category']['link'] = $this->domain . '/category/' . $val->id . '.html'; } else { $temp_arr['link'] = $this->domain . '/detail/' . $val->id . '.html'; $temp_arr['category']['link'] = $this->domain . '/category/' . $val->id . '.html'; } $temp_arr['pubdate'] = $val->created_at; $temp_arr['pubtimestamp'] = strtotime($val->created_at); $a_c_info = Classify::where('id', $val->c_id)->first(); $temp_arr['category']['name'] = $a_c_info->name; $temp_arr['category']['en_name'] = $a_c_info->en_name; $temp_arr['category']['icon'] = '<i class="iconfont">' . $a_c_info->icon . '</i>'; $related[] = $temp_arr; } } } //dd($article_prev); if ($this->showtype == 'preview') { if ($article_next === NULL) { $result['article']['next']['title'] = '已经是最后一篇'; $result['article']['next']['link'] = ''; } else { $result['article']['next']['title'] = $article_next->title; $result['article']['next']['link'] = $this->domain . '/detail/' . $article_next->id; } if ($article_prev === NULL) { $result['article']['prev']['title'] = '已经是第一篇'; $result['article']['prev']['link'] = ''; } else { $result['article']['prev']['title'] = $article_prev->title; $result['article']['prev']['link'] = $this->domain . '/detail/' . $article_prev->id; } $result['article']['image'] = $this->source_dir . 'l/articles/' . $article->img; $result['article']['images'] = $images; $result['article']['content'] = $article->content; } else { if ($article_next === NULL) { $result['article']['next']['title'] = '已经是最后一篇'; $result['article']['next']['link'] = ''; } else { $result['article']['next']['title'] = $article_next->title; $result['article']['next']['link'] = $this->domain . '/detail/' . $article_next->id . '.html'; } if ($article_prev === NULL) { $result['article']['prev']['title'] = '已经是第一篇'; $result['article']['prev']['link'] = ''; } else { $result['article']['prev']['title'] = $article_prev->title; $result['article']['prev']['link'] = $this->domain . '/detail/' . $article_prev->id . '.html'; } $result['article']['image'] = $this->source_dir . 'l/articles/' . $article->img; $result['article']['images'] = $images; $result['article']['content'] = preg_replace('/\\/customers\\/' . $this->customer . '/i', '', $article->content); } $result['article']['description'] = $article->introduction; $result['article']['pubdate'] = $article->created_at; $result['article']['pubtimestamp'] = strtotime($article->created_at); $result['article']['category'] = $result['posnavs'][count($result['posnavs']) - 1]; $result['related'] = $related; $json_keys = $this->getJsonKey($viewname . '.html'); if (count($json_keys)) { foreach ($json_keys as $key) { $result[$key] = $this->detailList($this->pagedata($key)); } } $smarty = new Smarty(); $smarty->setTemplateDir(app_path('views/templates/' . $this->themename)); $smarty->setCompileDir(app_path('storage/views/compile')); $smarty->registerPlugin('function', 'mapExt', array('PrintController', 'createMap')); $smarty->registerPlugin('function', 'shareExt', array('PrintController', 'createShare')); $smarty->assign($result); $smarty->display($viewname . '.html'); //return View::make('templates.'.$this->themename.'.'.$viewname,$result); }