site.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. <?php
  2. defined('IN_PHPCMS') or exit('No permission resources.');
  3. pc_base::load_app_class('admin', 'admin', 0);
  4. class site extends admin {
  5. private $db;
  6. public function __construct() {
  7. $this->db = pc_base::load_model('site_model');
  8. parent::__construct();
  9. }
  10. public function init() {
  11. $total = $this->db->count();
  12. $page = isset($_GET['page']) && intval($_GET['page']) ? intval($_GET['page']) : 1;
  13. $pagesize = 20;
  14. $offset = ($page - 1) * $pagesize;
  15. $list = $this->db->select('', '*', $offset.','.$pagesize);
  16. $pages = pages($total, $page, $pagesize);
  17. $show_dialog = true;
  18. $big_menu = array('javascript:window.top.art.dialog({id:\'add\',iframe:\'?m=admin&c=site&a=add\', title:\''.L('add_site').'\', width:\'700\', height:\'500\', 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('add_site'));
  19. include $this->admin_tpl('site_list');
  20. }
  21. public function add() {
  22. header("Cache-control: private");
  23. if (isset($_GET['show_header'])) $show_header = 1;
  24. if (isset($_POST['dosubmit'])) {
  25. $name = isset($_POST['name']) && trim($_POST['name']) ? trim($_POST['name']) : showmessage(L('site_name').L('empty'));
  26. $dirname = isset($_POST['dirname']) && trim($_POST['dirname']) ? strtolower(trim($_POST['dirname'])) : showmessage(L('site_dirname').L('empty'));
  27. $domain = isset($_POST['domain']) && trim($_POST['domain']) ? trim($_POST['domain']) : '';
  28. $site_title = isset($_POST['site_title']) && trim($_POST['site_title']) ? trim($_POST['site_title']) : '';
  29. $keywords = isset($_POST['keywords']) && trim($_POST['keywords']) ? trim($_POST['keywords']) : '';
  30. $description = isset($_POST['description']) && trim($_POST['description']) ? trim($_POST['description']) : '';
  31. $release_point = isset($_POST['release_point']) ? $_POST['release_point'] : '';
  32. $template = isset($_POST['template']) && !empty($_POST['template']) ? $_POST['template'] : showmessage(L('please_select_a_style'));
  33. $default_style = isset($_POST['default_style']) && !empty($_POST['default_style']) ? $_POST['default_style'] : showmessage(L('please_choose_the_default_style'));
  34. if ($this->db->get_one(array('name'=>$name), 'siteid')) {
  35. showmessage(L('site_name').L('exists'));
  36. }
  37. if (!preg_match('/^\\w+$/i', $dirname)) {
  38. showmessage(L('site_dirname').L('site_dirname_err_msg'));
  39. }
  40. if ($this->db->get_one(array('dirname'=>$dirname), 'siteid')) {
  41. showmessage(L('site_dirname').L('exists'));
  42. }
  43. if (!empty($domain) && !preg_match('/http:\/\/(.+)\/$/i', $domain)) {
  44. showmessage(L('site_domain').L('site_domain_ex2'));
  45. }
  46. if (!empty($domain) && $this->db->get_one(array('domain'=>$domain), 'siteid')) {
  47. showmessage(L('site_domain').L('exists'));
  48. }
  49. if (!empty($release_point) && is_array($release_point)) {
  50. if (count($release_point) > 4) {
  51. showmessage(L('release_point_configuration').L('most_choose_four'));
  52. }
  53. $s = '';
  54. foreach ($release_point as $key=>$val) {
  55. if($val) $s.= $s ? ",$val" : $val;
  56. }
  57. $release_point = $s;
  58. unset($s);
  59. } else {
  60. $release_point = '';
  61. }
  62. if (!empty($template) && is_array($template)) {
  63. $template = implode(',', $template);
  64. } else {
  65. $template = '';
  66. }
  67. $_POST['setting']['watermark_img'] = IMG_PATH.'water/'.$_POST['setting']['watermark_img'];
  68. $setting = trim(array2string($_POST['setting']));
  69. if ($this->db->insert(array('name'=>$name,'dirname'=>$dirname, 'domain'=>$domain, 'site_title'=>$site_title, 'keywords'=>$keywords, 'description'=>$description, 'release_point'=>$release_point, 'template'=>$template,'setting'=>$setting, 'default_style'=>$default_style))) {
  70. $class_site = pc_base::load_app_class('sites');
  71. $class_site->set_cache();
  72. showmessage(L('operation_success'), '?m=admin&c=site&a=init', '', 'add');
  73. } else {
  74. showmessage(L('operation_failure'));
  75. }
  76. } else {
  77. $release_point_db = pc_base::load_model('release_point_model');
  78. $release_point_list = $release_point_db->select('', 'id, name');
  79. $show_validator = $show_scroll = $show_header = true;
  80. $template_list = template_list();
  81. include $this->admin_tpl('site_add');
  82. }
  83. }
  84. public function del() {
  85. $siteid = isset($_GET['siteid']) && intval($_GET['siteid']) ? intval($_GET['siteid']) : showmessage(L('illegal_parameters'), HTTP_REFERER);
  86. if($siteid==1) showmessage(L('operation_failure'), HTTP_REFERER);
  87. if ($this->db->get_one(array('siteid'=>$siteid))) {
  88. if ($this->db->delete(array('siteid'=>$siteid))) {
  89. $class_site = pc_base::load_app_class('sites');
  90. $class_site->set_cache();
  91. showmessage(L('operation_success'), HTTP_REFERER);
  92. } else {
  93. showmessage(L('operation_failure'), HTTP_REFERER);
  94. }
  95. } else {
  96. showmessage(L('notfound'), HTTP_REFERER);
  97. }
  98. }
  99. public function edit() {
  100. $siteid = isset($_GET['siteid']) && intval($_GET['siteid']) ? intval($_GET['siteid']) : showmessage(L('illegal_parameters'), HTTP_REFERER);
  101. if ($data = $this->db->get_one(array('siteid'=>$siteid))) {
  102. if (isset($_POST['dosubmit'])) {
  103. $name = isset($_POST['name']) && trim($_POST['name']) ? trim($_POST['name']) : showmessage(L('site_name').L('empty'));
  104. $dirname = isset($_POST['dirname']) && trim($_POST['dirname']) ? strtolower(trim($_POST['dirname'])) : ($siteid == 1 ? '' :showmessage(L('site_dirname').L('empty')));
  105. $domain = isset($_POST['domain']) && trim($_POST['domain']) ? trim($_POST['domain']) : '';
  106. $site_title = isset($_POST['site_title']) && trim($_POST['site_title']) ? trim($_POST['site_title']) : '';
  107. $keywords = isset($_POST['keywords']) && trim($_POST['keywords']) ? trim($_POST['keywords']) : '';
  108. $description = isset($_POST['description']) && trim($_POST['description']) ? trim($_POST['description']) : '';
  109. $release_point = isset($_POST['release_point']) ? $_POST['release_point'] : '';
  110. $template = isset($_POST['template']) && !empty($_POST['template']) ? $_POST['template'] : showmessage(L('please_select_a_style'));
  111. $default_style = isset($_POST['default_style']) && !empty($_POST['default_style']) ? $_POST['default_style'] : showmessage(L('please_choose_the_default_style'));
  112. if ($data['name'] != $name && $this->db->get_one(array('name'=>$name), 'siteid')) {
  113. showmessage(L('site_name').L('exists'));
  114. }
  115. if ($siteid != 1) {
  116. if (!preg_match('/^\\w+$/i', $dirname)) {
  117. showmessage(L('site_dirname').L('site_dirname_err_msg'));
  118. }
  119. if ($data['dirname'] != $dirname && $this->db->get_one(array('dirname'=>$dirname), 'siteid')) {
  120. showmessage(L('site_dirname').L('exists'));
  121. }
  122. }
  123. if (!empty($domain) && !preg_match('/http:\/\/(.+)\/$/i', $domain)) {
  124. showmessage(L('site_domain').L('site_domain_ex2'));
  125. }
  126. if (!empty($domain) && $data['domain'] != $domain && $this->db->get_one(array('domain'=>$domain), 'siteid')) {
  127. showmessage(L('site_domain').L('exists'));
  128. }
  129. if (!empty($release_point) && is_array($release_point)) {
  130. if (count($release_point) > 4) {
  131. showmessage(L('release_point_configuration').L('most_choose_four'));
  132. }
  133. $s = '';
  134. foreach ($release_point as $key=>$val) {
  135. if($val) $s.= $s ? ",$val" : $val;
  136. }
  137. $release_point = $s;
  138. unset($s);
  139. } else {
  140. $release_point = '';
  141. }
  142. if (!empty($template) && is_array($template)) {
  143. $template = implode(',', $template);
  144. } else {
  145. $template = '';
  146. }
  147. $_POST['setting']['watermark_img'] = 'statics/images/water/'.$_POST['setting']['watermark_img'];
  148. $setting = trim(array2string($_POST['setting']));
  149. $sql = array('name'=>$name,'dirname'=>$dirname, 'domain'=>$domain, 'site_title'=>$site_title, 'keywords'=>$keywords, 'description'=>$description, 'release_point'=>$release_point, 'template'=>$template, 'setting'=>$setting, 'default_style'=>$default_style);
  150. if ($siteid == 1) unset($sql['dirname']);
  151. if ($this->db->update($sql, array('siteid'=>$siteid))) {
  152. $class_site = pc_base::load_app_class('sites');
  153. $class_site->set_cache();
  154. showmessage(L('operation_success'), '', '', 'edit');
  155. } else {
  156. showmessage(L('operation_failure'));
  157. }
  158. } else {
  159. $show_validator = true;
  160. $show_header = true;
  161. $show_scroll = true;
  162. $template_list = template_list();
  163. $setting = string2array($data['setting']);
  164. $setting['watermark_img'] = str_replace('statics/images/water/','',$setting['watermark_img']);
  165. $release_point_db = pc_base::load_model('release_point_model');
  166. $release_point_list = $release_point_db->select('', 'id, name');
  167. include $this->admin_tpl('site_edit');
  168. }
  169. } else {
  170. showmessage(L('notfound'), HTTP_REFERER);
  171. }
  172. }
  173. public function public_name() {
  174. $name = isset($_GET['name']) && trim($_GET['name']) ? (pc_base::load_config('system', 'charset') == 'gbk' ? iconv('utf-8', 'gbk', trim($_GET['name'])) : trim($_GET['name'])) : exit('0');
  175. $siteid = isset($_GET['siteid']) && intval($_GET['siteid']) ? intval($_GET['siteid']) : '';
  176. $data = array();
  177. if ($siteid) {
  178. $data = $this->db->get_one(array('siteid'=>$siteid), 'name');
  179. if (!empty($data) && $data['name'] == $name) {
  180. exit('1');
  181. }
  182. }
  183. if ($this->db->get_one(array('name'=>$name), 'siteid')) {
  184. exit('0');
  185. } else {
  186. exit('1');
  187. }
  188. }
  189. public function public_dirname() {
  190. $dirname = isset($_GET['dirname']) && trim($_GET['dirname']) ? (pc_base::load_config('system', 'charset') == 'gbk' ? iconv('utf-8', 'gbk', trim($_GET['dirname'])) : trim($_GET['dirname'])) : exit('0');
  191. $siteid = isset($_GET['siteid']) && intval($_GET['siteid']) ? intval($_GET['siteid']) : '';
  192. $data = array();
  193. if ($siteid) {
  194. $data = $this->db->get_one(array('siteid'=>$siteid), 'dirname');
  195. if (!empty($data) && $data['dirname'] == $dirname) {
  196. exit('1');
  197. }
  198. }
  199. if ($this->db->get_one(array('dirname'=>$dirname), 'siteid')) {
  200. exit('0');
  201. } else {
  202. exit('1');
  203. }
  204. }
  205. private function check_gd() {
  206. if(!function_exists('imagepng') && !function_exists('imagejpeg') && !function_exists('imagegif')) {
  207. $gd = L('gd_unsupport');
  208. } else {
  209. $gd = L('gd_support');
  210. }
  211. return $gd;
  212. }
  213. }