/** * Cambiar dirección de correo. * * @param type string $token */ public function changeemail($token) { $token = base64_decode($token); if (count(explode('¬', $token)) > 1) { $query = Model\User::query('SELECT id FROM user WHERE token = ?', array($token)); if ($id = $query->fetchColumn()) { $user = Model\User::get($id); $user->email = $token; $errors = array(); if ($user->save($errors)) { Message::Info(Text::get('user-changeemail-success')); // Refresca la sesión. Model\User::flush(); } else { Message::Error($errors); } } else { Message::Error(Text::get('user-changeemail-fail')); } } else { Message::Error(Text::get('user-changeemail-fail')); } throw new Redirection('/dashboard'); }
private function process_userProfile(&$project, &$errors) { if (!isset($_POST['process_userProfile'])) { return false; } $user = Model\User::get($project->owner); // tratar la imagen y ponerla en la propiedad avatar // __FILES__ $fields = array('user_name' => 'name', 'user_location' => 'location', 'user_avatar' => 'avatar', 'user_about' => 'about', 'user_facebook' => 'facebook', 'user_google' => 'google', 'user_twitter' => 'twitter', 'user_identica' => 'identica', 'user_linkedin' => 'linkedin'); foreach ($fields as $fieldPost => $fieldTable) { if (isset($_POST[$fieldPost])) { $user->{$fieldTable} = $_POST[$fieldPost]; } } // Avatar if (isset($_FILES['avatar_upload']) && $_FILES['avatar_upload']['error'] != UPLOAD_ERR_NO_FILE) { $user->avatar = $_FILES['avatar_upload']; } // tratar si quitan la imagen if (!empty($_POST['avatar-' . $user->avatar->id . '-remove'])) { $user->avatar->remove(); $user->avatar = null; } $user->interests = $_POST['user_interests']; //tratar webs existentes foreach ($user->webs as $i => &$web) { // luego aplicar los cambios if (isset($_POST['web-' . $web->id . '-url'])) { $web->url = $_POST['web-' . $web->id . '-url']; } //quitar las que quiten if (!empty($_POST['web-' . $web->id . '-remove'])) { unset($user->webs[$i]); } } //tratar nueva web if (!empty($_POST['web-add'])) { $user->webs[] = new Model\User\Web(array('url' => 'http://')); } /// este es el único save que se lanza desde un metodo process_ $user->save($project->errors['userProfile']); // si hay errores en la imagen hay que mostrarlos if (!empty($project->errors['userProfile']['image'])) { $project->errors['userProfile']['avatar'] = $project->errors['userProfile']['image']; } $user = Model\User::flush(); $project->user = $user; return true; }
/** * Cambio de email / contraseña * * @param object $user instancia de Model\User (por referencia) * @param array $errors (por referencia) * @param string $log_action (por referencia) * @return boolean si se guarda bien */ public static function process_access(&$user, &$errors, &$log_action) { // E-mail if (!empty($_POST['user_nemail']) || !empty($_POST['user_remail'])) { if (empty($_POST['user_nemail'])) { $errors['email'] = Text::get('error-user-email-empty'); } elseif (!\Goteo\Library\Check::mail($_POST['user_nemail'])) { $errors['email'] = Text::get('error-user-email-invalid'); } elseif (empty($_POST['user_remail'])) { $errors['email_retry'] = Text::get('error-user-email-empty'); } elseif (strcmp($_POST['user_nemail'], $_POST['user_remail']) !== 0) { $errors['email_retry'] = Text::get('error-user-email-confirm'); } else { $user->email = $_POST['user_nemail']; unset($_POST['user_nemail']); unset($_POST['user_remail']); Message::Info(Text::get('user-email-change-sended')); $log_action = 'Cambiado su email'; //feed admin } } // Contraseña if (!empty($_POST['user_npassword']) || !empty($_POST['user_rpassword'])) { // No verificamos la contraseña actual (ni en recover ni en normal) porque los usuarios que acceden mediante servicio no tienen contraseña if (empty($_POST['user_npassword'])) { $errors['password_new'] = Text::get('error-user-password-empty'); } elseif (!\Goteo\Library\Check::password($_POST['user_npassword'])) { $errors['password_new'] = Text::get('error-user-password-invalid'); } elseif (empty($_POST['user_rpassword'])) { $errors['password_retry'] = Text::get('error-user-password-empty'); } elseif (strcmp($_POST['user_npassword'], $_POST['user_rpassword']) !== 0) { $errors['password_retry'] = Text::get('error-user-password-confirm'); } else { $user->password = $_POST['user_npassword']; unset($_POST['user_password']); unset($_POST['user_npassword']); unset($_POST['user_rpassword']); Message::Info(Text::get('user-password-changed')); $log_action = 'Cambiado su contraseña'; //feed admin } } if (empty($errors) && $user->save($errors)) { // Refresca la sesión. $user = Model\User::flush(); if (isset($_SESSION['recovering'])) { unset($_SESSION['recovering']); } return true; } else { Message::Error(Text::get('user-save-fail')); $log_action = '¡ERROR! al cambiar email/contraseña'; //feed admin return false; } }