| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 | <?php/** * 站点对外接口 * @author chenzhouyu * */class sites {	//数据库连接	private $db;	public function __construct() {		$this->db = pc_base::load_model('site_model');	}		/**	 * 获取站点列表	 * @param string $roleid 角色ID 留空为获取所有站点列表	 */	public function get_list($roleid='') {		$roleid = intval($roleid);		if(empty($roleid)) {			if ($data = getcache('sitelist', 'commons')) {				return $data;			} else {				$this->set_cache();				return $this->db->select();			}					} else {			$site_arr = $this->get_role_siteid($roleid);			$sql = "`siteid` in($site_arr)";			return $this->db->select($sql);		}	}		/**	 * 按ID获取站点信息	 * @param integer $siteid 站点ID号	 */	public function get_by_id($siteid) {		return siteinfo($siteid);	}		/**	 * 设置站点缓存	 */	public function set_cache() {		$list = $this->db->select();		$data = array();		foreach ($list as $key=>$val) {			$data[$val['siteid']] = $val;			$data[$val['siteid']]['url'] = $val['domain'] ? $val['domain'] : pc_base::load_config('system', 'web_path').$val['dirname'].'/';		}		setcache('sitelist', $data, 'commons');	}		/**	 * PC标签中调用站点列表	 */	public function pc_tag_list() {		$list = $this->db->select('', 'siteid,name');		$sitelist = array(''=>L('please_select_a_site', '', 'admin'));		foreach ($list as $k=>$v) {			$sitelist[$v['siteid']] = $v['name'];		}		return $sitelist;	}		/**	 * 按角色ID获取站点列表	 * @param string $roleid 角色ID	 */			public function get_role_siteid($roleid) {		$roleid = intval($roleid);		if($roleid == 1) {			$sitelists = $this->get_list();			foreach($sitelists as $v) {				$sitelist[] = $v['siteid'];			}		} else {			$sitelist = getcache('role_siteid', 'commons');			$sitelist = $sitelist[$roleid];		}		if(is_array($sitelist)) 		{			$siteid = implode(',',array_unique($sitelist));			return $siteid;					} else {			showmessage(L('no_site_permissions'),'?m=admin&c=index&a=login');		}	}}
 |