Index: branches/5.0.x/core/units/users/users_tag_processor.php =================================================================== diff -u -r12117 -r12159 --- branches/5.0.x/core/units/users/users_tag_processor.php (.../users_tag_processor.php) (revision 12117) +++ branches/5.0.x/core/units/users/users_tag_processor.php (.../users_tag_processor.php) (revision 12159) @@ -1,6 +1,6 @@ Application->GetVar('user_key')); // used for error reporting only -> rewrite code + theme (by Alex) - $user_current_object = &$this->Application->recallObject('u', null, Array('skip_autoload' => true)); // TODO: change theme too + $user_current_object =& $this->Application->recallObject('u', null, Array('skip_autoload' => true)); // TODO: change theme too /* @var $user_current_object UsersItem */ + $code_type = array_key_exists('code_type', $params) ? $params['code_type'] : 'forgot_password'; + + $error_messages = Array ( + 'forgot_password' => Array ( + 'code_is_not_valid' => 'lu_code_is_not_valid', + 'code_expired' => 'lu_code_expired', + ), + + 'activation' => Array ( + 'code_is_not_valid' => 'lu_error_ActivationCodeNotValid', + 'code_expired' => 'lu_error_ActivationCodeExpired', + ), + ); + + if (!$passed_key) { - $user_current_object->SetError('PwResetConfirm', 'code_is_not_valid', 'lu_code_is_not_valid'); + $user_current_object->SetError('PwResetConfirm', 'code_is_not_valid', $error_messages[$code_type]['code_is_not_valid']); return false; } @@ -117,12 +132,12 @@ if ($expiration_time > adodb_mktime()) { return true; } else { - $user_current_object->SetError('PwResetConfirm', 'code_expired', 'lu_code_expired'); + $user_current_object->SetError('PwResetConfirm', 'code_expired', $error_messages[$code_type]['code_expired']); return false; } } else { - $user_current_object->SetError('PwResetConfirm', 'code_is_not_valid', 'lu_code_is_not_valid'); + $user_current_object->SetError('PwResetConfirm', 'code_is_not_valid', $error_messages[$code_type]['code_is_not_valid']); return false; } @@ -256,6 +271,54 @@ return isset($loggedin_status[$this->Special][$object->GetID()]); } + + /** + * Prints user activation link + * + * @param Array $params + * @return string + */ + function ActivationLink($params) + { + $code = $this->getCachedCode(); + + $fields_hash = Array ( + 'PwResetConfirm' => $code, + 'PwRequestTime' => adodb_mktime(), + ); + + $object =& $this->getObject($params); + /* @var $object kDBItem */ + + $this->Conn->doUpdate($fields_hash, $object->TableName, $object->IDField . ' = ' . $object->GetID()); + + $params['user_key'] = $code; + + return $this->Application->ProcessParsedTag('m', 'Link', $params); + } + + /** + * Activates user using given code + * + * @param Array $params + */ + function ActivateUser($params) + { + $passed_key = trim($this->Application->GetVar('user_key')); + + $user =& $this->Application->recallObject('u', null, Array('skip_autoload' => true)); + /* @var $user UsersItem */ + + $user->Load($passed_key, 'PwResetConfirm'); + if (!$user->isLoaded()) { + return ; + } + + $user->SetDBField('Status', STATUS_ACTIVE); + $user->SetDBField('PwResetConfirm', ''); + $user->SetDBField('PwRequestTime', 0); + $user->Update(); + } } ?> \ No newline at end of file