protected function _initialize()
 {
     if (!self::$init) {
         self::$init = true;
         //标记已经进入初始化,否则new AdminAction将陷入死递归
         define('TH_VERSION', '1.1.3');
         //所有action初始化代码放在这个大括号内部,否则下面的AdminAction实例化时又将重复执行一次初始化代码,注意不同功能代码可能需要一定的顺序
         ///////自定义扩展区///////////////
         ///////cookie初始化区域///////////
         if (C('COOKIE_PATH') == '/') {
             C('COOKIE_PATH', __ROOT__);
         }
         if (C('COOKIE_PREFIX') == '') {
             $prefix = trim(__ROOT__ . '_', '/\\');
             C('COOKIE_PREFIX', $prefix);
         }
         $listapp = new AdminAction();
         $list = $listapp->listAPP();
         if ($list == false) {
             $this->assign('noapp', "<span>还没有添加任何项目,或者applist.xml文件读取异常</span>");
             cookie('config_path', '');
             cookie('base_dir', '');
             cookie('app_name', '暂无');
             cookie('app_index', '暂无');
             cookie('app_url', '');
         } else {
             $this->assign('listapp', $list);
             if (cookie('switch') != 'on' && (!cookie('config_path') || !cookie('base_dir'))) {
                 $default = $list[0];
                 //cookie设置
                 cookie('config_path', CheckConfig::dirModifier($default['path']) . 'Conf/config.php');
                 cookie('base_dir', CheckConfig::dirModifier($default['path']));
                 cookie('app_name', $default['name']);
                 cookie('app_index', $default['index']);
                 cookie('app_url', $default['url']);
             }
         }
         cookie('think_path', CheckConfig::dirModifier(THINK_PATH));
         cookie('tp_helper', CheckConfig::dirModifier(APP_PATH));
         cookie('version', THINK_VERSION);
         ///////include模板变量分配区域/////////
         $this->include_assign();
     }
 }
 public function index()
 {
     if (isset($_GET['config_path'])) {
         cookie('config_path', realpath($_GET['config_path']));
         //为前台ajax更新config_path
     }
     $dir = cookie('base_dir');
     if (is_dir($dir)) {
         $configs = (include $dir . 'Conf/config.php');
         chdir($dir);
         $config_list = glob('Conf' . DIRECTORY_SEPARATOR . '{*,*' . DIRECTORY_SEPARATOR . '*}.php', GLOB_BRACE);
         if (isset($configs['APP_GROUP_MODE'], $configs['APP_GROUP_PATH']) && $configs['APP_GROUP_MODE'] == '1' && $configs['APP_GROUP_PATH']) {
             $config_list2 = glob(CheckConfig::dirModifier($configs['APP_GROUP_PATH']) . '*/Conf/{*,*/*}.php', GLOB_BRACE);
             $config_list = array_merge($config_list, $config_list2);
         }
         chdir(APP_PATH);
         $config_list = preg_grep('/alias.php$|tags.php$/iU', $config_list, PREG_GREP_INVERT);
         if (count($config_list) > 0) {
             $this->assign('config_list', $config_list);
             $this->assign('dir', $dir);
         }
     }
     $this->display();
 }
 protected static function dirCopy($source, $dest)
 {
     $rdi = new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::KEY_AS_PATHNAME | RecursiveDirectoryIterator::SKIP_DOTS | RecursiveDirectoryIterator::CURRENT_AS_SELF);
     $rii = new RecursiveIteratorIterator($rdi, RecursiveIteratorIterator::SELF_FIRST);
     $dest = CheckConfig::dirModifier($dest);
     mkdir($dest);
     foreach ($rii as $k => $v) {
         if (is_file($k)) {
             copy($k, $dest . $v->getSubPathname());
         } elseif (is_dir($k)) {
             mkdir($dest . $v->getSubPathname());
         }
     }
 }
 public function switchAPP()
 {
     if (isset($_GET['name'])) {
         $app = $this->listAPP($_GET['name']);
         if (is_object($app)) {
             cookie('config_path', CheckConfig::dirModifier((string) $app['path']) . 'Conf/config.php');
             cookie('base_dir', CheckConfig::dirModifier((string) $app['path']));
             cookie('app_name', (string) $app['name']);
             cookie('app_index', strtr((string) $app['index'], '\\', '/'));
             cookie('app_url', (string) $app['url']);
             cookie('switch', 'on', 0);
             cookie('think_path', CheckConfig::dirModifier(THINK_PATH));
             cookie('tp_helper', CheckConfig::dirModifier(APP_PATH));
             cookie('version', THINK_VERSION);
         }
     }
     $this->success('切换项目成功,即将返回首页', U('Index/index'));
 }