sites.class.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. /**
  3. * 站点对外接口
  4. * @author chenzhouyu
  5. *
  6. */
  7. class sites {
  8. //数据库连接
  9. private $db;
  10. public function __construct() {
  11. $this->db = pc_base::load_model('site_model');
  12. }
  13. /**
  14. * 获取站点列表
  15. * @param string $roleid 角色ID 留空为获取所有站点列表
  16. */
  17. public function get_list($roleid='') {
  18. $roleid = intval($roleid);
  19. if(empty($roleid)) {
  20. if ($data = getcache('sitelist', 'commons')) {
  21. return $data;
  22. } else {
  23. $this->set_cache();
  24. return $this->db->select();
  25. }
  26. } else {
  27. $site_arr = $this->get_role_siteid($roleid);
  28. $sql = "`siteid` in($site_arr)";
  29. return $this->db->select($sql);
  30. }
  31. }
  32. /**
  33. * 按ID获取站点信息
  34. * @param integer $siteid 站点ID号
  35. */
  36. public function get_by_id($siteid) {
  37. return siteinfo($siteid);
  38. }
  39. /**
  40. * 设置站点缓存
  41. */
  42. public function set_cache() {
  43. $list = $this->db->select();
  44. $data = array();
  45. foreach ($list as $key=>$val) {
  46. $data[$val['siteid']] = $val;
  47. $data[$val['siteid']]['url'] = $val['domain'] ? $val['domain'] : pc_base::load_config('system', 'web_path').$val['dirname'].'/';
  48. }
  49. setcache('sitelist', $data, 'commons');
  50. }
  51. /**
  52. * PC标签中调用站点列表
  53. */
  54. public function pc_tag_list() {
  55. $list = $this->db->select('', 'siteid,name');
  56. $sitelist = array(''=>L('please_select_a_site', '', 'admin'));
  57. foreach ($list as $k=>$v) {
  58. $sitelist[$v['siteid']] = $v['name'];
  59. }
  60. return $sitelist;
  61. }
  62. /**
  63. * 按角色ID获取站点列表
  64. * @param string $roleid 角色ID
  65. */
  66. public function get_role_siteid($roleid) {
  67. $roleid = intval($roleid);
  68. if($roleid == 1) {
  69. $sitelists = $this->get_list();
  70. foreach($sitelists as $v) {
  71. $sitelist[] = $v['siteid'];
  72. }
  73. } else {
  74. $sitelist = getcache('role_siteid', 'commons');
  75. $sitelist = $sitelist[$roleid];
  76. }
  77. if(is_array($sitelist))
  78. {
  79. $siteid = implode(',',array_unique($sitelist));
  80. return $siteid;
  81. } else {
  82. showmessage(L('no_site_permissions'),'?m=admin&c=index&a=login');
  83. }
  84. }
  85. }