示例#1
0
 /**
  * 处理提交的安装表单
  *
  * @return void
  */
 public function doAction()
 {
     $installModel = new InstallModel($this);
     $errArr = array();
     $installStep = 0;
     if ($installModel->hasInstalled()) {
         $installStep = 3;
         $this->showInstallForm($installStep, $errArr);
         return;
     }
     if (!$installModel->statReady()) {
         $errArr[] = $installModel->getErrMsg();
     }
     // 检测post提交的数据
     $user = new UserModel($this);
     $postData = new DataMap($_POST);
     $username = $postData->get('username', '');
     $nickname = $postData->get('nickname', '');
     $email = $postData->get('email', '');
     if (!$user->isUsername($username)) {
         $errArr[] = $user->getErrMsg();
     }
     if (!$user->isNickname($nickname)) {
         $errArr[] = $user->getErrMsg();
     }
     if (!$user->isEmail($email)) {
         $errArr[] = $user->getErrMsg();
     }
     $pass1 = $postData->get('pass1', '');
     $pass2 = $postData->get('pass2', '');
     if ($pass1 != $pass2) {
         $errArr[] = '两次输入的密码不一致';
     }
     if (!$user->isPass($pass1)) {
         $errArr[] = $user->getErrMsg();
     }
     if (!empty($errArr)) {
         $installStep = 1;
         $this->showInstallForm($installStep, $errArr);
         return;
     }
     // 执行安装操作
     $installModel->initDb();
     // 添加管理员账号
     $uid = $user->addAccount($username, $nickname, $pass1, $email);
     if ($uid == -1) {
         $installStep = 1;
         $this->showInstallForm($installStep, array('添加用户账号失败'));
         return;
     }
     // 添加管理员权限
     $user->addSuperAdmin($uid);
     $installStep = 2;
     $this->showInstallForm($installStep, array());
 }