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

[html]  view plain  copy
 print ?
  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 && !empty($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(!empty($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();  
  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.canShowTipaddress ? 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. ?>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "phpcms-后台美化版.zip" 是一个对 PHPCMS 后台界面进行美化的文件压缩包。 PHPCMS 是一个开源的内容管理系统,用于构建和管理网站。然而,PHPCMS 的后台界面通常被认为不够美观和现代化。为了改善用户体验,并提供更好的界面设计,有人开发了这个名为 "phpcms-后台美化版.zip" 的文件。 这个美化版的压缩包包含了一套美化后的后台界面样式,可以替代原始 PHPCMS 的后台界面样式。你可以将这些文件解压并替换原始的后台样式文件,然后重新加载 PHPCMS 后台界面,即可享受到全新的设计和用户界面。这些新的样式可能会改变后台界面的布局、颜色、图标等,以提供更美观和易用的界面。 使用这个美化版的好处是它能够为用户带来更好的使用体验,使得 PHPCMS 的后台管理更加舒适和高效。美化后的界面通常会采用现代化的设计元素,例如扁平化风格、响应式布局和友好的用户交互。这样的改进能够提升用户对 PHPCMS 后台功能的使用欲望,并帮助用户更方便地管理和维护网站。 总之,"phpcms-后台美化版.zip" 提供了一种改进 PHPCMS 后台界面的方式,使其更加美观和现代化,从而提升用户体验和管理效率。 ### 回答2: "phpcms-后台美化版.zip" 是一个经过美化和定制的 phpCMS 后台界面的压缩文件phpCMS 是一个流行的开源内容管理系统,它提供了一个功能强大的后台管理界面,用于创建、编辑和管理网站的内容。 这个美化版的后台界面通过优化布局、色彩、图标等元素,使它更加美观、易用和符合现代设计的风格。这些改进主要是为了提高用户的使用体验,并使得后台管理更加高效和便捷。 美化版后台界面还可能包含一些额外的功能增强,以提供更好的操作和管理选项。例如,可以增加快速导航菜单、个性化主题设置、界面语言选择等功能。这些增强功能可以根据用户的需求进行定制和调整,以满足不同用户的使用习惯和喜好。 使用这个美化版后台界面,网站管理员可以更轻松地管理和维护网站的内容。他们可以通过直观且易于导航的界面,轻松访问和编辑文章、页面、分类等内容。同时,他们还可以方便地上传和管理网站所需的图片、附件和多媒体文件。这些改进都有助于提高管理员的工作效率和任务完成速度。 总而言之,"phpcms-后台美化版.zip" 提供了一个通过改进和定制后的 phpCMS 后台界面,使得网站管理员可以更加方便、高效地管理和维护网站的内容。这样的美化版后台界面可以提升用户的使用体验,并提供更好的操作和管理选项。 ### 回答3: "phpcms-后台美化版.zip" 是一个经过美化的 phpCMS 后台模板文件压缩包。phpCMS 是一个基于 PHP内容管理系统,用于构建网站和管理网站内容。而这个美化版的后台模板则是对原本的 phpCMS 后台界面进行了个性化、美化的设计。 这个美化版的后台模板主要涉及到界面布局、颜色搭配、图标等方面的改变,旨在提升用户体验和界面美观度。它可能会包含更加简洁、清晰的界面设计,更加合理的布局结构,以及更加符合现代审美趋势的颜色和图标选择。这样一来,用户在使用phpCMS后台时,能够更加轻松、愉快地进行操作,提高了工作效率。 使用这个美化版的后台模板,首先需要将zip文件解压缩,得到对应的文件格式。然后,根据它提供的安装说明,将其中的模板文件替换原本的 phpCMS 后台模板文件即可。一般来说,这个过程比较简单,即可实现美化版后台模板的安装和应用。 使用这个美化版的后台模板有一些好处。首先,它可以提升用户的工作体验,使得使用 phpCMS 后台的过程更加舒适、高效。其次,美化版的后台模板可以使得整个网站的界面风格更加统一、专业,提升整体的用户体验度。最后,美化版的后台模板还可以根据个人需求进行自定义,可以根据不同网站的风格和需求,进行相应的样式修改和优化。 总之,"phpcms-后台美化版.zip" 提供了一个美化后台模板,可以让 phpCMS 后台界面更加优雅、美观,提升用户的使用体验和整体网站的品质。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值