Example #1
0
File: mk.php Project: h3len/Project
 public function build_mk_cache()
 {
     //获取站点信息
     $this->site = $this->pub_config->get_site_first('*', $this->site_id);
     $css_js_filein_tem = true;
     //获取客户端详细信息
     $this->client = $this->pub_config->get_client_first($this->client_type);
     //设置文件生成方式
     $this->page_info['file_mktype'] = $this->site['produce_format'];
     $this->page_info['filename'] = $this->site['indexname'] ? $this->site['indexname'] : 'index';
     $this->page_info['weburl'] = $this->site['site_info']['url'];
     $this->page_info['dir'] = $this->site['site_dir'];
     $this->page_info['custom_content_dir'] = $this->site['custom_content_dir'];
     $this->page_info['custom_content_dir'] = $this->site['custom_content_dir'];
     $this->page_info['tem_material_dir'] = get_site_temdir($this->site);
     $this->page_info['tem_material_url'] = get_site_temurl($this->site);
     //如果有页面id
     if ($this->page_id) {
         $page_type = common::get_page_manage($this->site_id, $this->page_id, 'id');
         $page_type_detail = $page_type[$this->page_id];
         if ($page_type_detail['sign'] == 'special') {
             //查询专题的生成目录
         } else {
             if ($page_type_detail['sign']) {
                 //设置文件生成方式
                 $this->page_info['file_mktype'] = isset($page_type_detail['maketype']) ? $page_type_detail['maketype'] : 1;
                 $this->page_info['filename'] = isset($page_type_detail['colindex']) ? $page_type_detail['colindex'] : 'index';
                 $this->page_info['weburl'] = $page_type_detail['column_domain'];
                 $this->page_info['dir'] .= $page_type_detail['column_dir'];
             }
         }
         //如果有页面数据id,
         if ($this->page_data_id && $page_type_detail['sign'] != 'special') {
             $page_data = common::get_page_data($this->page_id, '', '', '', $page_type_detail, $this->page_data_id);
             $page_data_detail = $page_data['page_data'][0];
             if (!$page_data_detail) {
                 $this->set_error('未取得page_data_id:' . $this->page_id . '_' . $this->page_data_id . var_export($page_data, true) . '详细信息');
             }
             $this->column = $page_data_detail;
             //设置文件生成方式
             if (in_array($this->content_type, $this->content_type_true)) {
                 $this->page_info['file_mktype'] = $page_data_detail['maketype'];
             } else {
                 $this->page_info['file_mktype'] = $page_data_detail['col_con_maketype'];
                 //表示内容正文(目前生成分页正文全文链接有作用)
                 $this->page_info['page_content_type'] = 1;
             }
             //设置文件生成方式
             $this->page_info['filename'] = $page_data_detail['colindex'];
             $this->page_info['weburl'] = $page_data_detail['column_domain'];
             $this->page_info['dir'] .= $page_data_detail['column_dir'];
             $this->page_info['column_dir'] .= $page_data_detail['column_dir'];
             $this->page_info['relate_dir'] .= $page_data_detail['relate_dir'];
         }
     }
     $this->page_info['suffix'] = $this->page_info['file_mktype'] == 1 ? '.html' : '.php';
     //内容页计算出内容的url
     if (in_array($this->content_type, $this->content_type_true)) {
         $this->is_page_content = false;
     }
     //取单元,设有缓存
     if ($this->page_id_c && $this->page_data_id_c) {
         //专题模块查询出该专题详细信息
         include_once ROOT_PATH . 'lib/class/special.class.php';
         $special_obj = new special();
         $this->special_detail = $special_obj->get_special_by_id($this->page_data_id_c);
         //$cell_ret             = common::get_special_cell_list($this->page_data_id_c, $this->template_sign, 0, $this->page_info['tem_material_url'] . '/' . $this->settings['template_name']);
         $cell_ret = common::getTemplateAndCell(0, 0, $this->page_data_id_c, 0, $this->page_info['tem_material_url'] . '/' . $this->settings['template_name'], $this->template_sign);
         if (is_array($this->special_detail) && $this->special_detail) {
             //$this->page_info['column_dir'] .= $this->special_detail['column_dir'];
             $this->page_info['file_mktype'] = $this->special_detail['maketype'];
             $this->page_info['suffix'] = $this->page_info['file_mktype'] == 1 ? '.html' : '.php';
         }
         //表示内容正文(目前生成分页正文全文链接有作用)
         $this->page_info['page_content_type'] = 0;
     } else {
         if ($page_type_detail['sign'] == 'special') {
             //专题模块查询出该专题详细信息
             include_once ROOT_PATH . 'lib/class/special.class.php';
             $special_obj = new special();
             //根据专题子栏目查询出专题
             $this->special_detail = $special_obj->get_mkspecial('', $this->page_data_id);
             //查询出这个专题的发布目录
             if ($this->special_detail && is_array($this->special_detail)) {
                 $this->special_column = $this->special_detail['special_column'];
                 $this->page_info['column_dir'] .= $this->special_detail['column_dir'];
                 $this->page_info['relate_dir'] = $this->special_detail['relate_dir'];
                 $this->page_info['special_dir'] = $this->special_detail['special_dir'];
                 $this->page_info['file_mktype'] = $this->special_detail['maketype'];
                 $this->page_info['filename'] = $this->special_detail['colindex'];
                 $this->page_info['dir'] .= $this->special_detail['column_dir'];
                 $this->page_info['suffix'] = $this->page_info['file_mktype'] == 1 ? '.html' : '.php';
                 $this->page_info['page_type'] = 'special';
                 $this->template_sign = $this->special_detail['template_sign'];
                 $this->column['name'] = $this->special_detail['title'];
                 $this->column['keywords'] = $this->special_detail['keywords'];
                 $this->column['content'] = $this->special_detail['brief'];
                 $this->page_data_id_s = $this->special_detail['id'];
                 $this->content_type_s = $this->page_data_id . 's';
             } else {
                 $this->set_error('未取到专题信息,专题的栏目id:' . $this->page_data_id . ';专题返回数据(get_mkspecial):' . var_export($this->special_detail, true));
             }
             //$cell_ret = common::get_special_cell_list($this->special_detail['id'], $this->template_sign, $this->page_data_id, $this->page_info['tem_material_url'] . '/' . $this->settings['template_name']);
             $cell_ret = common::getTemplateAndCell(0, 0, $this->special_detail['id'], $this->page_data_id, $this->page_info['tem_material_url'] . '/' . $this->settings['template_name'], $this->template_sign);
         } else {
             //$cell_ret = common::get_cell_list($this->site_id, $this->page_id, $this->page_data_id, $this->content_type, $this->template_sign);
             $cell_ret = common::getTemplateAndCell($this->site_id, $this->page_id, $this->page_data_id, $this->content_type, $this->page_info['tem_material_url'] . '/' . $this->settings['template_name']);
         }
     }
     /**
             foreach($cell_ret['default_cell'] as $k=>$v)
             {
        if($v['layout_id'])
        {
            $cell_ret['default_cell'][$k]['id']=$v['id'].'_'.$v['layout_id'];
        }
             }
     */
     //当前使用中的套系标识
     $template_style = $cell_ret['curr_style'] ? $cell_ret['curr_style'] : 'default';
     //当前模板标识
     $template_sign = $cell_ret['template_sign'];
     //获取模板,设有缓存
     if ($this->page_id_c && $this->page_data_id_c || $page_type_detail['sign'] == 'special') {
         foreach ($cell_ret['default_cell'] as $k => $v) {
             if ($v['layout_id']) {
                 $cell_ret['default_cell'][$k]['id'] = $v['id'] . '_' . $v['layout_id'];
             }
         }
         $this->template_set = $cell_ret['template'];
         //$this->template_set = common::get_template_cache($template_sign, $template_style, $this->settings['special_template']['site_id'], $this->page_info['tem_material_url'] . '/' . $this->settings['template_name']);
     } else {
         $this->template_set = $cell_ret['template'];
         //$this->template_set = common::get_template_cache($template_sign, $template_style, $this->site_id, $this->page_info['tem_material_url'] . '/' . $this->settings['template_name']);
     }
     //页面标题关键字描述的插入到模板中
     if (!$this->is_page_content) {
         $this->template_set = template_process($this->template_set, $this->site, $this->column);
     } else {
         $this->template_set = template_process($this->template_set, $this->site, $this->column, true);
     }
     //取出单元用到的数据源,样式
     $this->cell_process($cell_ret);
     //js加入栏目信息到源码中
     $column_detail_codearr = array('id' => $page_data_detail['id'], 'title' => $page_data_detail['name'], 'keywords' => $page_data_detail['keywords']);
     $column_detail_codestr = "\n" . "<script type=\"text/javascript\">var m2o_column=" . json_encode($column_detail_codearr) . ";";
     $m2o_content_detail_codearr = '<?php 
                     $m2o_content_detail_codearr = array(
                     \'id\' => $__info[\'content\'][\'content_id\'],
                     \'title\' => $__info[\'content\'][\'title\'],
                     \'keywords\' => $__info[\'content\'][\'keywords\'],
                     \'bundle_id\' => $__info[\'content\'][\'bundle_id\'],
                     \'module_id\' => $__info[\'content\'][\'module_id\'],
                     \'content_id\' => $__info[\'content\'][\'content_id\'],
                     \'content_fromid\' => $__info[\'content\'][\'content_fromid\'],
                     \'rid\' => $__info[\'content\'][\'rid\'],
                 );
                 echo json_encode($m2o_content_detail_codearr);
                 ?>';
     $column_detail_codestr .= "var m2o_content = '" . $m2o_content_detail_codearr . "';";
     $column_detail_codestr .= "</script>" . "\n";
     $this->template_set = str_ireplace('</head>', $column_detail_codestr . '</head>', $this->template_set);
     //css加载到模板中
     if (!$this->is_page_content) {
         $this->template_set = str_ireplace('</head>', $this->css . "\n" . '</head>', $this->template_set);
         $this->css = '';
     } else {
         //计算js,css路径,外链到模板head中去
         //页面素材域名
         if ($this->page_id_c && $this->page_data_id_c) {
             $mar_dir = $this->page_id_c . '/' . $this->page_data_id_c . '/' . $this->content_type . '/';
             $css_filename = $this->page_id_c . '_' . $this->page_data_id_c . '_' . $this->content_type . '_' . $this->client_type . '.css';
         } else {
             $mar_dir = $this->page_id . '/' . $this->page_data_id . '/' . $this->content_type . '/';
             $css_filename = $this->page_id . '_' . $this->page_data_id . '_' . $this->content_type . '_' . $this->client_type . '.css';
         }
         //计算css路径
         $this->mar_css['mar_css_dir'] = $this->page_info['tem_material_dir'] . '/' . $this->settings['template_name'] . '/' . $mar_dir;
         $this->mar_css['mar_css_filename'] = $css_filename;
         $css_link = '<link  rel="stylesheet" type="text/css" href="' . $this->page_info['tem_material_url'] . '/' . $this->settings['template_name'] . '/' . $mar_dir . $css_filename . '" />';
         $this->template_set = str_ireplace('</head>', $css_link . "\n" . '</head>', $this->template_set);
     }
     //js添加到</body>之前
     if ($this->js) {
         $this->template_set = str_ireplace('</body>', $this->js . "\n" . '</body>', $this->template_set);
         $this->js = '';
     }
     //生成头部文件
     $this->include_head($cell_ret);
     //生成缓存文件
     $this->set_cache();
     //复制数据源缓存到lib/m2o/include
     if (is_dir(CUR_CONF_PATH . 'cache/datasource')) {
         if (!file_copy(CUR_CONF_PATH . 'cache/datasource', CUR_CONF_PATH . 'lib/m2o/include', array())) {
             $this->set_error('模板服务器:' . realpath(CUR_CONF_PATH . 'lib/m2o/include') . '目录不可写');
         }
     }
 }
Example #2
0
 public function create()
 {
     $m_type = intval($this->input['m_type']);
     $this->m_type = $m_type;
     $client_type = isset($this->input['client_type']) ? $this->input['client_type'] : 2;
     $content_mk_num = $this->input['content_mk_num'] ? intval($this->input['content_mk_num']) : 50;
     //每次取的条数
     $page_number = $this->input['page_number'] ? intval($this->input['page_number']) : 0;
     //最多生成多少条数
     $this->mk_count = $page_number;
     $content_mk_num = $page_number < $content_mk_num ? $page_number : $content_mk_num;
     //$min_weight   = ($this->input['min_weight']);
     //$max_weight   = ($this->input['max_weight']);
     $min_publish_time = $this->input['min_publish_time'];
     $max_publish_time = $this->input['max_publish_time'];
     $content_typearr = $this->input['content_typearr'];
     $is_contain_child = intval($this->input['is_contain_child']);
     //0不支持 1支持
     $this->max_page = intval($this->input['max_page']);
     if ($this->input['site_id']) {
         $site_id = intval(str_replace('site', '', $this->input['site_id']));
     }
     switch ($m_type) {
         case 1:
             $content_typestr = 0;
             $site_id = intval(str_replace('site', '', $this->input['siteid']));
             if (!$site_id) {
                 $this->errorOutput('NO_SITE_ID');
             }
             break;
             //生成首页
         //生成首页
         case 2:
             $site_id = intval(str_replace('site', '', $this->input['siteid']));
             if (!$site_id) {
                 $this->errorOutput('NO_SITE_ID');
             }
             include_once ROOT_PATH . 'lib/class/publishconfig.class.php';
             $this->pub_config = new publishconfig();
             $site = $this->pub_config->get_site_first('*', $site_id);
             if (!$site) {
                 $this->errorOutput('NO_SITE_DETAIL');
             }
             $md = get_site_temdir($site);
             $this->mk_material($site_id, $md);
             $this->mk_mode($site_id, $md);
             $this->mk_frame($site_id, $md, rtrim($site['site_dir'], '/') . '/');
             exit;
             //生成素材,基础框架
         //生成素材,基础框架
         case 3:
             $content_typestr = 0;
             $this->max_page = $this->max_page ? $this->max_page : 20;
             //这个地方需要查出这个栏目首页类型是index还是list,来决定content_type的值
             break;
             //生成栏目页,
         //生成栏目页,
         case 4:
             $content_typestr = -2;
             break;
             //生成内容页
         //生成内容页
         case 5:
             $site_id = intval(str_replace('site', '', $this->input['siteid']));
             if (!$site_id) {
                 $this->errorOutput('NO_SITE_ID');
             }
             deleteDir(ROOT_PATH . 'api/publishsys/cache/mkpublish/' . $site_id);
             echo json_encode('1');
             exit;
         case 6:
             //生成内容类型,获取内容类型
             $is_contain_child = 0;
             $this->max_page = 0;
             if (!$content_typearr) {
                 $all_content_type = $this->pub_content->get_all_content_type();
                 $content_typearr = array_keys($all_content_type);
             }
             if (!$content_typearr) {
                 $this->errorOutput('NO_CONTENT_TYPE');
             }
             $content_typestr = implode(',', $content_typearr);
             if ($min_publish_time) {
                 $this->content_param['starttime'] = $min_publish_time;
             }
             if ($max_publish_time) {
                 $this->content_param['endtime'] = $max_publish_time;
             }
             break;
     }
     if ($fid = $this->input['fid']) {
         $fidarr = explode(',', $fid);
         foreach ($fidarr as $k => $v) {
             if (strstr($v, "page_id") !== false) {
                 $page_idstr = str_replace('page_id', '', $v);
                 $get_page = explode($this->settings['separator'], $page_idstr);
             } else {
                 if (strstr($v, "page_data_id") !== false) {
                     $page_data_id = str_replace('page_data_id', '', $v);
                     $get_page = explode($this->settings['separator'], $page_data_id);
                 }
             }
             $page_id = $get_page[0];
             $page_data_id = $get_page[1];
             $mk_arr[$k]['site_id'] = $site_id;
             $mk_arr[$k]['page_id'] = $page_id;
             $mk_arr[$k]['page_data_id'] = intval($page_data_id);
             $mk_arr[$k]['content_type'] = $content_typestr;
             $mk_arr[$k]['client_type'] = $client_type;
         }
     } else {
         $mk_arr[0]['site_id'] = $site_id;
         $mk_arr[0]['page_id'] = 0;
         $mk_arr[0]['page_data_id'] = 0;
         $mk_arr[0]['content_type'] = $content_typestr;
         $mk_arr[0]['client_type'] = $client_type;
     }
     foreach ($mk_arr as $kk => $vv) {
         $this->set_content_mk_num($content_mk_num);
         $this->set_publish_user(trim($this->user['user_name']));
         $this->set_publish_time(TIMENOW);
         //内容参数
         $content_param = array();
         $site_id = $vv['site_id'];
         $page_id = $vv['page_id'];
         $page_data_id = $vv['page_data_id'];
         //			$content_type[] = $vv['content_type'];
         $content_type = explode(',', $vv['content_type']);
         $client_type = $vv['client_type'];
         $page_data_idarr = explode(',', $page_data_id);
         if ($site_id && !$page_id) {
             if ($is_contain_child) {
                 /*                     * 发布子级 */
                 //查出站点下的页面类型
                 $page_type = $this->pub_sys->get_page_manage($site_id);
                 if (is_array($page_type) && $page_type) {
                     $this->mk_plan_page_type($content_type, $page_type, $is_contain_child, $client_type);
                 }
             } else {
                 /*                     * 不发布子级 */
                 foreach ($content_type as $k => $v) {
                     $this->set_sqlarr($site_id, 0, 0, $v, $client_type, '站点首页');
                 }
             }
         }
         if ($page_id && (count($page_data_idarr) == 1 && !$page_data_idarr[0])) {
             //判断站点有没有,如有,是不是站点包含子级生成发布过了
             //				if($site_id && $is_contain_child)
             //				{
             //					break;
             //				}
             $page_type = $this->pub_sys->get_page_by_id($page_id, 1);
             if (is_array($page_type) && $page_type) {
                 $this->mk_plan_page_type($content_type, $page_type, $is_contain_child, $client_type);
             }
         }
         if ($page_data_idarr && (count($page_data_idarr) != 1 || $page_data_idarr[0])) {
             //判断站点有没有,如有,是不是站点包含子级生成发布过了
             //				if($site_id && $is_contain_child)
             //				{
             //					break;
             //				}
             $page_type = $this->pub_sys->get_page_by_id($page_id, 1, 'id');
             if ($page_type && is_array($page_type)) {
                 foreach ($page_data_idarr as $k => $v) {
                     //					$page_id;#!!!!!
                     $page_data_id = $v;
                     if ($this->m_type != 6) {
                         $page_data = $this->pub_sys->get_page_data($page_id, '', '', '', $page_type[$page_id], $page_data_id);
                         $page_data_detail = $page_data['page_data'][0];
                         $content_type = array();
                         if (is_array($page_data_detail)) {
                             if ($page_data_detail['column_file'] == 'list') {
                                 $content_type[] = -1;
                             } else {
                                 $content_type[] = 0;
                             }
                         } else {
                             $content_type[] = 0;
                         }
                     }
                     foreach ($content_type as $kk => $vv) {
                         $this->set_sqlarr($page_type[$page_id]['site_id'], $page_id, $page_data_id, $vv, $client_type, $page_data_detail['name']);
                     }
                     if ($is_contain_child) {
                         $this->mk_plan_page_data($content_type, $page_type[$page_id], $page_data_id, $is_contain_child, $client_type);
                     }
                 }
             }
         }
     }
     //入库
     if ($this->sqlarr) {
         $this->obj->insert_plan($this->sqlarr);
     }
 }