예제 #1
0
 function doUpdate()
 {
     include_once iPATH . 'include/forum.class.php';
     if ($_POST['forum']) {
         $forum = new forum();
         $forum->cache();
     }
     if ($_POST['adm']) {
         include_once iPATH . 'admin/advertise.mo.php';
         $rs = iCMS_DB::getArray("SELECT * FROM `#iCMS@__advertise`", OBJECT);
         $_count = count($rs);
         for ($i = 0; $i < $_count; $i++) {
             adm($rs[$i]);
         }
     }
     $_POST['tpl'] && $this->iCMS->clear_compiled_tpl();
     $_POST['iCMS_list'] && FS::rmdir(iPATH . 'cache/list');
     $_POST['iCMS_forum'] && FS::rmdir(iPATH . 'cache/forum');
     $_POST['iCMS_tag'] && FS::rmdir(iPATH . 'cache/tags');
     if ($_POST['iCMS_ALL']) {
         FS::rmdir(iPATH . 'cache/list');
         FS::rmdir(iPATH . 'cache/forum');
         FS::rmdir(iPATH . 'cache/tags');
     }
     $_POST['keywords'] && keywords_cache();
     $_POST['tags'] && tags_cache();
     if ($_POST['model']) {
         include iPATH . 'include/model.class.php';
         model::cache();
     }
     $_POST['field'] && field_cache();
     $_POST['config'] && CreateConfigFile();
     if ($_POST['Re-Article-Count']) {
         $rs = iCMS_DB::getArray("SELECT fid FROM `#iCMS@__forum`");
         $_count = count($rs);
         for ($i = 0; $i < $_count; $i++) {
             $c = iCMS_DB::getValue("SELECT count(*) FROM #iCMS@__article where `fid`='" . $rs[$i]['fid'] . "' LIMIT 1 ");
             iCMS_DB::query("UPDATE `#iCMS@__forum` SET `count` ='{$c}' WHERE `fid` ='" . $rs[$i]['fid'] . "' LIMIT 1 ");
         }
     }
     if ($_POST['Re-Tag-Count']) {
         include_once iPATH . 'include/forum.class.php';
         $rs = iCMS_DB::getArray("SELECT id FROM `#iCMS@__tags`");
         $_count = count($rs);
         for ($i = 0; $i < $_count; $i++) {
             $_count = iCMS_DB::getValue("SELECT count(*) FROM `#iCMS@__taglist` WHERE `tid`='" . $rs[$i]['id'] . "'");
             iCMS_DB::query("UPDATE `#iCMS@__tags` SET `count` = '{$_count}'  WHERE `id` ='" . $rs[$i]['id'] . "'");
             tags_cache($rs[$i]['id']);
         }
     }
     javascript::dialog("执行完毕!", 'url:1');
 }
예제 #2
0
 function update($n)
 {
     @set_time_limit(0);
     // Unzip uses a lot of memory
     @ini_set('memory_limit', '256M');
     require_once iPATH . 'include/pclzip.class.php';
     $zipName = 'iCMS ' . self::$iCMSVER . '.patch.' . $n . '.zip';
     $zipFile = PATCH_DIR . '/' . $zipName;
     //临时文件
     $msg = '正在对 [' . $zipName . '] 更新包进行解压缩<icms>';
     $zip = new PclZip($zipFile);
     if (false == ($archive_files = $zip->extract(PCLZIP_OPT_EXTRACT_AS_STRING))) {
         exit("ZIP包错误");
     }
     if (0 == count($archive_files)) {
         exit("空的ZIP文件");
     }
     $msg .= '解压完成开始更新程序#<icms>';
     foreach ($archive_files as $file) {
         $folder = $file['folder'] ? $file['filename'] : dirname($file['filename']);
         $dp = iPATH . $folder;
         if (!FS::exists($dp)) {
             $msg .= '创建 [' . $dp . '] 文件夹<icms>';
             //self::mkdir($path.'/'.$folder);
         }
         if (empty($file['folder'])) {
             $fp = iPATH . $file['filename'];
             $bfp = iPATH . $n . 'bak/' . $file['filename'];
             if (FS::exists($fp)) {
                 $msg .= '备份 [' . $fp . '] 文件 到 [' . $bfp . ']<icms>';
                 FS::mkdir(dirname($bfp));
                 rename($fp, $bfp);
                 //备份旧文件
             }
             $msg .= '更新 [' . $fp . '] 文件<icms>';
             FS::write($fp, $file['content']);
             $msg .= '[' . $fp . '] 更新完成!#<icms>';
         }
     }
     $msg .= '清除临时文件!<icms>注:原文件备份在 [' . iPATH . $n . 'bak/] 目录<icms>如没有特殊用处请删除此目录!#<icms>';
     FS::rmdir(PATCH_DIR, true, 'version.txt');
     return $msg;
 }