Exemplo n.º 1
0
 function edit($args = null)
 {
     $answer = array();
     $answer["success"]["fields"] = array();
     if (empty($_SESSION["user"]) || empty($_SESSION["user"]["id"])) {
         //$answer["error"]["field"] = "auth";
         $answer["error"]["msg"] = "Вы не авторизованы!";
         return $answer;
     }
     $user = new UserCustomer();
     if (!$user->load(array("id" => $_SESSION["user"]["id"]))) {
         //$answer["error"]["field"] = null;
         $answer["error"]["msg"] = Common::echoLastError();
         return $answer;
     }
     $validate_fields = array();
     if (isset($_POST["validate_fields"])) {
         $validate_fields = $_POST["validate_fields"];
     }
     $required_fields = array();
     if (isset($_POST["required_fields"])) {
         $required_fields = $_POST["required_fields"];
     }
     //считываем фамилию
     $user->surname = readPostField($answer, "surname", $validate_fields, $required_fields);
     if ($user->surname === null) {
         return $answer;
     }
     //считываем имя
     $user->name = readPostField($answer, "name", $validate_fields, $required_fields);
     if ($user->name === null) {
         return $answer;
     }
     //считываем отчество
     $user->second_name = readPostField($answer, "second_name", $validate_fields, $required_fields);
     if ($user->second_name === null) {
         return $answer;
     }
     //считываем пол
     $user->sex = readPostField($answer, "sex", $validate_fields, $required_fields);
     if ($user->sex === null) {
         return $answer;
     }
     //считываем дату рождения
     $user->birthday = readPostField($answer, "birthday", $validate_fields, $required_fields);
     if ($user->birthday === null) {
         return $answer;
     }
     //$user->write();
     //если указана фотография
     if (!empty($_POST["photo_data"])) {
         //парсим ее в MIME
         $photo = new MIME();
         $photo_data = json_decode($_POST["photo_data"]);
         $photo->parseString($photo_data->image);
         //считываем область выделения и проверяем, установлена ли она
         $selection = $photo_data->selection;
         if (empty($selection) || empty($selection->width) || empty($selection->height)) {
             //если не установлена, то берем максимально большую область по размерам картинки
             $photo_size = $photo->imageSize();
             if ($photo_size === false) {
                 $answer["error"] = array("field" => "photo", "Не удалось сохранить фотографию (" . Common::getLastErrorMsg() . ")");
                 return $answer;
             }
             $selection->x1 = 0;
             $selection->y1 = 0;
             if ($photo_size["width"] <= $photo_size["height"]) {
                 $selection->width = $photo_size["width"];
                 $selection->height = $photo_size["width"];
             } else {
                 $selection->width = $photo_size["height"];
                 $selection->height = $photo_size["height"];
             }
         }
         //удаляем старую фотку, если есть
         $file_name = $user->photo;
         if (!empty($file_name) && file_exists($file_name)) {
             unlink($file_name);
         }
         //и сохраняем новую картинку с изменением размеров
         $file_name = $photo->saveToFile(User::$user_photo_dir . $user->id, array("x1" => 0, "y1" => 0, "width" => 200, "height" => 200), array("x1" => $selection->x1, "y1" => $selection->y1, "width" => $selection->width, "height" => $selection->height));
         if ($file_name === false) {
             $answer["error"] = array("field" => "photo", "msg" => "Не удалось сохранить фотографию (" . Common::getLastErrorMsg() . ")");
             return $answer;
         }
         $user->photo = $file_name;
         $answer["success"]["fields"][] = "photo";
     }
     //считываем телефоны
     $phones = readPostField($answer, "phone", $validate_fields, $required_fields);
     if ($phones === null) {
         return $answer;
     }
     $user->phones = array();
     foreach ($phones as $phone) {
         $phone_data = explode(',', $phone);
         if (count($phone_data) != 2) {
             $answer["error"] = array("field" => "phone", "msg" => "Телефоны указаны некорректно");
             array_pop($answer["success"]["fields"]);
             return $answer;
         }
         $user->phones[] = array("phone" => preg_replace('/[^0-9]/', '', $phone_data[1]), "type" => $phone_data[0]);
     }
     //считываем jabber
     $user->jabber = readPostField($answer, "jabber", $validate_fields, $required_fields);
     if ($user->jabber === null) {
         return $answer;
     }
     //считываем skype
     $user->skype = readPostField($answer, "skype", $validate_fields, $required_fields);
     if ($user->skype === null) {
         return $answer;
     }
     /*$old_pwd = readPostField($answer,"old_pwd",$validate_fields,$required_fields); if($old_pwd === null) return $answer;
     		if(!empty($old_pwd)) {
     			$pwd1 = $_POST["pwd1"];
     			$pwd2 = $_POST["pwd2"];
     			$pwd_strong = 0;
     			$error = Users::validatePassword($pwd1,$pwd2,$pwd_strong);
     			if($error !== Users::ERROR_NOT) {
     				//в случае ошибки возвращаем текст ошибки
     				//если пароли отличаются или второй пароль пустой, указываем фокус на второй пароль
     				if(($error === Users::ERROR_PWD_DIFFERENT)||(($error === Users::ERROR_PWD_EMPTY)&&(!empty($pwd1)))) {
     					$answer["error"]["field"] = "pwd2";
     					array_push($answer["success"]["fields"],"pwd");
     				} else
     					$answer["error"]["field"] = "pwd";
     
     				array_pop($answer["success"]["fields"]);
     				return $answer;
     			}
     		}*/
     //если нужна была только валидация, выходим
     if (!isset($_POST["submit"]) || !$_POST["submit"]) {
         return $answer;
     }
     //сохраняем
     if (!$user->save()) {
         $answer["error"] = array("field" => "submit", "msg" => Common::echoLastErrorMsg());
         return $answer;
     }
     //указываем об успешности опреации и выходим
     $answer["success"]["msg"] = "Данные успешно сохранены";
     $answer["success"]["fields"][] = "submit";
     return $answer;
 }