Server : nginx/1.22.1 System : Linux iZwz9daxib3w3i063fw434Z 3.10.0-1127.19.1.el7.x86_64 #1 SMP Tue Aug 25 17:23:54 UTC 2020 x86_64 User : www ( 1000) PHP Version : 7.2.33 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv Directory : /www/wwwroot/www.jkmold.com/phpcms/modules/admin/ |
<?php defined('IN_PHPCMS') or exit('No permission resources.'); pc_base::load_app_class('admin','admin',0); set_time_limit(0); class linkage extends admin { private $db; function __construct() { parent::__construct(); $this->db = pc_base::load_model('linkage_model'); $this->sites = pc_base::load_app_class('sites'); pc_base::load_sys_class('form', '', 0); $this->childnode = array(); } /** * 联动菜单列表 */ public function init() { $where = array('keyid'=>0); $infos = $this->db->select($where); $big_menu = array('javascript:window.top.art.dialog({id:\'add\',iframe:\'?m=admin&c=linkage&a=add\', title:\''.L('linkage_add').'\', width:\'500\', height:\'220\', lock:true}, function(){var d = window.top.art.dialog({id:\'add\'}).data.iframe;var form = d.document.getElementById(\'dosubmit\');form.click();return false;}, function(){window.top.art.dialog({id:\'add\'}).close()});void(0);', L('linkage_add')); include $this->admin_tpl('linkage_list'); } /** * 添加联动菜单 */ function add() { if(isset($_POST['dosubmit'])) { $info = array(); $info['name'] = isset($_POST['info']['name']) && trim($_POST['info']['name']) ? trim($_POST['info']['name']) : showmessage(L('linkage_not_empty')); $info['description'] = trim($_POST['info']['description']); $info['style'] = trim(intval($_POST['info']['style'])); $info['siteid'] = trim(intval($_POST['info']['siteid'])); $this->db->insert($info); $insert_id = $this->db->insert_id(); if($insert_id){ showmessage(L('operation_success'), '', '', 'add'); } } else { $show_header = true; $show_validator = true; $sitelist = $this->sites->get_list(); foreach($sitelist as $siteid=>$v) { $sitelist[$siteid] = $v['name']; } include $this->admin_tpl('linkage_add'); } } /** * 编辑联动菜单 */ public function edit() { if(isset($_POST['dosubmit'])) { $info = array(); $linkageid = intval($_POST['linkageid']); $info['name'] = isset($_POST['info']['name']) && trim($_POST['info']['name']) ? trim($_POST['info']['name']) : showmessage(L('linkage_not_empty')); $info['description'] = trim($_POST['info']['description']); $info['style'] = trim(intval($_POST['info']['style'])); $info['siteid'] = trim(intval($_POST['info']['siteid'])); $info['setting'] = array2string(array('level'=>intval($_POST['info']['level']))); if($_POST['info']['keyid']) $info['keyid'] = trim($_POST['info']['keyid']); if($_POST['info']['parentid']) $info['parentid'] = trim($_POST['info']['parentid']); $this->db->update($info,array('linkageid'=>$linkageid)); $id = $info['keyid'] ? $info['keyid'] : $linkageid; showmessage(L('operation_success'), '', '', 'edit'); } else { $linkageid = intval($_GET['linkageid']); $info = $this->db->get_one(array('linkageid'=>$linkageid)); extract($info); $setting = string2array($setting); $sitelist = $this->sites->get_list(); foreach($sitelist as $id=>$v) { $sitelist[$id] = $v['name']; } $show_header = true; $show_validator = true; include $this->admin_tpl('linkage_edit'); } } /** * 删除菜单 */ public function delete() { $linkageid = intval($_GET['linkageid']); $keyid = intval($_GET['keyid']); $this->_get_childnode($linkageid); if(is_array($this->childnode)){ foreach($this->childnode as $linkageid_tmp) { $this->db->delete(array('linkageid' => $linkageid_tmp)); } } $this->db->delete(array('keyid' => $linkageid)); $id = $keyid ? $keyid : $linkageid; if(!$keyid)$this->_dlecache($linkageid); showmessage(L('operation_success')); } public function public_cache() { $linkageid = intval($_GET['linkageid']); $this->_cache($linkageid); showmessage(L('operation_success')); } /** * 菜单排序 */ public function public_listorder() { if(!is_array($_POST['listorders'])) return FALSE; foreach($_POST['listorders'] as $linkageid=>$value) { $value = intval($value); $this->db->update(array('listorder'=>$value),array('linkageid'=>$linkageid)); } $id = intval($_POST['keyid']); showmessage(L('operation_success'),'?m=admin&c=linkage&a=init'); } /** * 管理联动菜单子菜单 */ public function public_manage_submenu() { $keyid = isset($_GET['keyid']) && trim($_GET['keyid']) ? trim($_GET['keyid']) : showmessage(L('linkage_parameter_error')); $tree = pc_base::load_sys_class('tree'); $tree->icon = array(' │ ',' ├─ ',' └─ '); $tree->nbsp = ' '; $sum = $this->db->count(array('keyid'=>$keyid)); $sql_parentid = $_GET['parentid'] ? trim($_GET['parentid']) : 0; $where = $sum > 40 ? array('keyid'=>$keyid,'parentid'=>$sql_parentid) : array('keyid'=>$keyid); $result = $this->db->select($where,'*','','listorder ,linkageid'); foreach($result as $areaid => $area){ $areas[$area['linkageid']] = array('id'=>$area['linkageid'],'parentid'=>$area['parentid'],'name'=>$area['name'],'listorder'=>$area['listorder'],'style'=>$area['style'],'mod'=>$mod,'file'=>$file,'keyid'=>$keyid,'description'=>$area['description']); $areas[$area['linkageid']]['str_manage'] = ($sum > 40 && $this->_is_last_node($area['keyid'],$area['linkageid'])) ? '<a href="?m=admin&c=linkage&a=public_manage_submenu&keyid='.$area['keyid'].'&parentid='.$area['linkageid'].'">'.L('linkage_manage_submenu').'</a> | ' : ''; $areas[$area['linkageid']]['str_manage'] .= '<a href="javascript:void(0);" onclick="add(\''.$keyid.'\',\''.new_addslashes($area['name']).'\',\''.$area['linkageid'].'\')">'.L('linkage_add_submenu').'</a> | <a href="javascript:void(0);" onclick="edit(\''.$area['linkageid'].'\',\''.$area['name'].'\',\''.$area['parentid'].'\')">'.L('edit').'</a> | <a href="javascript:confirmurl(\'?m=admin&c=linkage&a=delete&linkageid='.$area['linkageid'].'&keyid='.$area['keyid'].'\', \''.L('linkage_is_del').'\')">'.L('delete').'</a> '; } $str = "<tr> <td align='center' width='80'><input name='listorders[\$id]' type='text' size='3' value='\$listorder' class='input-text-c'></td> <td align='center' width='100'>\$id</td> <td>\$spacer\$name</td> <td >\$description</td> <td align='center'>\$str_manage</td> </tr>"; $tree->init($areas); $submenu = $tree->get_tree($sql_parentid, $str); $big_menu =array('javascript:window.top.art.dialog({id:\'add\',iframe:\'?m=admin&c=linkage&a=public_sub_add&keyid='.$keyid.'\', title:\''.L('linkage_add').'\', width:\'500\', height:\'430\', lock:true}, function(){var d = window.top.art.dialog({id:\'add\'}).data.iframe;var form = d.document.getElementById(\'dosubmit\');form.click();return false;}, function(){window.top.art.dialog({id:\'add\'}).close()});void(0);', L('linkage_add')); include $this->admin_tpl('linkage_submenu'); } /** * 子菜单添加 */ public function public_sub_add() { if(isset($_POST['dosubmit'])) { $info = array(); $info['keyid'] = isset($_POST['keyid']) && trim($_POST['keyid']) ? trim(intval($_POST['keyid'])) : showmessage(L('linkage_parameter_error')); $name = isset($_POST['info']['name']) && trim($_POST['info']['name']) ? trim($_POST['info']['name']) : showmessage(L('linkage_parameter_error')); $info['description'] = trim($_POST['info']['description']); $info['style'] = trim($_POST['info']['style']); $info['parentid'] = trim($_POST['info']['parentid']); $names = explode("\n", trim($name)); foreach($names as $name) { $name = trim($name); if(!$name) continue; $info['name'] = $name; $this->db->insert($info); } if($this->db->insert_id()){ showmessage(L('operation_success'), '', '', 'add'); } } else { $keyid = $_GET['keyid']; $linkageid = $_GET['linkageid']; $list = form::select_linkage($keyid,'0','info[parentid]', 'parentid', L('cat_empty'), $linkageid); $show_validator = true; include $this->admin_tpl('linkage_sub_add'); } } public function ajax_getlist() { $keyid = intval($_GET['keyid']); $datas = getcache($keyid,'linkage'); $infos = $datas['data']; $where_id = isset($_GET['parentid']) ? $_GET['parentid'] : intval($infos[$_GET['linkageid']]['parentid']); $parent_menu_name = ($where_id==0) ? $datas['title'] :$infos[$where_id]['name']; foreach($infos AS $k=>$v) { if($v['parentid'] == $where_id) { $s[]=iconv('gb2312','utf-8',$v['linkageid'].','.$v['name'].','.$v['parentid'].','.$parent_menu_name); } } if(count($s)>0) { $jsonstr = json_encode($s); echo $_GET['callback'].'(',$jsonstr,')'; exit; } else { echo $_GET['callback'].'()';exit; } } /** * 生成联动菜单缓存 * @param init $linkageid */ private function _cache($linkageid) { $linkageid = intval($linkageid); $info = array(); $r = $this->db->get_one(array('linkageid'=>$linkageid),'name,siteid,style,keyid,setting'); $info['title'] = $r['name']; $info['style'] = $r['style']; $info['setting'] = string2array($r['setting']); $info['siteid'] = $r['siteid']; $info['data'] = $this->submenulist($linkageid); setcache($linkageid, $info,'linkage'); return $info; } /** * 删除联动菜单缓存文件 * @param init $linkageid */ private function _dlecache($linkageid) { return delcache($linkageid,'linkage'); } /** * 子菜单列表 * @param unknown_type $keyid */ private function submenulist($keyid=0) { $keyid = intval($keyid); $datas = array(); $where = ($keyid > 0) ? array('keyid'=>$keyid) : ''; $result = $this->db->select($where,'*','','listorder ,linkageid'); if(is_array($result)) { foreach($result as $r) { $arrchildid = $r['arrchildid'] = $this->get_arrchildid($r['linkageid'],$result); $child = $r['child'] = is_numeric($arrchildid) ? 0 : 1; $this->db->update(array('child'=>$child,'arrchildid'=>$arrchildid),array('linkageid'=>$r['linkageid'])); $datas[$r['linkageid']] = $r; } } return $datas; } /** * 获取所属站点 * @param unknown_type $keyid */ private function _get_belong_siteid($keyid) { $keyid = intval($keyid); $info = $this->db->get_one(array('linkageid'=>$keyid)); return $info ? $info['siteid'] : false; } /** * 获取联动菜单子节点 * @param int $linkageid */ private function _get_childnode($linkageid) { $where = array('parentid'=>$linkageid); $this->childnode[] = intval($linkageid); $result = $this->db->select($where); if($result) { foreach($result as $r) { $this->_get_childnode($r['linkageid']); } } } private function _is_last_node($keyid,$linkageid) { $result = $this->db->count(array('keyid'=>$keyid,'parentid'=>$linkageid)); return $result ? true : false; } /** * 返回菜单ID */ public function public_get_list() { $where = array('keyid'=>0); $infos = $this->db->select($where); include $this->admin_tpl('linkage_get_list'); } /** * 获取子菜单ID列表 * @param $linkageid 联动菜单id * @param $linkageinfo */ private function get_arrchildid($linkageid,$linkageinfo) { $arrchildid = $linkageid; if(is_array($linkageinfo)) { foreach($linkageinfo as $linkage) { if($linkage['parentid'] && $linkage['linkageid'] != $linkageid && $linkage['parentid']== $linkageid) { $arrchildid .= ','.$this->get_arrchildid($linkage['linkageid'],$linkageinfo); } } } return $arrchildid; } } ?>