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; }
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; } }
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; }
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)); }
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); }
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' => '创建失败,请检查目录权限!!')); }
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; }