XpressEngine Core  1.11.2
 All Classes Namespaces Files Functions Variables Pages
admin.class.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) NAVER <http://www.navercorp.com> */
3 
12 class admin extends ModuleObject
13 {
14 
15  private $adminMenuName = '__ADMINMENU_V17__';
16  public function getAdminMenuName()
17  {
18  return $this->adminMenuName;
19  }
20 
25  function moduleInstall()
26  {
27  return new BaseObject();
28  }
29 
34  function checkUpdate()
35  {
36  $oDB = DB::getInstance();
37  $oModuleModel = getModel('module');
39  $version_update_id = implode('.', array(__CLASS__, __XE_VERSION__, 'updated'));
40  if($oModuleModel->needUpdate($version_update_id))
41  {
42  if(!$oDB->isColumnExists("admin_favorite", "type"))
43  {
44  return TRUE;
45  }
46 
47  $oModuleController->insertUpdatedLog($version_update_id);
48  }
49 
50  return FALSE;
51  }
52 
57  function moduleUpdate()
58  {
59  $oDB = DB::getInstance();
60  $oModuleModel = getModel('module');
62  $version_update_id = implode('.', array(__CLASS__, __XE_VERSION__, 'updated'));
63  if($oModuleModel->needUpdate($version_update_id))
64  {
65  if(!$oDB->isColumnExists("admin_favorite", "type"))
66  {
67  $oAdminAdminModel = getAdminModel('admin');
68  $output = $oAdminAdminModel->getFavoriteList();
69  $favoriteList = $output->get('favoriteList');
70 
71  $oDB->dropColumn('admin_favorite', 'admin_favorite_srl');
72  $oDB->addColumn('admin_favorite', "admin_favorite_srl", "number", 11, 0);
73  $oDB->addColumn('admin_favorite', "type", "varchar", 30, 'module');
74  if(is_array($favoriteList))
75  {
76  $oAdminAdminController = getAdminController('admin');
77  $oAdminAdminController->_deleteAllFavorite();
78  foreach($favoriteList AS $key => $value)
79  {
80  $oAdminAdminController->_insertFavorite($value->site_srl, $value->module);
81  }
82  }
83  }
84  $oModuleController->insertUpdatedLog($version_update_id);
85  }
86 
87  return new BaseObject();
88  }
89 
94  function recompileCache()
95  {
96 
97  }
98 
99  public function checkAdminMenu()
100  {
101  // for admin menu
103  {
104  $oMenuAdminModel = getAdminModel('menu');
105  $output = $oMenuAdminModel->getMenuByTitle($this->adminMenuName);
106 
107  if(!$output->menu_srl)
108  {
109  $this->createXeAdminMenu();
110  $output = $oMenuAdminModel->getMenuByTitle($this->adminMenuName);
111  }
112  else
113  {
114  if(!is_readable(FileHandler::getRealPath($output->php_file)))
115  {
117  $oMenuAdminController->makeXmlFile($output->menu_srl);
118  }
119  Context::set('admin_menu_srl', $output->menu_srl);
120  }
121 
122  $this->_oldAdminmenuDelete();
123 
124  $returnObj = new stdClass();
125  $returnObj->menu_srl = $output->menu_srl;
126  $returnObj->php_file = FileHandler::getRealPath($output->php_file);
127 
128  return $returnObj;
129  }
130  }
131 
136  public function createXeAdminMenu()
137  {
138  //insert menu
139  $args = new stdClass();
140  $args->title = $this->adminMenuName;
141  $menuSrl = $args->menu_srl = getNextSequence();
142  $args->listorder = $args->menu_srl * -1;
143  $output = executeQuery('menu.insertMenu', $args);
144  Context::set('admin_menu_srl', $menuSrl);
145  unset($args);
146 
147  // gnb item create
148  $gnbList = array('dashboard', 'menu', 'user', 'content', 'configuration', 'advanced');
149  foreach($gnbList AS $key => $value)
150  {
151  //insert menu item
152  $args = new stdClass();
153  $args->menu_srl = $menuSrl;
154  $args->menu_item_srl = getNextSequence();
155  $args->name = '{$lang->menu_gnb[\'' . $value . '\']}';
156  if($value == 'dashboard')
157  {
158  $args->url = 'index.php?module=admin';
159  }
160  else
161  {
162  $args->url = '#';
163  }
164  $args->listorder = -1 * $args->menu_item_srl;
165  $output = executeQuery('menu.insertMenuItem', $args);
166  }
167 
168  $oMenuAdminModel = getAdminModel('menu');
169  $columnList = array('menu_item_srl', 'name');
170  $output = $oMenuAdminModel->getMenuItems($menuSrl, 0, $columnList);
171  if(is_array($output->data))
172  {
173  foreach($output->data AS $key => $value)
174  {
175  preg_match('/\{\$lang->menu_gnb\[(.*?)\]\}/i', $value->name, $m);
176  $gnbDBList[$m[1]] = $value->menu_item_srl;
177  }
178  }
179  unset($args);
180 
181  $gnbModuleList = array(
182  0 => array(
183  'module' => 'menu',
184  'subMenu' => array('siteMap', 'siteDesign'),
185  ),
186  1 => array(
187  'module' => 'member',
188  'subMenu' => array('userList', 'userSetting', 'userGroup'),
189  ),
190  2 => array(
191  'module' => 'document',
192  'subMenu' => array('document'),
193  ),
194  3 => array(
195  'module' => 'comment',
196  'subMenu' => array('comment'),
197  ),
198  4 => array(
199  'module' => 'file',
200  'subMenu' => array('file'),
201  ),
202  5 => array(
203  'module' => 'poll',
204  'subMenu' => array('poll'),
205  ),
206  6 => array(
207  'module' => 'rss',
208  'subMenu' => array('rss'),
209  ),
210  7 => array(
211  'module' => 'module',
212  'subMenu' => array('multilingual'),
213  ),
214  8 => array(
215  'module' => 'importer',
216  'subMenu' => array('importer'),
217  ),
218  9 => array(
219  'module' => 'trash',
220  'subMenu' => array('trash'),
221  ),
222  10 => array(
223  'module' => 'autoinstall',
224  'subMenu' => array('easyInstall'),
225  ),
226  11 => array(
227  'module' => 'layout',
228  'subMenu' => array('installedLayout'),
229  ),
230  12 => array(
231  'module' => 'module',
232  'subMenu' => array('installedModule'),
233  ),
234  13 => array(
235  'module' => 'widget',
236  'subMenu' => array('installedWidget'),
237  ),
238  14 => array(
239  'module' => 'addon',
240  'subMenu' => array('installedAddon'),
241  ),
242  15 => array(
243  'module' => 'editor',
244  'subMenu' => array('editor'),
245  ),
246  16 => array(
247  'module' => 'spamfilter',
248  'subMenu' => array('spamFilter'),
249  ),
250  17 => array(
251  'module' => 'admin',
252  'subMenu' => array('adminConfigurationGeneral', 'adminConfigurationFtp', 'adminMenuSetup'),
253  ),
254  18 => array(
255  'module' => 'file',
256  'subMenu' => array('fileUpload'),
257  ),
258  19 => array(
259  'module' => 'module',
260  'subMenu' => array('filebox'),
261  ),
262  20 => array(
263  'module' => 'point',
264  'subMenu' => array('point')
265  ),
266  );
267 
268  $oMemberModel = getModel('member');
269  $output = $oMemberModel->getAdminGroup(array('group_srl'));
270  $adminGroupSrl = $output->group_srl;
271 
272  // gnb sub item create
273  // common argument setting
274  $args = new stdClass();
275  $args->menu_srl = $menuSrl;
276  $args->open_window = 'N';
277  $args->expand = 'N';
278  $args->normal_btn = '';
279  $args->hover_btn = '';
280  $args->active_btn = '';
281  $args->group_srls = $adminGroupSrl;
282  $oModuleModel = getModel('module');
283 
284  foreach($gnbModuleList AS $key => $value)
285  {
286  if(is_array($value['subMenu']))
287  {
288  $moduleActionInfo = $oModuleModel->getModuleActionXml($value['module']);
289  foreach($value['subMenu'] AS $key2 => $value2)
290  {
291  $gnbKey = "'" . $this->_getGnbKey($value2) . "'";
292 
293  //insert menu item
294  $args->menu_item_srl = getNextSequence();
295  $args->parent_srl = $gnbDBList[$gnbKey];
296  $args->name = '{$lang->menu_gnb_sub[\'' . $value2 . '\']}';
297  $args->url = 'index.php?module=admin&act=' . $moduleActionInfo->menu->{$value2}->index;
298  $args->listorder = -1 * $args->menu_item_srl;
299  $output = executeQuery('menu.insertMenuItem', $args);
300  }
301  }
302  }
303 
304  $oMenuAdminConroller = getAdminController('menu');
305  $oMenuAdminConroller->makeXmlFile($menuSrl);
306 
307  // does not recreate lang cache sometimes
308  FileHandler::RemoveFilesInDir('./files/cache/lang');
309  FileHandler::RemoveFilesInDir('./files/cache/menu/admin_lang');
310  }
311 
316  function _getGnbKey($menuName)
317  {
318  switch($menuName)
319  {
320  case 'siteMap':
321  case 'siteDesign':
322  return 'menu';
323  break;
324  case 'userList':
325  case 'userSetting':
326  case 'userGroup':
327  case 'point':
328  return 'user';
329  break;
330  case 'document':
331  case 'comment':
332  case 'file':
333  case 'poll':
334  case 'rss':
335  case 'multilingual':
336  case 'importer':
337  case 'trash':
338  case 'spamFilter':
339  return 'content';
340  break;
341  case 'easyInstall':
342  case 'installedLayout':
343  case 'installedModule':
344  case 'installedWidget':
345  case 'installedAddon':
346  case 'editor':
347  return 'advanced';
348  break;
349  case 'adminConfigurationGeneral':
350  case 'adminConfigurationFtp':
351  case 'adminMenuSetup':
352  case 'fileUpload':
353  case 'filebox':
354  return 'configuration';
355  break;
356  default:
357  return 'advanced';
358  }
359  }
360 
365  function _getOldGnbKey($menuName)
366  {
367  switch($menuName)
368  {
369  case 'siteMap':
370  return 'menu';
371  break;
372  case 'userList':
373  case 'userSetting':
374  case 'userGroup':
375  case 'point':
376  return 'user';
377  break;
378  case 'document':
379  case 'comment':
380  case 'file':
381  case 'poll':
382  case 'rss':
383  case 'multilingual':
384  case 'importer':
385  case 'trash':
386  return 'content';
387  break;
388  case 'easyInstall':
389  case 'installedLayout':
390  case 'installedModule':
391  case 'installedWidget':
392  case 'installedAddon':
393  case 'editor':
394  case 'spamFilter':
395  return 'extensions';
396  break;
397  case 'adminConfigurationGeneral':
398  case 'adminConfigurationFtp':
399  case 'adminMenuSetup':
400  case 'fileUpload':
401  case 'filebox':
402  return 'configuration';
403  break;
404  default:
405  return 'user_added_menu';
406  }
407  }
408 
409  private function _oldAdminmenuDelete()
410  {
411  $oMenuAdminModel = getAdminModel('menu');
412 
413  $output = $oMenuAdminModel->getMenuByTitle($this->adminMenuName);
414  $newAdminmenuSrl = $output->menu_srl;
415  $output = $oMenuAdminModel->getMenuItems($newAdminmenuSrl, 0);
416  $newAdminParentMenuList = array();
417  if(is_array($output->data))
418  {
419  foreach($output->data AS $key => $value)
420  {
421  $tmp = explode('\'', $value->name);
422  $newAdminParentMenuList[$tmp[1]] = $value;
423  }
424  }
425  unset($output);
426 
427  // old admin menu
428  $output = $oMenuAdminModel->getMenuByTitle('__XE_ADMIN__');
429  $menuSrl = $output->menu_srl;
430 
432  if($menuSrl)
433  {
434  $output = $oMenuAdminModel->getMenuItems($menuSrl);
435  if(is_array($output->data))
436  {
437  $parentMenu = array();
438  foreach($output->data AS $key => $menuItem)
439  {
440  if($menuItem->parent_srl == 0)
441  {
442  $tmp = explode('\'', $menuItem->name);
443  $parentMenuKey = $tmp[1];
444  $parentMenu[$menuItem->menu_item_srl] = $parentMenuKey;
445  }
446  }
447 
448  $isUserAddedMenuMoved = FALSE;
449  foreach($output->data AS $key => $menuItem)
450  {
451  if($menuItem->parent_srl != 0)
452  {
453  $tmp = explode('\'', $menuItem->name);
454  $menuKey = $tmp[1];
455 
456  $result = $this->_getOldGnbKey($menuKey);
457  if($result == 'user_added_menu')
458  {
459  // theme menu use not anymore
460  /* if($parentMenu[$menuItem->parent_srl] == 'theme')
461  {
462  $newParentItem = $newAdminParentMenuList['menu'];
463  }
464  else */
465  if($parentMenu[$menuItem->parent_srl] == 'extensions')
466  {
467  $newParentItem = $newAdminParentMenuList['advanced'];
468  }
469  else
470  {
471  $newParentItem = $newAdminParentMenuList[$parentMenu[$menuItem->parent_srl]];
472  }
473  $menuItem->menu_srl = $newParentItem->menu_srl;
474  $menuItem->parent_srl = $newParentItem->menu_item_srl;
475 
476  $output = executeQuery('menu.updateMenuItem', $menuItem);
477  $isUserAddedMenuMoved = TRUE;
478  }
479  }
480  }
481 
482  if($isUserAddedMenuMoved)
483  {
484  $oMenuAdminController->makeXmlFile($newAdminmenuSrl);
485  }
486  }
487  }
488 
489  // all old admin menu delete
490  $output = $oMenuAdminModel->getMenuListByTitle('__XE_ADMIN__');
491  if(is_array($output))
492  {
493  foreach($output AS $key=>$value)
494  {
495  $oMenuAdminController->deleteMenu($value->menu_srl);
496  }
497  }
498  }
499 
500 }
501 /* End of file admin.class.php */
502 /* Location: ./modules/admin/admin.class.php */
$oModuleModel
Definition: ko.install.php:236
getController($module_name)
Definition: func.inc.php:90
$oMenuAdminController
Definition: ko.install.php:7
const __XE_VERSION__
Definition: config.inc.php:32
$output
Definition: ko.install.php:193
The parent class of the spamfilter module.
recompileCache()
Definition: admin.class.php:94
set($key, $val, $set_to_get_vars=0)
getAdminMenuName()
Definition: admin.class.php:16
widget module&#39;s high class
Definition: widget.class.php:8
The parent class of the point module.
Definition: point.class.php:8
_getOldGnbKey($menuName)
$args
Definition: ko.install.php:185
checkAdminMenu()
Definition: admin.class.php:99
moduleUpdate()
Definition: admin.class.php:57
checkUpdate()
Definition: admin.class.php:34
widget to display content
getAdminModel($module_name)
Definition: func.inc.php:156
getInstance($db_type=NULL)
Definition: DB.class.php:142
document the module&#39;s high class {
getRealPath($source)
high class of the editor odule
Definition: editor.class.php:8
getNextSequence()
Definition: func.inc.php:236
getModel($module_name)
Definition: func.inc.php:145
moduleInstall()
Definition: admin.class.php:25
getAdminController($module_name)
Definition: func.inc.php:101
executeQuery($query_id, $args=NULL, $arg_columns=NULL)
Definition: func.inc.php:203
Definition: rss.class.php:8
$oModuleController
Definition: ko.install.php:287
The parent class of the poll module.
Definition: poll.class.php:8
high class of the module module
Definition: module.class.php:8
if(isset($_REQUEST['encode'])) if(isset($_REQUEST['decode'])) $lang
Definition: example.php:23
createXeAdminMenu()