$parentid,'display'=>1);
if ($site_model && $parentid) {
$where[$site_model] = 1;
}
$result =$menudb->select($where,'*',1000,'listorder ASC');
if($with_self) {
$result2[] = $menudb->get_one(array('id'=>$parentid));
$result = array_merge($result2,$result);
}
//权限检查
if($_SESSION['roleid'] == 1) return $result;
$array = array();
$privdb = pc_base::load_model('admin_role_priv_model');
$siteid = param::get_cookie('siteid');
foreach($result as $v) {
$action = $v['a'];
if(preg_match('/^public_/',$action)) {
$array[] = $v;
} else {
if(preg_match('/^ajax_([a-z]+)_/',$action,$_match)) $action = $_match[1];
$r = $privdb->get_one(array('m'=>$v['m'],'c'=>$v['c'],'a'=>$action,'roleid'=>$_SESSION['roleid'],'siteid'=>$siteid));
if($r) $array[] = $v;
}
}
return $array;
}
/**
* 获取菜单 头部菜单导航
*
* @param $parentid 菜单id
*/
final public static function submenu($parentid = '', $big_menu = false) {
if(empty($parentid)) {
$menudb = pc_base::load_model('menu_model');
$r = $menudb->get_one(array('m'=>ROUTE_M,'c'=>ROUTE_C,'a'=>ROUTE_A));
$parentid = $_GET['menuid'] = $r['id'];
}
$array = self::admin_menu($parentid,1);
$numbers = count($array);
if($numbers==1 && !$big_menu) return '';
$string = '';
$pc_hash = $_SESSION['pc_hash'];
foreach($array as $_value) {
if (!isset($_GET['s'])) {
$classname = ROUTE_M == $_value['m'] && ROUTE_C == $_value['c'] && ROUTE_A == $_value['a'] ? 'class="on"' : '';
} else {
$_s = !empty($_value['data']) ? str_replace('=', '', strstr($_value['data'], '=')) : '';
$classname = ROUTE_M == $_value['m'] && ROUTE_C == $_value['c'] && ROUTE_A == $_value['a'] && $_GET['s'] == $_s ? 'class="on"' : '';
}
if($_value['parentid'] == 0 || $_value['m']=='') continue;
if($classname) {
$string .= "".L($_value['name'])."|";
} else {
$string .= "".L($_value['name'])."|";
}
}
$string = substr($string,0,-14);
return $string;
}
/**
* 当前位置
*
* @param $id 菜单id
*/
final public static function current_pos($id) {
$menudb = pc_base::load_model('menu_model');
$r =$menudb->get_one(array('id'=>$id),'id,name,parentid');
$str = '';
if($r['parentid']) {
$str = self::current_pos($r['parentid']);
}
return $str.L($r['name']).' > ';
}
/**
* 获取当前的站点ID
*/
final public static function get_siteid() {
return get_siteid();
}
/**
* 获取当前站点信息
* @param integer $siteid 站点ID号,为空时取当前站点的信息
* @return array
*/
final public static function get_siteinfo($siteid = '') {
if ($siteid == '') $siteid = self::get_siteid();
if (empty($siteid)) return false;
$sites = pc_base::load_app_class('sites', 'admin');
return $sites->get_by_id($siteid);
}
final public static function return_siteid() {
$sites = pc_base::load_app_class('sites', 'admin');
$siteid = explode(',',$sites->get_role_siteid($_SESSION['roleid']));
return current($siteid);
}
/**
* 权限判断
*/
final public function check_priv() {
if(ROUTE_M =='admin' && ROUTE_C =='index' && in_array(ROUTE_A, array('login', 'init', 'public_card'))) return true;
if($_SESSION['roleid'] == 1) return true;
$siteid = param::get_cookie('siteid');
$action = ROUTE_A;
$privdb = pc_base::load_model('admin_role_priv_model');
if(preg_match('/^public_/',ROUTE_A)) return true;
if(preg_match('/^ajax_([a-z]+)_/',ROUTE_A,$_match)) {
$action = $_match[1];
}
$r =$privdb->get_one(array('m'=>ROUTE_M,'c'=>ROUTE_C,'a'=>$action,'roleid'=>$_SESSION['roleid'],'siteid'=>$siteid));
// 2020年8月20日10:40:42 yf 调整
//获取 站点管理员 的删除栏目权限
if(ROUTE_C == 'category'){
$catid = $_GET['catid'] ? $_GET['catid'] : $_POST['catid'];
//获取角色当前权限设置
pc_base::load_app_class('role_cat', '', 0);
$priv = role_cat::get_roleid($_SESSION['roleid'], $siteid);
if($priv[$catid][$action]) $r = true;
}
// 修改完成
if(!$r) showmessage('您没有权限操作该项','blank');
}
/**
*
* 记录日志
*/
final private function manage_log() {
//判断是否记录
$setconfig = pc_base::load_config('system');
extract($setconfig);
if($admin_log==1){
$action = ROUTE_A;
if($action == '' || strchr($action,'public') || $action == 'init' || $action=='public_current_pos') {
return false;
}else {
$ip = ip();
$log = pc_base::load_model('log_model');
$username = param::get_cookie('admin_username');
$userid = isset($_SESSION['userid']) ? $_SESSION['userid'] : '';
$time = date('Y-m-d H-i-s',SYS_TIME);
$url = '?m='.ROUTE_M.'&c='.ROUTE_C.'&a='.ROUTE_A;
$log->insert(array('module'=>ROUTE_M,'username'=>$username,'userid'=>$userid,'action'=>ROUTE_C, 'querystring'=>$url,'time'=>$time,'ip'=>$ip));
}
}
}
/**
*
* 后台IP禁止判断 ...
*/
final private function check_ip(){
$this->ipbanned = pc_base::load_model('ipbanned_model');
$this->ipbanned->check_ip();
}
/**
* 检查锁屏状态
*/
final private function lock_screen() {
if(isset($_SESSION['lock_screen']) && $_SESSION['lock_screen']==1) {
if(preg_match('/^public_/', ROUTE_A) || (ROUTE_M == 'content' && ROUTE_C == 'create_html') || (ROUTE_M == 'release') || (ROUTE_A == 'login') || (ROUTE_M == 'search' && ROUTE_C == 'search_admin' && ROUTE_A=='createindex')) return true;
showmessage(L('admin_login'),'?m=admin&c=index&a=login');
}
}
/**
* 检查hash值,验证用户数据安全性
*/
final private function check_hash() {
if(preg_match('/^public_/', ROUTE_A) || ROUTE_M =='admin' && ROUTE_C =='index' || in_array(ROUTE_A, array('login'))) {
return true;
}
if(isset($_GET['pc_hash']) && $_SESSION['pc_hash'] != '' && ($_SESSION['pc_hash'] == $_GET['pc_hash'])) {
return true;
} elseif(isset($_POST['pc_hash']) && $_SESSION['pc_hash'] != '' && ($_SESSION['pc_hash'] == $_POST['pc_hash'])) {
return true;
} else {
showmessage(L('hash_check_false'),HTTP_REFERER);
}
}
/**
* 后台信息列表模板
* @param string $id 被选中的模板名称
* @param string $str form表单中的属性名
*/
final public function admin_list_template($id = '', $str = '') {
$templatedir = PC_PATH.DIRECTORY_SEPARATOR.'modules'.DIRECTORY_SEPARATOR.'content'.DIRECTORY_SEPARATOR.'templates'.DIRECTORY_SEPARATOR;
$pre = 'content_list';
$templates = glob($templatedir.$pre.'*.tpl.php');
if(empty($templates)) return false;
$files = @array_map('basename', $templates);
$templates = array();
if(is_array($files)) {
foreach($files as $file) {
$key = substr($file, 0, -8);
$templates[$key] = $file;
}
}
ksort($templates);
return form::select($templates, $id, $str,L('please_select'));
}
}