mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-04 01:01:41 +09:00
issue 207 adminlogging module bug fix
git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0@9426 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
0f9fa1921b
commit
9c78242bcd
2 changed files with 2 additions and 438 deletions
|
|
@ -5,7 +5,7 @@
|
|||
* @brief admin controller class of admin module
|
||||
**/
|
||||
|
||||
class adminloggingController extends admin {
|
||||
class adminloggingController extends adminlogging {
|
||||
/**
|
||||
* @brief initialization
|
||||
* @return none
|
||||
|
|
|
|||
|
|
@ -1,441 +1,5 @@
|
|||
<?php
|
||||
|
||||
class adminAdminModel extends admin
|
||||
class adminloggingModel extends adminlogging
|
||||
{
|
||||
var $pwd;
|
||||
var $gnbLangBuffer;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
function getAdminFTPList()
|
||||
{
|
||||
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')
|
||||
{
|
||||
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, '<DIR>')) $list[] = substr(strrchr($v,' '),1) . '/';
|
||||
}
|
||||
}
|
||||
$this->add('list', $list);
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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;
|
||||
if(!$_xml_obj->theme) return;
|
||||
|
||||
// 스킨이름
|
||||
$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->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->name.'InTheme';
|
||||
$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;
|
||||
$skins[$module_name] = $skin_info;
|
||||
|
||||
if ($is_theme){
|
||||
if (!$GLOBALS['__ThemeModuleSkin__'][$module_name]) $GLOBALS['__ThemeModuleSkin__'][$module_name] = array();
|
||||
$GLOBALS['__ThemeModuleSkin__'][$module_name][$skin_info->name] = $oModuleModel->loadSkinInfo($skin_info->path, '', '');
|
||||
}
|
||||
}
|
||||
$theme_info->skin_infos = $skins;
|
||||
|
||||
$GLOBALS['__ThemeInfo__'][$theme_name] = $theme_info;
|
||||
return $theme_info;
|
||||
}
|
||||
|
||||
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]){
|
||||
$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__'];
|
||||
}
|
||||
|
||||
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 = '<?php ';
|
||||
foreach($installed_module_list AS $key=>$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;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get admin favorite list
|
||||
**/
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Check available insert favorite
|
||||
**/
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return site list
|
||||
**/
|
||||
function getSiteAllList()
|
||||
{
|
||||
if(Context::get('domain')) $args->domain = Context::get('domain');
|
||||
$columnList = array('domain', 'site_srl');
|
||||
|
||||
$siteList = array();
|
||||
$output = executeQueryArray('admin.getSiteAllList', $args, $columnList);
|
||||
if($output->toBool()) $siteList = $output->data;
|
||||
|
||||
$this->add('site_list', $siteList);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return site count
|
||||
**/
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue