묻고답하기


Parse error: syntax error, unexpected '<' in /www/lautec_co_kr/modules/admin/admin.class.php on line 487

 

admin.class.php  열어봐도 이상이 없는데.. 문제가 뭘까요...

 

소스입니다..

-----------------------------------------------------------------------------------------------------------------------------------------

<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */

/**
 * admin class
 * Base class of admin module
 *
 * @author NAVER (developers@xpressengine.com)
 * @package /modules/admin
 * @version 0.1
 */
class admin extends ModuleObject
{

 private $adminMenuName = '__ADMINMENU_V17__';
 public function getAdminMenuName()
 {
  return $this->adminMenuName;
 }

 /**
  * 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"))
  {
   $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->_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)
   {
    $this->createXeAdminMenu();
    $output = $oMenuAdminModel->getMenuByTitle($this->adminMenuName);
   }
   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();

   $returnObj = new stdClass();
   $returnObj->menu_srl = $output->menu_srl;
   $returnObj->php_file = FileHandler::getRealPath($output->php_file);

   return $returnObj;
  }
 }

 /**
  * Regenerate xe admin default menu
  * @return void
  */
 public function createXeAdminMenu()
 {
  //insert menu
  $args = new stdClass();
  $args->title = $this->adminMenuName;
  $menuSrl = $args->menu_srl = getNextSequence();
  $args->listorder = $args->menu_srl * -1;
  $output = executeQuery('menu.insertMenu', $args);
  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 = new stdClass();
   $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'),
   ),
   2 => array(
    'module' => 'document',
    'subMenu' => array('document'),
   ),
   3 => array(
    'module' => 'comment',
    'subMenu' => array('comment'),
   ),
   4 => array(
    'module' => 'file',
    'subMenu' => array('file'),
   ),
   5 => array(
    'module' => 'poll',
    'subMenu' => array('poll'),
   ),
   6 => array(
    'module' => 'rss',
    'subMenu' => array('rss'),
   ),
   7 => array(
    'module' => 'module',
    'subMenu' => array('multilingual'),
   ),
   8 => array(
    'module' => 'importer',
    'subMenu' => array('importer'),
   ),
   9 => array(
    'module' => 'trash',
    'subMenu' => array('trash'),
   ),
   10 => array(
    'module' => 'autoinstall',
    'subMenu' => array('easyInstall'),
   ),
   11 => array(
    'module' => 'layout',
    'subMenu' => array('installedLayout'),
   ),
   12 => array(
    'module' => 'module',
    'subMenu' => array('installedModule'),
   ),
   13 => array(
    'module' => 'widget',
    'subMenu' => array('installedWidget'),
   ),
   14 => array(
    'module' => 'addon',
    'subMenu' => array('installedAddon'),
   ),
   15 => array(
    'module' => 'editor',
    'subMenu' => array('editor'),
   ),
   16 => array(
    'module' => 'spamfilter',
    'subMenu' => array('spamFilter'),
   ),
   17 => array(
    'module' => 'admin',
    'subMenu' => array('adminConfigurationGeneral', 'adminConfigurationFtp', 'adminMenuSetup'),
   ),
   18 => array(
    'module' => 'file',
    'subMenu' => array('fileUpload'),
   ),
   19 => array(
    'module' => 'module',
    'subMenu' => array('filebox'),
   ),
   20 => array(
    'module' => 'point',
    'subMenu' => array('point')
   ),
  );

  $oMemberModel = getModel('member');
  $output = $oMemberModel->getAdminGroup(array('group_srl'));
  $adminGroupSrl = $output->group_srl;

  // gnb sub item create
  // common argument setting
  $args = new stdClass();
  $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)
  {
   if(is_array($value['subMenu']))
   {
    $moduleActionInfo = $oModuleModel->getModuleActionXml($value['module']);
    foreach($value['subMenu'] AS $key2 => $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);
    }
   }
  }

  $oMenuAdminConroller = getAdminController('menu');
  $oMenuAdminConroller->makeXmlFile($menuSrl);

  // does not recreate lang cache sometimes
  FileHandler::RemoveFilesInDir('./files/cache/lang');
  FileHandler::RemoveFilesInDir('./files/cache/menu/admin_lang');
 }

 /**
  * Return parent menu key by child menu
  * @return string
  */
 function _getGnbKey($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 '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 '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);

  // old admin menu
  $output = $oMenuAdminModel->getMenuByTitle('__XE_ADMIN__');
  $menuSrl = $output->menu_srl;

  $oMenuAdminController = getAdminController('menu');
  if($menuSrl)
  {
   $output = $oMenuAdminModel->getMenuItems($menuSrl);
   if(is_array($output->data))
   {
    $parentMenu = array();
    foreach($output->data AS $key => $menuItem)
    {
     if($menuItem->parent_srl == 0)
     {
      $tmp = explode('\'', $menuItem->name);
      $parentMenuKey = $tmp[1];
      $parentMenu[$menuItem->menu_item_srl] = $parentMenuKey;
     }
    }

    $isUserAddedMenuMoved = FALSE;
    foreach($output->data AS $key => $menuItem)
    {
     if($menuItem->parent_srl != 0)
     {
      $tmp = explode('\'', $menuItem->name);
      $menuKey = $tmp[1];

      $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')
       {
        $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;
      }
     }
    }

    if($isUserAddedMenuMoved)
    {
     $oMenuAdminController->makeXmlFile($newAdminmenuSrl);
    }
   }
  }

  // all old admin menu delete
  $output = $oMenuAdminModel->getMenuListByTitle('__XE_ADMIN__');
  if(is_array($output))
  {
   foreach($output AS $key=>$value)
   {
    $oMenuAdminController->deleteMenu($value->menu_srl);
   }
  }
 }

}
/* End of file admin.class.php */
/* Location: ./modules/admin/admin.class.php */

 

 

 

글쓴이 제목 최종 글
XE 공지 글 쓰기,삭제 운영방식 변경 공지 [16] 2019.03.05 by 남기남
차나왕 쉬운설치 설치후 생성 초보자입니다. [3] 2016.07.17 by 댑펑
SpeaC 게시판 확장변수 날짜에서 오늘날짜+3일 까지 선택안되게 하기..  
댑펑 사이트 속도 문제에 대해.. 관리자만 느린 현상  
Reboot 로그인 전,후 GNB 메뉴 다르게 보이게 하기  
스카이즈 플래닛 모듈 날짜 표현 방식? [2] 2016.07.17 by 스카이즈
홈런볼11 태그 입력 항목 삭제하기 [2] 2016.07.17 by 홈런볼11
스카이즈 하나의 XE계정으로 여러 사이트에서 로그인 할 수 있는 방법이 없을까요? [1] 2016.07.17 by sejin7940
frankman XE 오프라인에서 운영 가능 합니까?? [2] 2016.07.17 by frankman
odi+good 비밀글 (로그인한 사람만 볼 수 있는 글)을 웹문서에 노출(크롤링) 하게 하려면 어떻게 해야할까요? [1] 2016.07.17 by sejin7940
caras xe 설치과정 중에 404 Not Found 에러가 발생합니다. [3] 2016.07.17 by KannaOnline
차나왕 FTP 업로드 레이아웃 설정했는데 깨지는 이유가 뭘까요? [4] file 2016.07.16 by 차나왕
후밍 게시판 기본 글자색 변경 어떻게 해야하나요 [2] file 2016.07.16 by 후밍
김병화 위젯안의 글자크기만 조절하고싶은데요  
이연훈 사이트맵 별 GNB 변경 [1] file 2016.07.16 by sejin7940
옛신앙 스마트폰 삼성 갤럭시 S 3에서 메뉴가 안열리는 이유가 무엇인지요? [2] 2016.07.16 by 옛신앙
재형은채맘 SSL 적용후 썸네일 생성이 안됩니다. [2] file 2016.07.16 by 재형은채맘
마이미2 2차 메뉴를 가로로 나타나게 하려고 합니다. [2] 2016.07.15 by 마이미2
장범근 xe에 모바일로 이모티콘으로 글을 쓸때 이모티콘이 사라집니다. [1] 2016.07.15 by SimpleCode
단기종합 추천버튼 누르고 팝업,새로고침 둘다 안되게 하고싶습니다  
박라비 레이아웃을 제작중인 초보자입니다. [4] file 2016.07.15 by 박라비
즈시 document_srl 값만을 추출할수 있을까요? [1] 2016.07.15 by sejin7940
mkp9**** mysql 정보입력할때 뭐라입력해야하나요 [9] 2016.07.15 by ehalehal
홍찬 textarea 높이가 안변해요~; [2] 2016.07.15 by 홍찬
차나왕 설치시 DB정보 입력 ;; 고대디 호스팅 쓰는데요. [2] 2016.07.15 by 차나왕
왕킥굳킥 내용직접추가에다 url 설정하고싶은데 ㅠ  
saramjh 자료실의 bootstrap 레이아웃의 최신글 사이드바 [2] 2016.07.15 by saramjh
mkp9**** 메인 html?이라고해야하나 수정하는방법이궁급합니다. [2] file 2016.07.15 by mkp9****
saramjh 비회원 글작성시에 적용한 reCAPTCHA  
산에산 이미지 추가방법 [2] file 2016.07.14 by 산에산
Pzing 홈페이지에 대학 시간표 짜는 프로그램을 넣고싶습니다.