public function resetUserPassword($email, $requested_password = null, $old_password = null, $new_email = null) { // check if the user is found $c = new Criteria(); $c->add(adminKuserPeer::EMAIL, $email); $c->addAscendingOrderByColumn(adminKuserPeer::ID); $user = adminKuserPeer::doSelectOne($c); if (!$user) { throw new kAdminKuserException('', kAdminKuserException::ADMIN_KUSER_NOT_FOUND); } if ($requested_password && !$user->isPasswordValid($old_password)) { throw new kAdminKuserException('', kAdminKuserException::ADMIN_KUSER_WRONG_OLD_PASSWORD); } if ($requested_password && (!adminKuserPeer::isPasswordStructureValid($requested_password) || stripos($requested_password, $user->getScreenName()) !== false) || stripos($requested_password, $user->getFullName() !== false)) { throw new kAdminKuserException('', kAdminKuserException::PASSWORD_STRUCTURE_INVALID); } if ($requested_password && $user->passwordUsedBefore($requested_password)) { throw new kAdminKuserException('', kAdminKuserException::PASSWORD_ALREADY_USED); } $password = $user->resetPassword($requested_password, $old_password); if ($new_email && $new_email != $user->getEmail()) { $user->setEmail($new_email); } $user->save(); if (!$requested_password) { $this->emailResetPassword($user->getPartnerId(), $user->getEmail(), $user->getFullName(), self::getPassResetLink($user->getPasswordHashKey())); } return array($password, $new_email); }