Пример #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 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));
 }
Пример #4
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;
 }
Пример #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_download()
 {
     iFS::$userid = false;
     $rs = iFS::getFileData('id', $this->id);
     iFS::$redirect = true;
     $FileRootPath = iFS::fp($rs->filepath, "+iPATH");
     iFS::check_ext($rs->filepath, true) or iPHP::alert('文件类型不合法!');
     iFS::$userid = iMember::$userid;
     $fileresults = iFS::remote($rs->ofilename);
     if ($fileresults) {
         iFS::mkdir(dirname($FileRootPath));
         iFS::write($FileRootPath, $fileresults);
         iFS::$watermark = !isset($_GET['unwatermark']);
         iFS::watermark($rs->ext, $FileRootPath);
         iFS::yun_write($FileRootPath);
         $_FileSize = strlen($fileresults);
         if ($_FileSize != $rs->size) {
             iDB::query("update `#iCMS@__filedata` SET `size`='{$_FileSize}' WHERE `id` = '{$this->id}'");
         }
         iPHP::success("{$rs->ofilename} <br />重新下载到<br /> {$rs->filepath} <br />完成", 'js:1', 3);
     } else {
         iPHP::alert("下载远程文件失败!", 'js:1', 3);
     }
 }
Пример #7
0
    $setting['router']['user_url'] = $router_url . '/usercp';
    $setting['router']['404'] = $router_url . '/public/404.htm';
    $setting['router']['tag_url'] = $router_url;
    $setting['FS']['url'] = $router_url . '/res/';
    $setting['template']['mobile']['domain'] = $router_url;
    $setting['template']['device'][0]['domain'] = $router_url;
    foreach ($setting as $n => $v) {
        is_array($v) && ($v = addslashes(serialize($v)));
        iDB::query("UPDATE `#iCMS@__config` SET `value` = '{$v}' WHERE `appid` ='0' AND `name` ='{$n}'");
    }
    $output = "<?php\ndefined('iPHP') OR exit('Access Denied');\nreturn ";
    $output .= var_export($setting, true);
    $output .= ';';
    iFS::write(iPATH . 'conf/iCMS/config.php', $output, false);
    //写入数据库配置<hr />开始安装数据库<hr />数据库安装完成<hr />设置超级管理员<hr />更新网站缓存<hr />
    iFS::write($lock_file, 'iCMS.' . time(), false);
    iFS::rmdir(iPATH . 'install');
    iPHP::success("安装完成", 'js:top.install.step4();');
}
function run_query($sql)
{
    $sql = str_replace("\r", "\n", $sql);
    $resource = array();
    $num = 0;
    $sql_array = explode(";\n", trim($sql));
    foreach ($sql_array as $query) {
        $queries = explode("\n", trim($query));
        foreach ($queries as $query) {
            $resource[$num] .= $query[0] == '#' ? '' : $query;
        }
        $num++;
Пример #8
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;
 }
Пример #9
0
 /**
  * [write 配置写入文件]
  * @param  [type] $config [description]
  * @return [type]         [description]
  */
 function write($config = null)
 {
     $config === null && ($config = $this->get());
     $output = "<?php\ndefined('iPHP') OR exit('Access Denied');\nreturn ";
     $output .= var_export($config, true);
     $output .= ';';
     iFS::write(iPHP_APP_CONFIG, $output);
 }