1. 程式人生 > >【phpcms-v9】category.php檔案分析-新增欄目

【phpcms-v9】category.php檔案分析-新增欄目

[html] view plain copy  print?
  1. <?php
  2. //路徑:phpcms/modules/admin/category.php控制器,主要用來完成欄目相關的操作  
  3. defined('IN_PHPCMS') or exit('No permission resources.');           //防止惡意訪問  
  4. pc_base::load_app_class('admin','admin',0);                         //載入admin模組下的admin.class.php類庫檔案  
  5. class category extends admin {  
  6.     private $db;                                                    //代表當前category_model類的例項化物件  
  7.     public $siteid;  
  8.     function __construct() {  
  9.         parent::__construct();                                      //父類的建構函式,即:admin.class.php類的建構函式  
  10.         $this->db = pc_base::load_model('category_model');           //載入 category_model  
  11.         $this->siteid = $this->get_siteid();                      //獲取當前的站點ID,父類方法  
  12.     }  
  13.     /**  
  14.      * 管理欄目  
  15.      */  
  16.     public function init () {  
  17.         $show_pc_hash = '';  
  18.         $tree = pc_base::load_sys_class('tree');            //載入系統通用的樹型類,可以生成任何樹型結構,返回一個樹類的例項化物件  
  19.         $models
     = getcache('model','commons');              //獲取"caches/caches_commons/caches_data/model.cache.php"中快取的模型相關資料  
  20.         $sitelist = getcache('sitelist','commons');         //獲取"caches/caches_commons/caches_data/sitelist.cache.php"中快取資料  
  21.         $category_items = array();                          //定義一個數組  
  22.         foreach ($models as $modelid=>$model) {              //模型id=>模型資訊(模型:文章模型、下載模型、圖片模型)  
  23.             //$modelid:模型id  
  24.             $category_items[$modelid] = getcache('category_items_'.$modelid,'commons');//當前模型id下所有欄目是否有子欄目,1-有 0-沒有  
  25.         }  
  26.         $tree->icon = array('   │ ','   ├─ ','   └─ ');//樹形圖示  
  27.         $tree->nbsp = '   ';                                                          //三個空格  
  28.         $categorys = array();  
  29.         //讀取快取  
  30.         $result = getcache('category_content_'.$this->siteid,'commons');//當前站點ID下所有欄目的詳細配置資訊  
  31.         $show_detail = count($result) <500 ? 1 : 0;                 //如果快取檔案中的分類數量小於500,則$show_detail=1
  32.         $parentid = $_GET['parentid'] ? intval($_GET['parentid']) : 0;  //此時$parentid=0,代表頂級分類  
  33.         $html_root = pc_base::load_config('system','html_root');        //生成靜態檔案的路徑 ,預設為"/html"  
  34.         //0-內部欄目、1-<fontcolor="blue">單網頁</font> 、2-<fontcolor="red">外部連結</font>
  35.         $types = array(0 => L('category_type_system'),1 => L('category_type_page'),2 => L('category_type_link'));  
  36.         if(!empty($result)) {  
  37.             foreach($result as $r) {  
  38.                 $r['modelname'] = $models[$r['modelid']]['name'];       //空、文章模型、下載模型、圖片模型  
  39.                 $r['str_manage'] = '';  
  40.                 if(!$show_detail) {  
  41.                     if($r['parentid']!=$parentid) continue;  
  42.                     $r['parentid'] = 0;  
  43.                     $r['str_manage'] .'<a href="?m=admin&c=category&a=init&parentid='.$r['catid'].'&menuid='.$_GET['menuid'].'&s='.$r['type'].'&pc_hash='.$_SESSION['pc_hash'].'">'.L('manage_sub_category').'</a> | ';  
  44.                 }  
  45.                 //新增子欄目的url連結       $r['type']:1-單網頁  0-有子欄目的分類  
  46.                 $r['str_manage'] .'<a href="?m=admin&c=category&a=add&parentid='.$r['catid'].'&menuid='.$_GET['menuid'].'&s='.$r['type'].'&pc_hash='.$_SESSION['pc_hash'].'">'.L('add_sub_category').'</a> | ';  
  47.                 //修改、刪除、批量移動 的url連結  
  48.                 $r['str_manage'] .'<a href="?m=admin&c=category&a=edit&catid='.$r['catid'].'&menuid='.$_GET['menuid'].'&type='.$r['type'].'&pc_hash='.$_SESSION['pc_hash'].'">'.L('edit').'</a> | <a href="javascript:confirmurl(\'?m=admin&c=category&a=delete&catid='.$r['catid'].'&menuid='.$_GET['menuid'].'\',\''.L('confirm',array('message'=>addslashes($r['catname']))).'\')">'.L('delete').'</a> | <ahref="?m=admin&c=category&a=remove&catid='.$r['catid'].'&pc_hash='.$_SESSION['pc_hash'].'">'.L('remove','','content').'</a>';  
  49.                 //0-內部欄目、1-單網頁、2-外部連結  
  50.                 $r['typename'] = $types[$r['type']];  
  51.                 //是否在導航顯示:1-顯示   2-不顯示    注意:不顯示時會出現一個不在導航顯示的小圖示  
  52.                 $r['display_icon'] = $r['ismenu'] ? '' : ' <imgsrc ="'.IMG_PATH.'icon/gear_disable.png"title="'.L('not_display_in_menu').'">';  
  53.                 //如果為單網頁或無子分類  
  54.                 if($r['type'] || $r['child']) {  
  55.                     $r['items'] = '';//資料量為空  
  56.                 } else {  
  57.                     //資料量  
  58.                     $r['items'] = $category_items[$r['modelid']][$r['catid']];  
  59.                 }  
  60.                 $r['help'] = '';  
  61.                 //將字串轉換為陣列:$r['setting']-新增分類時的配置項,是一個字串  
  62.                 $setting = string2array($r['setting']);  
  63.                 //訪問:如, 'url' => 'http://zhencms.com/html/dajiafengfan/'  
  64.                 if($r['url']) {  
  65.                     if(preg_match('/^(http|https):\/\//', $r['url'])) {  
  66.                         //分類目錄名稱  
  67.                         $catdir = $r['catdir'];  
  68.                         //是否生成到根目錄  
  69.                         $prefix = $r['sethtml'] ? '' : $html_root;  
  70.                         if($this->siteid==1) {  
  71.                             //分類目錄:"html/父級目錄名稱/當前目錄名稱"  
  72.                             $catdir = $prefix.'/'.$r['parentdir'].$catdir;  
  73.                         } else {  
  74.                             $catdir = $prefix.'/'.$sitelist[$this->siteid]['dirname'].$html_root.'/'.$catdir;  
  75.                         }  
  76.                         if($r['type']==0 && $setting['ishtml'] && strpos($r['url'], '?')===false && substr_count($r['url'],'/')<4) $r['help'] = '<imgsrc="'.IMG_PATH.'icon/help.png"title="'.L('tips_domain').$r['url'].'  
  77. '.L('directory_binding').'  
  78. '.$catdir.'/">';  
  79.