Пример #1
0
 function Article($id)
 {
     $app = iCMS::run('article', 'article', 'object');
     $htm = $app->article($id);
     $htm or iPHP::alert("文章所属栏目URL规则设置问题! 此栏目下的文章不能生成静态,请修改栏目的访问模式和URL规则");
     $total = $htm[1]['page']['total'];
     $title = $htm[1]['title'];
     iFS::check_ext($htm[1]['iurl']->path) or iPHP::alert("文件类型不合法,禁止生成!<hr />请更改栏目->URL规则设置->内容规则");
     iFS::mkdir($htm[1]['iurl']->dir);
     iFS::write($htm[1]['iurl']->path, $htm[0]);
     if ($total >= 2) {
         for ($ap = 2; $ap <= $total; $ap++) {
             $htm = $app->article($id, $ap);
             $fpath = iPHP::p2num($htm[1]['iurl']->pagepath, $ap);
             iFS::write($fpath, $htm[0]);
         }
     }
     unset($app, $htm);
     return $title;
 }
Пример #2
0
 public static function put_text($id, $data, $page = 1)
 {
     iFS::mkdir(iPATH . '/' . self::get_text_dir($id) . '/');
     $fp = self::get_text_file($id, $page);
     if ($data) {
         iFS::write($fp[1], '<?php exit;?>' . serialize($data));
         return $fp[0];
     } else {
         return false;
     }
 }
Пример #3
0
 public static function update()
 {
     @set_time_limit(0);
     // Unzip uses a lot of memory
     @ini_set('memory_limit', '256M');
     require iPHP_CORE . '/pclzip.class.php';
     //加载zip操作类
     $zipFile = PATCH_DIR . '/' . self::$zipName;
     //临时文件
     $msg = '正在对 [' . self::$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>';
     $bakDir = iPATH . self::$release . 'bak';
     iFS::mkdir($bakDir);
     foreach ($archive_files as $file) {
         $folder = $file['folder'] ? $file['filename'] : dirname($file['filename']);
         $dp = iPATH . $folder;
         if (!iFS::ex($dp)) {
             $msg .= '创建 [' . $dp . '] 文件夹<iCMS>';
             iFS::mkdir($dp);
         }
         if (empty($file['folder'])) {
             $fp = iPATH . $file['filename'];
             $bfp = $bakDir . '/' . $file['filename'];
             iFS::mkdir(dirname($bfp));
             if (iFS::ex($fp)) {
                 $msg .= '备份 [' . $fp . '] 文件 到 [' . $bfp . ']<iCMS>';
                 @rename($fp, $bfp);
                 //备份旧文件
             }
             $msg .= '更新 [' . $fp . '] 文件<iCMS>';
             iFS::write($fp, $file['content']);
             $msg .= '[' . $fp . '] 更新完成!#<iCMS>';
         }
     }
     $msg .= '清除临时文件!<iCMS>注:原文件备份在 [' . $bakDir . '] 目录<iCMS>如没有特殊用处请删除此目录!#<iCMS>';
     iFS::rmdir(PATCH_DIR, true, 'version.txt');
     return $msg;
 }
Пример #4
0
 public function ACTION_register()
 {
     iCMS::$config['user']['register']['enable'] or exit(iPHP::lang('user:register:forbidden'));
     $regip = iS::escapeStr(iPHP::getIp());
     $regdate = time();
     if (iCMS::$config['user']['register']['interval']) {
         $ip_regdate = iDB::value("\n                SELECT `regdate`\n                FROM `#iCMS@__user`\n                WHERE `regip`='{$regip}'\n                ORDER BY uid DESC");
         $ip_regdate - $regdate > iCMS::$config['user']['register']['interval'] && iPHP::code(0, 'user:register:interval', 'username', 'json');
     }
     $username = iS::escapeStr($_POST['username']);
     $nickname = iS::escapeStr($_POST['nickname']);
     $gender = $_POST['gender'] == 'girl' ? 0 : 1;
     $password = md5(trim($_POST['password']));
     $rstpassword = md5(trim($_POST['rstpassword']));
     $refer = iS::escapeStr($_POST['refer']);
     $openid = iS::escapeStr($_POST['openid']);
     $type = iS::escapeStr($_POST['platform']);
     $avatar = iS::escapeStr($_POST['avatar']);
     $province = iS::escapeStr($_POST['province']);
     $city = iS::escapeStr($_POST['city']);
     $agreement = $_POST['agreement'];
     $username or iPHP::code(0, 'user:register:username:empty', 'username', 'json');
     preg_match("/^[\\w\\-\\.]+@[\\w\\-]+(\\.\\w+)+\$/i", $username) or iPHP::code(0, 'user:register:username:error', 'username', 'json');
     user::check($username, 'username') && iPHP::code(0, 'user:register:username:exist', 'username', 'json');
     $nickname or iPHP::code(0, 'user:register:nickname:empty', 'nickname', 'json');
     (cstrlen($nickname) > 20 || cstrlen($nickname) < 4) && iPHP::code(0, 'user:register:nickname:error', 'nickname', 'json');
     user::check($nickname, 'nickname') && iPHP::code(0, 'user:register:nickname:exist', 'nickname', 'json');
     trim($_POST['password']) or iPHP::code(0, 'user:password:empty', 'password', 'json');
     trim($_POST['rstpassword']) or iPHP::code(0, 'user:password:rst_empty', 'rstpassword', 'json');
     $password == $rstpassword or iPHP::code(0, 'user:password:unequal', 'password', 'json');
     if (iCMS::$config['user']['register']['seccode']) {
         $seccode = iS::escapeStr($_POST['seccode']);
         iPHP::seccode($seccode, true) or iPHP::code(0, 'iCMS:seccode:error', 'seccode', 'json');
     }
     $gid = 0;
     $pid = 0;
     $fans = $follow = $article = $comments = $share = $credit = 0;
     $hits = $hits_today = $hits_yday = $hits_week = $hits_month = 0;
     $lastloginip = $lastlogintime = '';
     $status = 1;
     $fields = array('gid', 'pid', 'username', 'nickname', 'password', 'gender', 'fans', 'follow', 'article', 'comments', 'share', 'credit', 'regip', 'regdate', 'lastloginip', 'lastlogintime', 'hits', 'hits_today', 'hits_yday', 'hits_week', 'hits_month', 'type', 'status');
     $data = compact($fields);
     $uid = iDB::insert('user', $data);
     user::set_cookie($username, $password, array('uid' => $uid, 'username' => $username, 'nickname' => $nickname, 'status' => $status));
     if ($openid) {
         $platform = $type;
         iDB::query("\n                INSERT INTO `#iCMS@__user_openid`\n                       (`uid`, `openid`, `platform`)\n                VALUES ('{$uid}', '{$openid}', '{$platform}');\n            ");
     }
     if ($avatar) {
         $avatarData = iFS::remote($avatar);
         if ($avatarData) {
             $avatarpath = iFS::fp(get_user_pic($uid), '+iPATH');
             iFS::mkdir(dirname($avatarpath));
             iFS::write($avatarpath, $avatarData);
             iFS::yun_write($avatarpath);
         }
     }
     //user::set_cache($uid);
     iPHP::set_cookie('forward', '', -31536000);
     iPHP::json(array('code' => 1, 'forward' => $this->forward));
 }
Пример #5
0
 function do_savebackup()
 {
     iDB::query("SET SQL_QUOTE_SHOW_CREATE = 0");
     $tableA = $_POST['table'];
     $step = (int) $_GET['step'];
     $tablesel = $_GET['tablesel'];
     $random = $_GET['random'];
     $bdir = $_GET['bdir'];
     $this->sizelimit = isset($_POST['sizelimit']) ? (int) $_POST['sizelimit'] : (int) $_GET['sizelimit'];
     $this->tableid = (int) $_GET['tableid'];
     $this->start = (int) $_GET['start'];
     $this->rows = $_GET['rows'];
     !$tableA && !$tablesel && iPHP::alert('没有选择操作对象');
     !$tableA && ($tableA = explode("|", $tablesel));
     !$step && ($this->sizelimit /= 2);
     $bakupdata = $this->bakupdata($tableA, $this->start);
     $bakTag = "# iCMS Backup SQL File\n# Version:iCMS " . iCMS_VER . "\n# Time: " . get_date(0, "Y-m-d H:i:s") . "\n# iCMS: http://www.iDreamSoft.com\n# --------------------------------------------------------\n\n\n";
     if (!$step) {
         !$tableA && iPHP::alert('没有选择操作对象');
         $tablesel = implode("|", $tableA);
         $step = 1;
         $random = random(10);
         $this->start = 0;
         $bakuptable = $this->bakuptable($tableA);
         $bdir = get_date(0, "Y-m-d-His") . '~' . random(10);
     }
     $updateMsg = $step == 1 ? false : true;
     $f_num = ceil($step / 2);
     $filename = 'iCMS_' . $random . '_' . $f_num . '.sql';
     $step++;
     $writedata = $bakuptable ? $bakuptable . $bakupdata : $bakupdata;
     $t_name = $tableA[$this->tableid - 1];
     $backupdir = iPHP_APP_CACHE . '/backup/' . $bdir . '/';
     $sqlpath = $backupdir . $filename;
     iFS::mkdir($backupdir);
     trim($writedata) && iFS::write($sqlpath, $bakTag . $writedata, true, 'ab');
     if ($this->stop == 1) {
         $loopurl = APP_FURI . "&do=savebackup&start={$this->startfrom}&tableid={$this->tableid}&sizelimit={$this->sizelimit}&step={$step}&random={$random}&tablesel={$tablesel}&rows={$this->rows}&bdir={$bdir}";
         $moreBtn = array(array("id" => "btn_stop", "text" => "停止", "url" => APP_URI . "&do=backup"), array("id" => "btn_next", "text" => "继续", "src" => $loopurl, "next" => true));
         $dtime = 1;
         $msg = "正在备份数据库表<span class='label label-success'>{$t_name}</span>共<span class='label label-info'>{$this->rows}</span>条记录<hr />已经备份至<span class='label label-info'>{$this->startfrom}</span>条记录,已生成<span class='label label-info'>{$f_num}</span>个备份文件,<hr />程序将自动备份余下部分";
     } else {
         $msg = "success:#:check:#:已全部备份完成,备份文件保存在backup目录下!";
         $moreBtn = array(array("id" => "btn_next", "text" => "完成", "url" => APP_URI . "&do=backup"));
         $dtime = 5;
     }
     iPHP::dialog($msg, $loopurl ? "src:" . $loopurl : 'js:1', $dtime, $moreBtn, $updateMsg);
 }
Пример #6
0
 function do_mkdir()
 {
     iACP::MP('FILE.MKDIR') or iPHP::json(array('code' => 0, 'msg' => '您没有相关权限!'));
     $name = $_POST['name'];
     strstr($name, '.') !== false && iPHP::json(array('code' => 0, 'msg' => '您输入的目录名称有问题!'));
     strstr($name, '..') !== false && iPHP::json(array('code' => 0, 'msg' => '您输入的目录名称有问题!'));
     $pwd = trim($_POST['pwd'], '/');
     $dir = iFS::path_join(iPATH, iCMS::$config['FS']['dir']);
     $dir = iFS::path_join($dir, $pwd);
     $dir = iFS::path_join($dir, $name);
     file_exists($dir) && iPHP::json(array('code' => 0, 'msg' => '您输入的目录名称已存在,请重新输入!'));
     if (iFS::mkdir($dir)) {
         iPHP::json(array('code' => 1, 'msg' => '创建成功!'));
     }
     iPHP::json(array('code' => 0, 'msg' => '创建失败,请检查目录权限!!'));
 }
Пример #7
0
 public static function update()
 {
     @set_time_limit(0);
     // Unzip uses a lot of memory
     @ini_set('memory_limit', '256M');
     require iPHP_CORE . '/pclzip.class.php';
     //加载zip操作类
     $zipFile = PATCH_DIR . '/' . self::$zipName;
     //临时文件
     $msg = '正在对 [' . self::$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>';
     $msg .= '开始测试目录权限<iCMS>';
     $bakDir = iPATH . self::$release . 'bak';
     $update = true;
     if (!self::checkDir(iPATH)) {
         $update = false;
         $msg .= iPATH . ' 目录无写权限<iCMS>';
     }
     //测试目录文件是否写
     foreach ($archive_files as $file) {
         $folder = $file['folder'] ? $file['filename'] : dirname($file['filename']);
         $dp = iPATH . $folder;
         if (!self::checkDir($dp) && iFS::ex($dp)) {
             $update = false;
             $msg .= $dp . ' 目录无写权限<iCMS>';
         }
         if (empty($file['folder'])) {
             $fp = iPATH . $file['filename'];
             if (file_exists($fp) && !@is_writable($fp)) {
                 $update = false;
                 $msg .= $fp . ' 文件无写权限<iCMS>';
             }
         }
     }
     if (!$update) {
         $msg .= '权限测试无法完成<iCMS>';
         $msg .= '请设置好上面提示的文件写权限<iCMS>';
         $msg .= '然后重新更新<iCMS>';
         iPatch::$next = false;
         return $msg;
     }
     //测试通过!
     iPatch::$next = true;
     iFS::mkdir($bakDir);
     $msg .= '权限测试通过<iCMS>';
     $msg .= '备份目录创建完成<iCMS>';
     $msg .= '开始更新程序<iCMS>';
     foreach ($archive_files as $file) {
         $folder = $file['folder'] ? $file['filename'] : dirname($file['filename']);
         $dp = iPATH . $folder;
         if (!iFS::ex($dp)) {
             $msg .= '创建 [' . $dp . '] 文件夹<iCMS>';
             iFS::mkdir($dp);
         }
         if (empty($file['folder'])) {
             $fp = iPATH . $file['filename'];
             $bfp = $bakDir . '/' . $file['filename'];
             iFS::mkdir(dirname($bfp));
             if (iFS::ex($fp)) {
                 $msg .= '备份 [' . $fp . '] 文件 到 [' . $bfp . ']<iCMS>';
                 @rename($fp, $bfp);
                 //备份旧文件
             }
             $msg .= '更新 [' . $fp . '] 文件<iCMS>';
             iFS::write($fp, $file['content']);
             $msg .= '[' . $fp . '] 更新完成!<iCMS>';
         }
     }
     $msg .= '清除临时文件!<iCMS>注:原文件备份在 [' . $bakDir . '] 目录<iCMS>如没有特殊用处请删除此目录!<iCMS>';
     iFS::rmdir(PATCH_DIR, true, 'version.txt');
     return $msg;
 }