首页 > CMS > PhpCMS > 正文

【phpcms-v9】content_output.class.php文件分析-前台内容详情页显示

2024-09-10 07:15:44
字体:
来源:转载
供稿:网友

【phpcms-v9】content_output.class.php文件分析-前台内容详情页显示数据的过滤

  1. <?php   
  2. //路径:caches/caches_model/caches_data/content_output.class.php   
  3. //在phpcms/modules/content/index.php控制器中的show()方法中会调用content_output类的实例,show()方法主要用来完成前台内容详情页内容的显示   
  4. class content_output {   
  5.     var $fields;   
  6.     var $data;   
  7.    
  8.     function __construct($modelid,$catid = 0,$categorys = array()) {   
  9.         $this->modelid = $modelid;                                   //模型id   
  10.         $this->catid = $catid;                                       //栏目id   
  11.         $this->categorys = $categorys;                               //当前站点下所有栏目的详细配置信息   
  12.         $this->fields = getcache('model_field_'.$modelid,'model');   //当前模型id下所有模型字段详细配置信息   
  13.     }   
  14.     function get($data) {                                           //参数:从数据库中查询到某条记录   
  15.         $this->data = $data;   
  16.         $this->id = $data['id'];                                 //记录id   
  17.         $info = array();   
  18.         foreach($this->fields as $field=>$v) {   
  19.             if(!isset($data[$field])) continue;                     //如果不存在,则跳出本次循环   
  20.             $func = $v['formtype'];                                 //方法名:通过表单类型来获取,作用:主要是对当前表单数据进行过滤等   
  21.             $value = $data[$field];                                 //表单值   
  22.             //如果方法存在,执行方法并返回数据   
  23.             $result = method_exists($this$func) ? $this->$func($field$data[$field]) : $data[$field];   
  24.             if($result !== false) $info[$field] = $result;   
  25.         }   
  26.         return $info;   
  27.     }   
  28.     function editor($field$value) {   
  29.         $setting = string2array($this->fields[$field]['setting']);   
  30.         if($setting['enablekeylink']) {   
  31.             $value = $this->_keylinks($value$setting['replacenum'],$setting['link_mode']);   
  32.         }   
  33.         return $value;   
  34.     }   
  35.     function _base64_encode($t,$str) {   
  36.         return $t."/"".base64_encode($str)."/"";   
  37.     }   
  38.     function _base64_decode($t,$str) {   
  39.         return $t."/"".base64_decode($str)."/"";   
  40.     }   
  41.     function _keylinks($txt$replacenum = '',$link_mode = 1) {   
  42.         $search = "/(alt/s*=/s*|title/s*=/s*)[/"|/'](.+?)[/"|/']/ise";   
  43.         $replace = "/$this->_base64_encode('//1','//2')";   
  44.         $replace1 = "/$this->_base64_decode('//1','//2')";   
  45.         $txt = preg_replace($search$replace$txt);   
  46.         $keywords = $this->data['keywords'];   
  47.         if($keywords$keywords = strpos(',',$keywords) === false ? explode(' ',$keywords) : explode(',',$keywords);   
  48.         if($link_mode && !emptyempty($keywords)) {   
  49.             foreach($keywords as $keyword) {   
  50.                 $linkdatas[] = $keyword;   
  51.             }   
  52.         } else {   
  53.             $linkdatas = getcache('keylink','commons');   
  54.         }   
  55.         if($linkdatas) {   
  56.             $word = $replacement = array();   
  57.             foreach($linkdatas as $v) {   
  58.                 if($link_mode && $keywords) {   
  59.                     $word1[] = '/(?!(<a.*?))' . preg_quote($v'/') . '(?!.*<//a>)/s';   
  60.                     $word2[] = $v;   
  61.                     $replacement[] = '<a href="javascript:;" onclick="show_ajax(this)" class="keylink">'.$v.'</a>';   
  62.                 } else {   
  63.                     $word1[] = '/(?!(<a.*?))' . preg_quote($v[0], '/') . '(?!.*<//a>)/s';   
  64.                     $word2[] = $v[0];                      
  65.                     $replacement[] = '<a href="'.$v[1].'" target="_blank" class="keylink">'.$v[0].'</a>';   
  66.                 }   
  67.             }   
  68.             if($replacenum != '') {   
  69.                 $txt = preg_replace($word1$replacement$txt$replacenum);   
  70.             } else {   
  71.                 $txt = str_replace($word2$replacement$txt);   
  72.             }   
  73.         }   
  74.         $txt = preg_replace($search$replace1$txt);   
  75.         return $txt;   
  76.     }   
  77.         //对title进行过滤   
  78.         function title($field$value) {   
  79.         $value = htmlspecialchars($value);   
  80.         return $value;   
  81.     }   
  82.     function box($field$value) {   
  83.         extract(string2array($this->fields[$field]['setting']));   
  84.         if($outputtype) {   
  85.             return $value;   
  86.         } else {   
  87.             $options = explode("/n",$this->fields[$field]['options']);   
  88.             foreach($options as $_k) {   
  89.                 $v = explode("|",$_k);   
  90.                 $k = trim($v[1]);   
  91.                 $option[$k] = $v[0];   
  92.             }   
  93.             $string = '';   
  94.             switch($this->fields[$field]['boxtype']) {   
  95.                 case 'radio':   
  96.                     $string = $option[$value];   
  97.                 break;   
  98.    
  99.                 case 'checkbox':   
  100.                     $value_arr = explode(',',$value);   
  101.                     foreach($value_arr as $_v) {   
  102.                         if($_v$string .= $option[$_v].' 、';   
  103.                     }   
  104.                 break;   
  105.    
  106.                 case 'select':   
  107.                     $string = $option[$value];   
  108.                 break;   
  109.    
  110.                 case 'multiple':   
  111.                     $value_arr = explode(',',$value);   
  112.                     foreach($value_arr as $_v) {   
  113.                         if($_v$string .= $option[$_v].' 、';   
  114.                     }   
  115.                 break;   
  116.             }   
  117.             return $string;   
  118.         }   
  119.     }   
  120.     function images($field$value) {   
  121.         return string2array($value);   
  122.     }   
  123.     function datetime($field$value) {   
  124.         $setting = string2array($this->fields[$field]['setting']);   
  125.         extract($setting);   
  126.         if($fieldtype=='date' || $fieldtype=='datetime') {   
  127.             return $value;   
  128.         } else {   
  129.             $format_txt = $format;   
  130.         }   
  131.         if(strlen($format_txt)<6) {   
  132.             $isdatetime = 0;   
  133.         } else {   
  134.             $isdatetime = 1;   
  135.         }   
  136.         if(!$value$value = SYS_TIME;   
  137.         $value = date($format_txt,$value);   
  138.         return $value;   
  139.     }   
  140.     function keyword($field$value) {   
  141.         if($value == ''return '';   
  142.         $v = '';   
  143.         if(strpos($value',')===false) {   
  144.             $tags = explode(' '$value);   
  145.         } else {   
  146.             $tags = explode(','$value);   
  147.         }   
  148.         return $tags;   
  149.     }   
  150.     function copyfrom($field$value) {   
  151.         static $copyfrom_array;   
  152.         if(!$copyform_array$copyfrom_array = getcache('copyfrom','admin');   
  153.         if($value && strpos($value,'|')!==false) {   
  154.             $arr = explode('|',$value);   
  155.             $value = $arr[0];   
  156.             $value_data = $arr[1];   
  157.         }   
  158.         if($value_data) {   
  159.             $copyfrom_link = $copyfrom_array[$value_data];   
  160.             if(!emptyempty($copyfrom_array)) {   
  161.                 $imgstr = '';   
  162.                 if($value==''$value = $copyfrom_link['siteurl'];   
  163.                 if($copyfrom_link['thumb']) $imgstr = "<a href='{$copyfrom_link[siteurl]}' target='_blank'><img src='{$copyfrom_link[thumb]}' height='15'></a> ";   
  164.                 return $imgstr."<a href='$value' target='_blank' style='color:#AAA'>{$copyfrom_link[sitename]}</a>";   
  165.             }   
  166.         } else {   
  167.             return $value;   
  168.         }   
  169.     }   
  170.     function groupid($field$value) {   
  171.         if($value$value = explode(',',$value);   
  172.         return $value;   
  173.     }   
  174.     function linkage($field$value) {   
  175.         $setting = string2array($this->fields[$field]['setting']);   
  176.         $datas = getcache($setting['linkageid'],'linkage');   
  177.         $infos = $datas['data'];   
  178.         if($setting['showtype']==1 || $setting['showtype']==3) {   
  179.             $result = get_linkage($value$setting['linkageid'], $setting['space'], $setting['showtype']);   
  180.         } elseif($setting['showtype']==2) {   
  181.             $result = $value;   
  182.         } else {   
  183.             $result = get_linkage($value$setting['linkageid'], $setting['space'], 2);   
  184.         }   
  185.         return $result;   
  186.     }   
  187.    
  188.     function downfile($field$value) {   
  189.         extract(string2array($this->fields[$field]['setting']));   
  190.         $list_str = array();   
  191.         if($value){   
  192.             $value_arr = explode('|',$value);   
  193.             $fileurl = $value_arr['0'];   
  194.             if($fileurl) {   
  195.                 $sel_server = $value_arr['1'] ? explode(',',$value_arr['1']) : '';   
  196.                 $server_list = getcache('downservers','commons');   
  197.                 if(is_array($server_list)) {   
  198.                     foreach($server_list as $_k=>$_v) {   
  199.                         if($value && is_array($sel_server) && in_array($_k,$sel_server)) {   
  200.                             $downloadurl = $_v[siteurl].$fileurl;   
  201.                             if($downloadlink) {   
  202.                                 $a_k = urlencode(sys_auth("i=$this->id&s=$_v[siteurl]&m=1&f=$fileurl&d=$downloadtype&modelid=$this->modelid&catid=$this->catid"'ENCODE', pc_base::load_config('system','auth_key')));   
  203.                                 $list_str[] = "<a href='".APP_PATH."index.php?m=content&c=down&a_k={$a_k}' target='_blank'>{$_v[sitename]}</a>";   
  204.                             } else {   
  205.                                 $list_str[] = "<a href='{$downloadurl}' target='_blank'>{$_v[sitename]}</a>";   
  206.                             }   
  207.                         }   
  208.                     }   
  209.                 }      
  210.                 return $list_str;   
  211.             }   
  212.         }    
  213.     }   
  214.     function downfiles($field$value) {   
  215.         extract(string2array($this->fields[$field]['setting']));   
  216.         $list_str = array();   
  217.         $file_list = string2array($value);   
  218.         if(is_array($file_list)) {   
  219.             foreach($file_list as $_k=>$_v) {       
  220.                 if($_v[fileurl]){   
  221.                     $filename = $_v[filename] ? $_v[filename] : L('click_to_down');   
  222.                     if($downloadlink) {   
  223.                         $a_k = urlencode(sys_auth("i=$this->id&s=&m=1&f=$_v[fileurl]&d=$downloadtype&modelid=$this->modelid&catid=$this->catid"'ENCODE', pc_base::load_config('system','auth_key')));   
  224.                         $list_str[] = "<a href='".APP_PATH."index.php?m=content&c=down&a_k={$a_k}' target='_blank'>{$filename}</a>";   
  225.                     } else {   
  226.                         $list_str[] = "<a href='{$_v[fileurl]}' target='_blank'>{$filename}</a>";   
  227.                     }   
  228.                 }   
  229.             }   
  230.         }   
  231.         return $list_str;          
  232.     }   
  233.     function map($field$value) {   
  234.         $str = '';   
  235.         $setting = string2array($this->fields[$field]['setting']);   
  236.         $setting[width] = $setting[width] ? $setting[width] : '600';   
  237.         $setting[height] = $setting[height] ? $setting[height] : '400';   
  238.         list($lngX$latY,$zoom) = explode('|'$value);   
  239.         if($setting['maptype']==1) {   
  240.             $str = "<script src='http://app.mapabc.com/apis?&t=flashmap&v=2.4&key=$setting[api_key]&hl=zh-CN' type='text/javascript'></script>";   
  241.         } elseif($setting['maptype']==2) {   
  242.             $str = "<script type='text/javascript' src='http://api.map.baidu.com/api?v=1.2&key=$setting[api_key]'></script>";   
  243.         }   
  244.         $str .= '<div id="mapObj" class="view" style="width: '.$setting[width].'px; height:'.$setting[height].'px"></div>';   
  245.         $str .='<script type="text/javascript">';   
  246.         if($setting['maptype']==1) {   
  247.         $str .='   
  248.         var mapObj=null;   
  249.         lngX = "'.$lngX.'";   
  250.         latY = "'.$latY.'";   
  251.         zoom = "'.$zoom.'";   
  252.         var mapOptions = new MMapOptions();   
  253.         mapOptions.toolbar = MConstants.MINI;   
  254.         mapOptions.scale = new MPoint(20,20);     
  255.         mapOptions.zoom = zoom;   
  256.         mapOptions.mapComButton = MConstants.SHOW_NO   
  257.         mapOptions.center = new MLngLat(lngX,latY);   
  258.         var mapObj = new MMap("mapObj", mapOptions);   
  259.         var  maptools = new MMapTools(mapObj);   
  260.         drawPoints();   //Vevb.com 
  261.         ';   
  262.         $str .='   
  263.         function drawPoints(){   
  264.             var markerOption = new MMarkerOptions();   
  265.             var tipOption=new MTipOptions();//添加信息窗口    
  266.             var address = "'.$address.'";   
  267.             tipOption.tipType = MConstants.HTML_BUBBLE_TIP;//信息窗口标题     
  268.             tipOption.title = address;//信息窗口标题     
  269.             tipOption.content = address;//信息窗口内容        
  270.             var markerOption = new MMarkerOptions();           
  271.             markerOption.imageUrl="'.IMG_PATH.'icon/mak.png";          
  272.             markerOption.picAgent=false;      
  273.             markerOption.imageAlign=MConstants.BOTTOM_CENTER;         
  274.             markerOption.tipOption = tipOption;              
  275.             markerOption.canShowTip= address ? true : false;           
  276.             markerOption.dimorphicColor="0x00A0FF";                            
  277.             Mmarker = new MMarker(new MLngLat(lngX,latY),markerOption);   
  278.             Mmarker.id="mark101";   
  279.             mapObj.addOverlay(Mmarker,true)    
  280.         }';   
  281.         } elseif($setting['maptype']==2) {   
  282.             $str .='   
  283.             var mapObj=null;   
  284.             lngX = "'.$lngX.'";   
  285.             latY = "'.$latY.'";   
  286.             zoom = "'.$zoom.'";        
  287.             var mapObj = new BMap.Map("mapObj");   
  288.             var ctrl_nav = new BMap.NavigationControl({anchor:BMAP_ANCHOR_TOP_LEFT,type:BMAP_NAVIGATION_CONTROL_LARGE});   
  289.             mapObj.addControl(ctrl_nav);   
  290.             mapObj.enableDragging();   
  291.             mapObj.enableScrollWheelZoom();   
  292.             mapObj.enableDoubleClickZoom();   
  293.             mapObj.centerAndZoom(new BMap.Point(lngX,latY),zoom);   
  294.             drawPoints();   
  295.             ';   
  296.             $str .='   
  297.             function drawPoints(){   
  298.                 var myIcon = new BMap.Icon("'.IMG_PATH.'icon/mak.png"new BMap.Size(27, 45));   
  299.                 var center = mapObj.getCenter();   
  300.                 var point = new BMap.Point(lngX,latY);   
  301.                 var marker = new BMap.Marker(point, {icon: myIcon});   
  302.                 mapObj.addOverlay(marker);   
  303.             }';    
  304.         }   
  305.         $str .='</script>';   
  306.         return $str;   
  307.     }   
  308.    
  309.  }    
  310. ?>

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表