/** * Зарегистрировать нового пользователя в системе * * @param string $mail Почта * @param string $password Пароль * @param string $name Имя * @param string $surname Фамилия * @param string $burthday Дата рождения * @param bool $gender Пол * @param integer $ip IP * @throws UserException Если пользователь уже существует * @throws UserException Если неверна дата рождения * @throws UserException Не заполнены имя и фамилия * @throws UserException Неверный формат почты */ public function register($mail, $password, $name, $surname, $burthday, $gender, $ip) { if (checkMail($mail)) { if ($this->checkIfExsist($mail)) { throw new UserException($mail, UserException::USR_ALREADY_EXIST); } if (!checkDateFormat($burthday)) { throw new UserException($mail, UserException::USR_CHECK_BURTHDAY); } else { if ($name == "" && $surname == "") { throw new UserException($mail, UserException::USR_NAME_EMPTY); } } $textPassword = $password; $password = md5($password); $date = date("Y-m-d"); $query = "\r\n INSERT INTO `SITE_USERS` SET\r\n `mail`='{$mail}',\r\n `password`='{$password}',\r\n `ip`={$ip},\r\n `register_date`='{$date}',\r\n `name`='{$name}',\r\n `second_name`='{$surname}',\r\n `gender`={$gender},\r\n `burthday`='{$burthday}'\r\n "; $this->_sql->query($query); $querySelectId = $this->_sql->selFieldsWhere("SITE_USERS", "`mail`='{$mail}'", "id"); $arr = $this->_sql->GetRows($querySelectId); $id = $arr[0]["id"]; $activationKey = $this->generateActivationKey(7); $insertActivationRowData = array($id, $activationKey); $this->_sql->insert("USERS_ACTIVATION_KEYS", $insertActivationRowData); $p = new UserMailer(); $p->mail = $mail; $embeddedImages = array("photos/no-photo.jpg", "photos/no-galary.jpg"); $s = new SmartyExst(); $s->assign("NAME", "{$name} {$surname}"); $s->assign("PASS", $textPassword); $s->assign("ID", $id); $s->assign("KEY", $activationKey); $sendString = $s->fetch($this->mailTemplate); $p->registerSend($sendString, $embeddedImages); return $id; } else { throw new UserException($mail, UserException::USR_NAME_INCORRECT); } }