diff --git a/modules/admin/admin.admin.controller.php b/modules/admin/admin.admin.controller.php
index 9d1558c5b..dd896d91a 100644
--- a/modules/admin/admin.admin.controller.php
+++ b/modules/admin/admin.admin.controller.php
@@ -1,413 +1,425 @@
getLoggedInfo();
- if($logged_info->is_admin!='Y') return $this->stop("msg_is_not_administrator");
- }
+ function init()
+ {
+ // forbit access if the user is not an administrator
+ $oMemberModel = &getModel('member');
+ $logged_info = $oMemberModel->getLoggedInfo();
+ if($logged_info->is_admin!='Y') return $this->stop("msg_is_not_administrator");
+ }
- /**
- * Admin menu reset
- * @return void
- */
- function procAdminMenuReset(){
- $menuSrl = Context::get('menu_srl');
- if (!$menuSrl) return $this->stop('msg_invalid_request');
+ /**
+ * Admin menu reset
+ * @return void
+ */
+ function procAdminMenuReset()
+ {
+ $menuSrl = Context::get('menu_srl');
+ if (!$menuSrl) return $this->stop('msg_invalid_request');
- $oMenuAdminController = &getAdminController('menu');
- $output = $oMenuAdminController->deleteMenu($menuSrl);
- if (!$output->toBool()) return $output;
+ $oMenuAdminController = &getAdminController('menu');
+ $output = $oMenuAdminController->deleteMenu($menuSrl);
+ if(!$output->toBool()) return $output;
- FileHandler::removeDir('./files/cache/menu/admin_lang/');
+ FileHandler::removeDir('./files/cache/menu/admin_lang/');
- $this->setRedirectUrl(Context::get('error_return_url'));
+ $this->setRedirectUrl(Context::get('error_return_url'));
+ }
+
+ /**
+ * Regenerate all cache files
+ * @return void
+ */
+ function procAdminRecompileCacheFile()
+ {
+ // rename cache dir
+ $temp_cache_dir = './files/cache_'. time();
+ FileHandler::rename('./files/cache', $temp_cache_dir);
+ FileHandler::makeDir('./files/cache');
+
+ // remove debug files
+ FileHandler::removeFile(_XE_PATH_.'files/_debug_message.php');
+ FileHandler::removeFile(_XE_PATH_.'files/_debug_db_query.php');
+ FileHandler::removeFile(_XE_PATH_.'files/_db_slow_query.php');
+
+ $oModuleModel = &getModel('module');
+ $module_list = $oModuleModel->getModuleList();
+
+ // call recompileCache for each module
+ foreach($module_list as $module)
+ {
+ $oModule = null;
+ $oModule = &getClass($module->module);
+ if(method_exists($oModule, 'recompileCache')) $oModule->recompileCache();
}
- /**
- * Regenerate all cache files
- * @return void
- */
- function procAdminRecompileCacheFile() {
- // rename cache dir
- $temp_cache_dir = './files/cache_'. time();
- FileHandler::rename('./files/cache', $temp_cache_dir);
- FileHandler::makeDir('./files/cache');
+ // remove cache
+ $truncated = array();
+ $oObjectCacheHandler = &CacheHandler::getInstance('object');
+ $oTemplateCacheHandler = &CacheHandler::getInstance('template');
- // remove debug files
- FileHandler::removeFile(_XE_PATH_.'files/_debug_message.php');
- FileHandler::removeFile(_XE_PATH_.'files/_debug_db_query.php');
- FileHandler::removeFile(_XE_PATH_.'files/_db_slow_query.php');
-
- $oModuleModel = &getModel('module');
- $module_list = $oModuleModel->getModuleList();
-
- // call recompileCache for each module
- foreach($module_list as $module) {
- $oModule = null;
- $oModule = &getClass($module->module);
- if(method_exists($oModule, 'recompileCache')) $oModule->recompileCache();
- }
-
- // remove cache
- $truncated = array();
- $oObjectCacheHandler = &CacheHandler::getInstance('object');
- $oTemplateCacheHandler = &CacheHandler::getInstance('template');
-
- if($oObjectCacheHandler->isSupport()){
- $truncated[] = $oObjectCacheHandler->truncate();
- }
-
- if($oTemplateCacheHandler->isSupport()){
- $truncated[] = $oTemplateCacheHandler->truncate();
- }
-
- if(count($truncated) && in_array(false,$truncated)){
- return new Object(-1,'msg_self_restart_cache_engine');
- }
-
-
- // remove cache dir
- $tmp_cache_list = FileHandler::readDir('./files','/(^cache_[0-9]+)/');
- if($tmp_cache_list){
- foreach($tmp_cache_list as $tmp_dir){
- if($tmp_dir) FileHandler::removeDir('./files/'.$tmp_dir);
- }
- }
-
- // remove duplicate indexes (only for CUBRID)
- $db_type = &Context::getDBType();
- if($db_type == 'cubrid')
- {
- $db = &DB::getInstance();
- $db->deleteDuplicateIndexes();
- }
-
- $this->setMessage('success_updated');
- }
-
- /**
- * Logout
- * @return void
- */
- function procAdminLogout() {
- $oMemberController = &getController('member');
- $oMemberController->procMemberLogout();
-
- header('Location: '.getNotEncodedUrl('', 'module','admin'));
- }
-
-
- public function procAdminInsertDefaultDesignInfo()
+ if($oObjectCacheHandler->isSupport())
{
- $vars = Context::getRequestVars();
- if(!$vars->site_srl)
- {
- $vars->site_srl = 0;
- }
-
- // create a DesignInfo file
- $output = $this->updateDefaultDesignInfo($vars);
- return $this->setRedirectUrl(Context::get('error_return_url'), $output);
+ $truncated[] = $oObjectCacheHandler->truncate();
}
- public function updateDefaultDesignInfo($vars)
+ if($oTemplateCacheHandler->isSupport())
{
- $siteDesignPath = _XE_PATH_.'files/site_design/';
+ $truncated[] = $oTemplateCacheHandler->truncate();
+ }
- $vars->module_skin = json_decode($vars->module_skin);
-
- if(!is_dir($siteDesignPath))
+ if(count($truncated) && in_array(false,$truncated))
+ {
+ return new Object(-1,'msg_self_restart_cache_engine');
+ }
+
+ // remove cache dir
+ $tmp_cache_list = FileHandler::readDir('./files','/(^cache_[0-9]+)/');
+ if($tmp_cache_list)
+ {
+ foreach($tmp_cache_list as $tmp_dir)
{
- FileHandler::makeDir($siteDesignPath);
+ if($tmp_dir) FileHandler::removeDir('./files/'.$tmp_dir);
}
+ }
- $siteDesignFile = _XE_PATH_.'files/site_design/design_'.$vars->site_srl.'.php';
+ // remove duplicate indexes (only for CUBRID)
+ $db_type = &Context::getDBType();
+ if($db_type == 'cubrid')
+ {
+ $db = &DB::getInstance();
+ $db->deleteDuplicateIndexes();
+ }
+ $this->setMessage('success_updated');
+ }
- $layoutTarget = 'layout_srl';
- $skinTarget = 'skin';
+ /**
+ * Logout
+ * @return void
+ */
+ function procAdminLogout()
+ {
+ $oMemberController = &getController('member');
+ $oMemberController->procMemberLogout();
- if ($vars->target_type == 'M')
+ header('Location: '.getNotEncodedUrl('', 'module','admin'));
+ }
+
+
+ public function procAdminInsertDefaultDesignInfo()
+ {
+ $vars = Context::getRequestVars();
+ if(!$vars->site_srl)
+ {
+ $vars->site_srl = 0;
+ }
+
+ // create a DesignInfo file
+ $output = $this->updateDefaultDesignInfo($vars);
+ return $this->setRedirectUrl(Context::get('error_return_url'), $output);
+ }
+
+ public function updateDefaultDesignInfo($vars)
+ {
+ $siteDesignPath = _XE_PATH_.'files/site_design/';
+
+ $vars->module_skin = json_decode($vars->module_skin);
+
+ if(!is_dir($siteDesignPath))
+ {
+ FileHandler::makeDir($siteDesignPath);
+ }
+
+ $siteDesignFile = _XE_PATH_.'files/site_design/design_'.$vars->site_srl.'.php';
+
+ $layoutTarget = 'layout_srl';
+ $skinTarget = 'skin';
+
+ if($vars->target_type == 'M')
+ {
+ $layoutTarget = 'mlayout_srl';
+ $skinTarget = 'mskin';
+ }
+
+ $buff = '';
+ if(is_readable($siteDesignFile))
+ {
+ @include($siteDesignFile);
+ }
+ else
+ {
+ $designInfo = new stdClass();
+ }
+
+ $layoutSrl = (!$vars->layout_srl) ? 0 : $vars->layout_srl;
+
+ $designInfo->{$layoutTarget} = $layoutSrl;
+
+ foreach($vars->module_skin as $moduleName => $skinName)
+ {
+ $designInfo->module->{$moduleName}->{$skinTarget} = $skinName;
+ }
+
+ $this->makeDefaultDesignFile($designInfo, $vars->site_srl);
+
+ return new Object();
+ }
+
+ function makeDefaultDesignFile($designInfo, $site_srl = 0)
+ {
+ if($designInfo->layout_srl)
+ {
+ $buff .= sprintf('$designInfo->layout_srl = %s; ', $designInfo->layout_srl)."\n";
+ }
+
+ if($designInfo->mlayout_srl)
+ {
+ $buff .= sprintf('$designInfo->mlayout_srl = %s;', $designInfo->mlayout_srl)."\n";
+ }
+
+ $buff .= '$designInfo->module = new stdClass();'."\n";
+
+ foreach($designInfo->module as $moduleName => $skinInfo)
+ {
+ $buff .= sprintf('$designInfo->module->%s = new stdClass();', $moduleName)."\n";
+ foreach($skinInfo as $target => $skinName)
{
- $layoutTarget = 'mlayout_srl';
- $skinTarget = 'mskin';
+ $buff .= sprintf('$designInfo->module->%s->%s = \'%s\';', $moduleName, $target, $skinName)."\n";
}
+ }
- $buff = '';
- if(is_readable($siteDesignFile))
- {
- @include($siteDesignFile);
- }
- else
- {
- $designInfo = new stdClass();
- }
+ $buff = sprintf('', $buff);
- $layoutSrl = (!$vars->layout_srl) ? 0 : $vars->layout_srl;
+ $siteDesignFile = _XE_PATH_.'files/site_design/design_'.$site_srl.'.php';
+ FileHandler::writeFile($siteDesignFile, $buff);
+ }
- $designInfo->{$layoutTarget} = $layoutSrl;
+ /**
+ * Toggle favorite
+ * @return void
+ */
+ function procAdminToggleFavorite()
+ {
+ $siteSrl = Context::get('site_srl');
+ $moduleName = Context::get('module_name');
- foreach($vars->module_skin as $moduleName => $skinName)
- {
- $designInfo->module->{$moduleName}->{$skinTarget} = $skinName;
- }
+ // check favorite exists
+ $oModel = &getAdminModel('admin');
+ $output = $oModel->isExistsFavorite($siteSrl, $moduleName);
+ if(!$output->toBool()) return $output;
- $this->makeDefaultDesignFile($designInfo, $vars->site_srl);
+ // if exists, delete favorite
+ if($output->get('result'))
+ {
+ $favoriteSrl = $output->get('favoriteSrl');
+ $output = $this->_deleteFavorite($favoriteSrl);
+ $result = 'off';
+ }
+ // if not exists, insert favorite
+ else
+ {
+ $output = $this->_insertFavorite($siteSrl, $moduleName);
+ $result = 'on';
+ }
+ if(!$output->toBool()) return $output;
+
+ $this->add('result', $result);
+
+ return $this->setRedirectUrl(Context::get('error_return_url'), $output);
+ }
+
+ /**
+ * Cleanning favorite
+ * @return Object
+ */
+ function cleanFavorite()
+ {
+ $oModel = getAdminModel('admin');
+ $output = $oModel->getFavoriteList();
+ if(!$output->toBool())
+ {
+ return $output;
+ }
+
+ $favoriteList = $output->get('favoriteList');
+ if(!$favoriteList)
+ {
return new Object();
}
- function makeDefaultDesignFile($designInfo, $site_srl = 0)
+ $deleteTargets = array();
+ foreach($favoriteList as $favorite)
{
- if($designInfo->layout_srl)
+ if($favorite->type == 'module')
{
- $buff .= sprintf('$designInfo->layout_srl = %s; ', $designInfo->layout_srl)."\n";
- }
-
- if($designInfo->mlayout_srl)
- {
- $buff .= sprintf('$designInfo->mlayout_srl = %s;', $designInfo->mlayout_srl)."\n";
- }
-
- $buff .= '$designInfo->module = new stdClass();'."\n";
-
- foreach($designInfo->module as $moduleName => $skinInfo)
- {
- $buff .= sprintf('$designInfo->module->%s = new stdClass();', $moduleName)."\n";
- foreach($skinInfo as $target => $skinName)
+ $modulePath = './modules/' . $favorite->module;
+ $modulePath = FileHandler::getRealPath($modulePath);
+ if(!is_dir($modulePath))
{
- $buff .= sprintf('$designInfo->module->%s->%s = \'%s\';', $moduleName, $target, $skinName)."\n";
+ $deleteTargets[] = $favorite->admin_favorite_srl;
}
}
-
- $buff = sprintf('', $buff);
-
- $siteDesignFile = _XE_PATH_.'files/site_design/design_'.$site_srl.'.php';
- FileHandler::writeFile($siteDesignFile, $buff);
}
- /**
- * Toggle favorite
- * @return void
- */
- function procAdminToggleFavorite()
+ if(!count($deleteTargets))
{
- $siteSrl = Context::get('site_srl');
- $moduleName = Context::get('module_name');
-
- // check favorite exists
- $oModel = &getAdminModel('admin');
- $output = $oModel->isExistsFavorite($siteSrl, $moduleName);
- if (!$output->toBool()) return $output;
-
- // if exists, delete favorite
- if ($output->get('result'))
- {
- $favoriteSrl = $output->get('favoriteSrl');
- $output = $this->_deleteFavorite($favoriteSrl);
- $result = 'off';
- }
-
- // if not exists, insert favorite
- else
- {
- $output = $this->_insertFavorite($siteSrl, $moduleName);
- $result = 'on';
- }
-
- if (!$output->toBool()) return $output;
-
- $this->add('result', $result);
-
- return $this->setRedirectUrl(Context::get('error_return_url'), $output);
- }
-
- /**
- * Cleanning favorite
- * @return Object
- */
- function cleanFavorite()
- {
- $oModel = getAdminModel('admin');
- $output = $oModel->getFavoriteList();
- if(!$output->toBool())
- {
- return $output;
- }
-
- $favoriteList = $output->get('favoriteList');
- if(!$favoriteList)
- {
- return new Object();
- }
-
- $deleteTargets = array();
- foreach($favoriteList as $favorite)
- {
- if($favorite->type == 'module')
- {
- $modulePath = './modules/' . $favorite->module;
- $modulePath = FileHandler::getRealPath($modulePath);
- if(!is_dir($modulePath))
- {
- $deleteTargets[] = $favorite->admin_favorite_srl;
- }
- }
- }
-
- if(!count($deleteTargets))
- {
- return new Object();
- }
-
- $args->admin_favorite_srls = $deleteTargets;
- $output = executeQuery('admin.deleteFavorites', $args);
- if(!$output->toBool())
- {
- return $output;
- }
-
return new Object();
}
- /**
- * Enviroment gathering agreement
- * @return void
- */
- function procAdminEnviromentGatheringAgreement()
+ $args->admin_favorite_srls = $deleteTargets;
+ $output = executeQuery('admin.deleteFavorites', $args);
+ if(!$output->toBool())
{
- $isAgree = Context::get('is_agree');
- if($isAgree == 'true') $_SESSION['enviroment_gather'] = 'Y';
- else $_SESSION['enviroment_gather'] = 'N';
-
- $redirectUrl = getUrl('', 'module', 'admin');
- $this->setRedirectUrl($redirectUrl);
+ return $output;
}
- /**
- * Admin config update
- * @return void
- */
- function procAdminUpdateConfig()
+ return new Object();
+ }
+
+ /**
+ * Enviroment gathering agreement
+ * @return void
+ */
+ function procAdminEnviromentGatheringAgreement()
+ {
+ $isAgree = Context::get('is_agree');
+ if($isAgree == 'true') $_SESSION['enviroment_gather'] = 'Y';
+ else $_SESSION['enviroment_gather'] = 'N';
+
+ $redirectUrl = getUrl('', 'module', 'admin');
+ $this->setRedirectUrl($redirectUrl);
+ }
+
+ /**
+ * Admin config update
+ * @return void
+ */
+ function procAdminUpdateConfig()
+ {
+ $adminTitle = Context::get('adminTitle');
+ $file = $_FILES['adminLogo'];
+
+ $oModuleModel = &getModel('module');
+ $oAdminConfig = $oModuleModel->getModuleConfig('admin');
+
+ if($file['tmp_name'])
{
- $adminTitle = Context::get('adminTitle');
- $file = $_FILES['adminLogo'];
+ $target_path = 'files/attach/images/admin/';
+ FileHandler::makeDir($target_path);
- $oModuleModel = &getModel('module');
- $oAdminConfig = $oModuleModel->getModuleConfig('admin');
+ // Get file information
+ list($width, $height, $type, $attrs) = @getimagesize($file['tmp_name']);
+ if($type == 3) $ext = 'png';
+ elseif($type == 2) $ext = 'jpg';
+ else $ext = 'gif';
- if($file['tmp_name'])
- {
- $target_path = 'files/attach/images/admin/';
- FileHandler::makeDir($target_path);
+ $target_filename = sprintf('%s%s.%s.%s', $target_path, 'adminLogo', date('YmdHis'), $ext);
+ @move_uploaded_file($file['tmp_name'], $target_filename);
- // Get file information
- list($width, $height, $type, $attrs) = @getimagesize($file['tmp_name']);
- if($type == 3) $ext = 'png';
- elseif($type == 2) $ext = 'jpg';
- else $ext = 'gif';
-
- $target_filename = sprintf('%s%s.%s.%s', $target_path, 'adminLogo', date('YmdHis'), $ext);
- @move_uploaded_file($file['tmp_name'], $target_filename);
-
- $oAdminConfig->adminLogo = $target_filename;
- }
- if($adminTitle) $oAdminConfig->adminTitle = strip_tags($adminTitle);
- else unset($oAdminConfig->adminTitle);
-
- if($oAdminConfig)
- {
- $oModuleController = &getController('module');
- $oModuleController->insertModuleConfig('admin', $oAdminConfig);
- }
-
- $this->setMessage('success_updated', 'info');
-
- $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispAdminSetup');
- $this->setRedirectUrl($returnUrl);
+ $oAdminConfig->adminLogo = $target_filename;
}
+ if($adminTitle) $oAdminConfig->adminTitle = strip_tags($adminTitle);
+ else unset($oAdminConfig->adminTitle);
- /**
- * Admin logo delete
- * @return void
- */
- function procAdminDeleteLogo()
+ if($oAdminConfig)
{
- $oModuleModel = &getModel('module');
- $oAdminConfig = $oModuleModel->getModuleConfig('admin');
-
- FileHandler::removeFile(_XE_PATH_.$oAdminConfig->adminLogo);
- unset($oAdminConfig->adminLogo);
-
$oModuleController = &getController('module');
$oModuleController->insertModuleConfig('admin', $oAdminConfig);
-
- $this->setMessage('success_deleted', 'info');
-
- $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispAdminSetup');
- $this->setRedirectUrl($returnUrl);
}
- /**
- * Insert favorite
- * @return object query result
- */
- function _insertFavorite($siteSrl, $module, $type = 'module')
+ $this->setMessage('success_updated', 'info');
+
+ $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispAdminSetup');
+ $this->setRedirectUrl($returnUrl);
+ }
+
+ /**
+ * Admin logo delete
+ * @return void
+ */
+ function procAdminDeleteLogo()
+ {
+ $oModuleModel = &getModel('module');
+ $oAdminConfig = $oModuleModel->getModuleConfig('admin');
+
+ FileHandler::removeFile(_XE_PATH_.$oAdminConfig->adminLogo);
+ unset($oAdminConfig->adminLogo);
+
+ $oModuleController = &getController('module');
+ $oModuleController->insertModuleConfig('admin', $oAdminConfig);
+
+ $this->setMessage('success_deleted', 'info');
+
+ $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispAdminSetup');
+ $this->setRedirectUrl($returnUrl);
+ }
+
+ /**
+ * Insert favorite
+ * @return object query result
+ */
+ function _insertFavorite($siteSrl, $module, $type = 'module')
+ {
+ $args->adminFavoriteSrl = getNextSequence();
+ $args->site_srl = $siteSrl;
+ $args->module = $module;
+ $args->type = $type;
+ $output = executeQuery('admin.insertFavorite', $args);
+ return $output;
+ }
+
+ /**
+ * Delete favorite
+ * @return object query result
+ */
+ function _deleteFavorite($favoriteSrl)
+ {
+ $args->admin_favorite_srl = $favoriteSrl;
+ $output = executeQuery('admin.deleteFavorite', $args);
+ return $output;
+ }
+
+ /**
+ * Delete all favorite
+ * @return object query result
+ */
+ function _deleteAllFavorite()
+ {
+ $args = null;
+ $output = executeQuery('admin.deleteAllFavorite', $args);
+ return $output;
+ }
+
+ /**
+ * Remove admin icon
+ * @return object|void
+ */
+ function procAdminRemoveIcons(){
+ $iconname = Context::get('iconname');
+ $file_exist = FileHandler::readFile(_XE_PATH_.'files/attach/xeicon/'.$iconname);
+ if($file_exist)
{
- $args->adminFavoriteSrl = getNextSequence();
- $args->site_srl = $siteSrl;
- $args->module = $module;
- $args->type = $type;
- $output = executeQuery('admin.insertFavorite', $args);
- return $output;
+ @FileHandler::removeFile(_XE_PATH_.'files/attach/xeicon/'.$iconname);
}
-
- /**
- * Delete favorite
- * @return object query result
- */
- function _deleteFavorite($favoriteSrl)
+ else
{
- $args->admin_favorite_srl = $favoriteSrl;
- $output = executeQuery('admin.deleteFavorite', $args);
- return $output;
+ return new Object(-1,'fail_to_delete');
}
-
- /**
- * Delete all favorite
- * @return object query result
- */
- function _deleteAllFavorite()
- {
- $args = null;
- $output = executeQuery('admin.deleteAllFavorite', $args);
- return $output;
- }
-
- /**
- * Remove admin icon
- * @return object|void
- */
- function procAdminRemoveIcons(){
- $iconname = Context::get('iconname');
- $file_exist = FileHandler::readFile(_XE_PATH_.'files/attach/xeicon/'.$iconname);
- if($file_exist) {
- @FileHandler::removeFile(_XE_PATH_.'files/attach/xeicon/'.$iconname);
- } else {
- return new Object(-1,'fail_to_delete');
- }
- $this->setMessage('success_deleted');
- }
- }
-?>
+ $this->setMessage('success_deleted');
+ }
+}
+/* End of file admin.admin.controller.php */
+/* Location: ./modules/admin/admin.admin.controller.php */
diff --git a/modules/admin/admin.admin.model.php b/modules/admin/admin.admin.model.php
index d217de940..27589aa6c 100644
--- a/modules/admin/admin.admin.model.php
+++ b/modules/admin/admin.admin.model.php
@@ -1,715 +1,750 @@
ftp_host)
{
- $ftp_info = Context::getRequestVars();
-
- if(!$ftp_info->ftp_host)
- {
- $ftp_info->ftp_host = "127.0.0.1";
- }
-
- if(!$ftp_info->ftp_port || !is_numeric($ftp_info->ftp_port))
- {
- $ftp_info->ftp_port = '22';
- }
-
- $connection = ssh2_connect($ftp_info->ftp_host, $ftp_info->ftp_port);
- if(!ssh2_auth_password($connection, $ftp_info->ftp_user, $ftp_info->ftp_password))
- {
- return new Object(-1,'msg_ftp_invalid_auth_info');
- }
- $sftp = ssh2_sftp($connection);
-
- // create temp file
- $pin = time();
- FileHandler::writeFile('./files/cache/ftp_check', $pin);
-
- // create path candidate
- $xe_path = _XE_PATH_;
- $path_info = array_reverse(explode('/', _XE_PATH_));
- array_pop($path_info); // remove last '/'
- $path_candidate = array();
-
- $temp = '';
- foreach($path_info as $path)
- {
- $temp = '/' . $path . $temp;
- $path_candidate[] = $temp;
- }
-
- // try
- foreach($path_candidate as $path)
- {
- // upload check file
- if(!@ssh2_scp_send($connection, FileHandler::getRealPath('./files/cache/ftp_check'), $path . 'ftp_check.html'))
- {
- continue;
- }
-
- // get check file
- $result = FileHandler::getRemoteResource(getNotencodedFullUrl() . 'ftp_check.html');
-
- // delete temp check file
- @ssh2_sftp_unlink($sftp, $path . 'ftp_check.html');
-
- // found
- if($result == $pin)
- {
- $found_path = $path;
- break;
- }
- }
-
- FileHandler::removeFile('./files/cache/ftp_check', $pin);
-
- if($found_path)
- {
- $this->add('found_path', $found_path);
- }
+ $ftp_info->ftp_host = "127.0.0.1";
}
- /**
- * Find XE installed path on ftp
- */
- function getAdminFTPPath()
+ if(!$ftp_info->ftp_port || !is_numeric($ftp_info->ftp_port))
{
- Context::loadLang('./modules/autoinstall/lang');
- set_time_limit(5);
- require_once(_XE_PATH_ . 'libs/ftp.class.php');
-
- $ftp_info = Context::getRequestVars();
-
- if(!$ftp_info->ftp_user || !$ftp_info->ftp_password)
- {
- return new Object(1, 'msg_ftp_invalid_auth_info');
- }
-
- if(!$ftp_info->ftp_host)
- {
- $ftp_info->ftp_host = '127.0.0.1';
- }
-
- if(!$ftp_info->ftp_port || !is_numeric($ftp_info->ftp_port))
- {
- $ftp_info->ftp_port = '21';
- }
-
- if($ftp_info->sftp == 'Y')
- {
- if(!function_exists(ssh2_sftp))
- {
- return new Object(-1,'disable_sftp_support');
- }
- return $this->getSFTPPath();
- }
-
- $oFTP = new ftp();
- if(!$oFTP->ftp_connect($ftp_info->ftp_host, $ftp_info->ftp_port))
- {
- return new Object(1, sprintf(Context::getLang('msg_ftp_not_connected'), $ftp_info->ftp_host));
- }
-
- if(!$oFTP->ftp_login($ftp_info->ftp_user, $ftp_info->ftp_password))
- {
- return new Object(1, 'msg_ftp_invalid_auth_info');
- }
-
- // create temp file
- $pin = time();
- FileHandler::writeFile('./files/cache/ftp_check', $pin);
-
- // create path candidate
- $xe_path = _XE_PATH_;
- $path_info = array_reverse(explode('/', _XE_PATH_));
- array_pop($path_info); // remove last '/'
- $path_candidate = array();
-
- $temp = '';
- foreach($path_info as $path)
- {
- $temp = '/' . $path . $temp;
- $path_candidate[] = $temp;
- }
-
- // try
- foreach($path_candidate as $path)
- {
- // upload check file
- if(!$oFTP->ftp_put($path . 'ftp_check.html', FileHandler::getRealPath('./files/cache/ftp_check')))
- {
- continue;
- }
-
- // get check file
- $result = FileHandler::getRemoteResource(getNotencodedFullUrl() . 'ftp_check.html');
-
- // delete temp check file
- $oFTP->ftp_delete($path . 'ftp_check.html');
-
- // found
- if($result == $pin)
- {
- $found_path = $path;
- break;
- }
- }
-
- FileHandler::removeFile('./files/cache/ftp_check', $pin);
-
- if($found_path)
- {
- $this->add('found_path', $found_path);
- }
+ $ftp_info->ftp_port = '22';
}
- /**
- * Add file list to Object after sftp connect
- * @return void|Object
- */
- function getSFTPList()
- {
- $ftp_info = Context::getRequestVars();
- if(!$ftp_info->ftp_host)
- {
- $ftp_info->ftp_host = "127.0.0.1";
- }
- $connection = ssh2_connect($ftp_info->ftp_host, $ftp_info->ftp_port);
- if(!ssh2_auth_password($connection, $ftp_info->ftp_user, $ftp_info->ftp_password))
- {
- return new Object(-1,'msg_ftp_invalid_auth_info');
- }
-
- $sftp = ssh2_sftp($connection);
- $curpwd = "ssh2.sftp://$sftp".$this->pwd;
- $dh = @opendir($curpwd);
- if(!$dh) return new Object(-1, 'msg_ftp_invalid_path');
- $list = array();
- while(($file = readdir($dh)) !== false) {
- if(is_dir($curpwd.$file))
- {
- $file .= "/";
- }
- else
- {
- continue;
- }
- $list[] = $file;
- }
- closedir($dh);
- $this->add('list', $list);
- }
-
- /**
- * Add file list to Object after ftp connect
- * @return void|Object
- */
- function getAdminFTPList()
- {
- Context::loadLang('./modules/autoinstall/lang');
- set_time_limit(5);
- require_once(_XE_PATH_.'libs/ftp.class.php');
- $ftp_info = Context::getRequestVars();
- if(!$ftp_info->ftp_user || !$ftp_info->ftp_password)
- {
- return new Object(-1, 'msg_ftp_invalid_auth_info');
- }
-
- $this->pwd = $ftp_info->ftp_root_path;
-
- if(!$ftp_info->ftp_host)
- {
- $ftp_info->ftp_host = "127.0.0.1";
- }
-
- if (!$ftp_info->ftp_port || !is_numeric ($ftp_info->ftp_port)) {
- $ftp_info->ftp_port = "21";
- }
-
- if($ftp_info->sftp == 'Y')
- {
- if(!function_exists(ssh2_sftp))
- {
- return new Object(-1,'disable_sftp_support');
- }
- return $this->getSFTPList();
- }
-
- $oFtp = new ftp();
- if($oFtp->ftp_connect($ftp_info->ftp_host, $ftp_info->ftp_port)){
- if($oFtp->ftp_login($ftp_info->ftp_user, $ftp_info->ftp_password)) {
- $_list = $oFtp->ftp_rawlist($this->pwd);
- $oFtp->ftp_quit();
- }
- else
- {
- return new Object(-1,'msg_ftp_invalid_auth_info');
- }
- }
- $list = array();
-
- if($_list){
- foreach($_list as $k => $v){
- $src = null;
- $src->data = $v;
- $res = Context::convertEncoding($src);
- $v = $res->data;
- if(strpos($v,'d') === 0 || strpos($v, '
')) $list[] = substr(strrchr($v,' '),1) . '/';
- }
- }
- else
- {
- return new Object(-1,'msg_ftp_no_directory');
- }
- $this->add('list', $list);
- }
-
- /**
- * Parameter arrange for send to XE collect server
- * @param string $type 'WORKING', 'INSTALL'
- * @return string
- */
- function getEnv($type='WORKING') {
-
- $skip = array(
- 'ext' => array('pcre','json','hash','dom','session','spl','standard','date','ctype','tokenizer','apache2handler','filter','posix','reflection','pdo')
- ,'module' => array('addon','admin','autoinstall', 'comment', 'communication', 'counter', 'document', 'editor', 'file', 'importer', 'install', 'integration_search', 'layout', 'member', 'menu', 'message', 'module', 'opage', 'page', 'point', 'poll', 'rss', 'session', 'spamfilter', 'tag', 'trackback', 'trash', 'widget')
- ,'addon' => array('autolink', 'blogapi', 'captcha', 'counter', 'member_communication', 'member_extra_info', 'mobile', 'openid_delegation_id', 'point_level_icon', 'resize_image' )
- );
-
- $info = array();
- $info['type'] = ($type !='INSTALL' ? 'WORKING' : 'INSTALL');
- $info['location'] = _XE_LOCATION_;
- $info['package'] = _XE_PACKAGE_;
- $info['host'] = $db_type->default_url ? $db_type->default_url : getFullUrl();
- $info['app'] = $_SERVER['SERVER_SOFTWARE'];
- $info['xe_version'] = __ZBXE_VERSION__;
- $info['php'] = phpversion();
-
- $db_info = Context::getDBInfo();
- $info['db_type'] = Context::getDBType();
- $info['use_rewrite'] = $db_info->use_rewrite;
- $info['use_db_session'] = $db_info->use_db_session == 'Y' ?'Y':'N';
- $info['use_ssl'] = $db_info->use_ssl;
-
- $info['phpext'] = '';
- foreach (get_loaded_extensions() as $ext) {
- $ext = strtolower($ext);
- if(in_array($ext, $skip['ext'])) continue;
- $info['phpext'] .= '|'. $ext;
- }
- $info['phpext'] = substr($info['phpext'],1);
-
- $info['module'] = '';
- $oModuleModel = &getModel('module');
- $module_list = $oModuleModel->getModuleList();
- foreach($module_list as $module){
- if(in_array($module->module, $skip['module'])) continue;
- $info['module'] .= '|'.$module->module;
- }
- $info['module'] = substr($info['module'],1);
-
- $info['addon'] = '';
- $oAddonAdminModel = &getAdminModel('addon');
- $addon_list = $oAddonAdminModel->getAddonList();
- foreach($addon_list as $addon){
- if(in_array($addon->addon, $skip['addon'])) continue;
- $info['addon'] .= '|'.$addon->addon;
- }
- $info['addon'] = substr($info['addon'],1);
-
- $param = '';
- foreach($info as $k => $v){
- if($v) $param .= sprintf('&%s=%s',$k,urlencode($v));
- }
- $param = substr($param, 1);
-
- return $param;
- }
-
- /**
- * Return theme info list by theme directory list
- * @return array
- */
- function getThemeList(){
- $path = _XE_PATH_.'themes';
- $list = FileHandler::readDir($path);
-
- $theme_info = array();
- if(count($list) > 0){
- foreach($list as $val){
- $theme_info[$val] = $this->getThemeInfo($val);
- }
- }
-
- return $theme_info;
- }
-
- /**
- * Return theme info
- * @param string $theme_name
- * @param array $layout_list
- * @return object
- */
- function getThemeInfo($theme_name, $layout_list = null){
- if ($GLOBALS['__ThemeInfo__'][$theme_name]) return $GLOBALS['__ThemeInfo__'][$theme_name];
-
- $info_file = _XE_PATH_.'themes/'.$theme_name.'/conf/info.xml';
- if(!file_exists($info_file)) return;
-
- $oXmlParser = new XmlParser();
- $_xml_obj = $oXmlParser->loadXmlFile($info_file);
- if(!$_xml_obj->theme) return;
-
- $xml_obj = $_xml_obj->theme;
-
- // 스킨이름
- $theme_info->name = $theme_name;
- $theme_info->title = $xml_obj->title->body;
- $thumbnail = './themes/'.$theme_name.'/thumbnail.png';
- $theme_info->thumbnail = (file_exists($thumbnail))?$thumbnail:null;
- $theme_info->version = $xml_obj->version->body;
- sscanf($xml_obj->date->body, '%d-%d-%d', $date_obj->y, $date_obj->m, $date_obj->d);
- $theme_info->date = sprintf('%04d%02d%02d', $date_obj->y, $date_obj->m, $date_obj->d);
- $theme_info->description = $xml_obj->description->body;
- $theme_info->path = './themes/'.$theme_name.'/';
-
- if(!is_array($xml_obj->publisher)) $publisher_list[] = $xml_obj->publisher;
- else $publisher_list = $xml_obj->publisher;
-
- foreach($publisher_list as $publisher) {
- unset($publisher_obj);
- $publisher_obj->name = $publisher->name->body;
- $publisher_obj->email_address = $publisher->attrs->email_address;
- $publisher_obj->homepage = $publisher->attrs->link;
- $theme_info->publisher[] = $publisher_obj;
- }
-
- $layout = $xml_obj->layout;
- $layout_path = $layout->directory->attrs->path;
- $layout_parse = explode('/',$layout_path);
- switch($layout_parse[1]){
- case 'themes' : {
- $layout_info->name = $theme_name.'|@|'.$layout_parse[count($layout_parse)-1];
- break;
- }
- case 'layouts' : {
- $layout_info->name = $layout_parse[count($layout_parse)-1];
- break;
- }
- }
- $layout_info->title = $layout_parse[count($layout_parse)-1];
- $layout_info->path = $layout_path;
-
- $site_info = Context::get('site_module_info');
- // check layout instance
- $is_new_layout = true;
- $oLayoutModel = &getModel('layout');
- $layout_info_list = array();
- $layout_list = $oLayoutModel->getLayoutList($site_info->site_srl);
- if ($layout_list){
- foreach($layout_list as $val){
- if ($val->layout == $layout_info->name){
- $is_new_layout = false;
- $layout_info->layout_srl = $val->layout_srl;
- break;
- }
- }
- }
-
- if ($is_new_layout){
- $site_module_info = Context::get('site_module_info');
- $args->site_srl = (int)$site_module_info->site_srl;
- $args->layout_srl = getNextSequence();
- $args->layout = $layout_info->name;
- $args->title = $layout_info->title;
- $args->layout_type = "P";
- // Insert into the DB
- $oLayoutAdminController = &getAdminController('layout');
- $output = $oLayoutAdminController->insertLayout($args);
- $layout_info->layout_srl = $args->layout_srl;
- }
-
- $theme_info->layout_info = $layout_info;
-
- $skin_infos = $xml_obj->skininfos;
- if(is_array($skin_infos->skininfo))$skin_list = $skin_infos->skininfo;
- else $skin_list = array($skin_infos->skininfo);
-
- $oModuleModel = &getModel('module');
- $skins = array();
- foreach($skin_list as $val){
- unset($skin_info);
- unset($skin_parse);
- $skin_parse = explode('/',$val->directory->attrs->path);
- switch($skin_parse[1]){
- case 'themes' : {
- $is_theme = true;
- $module_name = $skin_parse[count($skin_parse)-1];
- $skin_info->name = $theme_name.'|@|'.$module_name;
- break;
- }
- case 'modules' : {
- $is_theme = false;
- $module_name = $skin_parse[2];
- $skin_info->name = $skin_parse[count($skin_parse)-1];
- break;
- }
- }
- $skin_info->path = $val->directory->attrs->path;
- $skin_info->is_theme = $is_theme;
- $skins[$module_name] = $skin_info;
-
- if ($is_theme){
- if (!$GLOBALS['__ThemeModuleSkin__'][$module_name]){
- $GLOBALS['__ThemeModuleSkin__'][$module_name] = array();
- $GLOBALS['__ThemeModuleSkin__'][$module_name]['skins'] = array();
- $moduleInfo = $oModuleModel->getModuleInfoXml($module_name);
- $GLOBALS['__ThemeModuleSkin__'][$module_name]['title'] = $moduleInfo->title;
- }
- $GLOBALS['__ThemeModuleSkin__'][$module_name]['skins'][$skin_info->name] = $oModuleModel->loadSkinInfo($skin_info->path, '', '');
- }
- }
- $theme_info->skin_infos = $skins;
-
- $GLOBALS['__ThemeInfo__'][$theme_name] = $theme_info;
- return $theme_info;
- }
-
- /**
- * Return theme module skin list
- * @return array
- */
- function getModulesSkinList(){
- if ($GLOBALS['__ThemeModuleSkin__']['__IS_PARSE__']) return $GLOBALS['__ThemeModuleSkin__'];
- $searched_list = FileHandler::readDir('./modules');
- sort($searched_list);
-
- $searched_count = count($searched_list);
- if(!$searched_count) return;
-
- $exceptionModule = array('editor', 'poll', 'homepage', 'textyle');
-
- $oModuleModel = &getModel('module');
- foreach($searched_list as $val) {
- $skin_list = $oModuleModel->getSkins('./modules/'.$val);
-
- if (is_array($skin_list) && count($skin_list) > 0 && !in_array($val, $exceptionModule)){
- if(!$GLOBALS['__ThemeModuleSkin__'][$val]){
- $GLOBALS['__ThemeModuleSkin__'][$val] = array();
- $moduleInfo = $oModuleModel->getModuleInfoXml($val);
- $GLOBALS['__ThemeModuleSkin__'][$val]['title'] = $moduleInfo->title;
- $GLOBALS['__ThemeModuleSkin__'][$val]['skins'] = array();
- }
- $GLOBALS['__ThemeModuleSkin__'][$val]['skins'] = array_merge($GLOBALS['__ThemeModuleSkin__'][$val]['skins'], $skin_list);
- }
- }
- $GLOBALS['__ThemeModuleSkin__']['__IS_PARSE__'] = true;
-
- return $GLOBALS['__ThemeModuleSkin__'];
- }
-
- /**
- * Return admin menu language
- * @return array
- */
- function getAdminMenuLang()
+ $connection = ssh2_connect($ftp_info->ftp_host, $ftp_info->ftp_port);
+ if(!ssh2_auth_password($connection, $ftp_info->ftp_user, $ftp_info->ftp_password))
{
- $currentLang = Context::getLangType();
- $cacheFile = sprintf('./files/cache/menu/admin_lang/adminMenu.%s.lang.php', $currentLang);
+ return new Object(-1,'msg_ftp_invalid_auth_info');
+ }
+ $sftp = ssh2_sftp($connection);
- // Update if no cache file exists or it is older than xml file
- if(!is_readable($cacheFile))
+ // create temp file
+ $pin = time();
+ FileHandler::writeFile('./files/cache/ftp_check', $pin);
+
+ // create path candidate
+ $xe_path = _XE_PATH_;
+ $path_info = array_reverse(explode('/', _XE_PATH_));
+ array_pop($path_info); // remove last '/'
+ $path_candidate = array();
+
+ $temp = '';
+ foreach($path_info as $path)
+ {
+ $temp = '/' . $path . $temp;
+ $path_candidate[] = $temp;
+ }
+
+ // try
+ foreach($path_candidate as $path)
+ {
+ // upload check file
+ if(!@ssh2_scp_send($connection, FileHandler::getRealPath('./files/cache/ftp_check'), $path . 'ftp_check.html'))
{
- $oModuleModel = &getModel('module');
- $installed_module_list = $oModuleModel->getModulesXmlInfo();
-
- $this->gnbLangBuffer = '$value)
- {
- $moduleActionInfo = $oModuleModel->getModuleActionXml($value->module);
- if(is_object($moduleActionInfo->menu))
- {
- foreach($moduleActionInfo->menu AS $key2=>$value2)
- {
- $lang->menu_gnb_sub[$key2] = $value2->title;
- $this->gnbLangBuffer .=sprintf('$lang->menu_gnb_sub[\'%s\'] = \'%s\';', $key2, $value2->title);
- }
- }
- }
- $this->gnbLangBuffer .= ' ?>';
- FileHandler::writeFile($cacheFile, $this->gnbLangBuffer);
+ continue;
}
- else include $cacheFile;
- return $lang->menu_gnb_sub;
- }
+ // get check file
+ $result = FileHandler::getRemoteResource(getNotencodedFullUrl() . 'ftp_check.html');
- /**
- * Get admin favorite list
- * @param int $siteSrl if default site, siteSrl is zero
- * @param bool $isGetModuleInfo
- * @return object
- */
- function getFavoriteList($siteSrl = 0, $isGetModuleInfo = false)
- {
- $args->site_srl = $siteSrl;
- $output = executeQueryArray('admin.getFavoriteList', $args);
- if (!$output->toBool()) return $output;
- if (!$output->data) return new Object();
+ // delete temp check file
+ @ssh2_sftp_unlink($sftp, $path . 'ftp_check.html');
- if($isGetModuleInfo && is_array($output->data))
+ // found
+ if($result == $pin)
{
- $oModuleModel = &getModel('module');
- foreach($output->data AS $key=>$value)
- {
- $moduleInfo = $oModuleModel->getModuleInfoXml($value->module);
- $output->data[$key]->admin_index_act = $moduleInfo->admin_index_act;
- $output->data[$key]->title = $moduleInfo->title;
- }
+ $found_path = $path;
+ break;
}
-
- $returnObject = new Object();
- $returnObject->add('favoriteList', $output->data);
- return $returnObject;
}
- /**
- * Check available insert favorite
- * @param int $siteSrl if default site, siteSrl is zero
- * @param string $module
- * @return object
- */
- function isExistsFavorite($siteSrl, $module)
+ FileHandler::removeFile('./files/cache/ftp_check', $pin);
+
+ if($found_path)
{
- $args->site_srl = $siteSrl;
- $args->module = $module;
- $output = executeQuery('admin.getFavorite', $args);
- if (!$output->toBool()) return $output;
-
- $returnObject = new Object();
- if ($output->data)
- {
- $returnObject->add('result', true);
- $returnObject->add('favoriteSrl', $output->data->admin_favorite_srl);
- }
- else
- {
- $returnObject->add('result', false);
- }
-
- return $returnObject;
- }
-
- /**
- * Return site list
- * @return void
- */
- function getSiteAllList()
- {
- if(Context::get('domain')) $domain = Context::get('domain');
- $siteList = $this->getAllSitesThatHaveModules($domain);
- $this->add('site_list', $siteList);
- }
-
- /**
- * Returns a list of all sites that contain modules
- * For each site domain and site_srl are retrieved
- *
- * @return array
- */
- function getAllSitesThatHaveModules($domain = null)
- {
- $args = new stdClass();
- if($domain) $args->domain = $domain;
- $columnList = array('domain', 'site_srl');
-
- $siteList = array();
- $output = executeQueryArray('admin.getSiteAllList', $args, $columnList);
- if($output->toBool()) $siteList = $output->data;
-
- $oModuleModel = &getModel('module');
- foreach($siteList as $key => $value)
- {
- $args->site_srl = $value->site_srl;
- $list = $oModuleModel->getModuleSrlList($args);
-
- if(!is_array($list))
- {
- $list = array($list);
- }
-
- foreach($list as $k => $v)
- {
- if(!is_dir('./modules/' . $v->module))
- {
- unset($list[$k]);
- }
- }
-
- if(!count($list))
- {
- unset($siteList[$key]);
- }
- }
- return $siteList;
- }
-
- /**
- * Return site count
- * @param string $date
- * @return int
- */
- function getSiteCountByDate($date = '')
- {
- if($date) $args->regDate = date('Ymd', strtotime($date));
-
- $output = executeQuery('admin.getSiteCountByDate', $args);
- if(!$output->toBool()) return 0;
-
- return $output->data->count;
- }
-
- function getFaviconUrl()
- {
- return $this->iconUrlCheck('favicon.ico','faviconSample.png');
- }
-
- function getMobileIconUrl()
- {
- return $this->iconUrlCheck('mobicon.png','mobiconSample.png');
- }
-
- function iconUrlCheck($iconname,$default_icon_name)
- {
- $file_exsit = FileHandler::readFile(_XE_PATH_.'files/attach/xeicon/'.$iconname);
- if(!$file_exsit){
- $icon_url = './modules/admin/tpl/img/'.$default_icon_name ;
- } else {
- $icon_url = $db_info->default_url.'files/attach/xeicon/'.$iconname;
- }
- return $icon_url;
+ $this->add('found_path', $found_path);
}
}
+
+ /**
+ * Find XE installed path on ftp
+ */
+ function getAdminFTPPath()
+ {
+ Context::loadLang('./modules/autoinstall/lang');
+ set_time_limit(5);
+ require_once(_XE_PATH_ . 'libs/ftp.class.php');
+
+ $ftp_info = Context::getRequestVars();
+
+ if(!$ftp_info->ftp_user || !$ftp_info->ftp_password)
+ {
+ return new Object(1, 'msg_ftp_invalid_auth_info');
+ }
+
+ if(!$ftp_info->ftp_host)
+ {
+ $ftp_info->ftp_host = '127.0.0.1';
+ }
+
+ if(!$ftp_info->ftp_port || !is_numeric($ftp_info->ftp_port))
+ {
+ $ftp_info->ftp_port = '21';
+ }
+
+ if($ftp_info->sftp == 'Y')
+ {
+ if(!function_exists(ssh2_sftp))
+ {
+ return new Object(-1,'disable_sftp_support');
+ }
+ return $this->getSFTPPath();
+ }
+
+ $oFTP = new ftp();
+ if(!$oFTP->ftp_connect($ftp_info->ftp_host, $ftp_info->ftp_port))
+ {
+ return new Object(1, sprintf(Context::getLang('msg_ftp_not_connected'), $ftp_info->ftp_host));
+ }
+
+ if(!$oFTP->ftp_login($ftp_info->ftp_user, $ftp_info->ftp_password))
+ {
+ return new Object(1, 'msg_ftp_invalid_auth_info');
+ }
+
+ // create temp file
+ $pin = time();
+ FileHandler::writeFile('./files/cache/ftp_check', $pin);
+
+ // create path candidate
+ $xe_path = _XE_PATH_;
+ $path_info = array_reverse(explode('/', _XE_PATH_));
+ array_pop($path_info); // remove last '/'
+ $path_candidate = array();
+
+ $temp = '';
+ foreach($path_info as $path)
+ {
+ $temp = '/' . $path . $temp;
+ $path_candidate[] = $temp;
+ }
+
+ // try
+ foreach($path_candidate as $path)
+ {
+ // upload check file
+ if(!$oFTP->ftp_put($path . 'ftp_check.html', FileHandler::getRealPath('./files/cache/ftp_check')))
+ {
+ continue;
+ }
+
+ // get check file
+ $result = FileHandler::getRemoteResource(getNotencodedFullUrl() . 'ftp_check.html');
+
+ // delete temp check file
+ $oFTP->ftp_delete($path . 'ftp_check.html');
+
+ // found
+ if($result == $pin)
+ {
+ $found_path = $path;
+ break;
+ }
+ }
+
+ FileHandler::removeFile('./files/cache/ftp_check', $pin);
+
+ if($found_path)
+ {
+ $this->add('found_path', $found_path);
+ }
+ }
+
+ /**
+ * Add file list to Object after sftp connect
+ * @return void|Object
+ */
+ function getSFTPList()
+ {
+ $ftp_info = Context::getRequestVars();
+ if(!$ftp_info->ftp_host)
+ {
+ $ftp_info->ftp_host = "127.0.0.1";
+ }
+ $connection = ssh2_connect($ftp_info->ftp_host, $ftp_info->ftp_port);
+ if(!ssh2_auth_password($connection, $ftp_info->ftp_user, $ftp_info->ftp_password))
+ {
+ return new Object(-1,'msg_ftp_invalid_auth_info');
+ }
+
+ $sftp = ssh2_sftp($connection);
+ $curpwd = "ssh2.sftp://$sftp".$this->pwd;
+ $dh = @opendir($curpwd);
+ if(!$dh) return new Object(-1, 'msg_ftp_invalid_path');
+ $list = array();
+ while(($file = readdir($dh)) !== false)
+ {
+ if(is_dir($curpwd.$file))
+ {
+ $file .= "/";
+ }
+ else
+ {
+ continue;
+ }
+ $list[] = $file;
+ }
+ closedir($dh);
+ $this->add('list', $list);
+ }
+
+ /**
+ * Add file list to Object after ftp connect
+ * @return void|Object
+ */
+ function getAdminFTPList()
+ {
+ Context::loadLang('./modules/autoinstall/lang');
+ set_time_limit(5);
+ require_once(_XE_PATH_.'libs/ftp.class.php');
+ $ftp_info = Context::getRequestVars();
+ if(!$ftp_info->ftp_user || !$ftp_info->ftp_password)
+ {
+ return new Object(-1, 'msg_ftp_invalid_auth_info');
+ }
+
+ $this->pwd = $ftp_info->ftp_root_path;
+
+ if(!$ftp_info->ftp_host)
+ {
+ $ftp_info->ftp_host = "127.0.0.1";
+ }
+
+ if (!$ftp_info->ftp_port || !is_numeric ($ftp_info->ftp_port)) {
+ $ftp_info->ftp_port = "21";
+ }
+
+ if($ftp_info->sftp == 'Y')
+ {
+ if(!function_exists(ssh2_sftp))
+ {
+ return new Object(-1,'disable_sftp_support');
+ }
+ return $this->getSFTPList();
+ }
+
+ $oFtp = new ftp();
+ if($oFtp->ftp_connect($ftp_info->ftp_host, $ftp_info->ftp_port))
+ {
+ if($oFtp->ftp_login($ftp_info->ftp_user, $ftp_info->ftp_password))
+ {
+ $_list = $oFtp->ftp_rawlist($this->pwd);
+ $oFtp->ftp_quit();
+ }
+ else
+ {
+ return new Object(-1,'msg_ftp_invalid_auth_info');
+ }
+ }
+ $list = array();
+
+ if($_list)
+ {
+ foreach($_list as $k => $v)
+ {
+ $src = null;
+ $src->data = $v;
+ $res = Context::convertEncoding($src);
+ $v = $res->data;
+ if(strpos($v,'d') === 0 || strpos($v, '')) $list[] = substr(strrchr($v,' '),1) . '/';
+ }
+ }
+ else
+ {
+ return new Object(-1,'msg_ftp_no_directory');
+ }
+ $this->add('list', $list);
+ }
+
+ /**
+ * Parameter arrange for send to XE collect server
+ * @param string $type 'WORKING', 'INSTALL'
+ * @return string
+ */
+ function getEnv($type='WORKING')
+ {
+ $skip = array(
+ 'ext' => array('pcre','json','hash','dom','session','spl','standard','date','ctype','tokenizer','apache2handler','filter','posix','reflection','pdo')
+ ,'module' => array('addon','admin','autoinstall', 'comment', 'communication', 'counter', 'document', 'editor', 'file', 'importer', 'install', 'integration_search', 'layout', 'member', 'menu', 'message', 'module', 'opage', 'page', 'point', 'poll', 'rss', 'session', 'spamfilter', 'tag', 'trackback', 'trash', 'widget')
+ ,'addon' => array('autolink', 'blogapi', 'captcha', 'counter', 'member_communication', 'member_extra_info', 'mobile', 'openid_delegation_id', 'point_level_icon', 'resize_image' )
+ );
+
+ $info = array();
+ $info['type'] = ($type !='INSTALL' ? 'WORKING' : 'INSTALL');
+ $info['location'] = _XE_LOCATION_;
+ $info['package'] = _XE_PACKAGE_;
+ $info['host'] = $db_type->default_url ? $db_type->default_url : getFullUrl();
+ $info['app'] = $_SERVER['SERVER_SOFTWARE'];
+ $info['xe_version'] = __ZBXE_VERSION__;
+ $info['php'] = phpversion();
+
+ $db_info = Context::getDBInfo();
+ $info['db_type'] = Context::getDBType();
+ $info['use_rewrite'] = $db_info->use_rewrite;
+ $info['use_db_session'] = $db_info->use_db_session == 'Y' ?'Y':'N';
+ $info['use_ssl'] = $db_info->use_ssl;
+
+ $info['phpext'] = '';
+ foreach (get_loaded_extensions() as $ext)
+ {
+ $ext = strtolower($ext);
+ if(in_array($ext, $skip['ext'])) continue;
+ $info['phpext'] .= '|'. $ext;
+ }
+ $info['phpext'] = substr($info['phpext'],1);
+
+ $info['module'] = '';
+ $oModuleModel = &getModel('module');
+ $module_list = $oModuleModel->getModuleList();
+ foreach($module_list as $module)
+ {
+ if(in_array($module->module, $skip['module'])) continue;
+ $info['module'] .= '|'.$module->module;
+ }
+ $info['module'] = substr($info['module'],1);
+
+ $info['addon'] = '';
+ $oAddonAdminModel = &getAdminModel('addon');
+ $addon_list = $oAddonAdminModel->getAddonList();
+ foreach($addon_list as $addon)
+ {
+ if(in_array($addon->addon, $skip['addon'])) continue;
+ $info['addon'] .= '|'.$addon->addon;
+ }
+ $info['addon'] = substr($info['addon'],1);
+
+ $param = '';
+ foreach($info as $k => $v)
+ {
+ if($v) $param .= sprintf('&%s=%s',$k,urlencode($v));
+ }
+ $param = substr($param, 1);
+
+ return $param;
+ }
+
+ /**
+ * Return theme info list by theme directory list
+ * @return array
+ */
+ function getThemeList()
+ {
+ $path = _XE_PATH_.'themes';
+ $list = FileHandler::readDir($path);
+
+ $theme_info = array();
+ if(count($list) > 0)
+ {
+ foreach($list as $val)
+ {
+ $theme_info[$val] = $this->getThemeInfo($val);
+ }
+ }
+
+ return $theme_info;
+ }
+
+ /**
+ * Return theme info
+ * @param string $theme_name
+ * @param array $layout_list
+ * @return object
+ */
+ function getThemeInfo($theme_name, $layout_list = null)
+ {
+ if ($GLOBALS['__ThemeInfo__'][$theme_name]) return $GLOBALS['__ThemeInfo__'][$theme_name];
+
+ $info_file = _XE_PATH_.'themes/'.$theme_name.'/conf/info.xml';
+ if(!file_exists($info_file)) return;
+
+ $oXmlParser = new XmlParser();
+ $_xml_obj = $oXmlParser->loadXmlFile($info_file);
+ if(!$_xml_obj->theme) return;
+
+ $xml_obj = $_xml_obj->theme;
+
+ // 스킨이름
+ $theme_info->name = $theme_name;
+ $theme_info->title = $xml_obj->title->body;
+ $thumbnail = './themes/'.$theme_name.'/thumbnail.png';
+ $theme_info->thumbnail = (file_exists($thumbnail))?$thumbnail:null;
+ $theme_info->version = $xml_obj->version->body;
+ sscanf($xml_obj->date->body, '%d-%d-%d', $date_obj->y, $date_obj->m, $date_obj->d);
+ $theme_info->date = sprintf('%04d%02d%02d', $date_obj->y, $date_obj->m, $date_obj->d);
+ $theme_info->description = $xml_obj->description->body;
+ $theme_info->path = './themes/'.$theme_name.'/';
+
+ if(!is_array($xml_obj->publisher)) $publisher_list[] = $xml_obj->publisher;
+ else $publisher_list = $xml_obj->publisher;
+
+ foreach($publisher_list as $publisher)
+ {
+ unset($publisher_obj);
+ $publisher_obj->name = $publisher->name->body;
+ $publisher_obj->email_address = $publisher->attrs->email_address;
+ $publisher_obj->homepage = $publisher->attrs->link;
+ $theme_info->publisher[] = $publisher_obj;
+ }
+
+ $layout = $xml_obj->layout;
+ $layout_path = $layout->directory->attrs->path;
+ $layout_parse = explode('/',$layout_path);
+ switch($layout_parse[1])
+ {
+ case 'themes' :
+ {
+ $layout_info->name = $theme_name.'|@|'.$layout_parse[count($layout_parse)-1];
+ break;
+ }
+ case 'layouts' :
+ {
+ $layout_info->name = $layout_parse[count($layout_parse)-1];
+ break;
+ }
+ }
+ $layout_info->title = $layout_parse[count($layout_parse)-1];
+ $layout_info->path = $layout_path;
+
+ $site_info = Context::get('site_module_info');
+ // check layout instance
+ $is_new_layout = true;
+ $oLayoutModel = &getModel('layout');
+ $layout_info_list = array();
+ $layout_list = $oLayoutModel->getLayoutList($site_info->site_srl);
+ if($layout_list)
+ {
+ foreach($layout_list as $val)
+ {
+ if($val->layout == $layout_info->name)
+ {
+ $is_new_layout = false;
+ $layout_info->layout_srl = $val->layout_srl;
+ break;
+ }
+ }
+ }
+
+ if ($is_new_layout)
+ {
+ $site_module_info = Context::get('site_module_info');
+ $args->site_srl = (int)$site_module_info->site_srl;
+ $args->layout_srl = getNextSequence();
+ $args->layout = $layout_info->name;
+ $args->title = $layout_info->title;
+ $args->layout_type = "P";
+ // Insert into the DB
+ $oLayoutAdminController = &getAdminController('layout');
+ $output = $oLayoutAdminController->insertLayout($args);
+ $layout_info->layout_srl = $args->layout_srl;
+ }
+
+ $theme_info->layout_info = $layout_info;
+
+ $skin_infos = $xml_obj->skininfos;
+ if(is_array($skin_infos->skininfo))$skin_list = $skin_infos->skininfo;
+ else $skin_list = array($skin_infos->skininfo);
+
+ $oModuleModel = &getModel('module');
+ $skins = array();
+ foreach($skin_list as $val)
+ {
+ unset($skin_info);
+ unset($skin_parse);
+ $skin_parse = explode('/',$val->directory->attrs->path);
+ switch($skin_parse[1])
+ {
+ case 'themes' :
+ {
+ $is_theme = true;
+ $module_name = $skin_parse[count($skin_parse)-1];
+ $skin_info->name = $theme_name.'|@|'.$module_name;
+ break;
+ }
+ case 'modules' :
+ {
+ $is_theme = false;
+ $module_name = $skin_parse[2];
+ $skin_info->name = $skin_parse[count($skin_parse)-1];
+ break;
+ }
+ }
+ $skin_info->path = $val->directory->attrs->path;
+ $skin_info->is_theme = $is_theme;
+ $skins[$module_name] = $skin_info;
+
+ if($is_theme)
+ {
+ if(!$GLOBALS['__ThemeModuleSkin__'][$module_name])
+ {
+ $GLOBALS['__ThemeModuleSkin__'][$module_name] = array();
+ $GLOBALS['__ThemeModuleSkin__'][$module_name]['skins'] = array();
+ $moduleInfo = $oModuleModel->getModuleInfoXml($module_name);
+ $GLOBALS['__ThemeModuleSkin__'][$module_name]['title'] = $moduleInfo->title;
+ }
+ $GLOBALS['__ThemeModuleSkin__'][$module_name]['skins'][$skin_info->name] = $oModuleModel->loadSkinInfo($skin_info->path, '', '');
+ }
+ }
+ $theme_info->skin_infos = $skins;
+
+ $GLOBALS['__ThemeInfo__'][$theme_name] = $theme_info;
+ return $theme_info;
+ }
+
+ /**
+ * Return theme module skin list
+ * @return array
+ */
+ function getModulesSkinList(){
+ if ($GLOBALS['__ThemeModuleSkin__']['__IS_PARSE__']) return $GLOBALS['__ThemeModuleSkin__'];
+ $searched_list = FileHandler::readDir('./modules');
+ sort($searched_list);
+
+ $searched_count = count($searched_list);
+ if(!$searched_count) return;
+
+ $exceptionModule = array('editor', 'poll', 'homepage', 'textyle');
+
+ $oModuleModel = &getModel('module');
+ foreach($searched_list as $val)
+ {
+ $skin_list = $oModuleModel->getSkins('./modules/'.$val);
+
+ if(is_array($skin_list) && count($skin_list) > 0 && !in_array($val, $exceptionModule))
+ {
+ if(!$GLOBALS['__ThemeModuleSkin__'][$val])
+ {
+ $GLOBALS['__ThemeModuleSkin__'][$val] = array();
+ $moduleInfo = $oModuleModel->getModuleInfoXml($val);
+ $GLOBALS['__ThemeModuleSkin__'][$val]['title'] = $moduleInfo->title;
+ $GLOBALS['__ThemeModuleSkin__'][$val]['skins'] = array();
+ }
+ $GLOBALS['__ThemeModuleSkin__'][$val]['skins'] = array_merge($GLOBALS['__ThemeModuleSkin__'][$val]['skins'], $skin_list);
+ }
+ }
+ $GLOBALS['__ThemeModuleSkin__']['__IS_PARSE__'] = true;
+
+ return $GLOBALS['__ThemeModuleSkin__'];
+ }
+
+ /**
+ * Return admin menu language
+ * @return array
+ */
+ function getAdminMenuLang()
+ {
+ $currentLang = Context::getLangType();
+ $cacheFile = sprintf('./files/cache/menu/admin_lang/adminMenu.%s.lang.php', $currentLang);
+
+ // Update if no cache file exists or it is older than xml file
+ if(!is_readable($cacheFile))
+ {
+ $oModuleModel = &getModel('module');
+ $installed_module_list = $oModuleModel->getModulesXmlInfo();
+
+ $this->gnbLangBuffer = '$value)
+ {
+ $moduleActionInfo = $oModuleModel->getModuleActionXml($value->module);
+ if(is_object($moduleActionInfo->menu))
+ {
+ foreach($moduleActionInfo->menu AS $key2=>$value2)
+ {
+ $lang->menu_gnb_sub[$key2] = $value2->title;
+ $this->gnbLangBuffer .=sprintf('$lang->menu_gnb_sub[\'%s\'] = \'%s\';', $key2, $value2->title);
+ }
+ }
+ }
+ $this->gnbLangBuffer .= ' ?>';
+ FileHandler::writeFile($cacheFile, $this->gnbLangBuffer);
+ }
+ else include $cacheFile;
+
+ return $lang->menu_gnb_sub;
+ }
+
+ /**
+ * Get admin favorite list
+ * @param int $siteSrl if default site, siteSrl is zero
+ * @param bool $isGetModuleInfo
+ * @return object
+ */
+ function getFavoriteList($siteSrl = 0, $isGetModuleInfo = false)
+ {
+ $args->site_srl = $siteSrl;
+ $output = executeQueryArray('admin.getFavoriteList', $args);
+ if(!$output->toBool()) return $output;
+ if(!$output->data) return new Object();
+
+ if($isGetModuleInfo && is_array($output->data))
+ {
+ $oModuleModel = &getModel('module');
+ foreach($output->data AS $key=>$value)
+ {
+ $moduleInfo = $oModuleModel->getModuleInfoXml($value->module);
+ $output->data[$key]->admin_index_act = $moduleInfo->admin_index_act;
+ $output->data[$key]->title = $moduleInfo->title;
+ }
+ }
+
+ $returnObject = new Object();
+ $returnObject->add('favoriteList', $output->data);
+ return $returnObject;
+ }
+
+ /**
+ * Check available insert favorite
+ * @param int $siteSrl if default site, siteSrl is zero
+ * @param string $module
+ * @return object
+ */
+ function isExistsFavorite($siteSrl, $module)
+ {
+ $args->site_srl = $siteSrl;
+ $args->module = $module;
+ $output = executeQuery('admin.getFavorite', $args);
+ if (!$output->toBool()) return $output;
+
+ $returnObject = new Object();
+ if($output->data)
+ {
+ $returnObject->add('result', true);
+ $returnObject->add('favoriteSrl', $output->data->admin_favorite_srl);
+ }
+ else
+ {
+ $returnObject->add('result', false);
+ }
+
+ return $returnObject;
+ }
+
+ /**
+ * Return site list
+ * @return void
+ */
+ function getSiteAllList()
+ {
+ if(Context::get('domain')) $domain = Context::get('domain');
+ $siteList = $this->getAllSitesThatHaveModules($domain);
+ $this->add('site_list', $siteList);
+ }
+
+ /**
+ * Returns a list of all sites that contain modules
+ * For each site domain and site_srl are retrieved
+ *
+ * @return array
+ */
+ function getAllSitesThatHaveModules($domain = null)
+ {
+ $args = new stdClass();
+ if($domain) $args->domain = $domain;
+ $columnList = array('domain', 'site_srl');
+
+ $siteList = array();
+ $output = executeQueryArray('admin.getSiteAllList', $args, $columnList);
+ if($output->toBool()) $siteList = $output->data;
+
+ $oModuleModel = &getModel('module');
+ foreach($siteList as $key => $value)
+ {
+ $args->site_srl = $value->site_srl;
+ $list = $oModuleModel->getModuleSrlList($args);
+
+ if(!is_array($list))
+ {
+ $list = array($list);
+ }
+
+ foreach($list as $k => $v)
+ {
+ if(!is_dir('./modules/' . $v->module))
+ {
+ unset($list[$k]);
+ }
+ }
+
+ if(!count($list))
+ {
+ unset($siteList[$key]);
+ }
+ }
+ return $siteList;
+ }
+
+ /**
+ * Return site count
+ * @param string $date
+ * @return int
+ */
+ function getSiteCountByDate($date = '')
+ {
+ if($date) $args->regDate = date('Ymd', strtotime($date));
+
+ $output = executeQuery('admin.getSiteCountByDate', $args);
+ if(!$output->toBool()) return 0;
+
+ return $output->data->count;
+ }
+
+ function getFaviconUrl()
+ {
+ return $this->iconUrlCheck('favicon.ico','faviconSample.png');
+ }
+
+ function getMobileIconUrl()
+ {
+ return $this->iconUrlCheck('mobicon.png','mobiconSample.png');
+ }
+
+ function iconUrlCheck($iconname,$default_icon_name)
+ {
+ $file_exsit = FileHandler::readFile(_XE_PATH_.'files/attach/xeicon/'.$iconname);
+ if(!$file_exsit)
+ {
+ $icon_url = './modules/admin/tpl/img/'.$default_icon_name ;
+ }
+ else
+ {
+ $icon_url = $db_info->default_url.'files/attach/xeicon/'.$iconname;
+ }
+ return $icon_url;
+ }
+}
+/* End of file admin.admin.model.php */
+/* Location: ./modules/admin/admin.admin.model.php */
diff --git a/modules/admin/admin.admin.view.php b/modules/admin/admin.admin.view.php
index d7773e5c1..bf5493df5 100644
--- a/modules/admin/admin.admin.view.php
+++ b/modules/admin/admin.admin.view.php
@@ -1,441 +1,451 @@
getLoggedInfo();
- if($logged_info->is_admin!='Y') return $this->stop("msg_is_not_administrator");
+ /**
+ * Initilization
+ * @return void
+ */
+ function init()
+ {
+ // forbit access if the user is not an administrator
+ $oMemberModel = &getModel('member');
+ $logged_info = $oMemberModel->getLoggedInfo();
+ if($logged_info->is_admin!='Y') return $this->stop("msg_is_not_administrator");
- // change into administration layout
- $this->setTemplatePath($this->module_path.'tpl');
- $this->setLayoutPath($this->getTemplatePath());
- $this->setLayoutFile('layout.html');
+ // change into administration layout
+ $this->setTemplatePath($this->module_path.'tpl');
+ $this->setLayoutPath($this->getTemplatePath());
+ $this->setLayoutFile('layout.html');
- $this->makeGnbUrl();
+ $this->makeGnbUrl();
- // Retrieve the list of installed modules
+ // Retrieve the list of installed modules
- $db_info = Context::getDBInfo();
+ $db_info = Context::getDBInfo();
- Context::set('time_zone_list', $GLOBALS['time_zone']);
- Context::set('time_zone', $GLOBALS['_time_zone']);
- Context::set('use_rewrite', $db_info->use_rewrite=='Y'?'Y':'N');
- Context::set('use_sso', $db_info->use_sso=='Y'?'Y':'N');
- Context::set('use_html5', $db_info->use_html5=='Y'?'Y':'N');
- Context::set('use_spaceremover', $db_info->use_spaceremover?$db_info->use_spaceremover:'Y');//not use
- Context::set('qmail_compatibility', $db_info->qmail_compatibility=='Y'?'Y':'N');
- Context::set('use_db_session', $db_info->use_db_session=='N'?'N':'Y');
- Context::set('use_mobile_view', $db_info->use_mobile_view =='Y'?'Y':'N');
- Context::set('use_ssl', $db_info->use_ssl?$db_info->use_ssl:"none");
- Context::set('use_cdn', $db_info->use_cdn?$db_info->use_cdn:"none");
- if($db_info->http_port) Context::set('http_port', $db_info->http_port);
- if($db_info->https_port) Context::set('https_port', $db_info->https_port);
+ Context::set('time_zone_list', $GLOBALS['time_zone']);
+ Context::set('time_zone', $GLOBALS['_time_zone']);
+ Context::set('use_rewrite', $db_info->use_rewrite=='Y'?'Y':'N');
+ Context::set('use_sso', $db_info->use_sso=='Y'?'Y':'N');
+ Context::set('use_html5', $db_info->use_html5=='Y'?'Y':'N');
+ Context::set('use_spaceremover', $db_info->use_spaceremover?$db_info->use_spaceremover:'Y');//not use
+ Context::set('qmail_compatibility', $db_info->qmail_compatibility=='Y'?'Y':'N');
+ Context::set('use_db_session', $db_info->use_db_session=='N'?'N':'Y');
+ Context::set('use_mobile_view', $db_info->use_mobile_view =='Y'?'Y':'N');
+ Context::set('use_ssl', $db_info->use_ssl?$db_info->use_ssl:"none");
+ Context::set('use_cdn', $db_info->use_cdn?$db_info->use_cdn:"none");
+ if($db_info->http_port) Context::set('http_port', $db_info->http_port);
+ if($db_info->https_port) Context::set('https_port', $db_info->https_port);
- $this->showSendEnv();
- $this->checkEasyinstall();
- }
+ $this->showSendEnv();
+ $this->checkEasyinstall();
+ }
- /**
- * check easy install
- * @return void
- */
- function checkEasyinstall()
+ /**
+ * check easy install
+ * @return void
+ */
+ function checkEasyinstall()
+ {
+ $lastTime = (int)FileHandler::readFile($this->easyinstallCheckFile);
+ if ($lastTime > time() - 60*60*24*30) return;
+
+ $oAutoinstallModel = &getModel('autoinstall');
+ $params = array();
+ $params["act"] = "getResourceapiLastupdate";
+ $body = XmlGenerater::generate($params);
+ $buff = FileHandler::getRemoteResource(_XE_DOWNLOAD_SERVER_, $body, 3, "POST", "application/xml");
+ $xml_lUpdate = new XmlParser();
+ $lUpdateDoc = $xml_lUpdate->parse($buff);
+ $updateDate = $lUpdateDoc->response->updatedate->body;
+
+ if (!$updateDate)
{
- $lastTime = (int)FileHandler::readFile($this->easyinstallCheckFile);
- if ($lastTime > time() - 60*60*24*30) return;
-
- $oAutoinstallModel = &getModel('autoinstall');
- $params = array();
- $params["act"] = "getResourceapiLastupdate";
- $body = XmlGenerater::generate($params);
- $buff = FileHandler::getRemoteResource(_XE_DOWNLOAD_SERVER_, $body, 3, "POST", "application/xml");
- $xml_lUpdate = new XmlParser();
- $lUpdateDoc = $xml_lUpdate->parse($buff);
- $updateDate = $lUpdateDoc->response->updatedate->body;
-
- if (!$updateDate)
- {
- $this->_markingCheckEasyinstall();
- return;
- }
-
- $item = $oAutoinstallModel->getLatestPackage();
- if(!$item || $item->updatedate < $updateDate)
- {
- $oController = &getAdminController('autoinstall');
- $oController->_updateinfo();
- }
$this->_markingCheckEasyinstall();
+ return;
}
- /**
- * update easy install file content
- * @return void
- */
- function _markingCheckEasyinstall()
+ $item = $oAutoinstallModel->getLatestPackage();
+ if(!$item || $item->updatedate < $updateDate)
{
- $currentTime = time();
- FileHandler::writeFile($this->easyinstallCheckFile, $currentTime);
+ $oController = &getAdminController('autoinstall');
+ $oController->_updateinfo();
}
+ $this->_markingCheckEasyinstall();
+ }
- /**
- * Include admin menu php file and make menu url
- * Setting admin logo, newest news setting
- * @return void
- */
- function makeGnbUrl($module = 'admin')
+ /**
+ * update easy install file content
+ * @return void
+ */
+ function _markingCheckEasyinstall()
+ {
+ $currentTime = time();
+ FileHandler::writeFile($this->easyinstallCheckFile, $currentTime);
+ }
+
+ /**
+ * Include admin menu php file and make menu url
+ * Setting admin logo, newest news setting
+ * @return void
+ */
+ function makeGnbUrl($module = 'admin')
+ {
+ global $lang;
+
+ $oAdminAdminModel = &getAdminModel('admin');
+ $lang->menu_gnb_sub = $oAdminAdminModel->getAdminMenuLang();
+
+ $menuPhpFile = $oAdminAdminModel->checkAdminMenu();
+ if(!$menuPhpFile)
{
- global $lang;
+ return $this->setRedirectUrl(getUrl('', 'module', 'admin'));
+ }
+ include $menuPhpFile;
- $oAdminAdminModel = &getAdminModel('admin');
- $lang->menu_gnb_sub = $oAdminAdminModel->getAdminMenuLang();
+ $oModuleModel = &getModel('module');
+ $moduleActionInfo = $oModuleModel->getModuleActionXml($module);
- $menuPhpFile = $oAdminAdminModel->checkAdminMenu();
- if(!$menuPhpFile)
+ $currentAct = Context::get('act');
+ $subMenuTitle = '';
+ foreach((array)$moduleActionInfo->menu as $key=>$value)
+ {
+ if(isset($value->acts) && is_array($value->acts) && in_array($currentAct, $value->acts))
{
- return $this->setRedirectUrl(getUrl('', 'module', 'admin'));
+ $subMenuTitle = $value->title;
+ break;
}
- include $menuPhpFile;
+ }
- $oModuleModel = &getModel('module');
- $moduleActionInfo = $oModuleModel->getModuleActionXml($module);
-
- $currentAct = Context::get('act');
- $subMenuTitle = '';
- foreach((array)$moduleActionInfo->menu as $key=>$value)
+ $parentSrl = 0;
+ foreach((array)$menu->list as $parentKey=>$parentMenu)
+ {
+ if(!is_array($parentMenu['list']) || !count($parentMenu['list'])) continue;
+ if($parentMenu['href'] == '#' && count($parentMenu['list']))
{
- if(isset($value->acts) && is_array($value->acts) && in_array($currentAct, $value->acts))
+ $firstChild = current($parentMenu['list']);
+ $menu->list[$parentKey]['href'] = $firstChild['href'];
+ }
+
+ foreach($parentMenu['list'] as $childKey=>$childMenu)
+ {
+ if($subMenuTitle == $childMenu['text'])
{
- $subMenuTitle = $value->title;
+ $parentSrl = $childMenu['parent_srl'];
break;
}
}
-
- $parentSrl = 0;
- foreach((array)$menu->list as $parentKey=>$parentMenu)
- {
- if(!is_array($parentMenu['list']) || !count($parentMenu['list'])) continue;
- if($parentMenu['href'] == '#' && count($parentMenu['list'])) {
- $firstChild = current($parentMenu['list']);
- $menu->list[$parentKey]['href'] = $firstChild['href'];
- }
-
- foreach($parentMenu['list'] as $childKey=>$childMenu)
- {
- if($subMenuTitle == $childMenu['text'])
- {
- $parentSrl = $childMenu['parent_srl'];
- break;
- }
- }
- }
-
- // Admin logo, title setup
- $objConfig = $oModuleModel->getModuleConfig('admin');
- $gnbTitleInfo->adminTitle = $objConfig->adminTitle ? $objConfig->adminTitle:'XE Admin';
- $gnbTitleInfo->adminLogo = $objConfig->adminLogo ? $objConfig->adminLogo:'modules/admin/tpl/img/xe.h1.png';
-
- $browserTitle = ($subMenuTitle ? $subMenuTitle : 'Dashboard').' - '.$gnbTitleInfo->adminTitle;
-
- // Get list of favorite
- $oAdminAdminModel = &getAdminModel('admin');
- $output = $oAdminAdminModel->getFavoriteList(0, true);
- Context::set('favorite_list', $output->get('favoriteList'));
-
- // Retrieve recent news and set them into context,
- // move from index method, because use in admin footer
- $newest_news_url = sprintf("http://news.xpressengine.com/%s/news.php?version=%s&package=%s", _XE_LOCATION_, __ZBXE_VERSION__, _XE_PACKAGE_);
- $cache_file = sprintf("%sfiles/cache/newest_news.%s.cache.php", _XE_PATH_, _XE_LOCATION_);
- if(!file_exists($cache_file) || filemtime($cache_file)+ 60*60 < time()) {
- // Considering if data cannot be retrieved due to network problem, modify filemtime to prevent trying to reload again when refreshing administration page
- // Ensure to access the administration page even though news cannot be displayed
- FileHandler::writeFile($cache_file,'');
- FileHandler::getRemoteFile($newest_news_url, $cache_file, null, 1, 'GET', 'text/html', array('REQUESTURL'=>getFullUrl('')));
- }
-
- if(file_exists($cache_file)) {
- $oXml = new XmlParser();
- $buff = $oXml->parse(FileHandler::readFile($cache_file));
-
- $item = $buff->zbxe_news->item;
- if($item) {
- if(!is_array($item)) $item = array($item);
-
- foreach($item as $key => $val) {
- $obj = null;
- $obj->title = $val->body;
- $obj->date = $val->attrs->date;
- $obj->url = $val->attrs->url;
- $news[] = $obj;
- }
- Context::set('news', $news);
- if(isset($news) && is_array($news))
- {
- Context::set('latestVersion', array_shift($news));
- }
- }
- Context::set('released_version', $buff->zbxe_news->attrs->released_version);
- Context::set('download_link', $buff->zbxe_news->attrs->download_link);
- }
-
-
- Context::set('subMenuTitle', $subMenuTitle);
- Context::set('gnbUrlList', $menu->list);
- Context::set('parentSrl', $parentSrl);
- Context::set('gnb_title_info', $gnbTitleInfo);
- Context::setBrowserTitle($browserTitle);
}
- /**
- * Display Super Admin Dashboard
- * @return void
- */
- function dispAdminIndex() {
- // Get statistics
- $args->date = date("Ymd000000", time()-60*60*24);
- $today = date("Ymd");
+ // Admin logo, title setup
+ $objConfig = $oModuleModel->getModuleConfig('admin');
+ $gnbTitleInfo->adminTitle = $objConfig->adminTitle ? $objConfig->adminTitle:'XE Admin';
+ $gnbTitleInfo->adminLogo = $objConfig->adminLogo ? $objConfig->adminLogo:'modules/admin/tpl/img/xe.h1.png';
- // Member Status
- $oMemberAdminModel = &getAdminModel('member');
- $status->member->todayCount = $oMemberAdminModel->getMemberCountByDate($today);
- $status->member->totalCount = $oMemberAdminModel->getMemberCountByDate();
+ $browserTitle = ($subMenuTitle ? $subMenuTitle : 'Dashboard').' - '.$gnbTitleInfo->adminTitle;
- // Document Status
- $oDocumentAdminModel = &getAdminModel('document');
- $statusList = array('PUBLIC', 'SECRET');
- $status->document->todayCount = $oDocumentAdminModel->getDocumentCountByDate($today, array(), $statusList);
- $status->document->totalCount = $oDocumentAdminModel->getDocumentCountByDate('', array(), $statusList);
+ // Get list of favorite
+ $oAdminAdminModel = &getAdminModel('admin');
+ $output = $oAdminAdminModel->getFavoriteList(0, true);
+ Context::set('favorite_list', $output->get('favoriteList'));
- // Comment Status
- $oCommentModel = &getModel('comment');
- $status->comment->todayCount = $oCommentModel->getCommentCountByDate($today);
- $status->comment->totalCount = $oCommentModel->getCommentCountByDate();
-
- // Trackback Status
- $oTrackbackAdminModel = &getAdminModel('trackback');
- $status->trackback->todayCount = $oTrackbackAdminModel->getTrackbackCountByDate($today);
- $status->trackback->totalCount = $oTrackbackAdminModel->getTrackbackCountByDate();
-
- // Attached files Status
- $oFileAdminModel = &getAdminModel('file');
- $status->file->todayCount = $oFileAdminModel->getFilesCountByDate($today);
- $status->file->totalCount = $oFileAdminModel->getFilesCountByDate();
-
- Context::set('status', $status);
-
- // Latest Document
- $oDocumentModel = &getModel('document');
- $columnList = array('document_srl', 'module_srl', 'category_srl', 'title', 'nick_name', 'member_srl');
- $args->list_count = 5;;
- $output = $oDocumentModel->getDocumentList($args, false, false, $columnList);
- Context::set('latestDocumentList', $output->data);
- $security = new Security();
- $security->encodeHTML('latestDocumentList..variables.nick_name');
- unset($args, $output, $columnList);
-
- // Latest Comment
- $oCommentModel = &getModel('comment');
- $columnList = array('comment_srl', 'module_srl', 'document_srl', 'content', 'nick_name', 'member_srl');
- $args->list_count = 5;
- $output = $oCommentModel->getNewestCommentList($args, $columnList);
- if(is_array($output))
- {
- foreach($output AS $key=>$value)
- {
- $value->content = strip_tags($value->content);
- }
- }
- Context::set('latestCommentList', $output);
- unset($args, $output, $columnList);
-
- //Latest Trackback
- $oTrackbackModel = &getModel('trackback');
- $columnList = array();
- $args->list_count = 5;
- $output =$oTrackbackModel->getNewestTrackbackList($args);
- Context::set('latestTrackbackList', $output->data);
- unset($args, $output, $columnList);
-
- // Get list of modules
- $oModuleModel = &getModel('module');
- $module_list = $oModuleModel->getModuleList();
- if(is_array($module_list))
- {
- $needUpdate = false;
- $addTables = false;
- foreach($module_list AS $key=>$value)
- {
- if($value->need_install)
- {
- $addTables = true;
- }
- if($value->need_update)
- {
- $needUpdate = true;
- }
- }
- }
- Context::set('module_list', $module_list);
- Context::set('needUpdate', $isUpdated);
- Context::set('addTables', $addTables);
- Context::set('needUpdate', $needUpdate);
-
- // gathering enviroment check
- $mainVersion = join('.', array_slice(explode('.', __ZBXE_VERSION__), 0, 2));
- $path = FileHandler::getRealPath('./files/env/'.$mainVersion);
- $isEnviromentGatheringAgreement = false;
- if(file_exists($path)) $isEnviromentGatheringAgreement = true;
- Context::set('isEnviromentGatheringAgreement', $isEnviromentGatheringAgreement);
- Context::set('layout','none');
-
- $this->setTemplateFile('index');
- }
-
- /**
- * Display Configuration(settings) page
- * @return void
- */
- function dispAdminConfigGeneral() {
- Context::loadLang('modules/install/lang');
-
- $db_info = Context::getDBInfo();
-
- Context::set('selected_lang', $db_info->lang_type);
-
- Context::set('default_url', $db_info->default_url);
- Context::set('langs', Context::loadLangSupported());
-
- Context::set('lang_selected', Context::loadLangSelected());
-
- $admin_ip_list = preg_replace("/[,]+/","\r\n",$db_info->admin_ip_list);
- Context::set('admin_ip_list', $admin_ip_list);
-
- $oAdminModel = &getAdminModel('admin');
- $favicon_url = $oAdminModel->getFaviconUrl();
- $mobicon_url = $oAdminModel->getMobileIconUrl();
- Context::set('favicon_url', $favicon_url);
- Context::set('mobicon_url', $mobicon_url);
-
- $oDocumentModel = &getModel('document');
- $config = $oDocumentModel->getDocumentConfig();
- Context::set('thumbnail_type',$config->thumbnail_type);
-
- Context::set('IP',$_SERVER['REMOTE_ADDR']);
-
- $oModuleModel = &getModel('module');
- $config = $oModuleModel->getModuleConfig('module');
- Context::set('siteTitle',$config->siteTitle);
- Context::set('htmlFooter',$config->htmlFooter);
-
-
- $columnList = array('modules.mid', 'modules.browser_title', 'sites.index_module_srl');
- $start_module = $oModuleModel->getSiteInfo(0, $columnList);
- Context::set('start_module', $start_module);
-
- Context::set('pwd',$pwd);
- $this->setTemplateFile('config_general');
-
- $security = new Security();
- $security->encodeHTML('news..', 'released_version', 'download_link', 'selected_lang', 'module_list..', 'module_list..author..', 'addon_list..', 'addon_list..author..', 'start_module.');
- }
-
- /**
- * Display FTP Configuration(settings) page
- * @return void
- */
- function dispAdminConfigFtp() {
- Context::loadLang('modules/install/lang');
-
- $ftp_info = Context::getFTPInfo();
- Context::set('ftp_info', $ftp_info);
- Context::set('sftp_support', function_exists(ssh2_sftp));
-
- $this->setTemplateFile('config_ftp');
-
-// $security = new Security();
-// $security->encodeHTML('ftp_info..');
-
- }
-
- /**
- * Display Admin Menu Configuration(settings) page
- * @return void
- */
- function dispAdminSetup()
+ // Retrieve recent news and set them into context,
+ // move from index method, because use in admin footer
+ $newest_news_url = sprintf("http://news.xpressengine.com/%s/news.php?version=%s&package=%s", _XE_LOCATION_, __ZBXE_VERSION__, _XE_PACKAGE_);
+ $cache_file = sprintf("%sfiles/cache/newest_news.%s.cache.php", _XE_PATH_, _XE_LOCATION_);
+ if(!file_exists($cache_file) || filemtime($cache_file)+ 60*60 < time())
{
- $oModuleModel = &getModel('module');
- $configObject = $oModuleModel->getModuleConfig('admin');
-
- $oAdmin = &getClass('admin');
- $oMenuAdminModel = &getAdminModel('menu');
- $output = $oMenuAdminModel->getMenuByTitle($oAdmin->getAdminMenuName());
-
- Context::set('menu_srl', $output->menu_srl);
- Context::set('menu_title', $output->title);
- Context::set('config_object', $configObject);
- $this->setTemplateFile('admin_setup');
+ // Considering if data cannot be retrieved due to network problem, modify filemtime to prevent trying to reload again when refreshing administration page
+ // Ensure to access the administration page even though news cannot be displayed
+ FileHandler::writeFile($cache_file,'');
+ FileHandler::getRemoteFile($newest_news_url, $cache_file, null, 1, 'GET', 'text/html', array('REQUESTURL'=>getFullUrl('')));
}
+ if(file_exists($cache_file))
+ {
+ $oXml = new XmlParser();
+ $buff = $oXml->parse(FileHandler::readFile($cache_file));
- /**
- * Enviroment information send to XE collect server
- * @return void
- */
- function showSendEnv() {
- if(Context::getResponseMethod() != 'HTML') return;
+ $item = $buff->zbxe_news->item;
+ if($item)
+ {
+ if(!is_array($item)) $item = array($item);
- $server = 'http://collect.xpressengine.com/env/img.php?';
- $path = './files/env/';
- $install_env = $path . 'install';
- $mainVersion = join('.', array_slice(explode('.', __ZBXE_VERSION__), 0, 2));
+ foreach($item as $key => $val)
+ {
+ $obj = null;
+ $obj->title = $val->body;
+ $obj->date = $val->attrs->date;
+ $obj->url = $val->attrs->url;
+ $news[] = $obj;
+ }
+ Context::set('news', $news);
+ if(isset($news) && is_array($news))
+ {
+ Context::set('latestVersion', array_shift($news));
+ }
+ }
+ Context::set('released_version', $buff->zbxe_news->attrs->released_version);
+ Context::set('download_link', $buff->zbxe_news->attrs->download_link);
+ }
- if(file_exists(FileHandler::getRealPath($install_env))) {
+ Context::set('subMenuTitle', $subMenuTitle);
+ Context::set('gnbUrlList', $menu->list);
+ Context::set('parentSrl', $parentSrl);
+ Context::set('gnb_title_info', $gnbTitleInfo);
+ Context::setBrowserTitle($browserTitle);
+ }
+
+ /**
+ * Display Super Admin Dashboard
+ * @return void
+ */
+ function dispAdminIndex()
+ {
+ // Get statistics
+ $args->date = date("Ymd000000", time()-60*60*24);
+ $today = date("Ymd");
+
+ // Member Status
+ $oMemberAdminModel = &getAdminModel('member');
+ $status->member->todayCount = $oMemberAdminModel->getMemberCountByDate($today);
+ $status->member->totalCount = $oMemberAdminModel->getMemberCountByDate();
+
+ // Document Status
+ $oDocumentAdminModel = &getAdminModel('document');
+ $statusList = array('PUBLIC', 'SECRET');
+ $status->document->todayCount = $oDocumentAdminModel->getDocumentCountByDate($today, array(), $statusList);
+ $status->document->totalCount = $oDocumentAdminModel->getDocumentCountByDate('', array(), $statusList);
+
+ // Comment Status
+ $oCommentModel = &getModel('comment');
+ $status->comment->todayCount = $oCommentModel->getCommentCountByDate($today);
+ $status->comment->totalCount = $oCommentModel->getCommentCountByDate();
+
+ // Trackback Status
+ $oTrackbackAdminModel = &getAdminModel('trackback');
+ $status->trackback->todayCount = $oTrackbackAdminModel->getTrackbackCountByDate($today);
+ $status->trackback->totalCount = $oTrackbackAdminModel->getTrackbackCountByDate();
+
+ // Attached files Status
+ $oFileAdminModel = &getAdminModel('file');
+ $status->file->todayCount = $oFileAdminModel->getFilesCountByDate($today);
+ $status->file->totalCount = $oFileAdminModel->getFilesCountByDate();
+
+ Context::set('status', $status);
+
+ // Latest Document
+ $oDocumentModel = &getModel('document');
+ $columnList = array('document_srl', 'module_srl', 'category_srl', 'title', 'nick_name', 'member_srl');
+ $args->list_count = 5;;
+ $output = $oDocumentModel->getDocumentList($args, false, false, $columnList);
+ Context::set('latestDocumentList', $output->data);
+ $security = new Security();
+ $security->encodeHTML('latestDocumentList..variables.nick_name');
+ unset($args, $output, $columnList);
+
+ // Latest Comment
+ $oCommentModel = &getModel('comment');
+ $columnList = array('comment_srl', 'module_srl', 'document_srl', 'content', 'nick_name', 'member_srl');
+ $args->list_count = 5;
+ $output = $oCommentModel->getNewestCommentList($args, $columnList);
+ if(is_array($output))
+ {
+ foreach($output AS $key=>$value)
+ {
+ $value->content = strip_tags($value->content);
+ }
+ }
+ Context::set('latestCommentList', $output);
+ unset($args, $output, $columnList);
+
+ //Latest Trackback
+ $oTrackbackModel = &getModel('trackback');
+ $columnList = array();
+ $args->list_count = 5;
+ $output =$oTrackbackModel->getNewestTrackbackList($args);
+ Context::set('latestTrackbackList', $output->data);
+ unset($args, $output, $columnList);
+
+ // Get list of modules
+ $oModuleModel = &getModel('module');
+ $module_list = $oModuleModel->getModuleList();
+ if(is_array($module_list))
+ {
+ $needUpdate = false;
+ $addTables = false;
+ foreach($module_list AS $key=>$value)
+ {
+ if($value->need_install)
+ {
+ $addTables = true;
+ }
+ if($value->need_update)
+ {
+ $needUpdate = true;
+ }
+ }
+ }
+ Context::set('module_list', $module_list);
+ Context::set('needUpdate', $isUpdated);
+ Context::set('addTables', $addTables);
+ Context::set('needUpdate', $needUpdate);
+
+ // gathering enviroment check
+ $mainVersion = join('.', array_slice(explode('.', __ZBXE_VERSION__), 0, 2));
+ $path = FileHandler::getRealPath('./files/env/'.$mainVersion);
+ $isEnviromentGatheringAgreement = false;
+ if(file_exists($path)) $isEnviromentGatheringAgreement = true;
+ Context::set('isEnviromentGatheringAgreement', $isEnviromentGatheringAgreement);
+ Context::set('layout','none');
+
+ $this->setTemplateFile('index');
+ }
+
+ /**
+ * Display Configuration(settings) page
+ * @return void
+ */
+ function dispAdminConfigGeneral()
+ {
+ Context::loadLang('modules/install/lang');
+
+ $db_info = Context::getDBInfo();
+
+ Context::set('selected_lang', $db_info->lang_type);
+
+ Context::set('default_url', $db_info->default_url);
+ Context::set('langs', Context::loadLangSupported());
+
+ Context::set('lang_selected', Context::loadLangSelected());
+
+ $admin_ip_list = preg_replace("/[,]+/","\r\n",$db_info->admin_ip_list);
+ Context::set('admin_ip_list', $admin_ip_list);
+
+ $oAdminModel = &getAdminModel('admin');
+ $favicon_url = $oAdminModel->getFaviconUrl();
+ $mobicon_url = $oAdminModel->getMobileIconUrl();
+ Context::set('favicon_url', $favicon_url);
+ Context::set('mobicon_url', $mobicon_url);
+
+ $oDocumentModel = &getModel('document');
+ $config = $oDocumentModel->getDocumentConfig();
+ Context::set('thumbnail_type',$config->thumbnail_type);
+
+ Context::set('IP',$_SERVER['REMOTE_ADDR']);
+
+ $oModuleModel = &getModel('module');
+ $config = $oModuleModel->getModuleConfig('module');
+ Context::set('siteTitle',$config->siteTitle);
+ Context::set('htmlFooter',$config->htmlFooter);
+
+
+ $columnList = array('modules.mid', 'modules.browser_title', 'sites.index_module_srl');
+ $start_module = $oModuleModel->getSiteInfo(0, $columnList);
+ Context::set('start_module', $start_module);
+
+ Context::set('pwd',$pwd);
+ $this->setTemplateFile('config_general');
+
+ $security = new Security();
+ $security->encodeHTML('news..', 'released_version', 'download_link', 'selected_lang', 'module_list..', 'module_list..author..', 'addon_list..', 'addon_list..author..', 'start_module.');
+ }
+
+ /**
+ * Display FTP Configuration(settings) page
+ * @return void
+ */
+ function dispAdminConfigFtp()
+ {
+ Context::loadLang('modules/install/lang');
+
+ $ftp_info = Context::getFTPInfo();
+ Context::set('ftp_info', $ftp_info);
+ Context::set('sftp_support', function_exists(ssh2_sftp));
+
+ $this->setTemplateFile('config_ftp');
+
+ //$security = new Security();
+ //$security->encodeHTML('ftp_info..');
+ }
+
+ /**
+ * Display Admin Menu Configuration(settings) page
+ * @return void
+ */
+ function dispAdminSetup()
+ {
+ $oModuleModel = &getModel('module');
+ $configObject = $oModuleModel->getModuleConfig('admin');
+
+ $oAdmin = &getClass('admin');
+ $oMenuAdminModel = &getAdminModel('menu');
+ $output = $oMenuAdminModel->getMenuByTitle($oAdmin->getAdminMenuName());
+
+ Context::set('menu_srl', $output->menu_srl);
+ Context::set('menu_title', $output->title);
+ Context::set('config_object', $configObject);
+ $this->setTemplateFile('admin_setup');
+ }
+
+
+ /**
+ * Enviroment information send to XE collect server
+ * @return void
+ */
+ function showSendEnv()
+ {
+ if(Context::getResponseMethod() != 'HTML') return;
+
+ $server = 'http://collect.xpressengine.com/env/img.php?';
+ $path = './files/env/';
+ $install_env = $path . 'install';
+ $mainVersion = join('.', array_slice(explode('.', __ZBXE_VERSION__), 0, 2));
+
+ if(file_exists(FileHandler::getRealPath($install_env)))
+ {
+ $oAdminAdminModel = &getAdminModel('admin');
+ $params = $oAdminAdminModel->getEnv('INSTALL');
+ $img = sprintf('
', $server.$params);
+ Context::addHtmlFooter($img);
+
+ FileHandler::removeDir($path);
+ FileHandler::writeFile($path.$mainVersion,'1');
+ }
+ else if(isset($_SESSION['enviroment_gather']) && !file_exists(FileHandler::getRealPath($path.$mainVersion)))
+ {
+ if($_SESSION['enviroment_gather']=='Y')
+ {
$oAdminAdminModel = &getAdminModel('admin');
- $params = $oAdminAdminModel->getEnv('INSTALL');
+ $params = $oAdminAdminModel->getEnv();
$img = sprintf('
', $server.$params);
Context::addHtmlFooter($img);
-
- FileHandler::removeDir($path);
- FileHandler::writeFile($path.$mainVersion,'1');
-
}
- else if(isset($_SESSION['enviroment_gather']) && !file_exists(FileHandler::getRealPath($path.$mainVersion)))
- {
- if($_SESSION['enviroment_gather']=='Y')
- {
- $oAdminAdminModel = &getAdminModel('admin');
- $params = $oAdminAdminModel->getEnv();
- $img = sprintf('
', $server.$params);
- Context::addHtmlFooter($img);
- }
- FileHandler::removeDir($path);
- FileHandler::writeFile($path.$mainVersion,'1');
- unset($_SESSION['enviroment_gather']);
- }
+ FileHandler::removeDir($path);
+ FileHandler::writeFile($path.$mainVersion,'1');
+ unset($_SESSION['enviroment_gather']);
}
-
- }
+ }
+}
+/* End of file admin.admin.view.php */
+/* Location: ./modules/admin/admin.admin.view.php */
diff --git a/modules/admin/admin.class.php b/modules/admin/admin.class.php
index e8814a10f..12a9d39a9 100644
--- a/modules/admin/admin.class.php
+++ b/modules/admin/admin.class.php
@@ -1,456 +1,464 @@
adminMenuName;
+ }
+
/**
- * admin class
- * Base class of admin module
- *
- * @author NHN (developers@xpressengine.com)
- * @package /modules/admin
- * @version 0.1
+ * Install admin module
+ * @return Object
*/
- class admin extends ModuleObject {
- private $adminMenuName = '__ADMINMENU_V17__';
+ function moduleInstall()
+ {
+ return new Object();
+ }
- public function getAdminMenuName()
+ /**
+ * If update is necessary it returns true
+ * @return bool
+ */
+ function checkUpdate()
+ {
+ $oDB = &DB::getInstance();
+ if(!$oDB->isColumnExists("admin_favorite", "type")) return true;
+
+ return false;
+ }
+
+ /**
+ * Update module
+ * @return Object
+ */
+ function moduleUpdate()
+ {
+ $oDB = &DB::getInstance();
+ if(!$oDB->isColumnExists("admin_favorite", "type"))
{
- return $this->adminMenuName;
- }
+ $oAdminAdminModel = &getAdminModel('admin');
+ $output = $oAdminAdminModel->getFavoriteList();
+ $favoriteList = $output->get('favoriteList');
- /**
- * Install admin module
- * @return Object
- */
- function moduleInstall() {
- return new Object();
- }
-
- /**
- * If update is necessary it returns true
- * @return bool
- */
- function checkUpdate() {
- $oDB = &DB::getInstance();
- if(!$oDB->isColumnExists("admin_favorite", "type")) return true;
-
- return false;
- }
-
- /**
- * Update module
- * @return Object
- */
- function moduleUpdate() {
- $oDB = &DB::getInstance();
- if(!$oDB->isColumnExists("admin_favorite", "type"))
+ $oDB->dropColumn('admin_favorite', 'admin_favorite_srl');
+ $oDB->addColumn('admin_favorite',"admin_favorite_srl","number",11,0);
+ $oDB->addColumn('admin_favorite',"type","varchar",30, 'module');
+ if(is_array($favoriteList))
{
- $oAdminAdminModel = &getAdminModel('admin');
- $output = $oAdminAdminModel->getFavoriteList();
- $favoriteList = $output->get('favoriteList');
-
- $oDB->dropColumn('admin_favorite', 'admin_favorite_srl');
- $oDB->addColumn('admin_favorite',"admin_favorite_srl","number",11,0);
- $oDB->addColumn('admin_favorite',"type","varchar",30, 'module');
- if(is_array($favoriteList))
+ $oAdminAdminController = &getAdminController('admin');
+ $oAdminAdminController->_deleteAllFavorite();
+ foreach($favoriteList AS $key=>$value)
{
- $oAdminAdminController = &getAdminController('admin');
- $oAdminAdminController->_deleteAllFavorite();
- foreach($favoriteList AS $key=>$value)
- {
- $oAdminAdminController->_insertFavorite($value->site_srl, $value->module);
- }
+ $oAdminAdminController->_insertFavorite($value->site_srl, $value->module);
}
}
- return new Object();
- }
-
- /**
- * Regenerate cache file
- * @return void
- */
- function recompileCache() {
- }
-
- public function checkAdminMenu()
- {
- // for admin menu
- if(Context::isInstalled())
- {
- $oMenuAdminModel = &getAdminModel('menu');
- $output = $oMenuAdminModel->getMenuByTitle($this->adminMenuName);
-
- if(!$output->menu_srl)
- {
- $oAdminClass = &getClass('admin');
- $oAdminClass->createXeAdminMenu();
- }
- else
- {
- if(!is_readable(FileHandler::getRealPath($output->php_file)))
- {
- $oMenuAdminController = &getAdminController('menu');
- $oMenuAdminController->makeXmlFile($output->menu_srl);
- }
- Context::set('admin_menu_srl', $output->menu_srl);
- }
-
- $this->_oldAdminmenuDelete();
- return FileHandler::getRealPath($output->php_file);
- }
}
+ return new Object();
+ }
- /**
- * Regenerate xe admin default menu
- * @return void
- */
- public function createXeAdminMenu()
+ /**
+ * Regenerate cache file
+ * @return void
+ */
+ function recompileCache()
+ {
+ }
+
+ public function checkAdminMenu()
+ {
+ // for admin menu
+ if(Context::isInstalled())
{
- //insert menu
- $args->title = $this->adminMenuName;
- $args->menu_srl = getNextSequence();
- $args->listorder = $args->menu_srl * -1;
- $output = executeQuery('menu.insertMenu', $args);
- $menuSrl = $args->menu_srl;
- Context::set('admin_menu_srl', $menuSrl);
- unset($args);
-
- // gnb item create
- $gnbList = array('dashboard', 'menu', 'user', 'content', 'configuration', 'advanced');
- foreach($gnbList AS $key=>$value)
- {
- //insert menu item
- $args->menu_srl = $menuSrl;
- $args->menu_item_srl = getNextSequence();
- $args->name = '{$lang->menu_gnb[\''.$value.'\']}';
- if($value == 'dashboard')
- {
- $args->url = 'index.php?module=admin';
- }
- else $args->url = '#';
- $args->listorder = -1*$args->menu_item_srl;
- $output = executeQuery('menu.insertMenuItem', $args);
- }
-
$oMenuAdminModel = &getAdminModel('menu');
- $columnList = array('menu_item_srl', 'name');
- $output = $oMenuAdminModel->getMenuItems($menuSrl, 0, $columnList);
- if(is_array($output->data))
- {
- foreach($output->data AS $key=>$value)
- {
- preg_match('/\{\$lang->menu_gnb\[(.*?)\]\}/i', $value->name, $m);
- $gnbDBList[$m[1]] = $value->menu_item_srl;
- }
- }
- unset($args);
+ $output = $oMenuAdminModel->getMenuByTitle($this->adminMenuName);
- $gnbModuleList = array(
- 0=>array(
- 'module'=>'menu',
- 'subMenu'=>array('siteMap', 'siteDesign'),
+ if(!$output->menu_srl)
+ {
+ $oAdminClass = &getClass('admin');
+ $oAdminClass->createXeAdminMenu();
+ }
+ else
+ {
+ if(!is_readable(FileHandler::getRealPath($output->php_file)))
+ {
+ $oMenuAdminController = &getAdminController('menu');
+ $oMenuAdminController->makeXmlFile($output->menu_srl);
+ }
+ Context::set('admin_menu_srl', $output->menu_srl);
+ }
+
+ $this->_oldAdminmenuDelete();
+ return FileHandler::getRealPath($output->php_file);
+ }
+ }
+
+ /**
+ * Regenerate xe admin default menu
+ * @return void
+ */
+ public function createXeAdminMenu()
+ {
+ //insert menu
+ $args->title = $this->adminMenuName;
+ $args->menu_srl = getNextSequence();
+ $args->listorder = $args->menu_srl * -1;
+ $output = executeQuery('menu.insertMenu', $args);
+ $menuSrl = $args->menu_srl;
+ Context::set('admin_menu_srl', $menuSrl);
+ unset($args);
+
+ // gnb item create
+ $gnbList = array('dashboard', 'menu', 'user', 'content', 'configuration', 'advanced');
+ foreach($gnbList AS $key=>$value)
+ {
+ //insert menu item
+ $args->menu_srl = $menuSrl;
+ $args->menu_item_srl = getNextSequence();
+ $args->name = '{$lang->menu_gnb[\''.$value.'\']}';
+ if($value == 'dashboard')
+ {
+ $args->url = 'index.php?module=admin';
+ }
+ else $args->url = '#';
+ $args->listorder = -1*$args->menu_item_srl;
+ $output = executeQuery('menu.insertMenuItem', $args);
+ }
+
+ $oMenuAdminModel = &getAdminModel('menu');
+ $columnList = array('menu_item_srl', 'name');
+ $output = $oMenuAdminModel->getMenuItems($menuSrl, 0, $columnList);
+ if(is_array($output->data))
+ {
+ foreach($output->data AS $key=>$value)
+ {
+ preg_match('/\{\$lang->menu_gnb\[(.*?)\]\}/i', $value->name, $m);
+ $gnbDBList[$m[1]] = $value->menu_item_srl;
+ }
+ }
+ unset($args);
+
+ $gnbModuleList = array(
+ 0=>array(
+ 'module'=>'menu',
+ 'subMenu'=>array('siteMap', 'siteDesign'),
),
- 1=>array(
- 'module'=>'member',
- 'subMenu'=>array('userList', 'userSetting', 'userGroup'),
+ 1=>array(
+ 'module'=>'member',
+ 'subMenu'=>array('userList', 'userSetting', 'userGroup'),
),
- 2=>array(
- 'module'=>'document',
- 'subMenu'=>array('document'),
+ 2=>array(
+ 'module'=>'document',
+ 'subMenu'=>array('document'),
),
- 3=>array(
- 'module'=>'comment',
- 'subMenu'=>array('comment'),
+ 3=>array(
+ 'module'=>'comment',
+ 'subMenu'=>array('comment'),
),
- 4=>array(
- 'module'=>'trackback',
- 'subMenu'=>array('trackback'),
+ 4=>array(
+ 'module'=>'trackback',
+ 'subMenu'=>array('trackback'),
),
- 5=>array(
+ 5=>array(
'module'=>'file',
'subMenu'=>array('file'),
- ),
- 6=>array(
+ ),
+ 6=>array(
'module'=>'poll',
'subMenu'=>array('poll'),
- ),
- 7=>array(
+ ),
+ 7=>array(
'module'=>'rss',
'subMenu'=>array('rss'),
- ),
- 8=>array(
+ ),
+ 8=>array(
'module'=>'module',
'subMenu'=>array('multilingual'),
- ),
- 9=>array(
+ ),
+ 9=>array(
'module'=>'importer',
'subMenu'=>array('importer'),
- ),
- 10=>array(
+ ),
+ 10=>array(
'module'=>'trash',
'subMenu'=>array('trash'),
- ),
- 11=>array(
+ ),
+ 11=>array(
'module'=>'autoinstall',
'subMenu'=>array('easyInstall'),
- ),
- 12=>array(
+ ),
+ 12=>array(
'module'=>'layout',
'subMenu'=>array('installedLayout'),
- ),
- 13=>array(
+ ),
+ 13=>array(
'module'=>'module',
'subMenu'=>array('installedModule'),
- ),
- 14=>array(
+ ),
+ 14=>array(
'module'=>'widget',
'subMenu'=>array('installedWidget'),
- ),
- 15=>array(
+ ),
+ 15=>array(
'module'=>'addon',
'subMenu'=>array('installedAddon'),
- ),
- 16=>array(
+ ),
+ 16=>array(
'module'=>'editor',
'subMenu'=>array('editor'),
- ),
- 17=>array(
+ ),
+ 17=>array(
'module'=>'spamfilter',
'subMenu'=>array('spamFilter'),
- ),
- 18=>array(
+ ),
+ 18=>array(
'module'=>'admin',
'subMenu'=>array('adminConfigurationGeneral', 'adminConfigurationFtp', 'adminMenuSetup'),
- ),
- 19=>array(
+ ),
+ 19=>array(
'module'=>'file',
'subMenu'=>array('fileUpload'),
- ),
- 20=>array(
+ ),
+ 20=>array(
'module'=>'module',
'subMenu'=>array('filebox'),
- ),
- 21=>array(
+ ),
+ 21=>array(
'module'=>'point',
'subMenu'=>array('point')
- ),
+ ),
);
- $oMemberModel = &getModel('member');
- $output = $oMemberModel->getAdminGroup(array('group_srl'));
- $adminGroupSrl = $output->group_srl;
+ $oMemberModel = &getModel('member');
+ $output = $oMemberModel->getAdminGroup(array('group_srl'));
+ $adminGroupSrl = $output->group_srl;
- // gnb sub item create
- // common argument setting
- $args->menu_srl = $menuSrl;
- $args->open_window = 'N';
- $args->expand = 'N';
- $args->normal_btn = '';
- $args->hover_btn = '';
- $args->active_btn = '';
- $args->group_srls = $adminGroupSrl;
- $oModuleModel = &getModel('module');
+ // gnb sub item create
+ // common argument setting
+ $args->menu_srl = $menuSrl;
+ $args->open_window = 'N';
+ $args->expand = 'N';
+ $args->normal_btn = '';
+ $args->hover_btn = '';
+ $args->active_btn = '';
+ $args->group_srls = $adminGroupSrl;
+ $oModuleModel = &getModel('module');
- foreach($gnbModuleList AS $key=>$value)
+ foreach($gnbModuleList AS $key=>$value)
+ {
+ if(is_array($value['subMenu']))
{
- if(is_array($value['subMenu']))
+ $moduleActionInfo = $oModuleModel->getModuleActionXml($value['module']);
+ foreach($value['subMenu'] AS $key2=>$value2)
{
- $moduleActionInfo = $oModuleModel->getModuleActionXml($value['module']);
- foreach($value['subMenu'] AS $key2=>$value2)
- {
- $gnbKey = "'".$this->_getGnbKey($value2)."'";
+ $gnbKey = "'".$this->_getGnbKey($value2)."'";
- //insert menu item
- $args->menu_item_srl = getNextSequence();
- $args->parent_srl = $gnbDBList[$gnbKey];
- $args->name = '{$lang->menu_gnb_sub[\''.$value2.'\']}';
- $args->url = 'index.php?module=admin&act='.$moduleActionInfo->menu->{$value2}->index;
- $args->listorder = -1*$args->menu_item_srl;
- $output = executeQuery('menu.insertMenuItem', $args);
- }
+ //insert menu item
+ $args->menu_item_srl = getNextSequence();
+ $args->parent_srl = $gnbDBList[$gnbKey];
+ $args->name = '{$lang->menu_gnb_sub[\''.$value2.'\']}';
+ $args->url = 'index.php?module=admin&act='.$moduleActionInfo->menu->{$value2}->index;
+ $args->listorder = -1*$args->menu_item_srl;
+ $output = executeQuery('menu.insertMenuItem', $args);
}
}
-
- $oMenuAdminConroller = &getAdminController('menu');
- $oMenuAdminConroller->makeXmlFile($menuSrl);
}
- /**
- * Return parent menu key by child menu
- * @return string
- */
- function _getGnbKey($menuName)
+ $oMenuAdminConroller = &getAdminController('menu');
+ $oMenuAdminConroller->makeXmlFile($menuSrl);
+ }
+
+ /**
+ * Return parent menu key by child menu
+ * @return string
+ */
+ function _getGnbKey($menuName)
+ {
+ switch($menuName)
{
- switch($menuName) {
- case 'siteMap':
- case 'siteDesign':
- return 'menu';
- break;
- case 'userList':
- case 'userSetting':
- case 'userGroup':
- case 'point':
- return 'user';
- break;
- case 'document':
- case 'comment':
- case 'trackback':
- case 'file':
- case 'poll':
- case 'rss':
- case 'multilingual':
- case 'importer':
- case 'trash':
- case 'spamFilter':
- return 'content';
- break;
- case 'easyInstall':
- case 'installedLayout':
- case 'installedModule':
- case 'installedWidget':
- case 'installedAddon':
- case 'editor':
- return 'advanced';
- break;
- case 'adminConfigurationGeneral':
- case 'adminConfigurationFtp':
- case 'adminMenuSetup':
- case 'fileUpload':
- case 'filebox':
- return 'configuration';
- break;
- default:
- return 'advanced';
+ case 'siteMap':
+ case 'siteDesign':
+ return 'menu';
+ break;
+ case 'userList':
+ case 'userSetting':
+ case 'userGroup':
+ case 'point':
+ return 'user';
+ break;
+ case 'document':
+ case 'comment':
+ case 'trackback':
+ case 'file':
+ case 'poll':
+ case 'rss':
+ case 'multilingual':
+ case 'importer':
+ case 'trash':
+ case 'spamFilter':
+ return 'content';
+ break;
+ case 'easyInstall':
+ case 'installedLayout':
+ case 'installedModule':
+ case 'installedWidget':
+ case 'installedAddon':
+ case 'editor':
+ return 'advanced';
+ break;
+ case 'adminConfigurationGeneral':
+ case 'adminConfigurationFtp':
+ case 'adminMenuSetup':
+ case 'fileUpload':
+ case 'filebox':
+ return 'configuration';
+ break;
+ default:
+ return 'advanced';
+ }
+ }
+
+ /**
+ * Return parent old menu key by child menu
+ * @return string
+ */
+ function _getOldGnbKey($menuName)
+ {
+ switch($menuName)
+ {
+ case 'siteMap':
+ return 'menu';
+ break;
+ case 'userList':
+ case 'userSetting':
+ case 'userGroup':
+ case 'point':
+ return 'user';
+ break;
+ case 'document':
+ case 'comment':
+ case 'trackback':
+ case 'file':
+ case 'poll':
+ case 'rss':
+ case 'multilingual':
+ case 'importer':
+ case 'trash':
+ return 'content';
+ break;
+ case 'easyInstall':
+ case 'installedLayout':
+ case 'installedModule':
+ case 'installedWidget':
+ case 'installedAddon':
+ case 'editor':
+ case 'spamFilter':
+ return 'extensions';
+ break;
+ case 'adminConfigurationGeneral':
+ case 'adminConfigurationFtp':
+ case 'adminMenuSetup':
+ case 'fileUpload':
+ case 'filebox':
+ return 'configuration';
+ break;
+ default:
+ return 'user_added_menu';
+ }
+ }
+
+ private function _oldAdminmenuDelete()
+ {
+ $oMenuAdminModel = &getAdminModel('menu');
+
+ $output = $oMenuAdminModel->getMenuByTitle($this->adminMenuName);
+ $newAdminmenuSrl = $output->menu_srl;
+ $output = $oMenuAdminModel->getMenuItems($newAdminmenuSrl, 0);
+ $newAdminParentMenuList = array();
+ if(is_array($output->data))
+ {
+ foreach($output->data AS $key=>$value)
+ {
+ $tmp = explode('\'', $value->name);
+ $newAdminParentMenuList[$tmp[1]] = $value;
}
}
+ unset($output);
- /**
- * Return parent old menu key by child menu
- * @return string
- */
- function _getOldGnbKey($menuName)
+ // old admin menu
+ $output = $oMenuAdminModel->getMenuByTitle('__XE_ADMIN__');
+ $menuSrl = $output->menu_srl;
+
+ if($menuSrl)
{
- switch($menuName) {
- case 'siteMap':
- return 'menu';
- break;
- case 'userList':
- case 'userSetting':
- case 'userGroup':
- case 'point':
- return 'user';
- break;
- case 'document':
- case 'comment':
- case 'trackback':
- case 'file':
- case 'poll':
- case 'rss':
- case 'multilingual':
- case 'importer':
- case 'trash':
- return 'content';
- break;
- case 'easyInstall':
- case 'installedLayout':
- case 'installedModule':
- case 'installedWidget':
- case 'installedAddon':
- case 'editor':
- case 'spamFilter':
- return 'extensions';
- break;
- case 'adminConfigurationGeneral':
- case 'adminConfigurationFtp':
- case 'adminMenuSetup':
- case 'fileUpload':
- case 'filebox':
- return 'configuration';
- break;
- default:
- return 'user_added_menu';
- }
- }
+ $oMenuAdminController = &getAdminController('menu');
- private function _oldAdminmenuDelete()
- {
- $oMenuAdminModel = &getAdminModel('menu');
-
- $output = $oMenuAdminModel->getMenuByTitle($this->adminMenuName);
- $newAdminmenuSrl = $output->menu_srl;
- $output = $oMenuAdminModel->getMenuItems($newAdminmenuSrl, 0);
- $newAdminParentMenuList = array();
+ $output = $oMenuAdminModel->getMenuItems($menuSrl);
if(is_array($output->data))
{
- foreach($output->data AS $key=>$value)
+ $parentMenu = array();
+ foreach($output->data AS $key=>$menuItem)
{
- $tmp = explode('\'', $value->name);
- $newAdminParentMenuList[$tmp[1]] = $value;
- }
- }
- unset($output);
-
- // old admin menu
- $output = $oMenuAdminModel->getMenuByTitle('__XE_ADMIN__');
- $menuSrl = $output->menu_srl;
-
- if($menuSrl)
- {
- $oMenuAdminController = &getAdminController('menu');
-
- $output = $oMenuAdminModel->getMenuItems($menuSrl);
- if(is_array($output->data))
- {
- $parentMenu = array();
- foreach($output->data AS $key=>$menuItem)
+ if($menuItem->parent_srl == 0)
{
- if($menuItem->parent_srl == 0)
- {
- $tmp = explode('\'', $menuItem->name);
- $parentMenuKey = $tmp[1];
- $parentMenu[$menuItem->menu_item_srl] = $parentMenuKey;
- }
+ $tmp = explode('\'', $menuItem->name);
+ $parentMenuKey = $tmp[1];
+ $parentMenu[$menuItem->menu_item_srl] = $parentMenuKey;
}
+ }
- $isUserAddedMenuMoved = false;
- foreach($output->data AS $key=>$menuItem)
+ $isUserAddedMenuMoved = false;
+ foreach($output->data AS $key=>$menuItem)
+ {
+ if($menuItem->parent_srl != 0)
{
- if($menuItem->parent_srl != 0)
- {
- $tmp = explode('\'', $menuItem->name);
- $menuKey = $tmp[1];
+ $tmp = explode('\'', $menuItem->name);
+ $menuKey = $tmp[1];
- $result = $this->_getOldGnbKey($menuKey);
- if($result == 'user_added_menu')
+ $result = $this->_getOldGnbKey($menuKey);
+ if($result == 'user_added_menu')
+ {
+ // theme menu use not anymore
+ /*if($parentMenu[$menuItem->parent_srl] == 'theme')
+ {
+ $newParentItem = $newAdminParentMenuList['menu'];
+ }
+ else*/
+ if($parentMenu[$menuItem->parent_srl] == 'extensions')
{
- // theme menu use not anymore
- /*if($parentMenu[$menuItem->parent_srl] == 'theme')
- {
- $newParentItem = $newAdminParentMenuList['menu'];
- }
- else*/
- if($parentMenu[$menuItem->parent_srl] == 'extensions')
- {
- $newParentItem = $newAdminParentMenuList['advanced'];
- }
- else
- {
- $newParentItem = $newAdminParentMenuList[$parentMenu[$menuItem->parent_srl]];
- }
- $menuItem->menu_srl = $newParentItem->menu_srl;
- $menuItem->parent_srl = $newParentItem->menu_item_srl;
-
- $output = executeQuery('menu.updateMenuItem', $menuItem);
- $isUserAddedMenuMoved = true;
+ $newParentItem = $newAdminParentMenuList['advanced'];
}
- }
- }
+ else
+ {
+ $newParentItem = $newAdminParentMenuList[$parentMenu[$menuItem->parent_srl]];
+ }
+ $menuItem->menu_srl = $newParentItem->menu_srl;
+ $menuItem->parent_srl = $newParentItem->menu_item_srl;
- if($isUserAddedMenuMoved)
- {
- $oMenuAdminController->makeXmlFile($newAdminmenuSrl);
+ $output = executeQuery('menu.updateMenuItem', $menuItem);
+ $isUserAddedMenuMoved = true;
+ }
}
}
- $oMenuAdminController->deleteMenu($menuSrl);
+ if($isUserAddedMenuMoved)
+ {
+ $oMenuAdminController->makeXmlFile($newAdminmenuSrl);
+ }
}
+
+ $oMenuAdminController->deleteMenu($menuSrl);
}
- }
-?>
+ }
+}
+/* End of file admin.class.php */
+/* Location: ./modules/admin/admin.class.php */