Exemple #1
0
} 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;
 }