} else { $action = null; $actionProcessed = 'default'; } if (isset($_REQUEST['controller'])) { $controller = $_REQUEST['controller']; $controllerProcessed = strtolower($controller); while (false !== ($pos = strpos($actionProcessed, '_')) || false !== ($pos = strpos($controllerProcessed, '-'))) { $actionProcessed = substr($actionProcessed, 0, $pos) . strtoupper(substr($actionProcessed, $pos + 1, 1)) . substr($actionProcessed, $pos + 2); } $controllerProcessed = strtoupper(substr($controller, 0, 1)) . substr($controller, 1); } else { $controller = null; $controllerProcessed = 'Index'; } Log::debug(sprintf('index.php: routing finished (controller = %s, action = %s)', $logController, $logAction)); // Dispatch Log::debug(sprintf('index.php: dispatcherization started (controller = %s, action = %s)', $controllerProcessed, $actionProcessed)); ob_start(); Lpf_Dispatcher::dispatch(null, $actionProcessed); $cont = ob_get_flush(); Log::debug(sprintf('index.php: dispatcherization finished (controller = %s, action = %s)', $controllerProcessed, $actionProcessed)); // Cache if ($cont && $action != 'register' && $action != 'all_users') { $cacheTime = array('default' => 30 * 60, 'user_page' => 15 * 60, 'all_users' => 30 * 60, 'get' => 5 * 60); $cacheTimeSeconds = isset($cacheTime[$action]) ? $cacheTime[$action] : 10 * 60; $m = new Lpf_Memcache('habrometr'); $m->set($_SERVER['REQUEST_URI'], $cont . "\r\n<!-- cached version " . date('r') . ' -->', 0, $cacheTimeSeconds); Log::debug(sprintf('index.php: cache saved for `%s` expire in %d seconds', $_SERVER['REQUEST_URI'], $cacheTimeSeconds)); } Log::debug(sprintf('index.php: finished (%s)', $_SERVER['REQUEST_URI']));
public function registerAction() { require_once 'ReCaptcha/recaptchalib.php'; $errors = array(); $ok = false; $habravaluesFromXML = null; $user_code = null; $user_email = null; if (isset($_POST['user_code'])) { $recaptchaChallenge = isset($_POST["recaptcha_challenge_field"]) ? $_POST["recaptcha_challenge_field"] : ''; $recaptchaUserInput = isset($_POST["recaptcha_response_field"]) ? $_POST["recaptcha_response_field"] : ''; $reCaptchaResponse = recaptcha_check_answer(Config::RE_CAPTCHA_KEY_PRIVATE, $_SERVER["REMOTE_ADDR"], $recaptchaChallenge, $recaptchaUserInput); if (!$reCaptchaResponse->is_valid) { $errors[] = 'Неверно введен проверочный код (ReCaptcha): ' . $reCaptchaResponse->error; } $user_code = trim($_POST['user_code']); if (!preg_match('#[a-zA-Z0-9\\-_]{1,100}#', $user_code)) { $errors[] = 'Хабралогин пользователя должен состоять из символов латинского алфавита, цифр и символов "-", "_".'; } if (isset($_POST['user_email']) && $_POST['user_email'] !== '') { $user_email = trim($_POST['user_email']); if (!preg_match("/[0-9A-Za-z_\\.]+@[0-9A-Za-z_^\\.-]+\\.[a-z]{2,4}/i", $user_email)) { $errors[] = 'E-mail пользователя должен соответствовать шаблону "*****@*****.**".'; } } if (!$errors) { try { $habravaluesFromXML = Habrometr_Model::getInstance()->getRemoteValues($user_code); } catch (Exception $e) { if ($e->getCode() == 404) { $errors[] = "Хабрахабр сообщает, что запрошенный пользователь не существует. Регистрация невозможна."; } else { $errors[] = "При попытке загрузки страницы пользователя (http://habrahabr.ru/api/profile/{$user_code}/) возникла ошибка. Сервис не может зарегистрировать пользователя, не убедившись, что он зарегистрирован на Хабрахабре."; } } } if (!$errors) { if (!is_null(Habrometr_Model::getInstance()->code2UserId($user_code))) { $errors[] = "Вы (<a href=\"./?action=user_page&user={$user_code}\">{$user_code}</a>) уже зарегистрированы в системе. Повторная регистрация невозможна."; } } // Ошибок нет, надо регить юезра if (!$errors) { if (false != ($userId = Habrometr_Model::getInstance()->addUser(array('user_code' => $user_code, 'user_email' => $user_email)))) { $ok = true; try { Habrometr_Model::getInstance()->pushValues($userId, $habravaluesFromXML); } catch (Exception $e) { } $m = new Lpf_Memcache('habrometr'); $m->delete('/users/'); } else { $errors[] = "Ошибка регистрации"; } } } $view = Lpf_Dispatcher::getView(); Habrometr_Model::getInstance()->getUser($this->_userId); $view->userCode = $user_code; $view->userEmail = $user_email; $view->errors = $errors; $view->ok = $ok; }