Exemplo n.º 1
0
 public function testIndex()
 {
     $req = new Request('test/test', ['td1' => 'd1']);
     $this->assertEquals('test/test', $req->getRequestUri());
     $this->assertEquals('d1', $req->td1);
     $this->assertTrue(isset($req->td1));
     $_SERVER['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest';
     $this->assertTrue($req->isXmlHttpRequest());
     $req->setParam('a', 1);
     $this->assertEquals(1, $req->a);
     $this->assertEquals(1, $req->env('q', 1));
     $this->assertEquals(1, $req->cookie('q', 1));
     $this->assertEquals(1, $req->server('q', 1));
     $this->assertInstanceOf('Yagrysha\\MVC\\User', $req->user);
 }
Exemplo n.º 2
0
 /**
  * Thank's Symfony :)
  */
 public function match(Request $request_)
 {
     $matches = $variables = $tokens = array();
     $defaultSeparator = '/';
     $uri = $request_->getUri();
     preg_match_all('#\\{\\w+\\}#', $this->path, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER);
     if (!empty($matches)) {
         // Use of {} variables
         $pos = 0;
         foreach ($matches as $match) {
             $varName = substr($match[0][0], 1, -1);
             $precedingText = substr($this->path, $pos, $match[0][1] - $pos);
             $pos = $match[0][1] + strlen($match[0][0]);
             $precedingChar = strlen($precedingText) > 0 ? substr($precedingText, -1) : '';
             $isSeparator = $precedingChar !== '' && strpos(static::SEPARATORS, $precedingChar) !== false;
             if (is_numeric($varName)) {
                 throw new \Exception(sprintf('Variable name "%s" cannot be numeric in route pattern "%s". Please use a different name.', $varName, $this->path));
             }
             if (in_array($varName, $variables)) {
                 throw new \Exception(sprintf('Route pattern "%s" cannot reference variable name "%s" more than once.', $this->path, $varName));
             }
             if ($isSeparator && strlen($precedingText) > 1) {
                 $tokens[] = array('text', substr($precedingText, 0, -1));
             } else {
                 if (!$isSeparator && strlen($precedingText) > 0) {
                     $tokens[] = array('text', $precedingText);
                 }
             }
             $followingPattern = (string) substr($this->path, $pos);
             $nextSeparator = self::findNextSeparator($followingPattern);
             $regexp = sprintf('[^%s%s]+', preg_quote($defaultSeparator, self::REGEX_DELIMITER), $defaultSeparator !== $nextSeparator && '' !== $nextSeparator ? preg_quote($nextSeparator, self::REGEX_DELIMITER) : '');
             if ($nextSeparator !== '' && !preg_match('#^\\{\\w+\\}#', $followingPattern) || $followingPattern === '') {
                 $regexp .= '+';
             }
             $variables[] = $varName;
             $tokens[] = array('variable', $isSeparator ? $precedingChar : '', $regexp, $varName);
         }
         if ($pos < strlen($this->path)) {
             $tokens[] = array('text', substr($this->path, $pos));
         }
         // compute the matching regexp
         $regexp = '';
         for ($i = 0, $nbToken = count($tokens); $i < $nbToken; ++$i) {
             $regexp .= self::computeRegexp($tokens, $i, PHP_INT_MAX);
         }
         $regex = self::REGEX_DELIMITER . '^' . $regexp . '$' . self::REGEX_DELIMITER . 's';
         $matchingValues = array();
         $res = preg_match($regex, $uri, $matchingValues);
         if ($res) {
             foreach ($variables as $k => $v) {
                 $request_->setParam($v, $matchingValues[$v]);
             }
             return true;
         }
         return false;
     }
     return $this->path === $request_->getUri();
 }
Exemplo n.º 3
0
 public static function start()
 {
     // Include model
     incFile('modules/profile/system/Model.php');
     incFile('../mail/class.phpmailer.php');
     // Connect to DB
     $model = new ProfileModel();
     if (getSession('user')) {
         $id = getSession('user');
     } else {
         $id = getCookie('user');
         setSession('user', $id, false);
     }
     //  $id = (getSession('user')) ? getSession('user') : getCookie('user') ;
     if ($id) {
         $uData = array();
         // Update user
         $uData['controller'] = CONTROLLER;
         $uData['action'] = ACTION;
         $uData['dateLast'] = time();
         $model->updateUserByID($uData, $id);
         // Get data user
         Request::setParam('user', $model->getUserByID($id));
         // Count new message
         Request::setParam('countMsg', $model->countMsg($id));
         // Count new message
         Request::setParam('countRequests', $model->countRequests($id));
         // Count challenges
         Request::setParam('countChallenges', $model->countChallengesList($id));
     } else {
         $gip = ip2long($_SERVER['REMOTE_ADDR']);
         // Null
         Request::setParam('user', null);
         // Guest
         Request::setParam('guest', $model->getGuestByIP($gip));
         // Role
         Request::setRole('guest');
         /*
         // Language
         if (CONTROLLER == 'page' && ACTION == 'lang') {
             if (Request::getUri(0) == 'ru' OR Request::getUri(0) == 'en')
                 setMyCookie('lang', Request::getUri(0), time() + 365 * 86400);
         }
         
         $lang = getCookie('lang');
         
         if ($lang == 'ru' OR $lang == 'en')
             Lang::setLanguage($lang);
         else
             Lang::setLanguage();
         */
         if (Request::getParam('guest')->id) {
             $gData['count'] = Request::getParam('guest')->count + 1;
             $gData['time'] = time();
             $model->update('guests', $gData, "`id` = '" . Request::getParam('guest')->id . "' LIMIT 1");
         } else {
             $gData['ip'] = $gip;
             $gData['browser'] = $_SERVER['HTTP_USER_AGENT'];
             $gData['referer'] = $_SERVER['HTTP_REFERER'];
             $gData['count'] = 1;
             $gData['time'] = time();
             $model->insert('guests', $gData);
         }
     }
     // Count users online
     Request::setParam('countUsersOnline', $model->countUsersOnline());
     // Count guests online
     Request::setParam('countGuestsOnline', $model->countGuestsOnline());
 }
Exemplo n.º 4
0
/**
 * Function callbackParser
 * @param $buffer
 */
function callbackParser($buffer)
{
    $arr1 = array();
    $arr2 = array();
    preg_match_all("~{([0-9A-Z_]{1,}):([0-9A-Za-z_//#]+)}~", $buffer, $m);
    foreach ($m[1] as $key => $value) {
        if ($value == 'L') {
            $arr1[] = '{' . $value . ':' . $m[2][$key] . '}';
            $arr2[] = Lang::translate($m[2][$key]);
        } elseif ($value == 'URL') {
            $arr1[] = '{' . $value . ':' . $m[2][$key] . '}';
            $arr2[] = url($m[2][$key]);
        }
    }
    $ar = str_replace($arr1, $arr2, $buffer);
    Request::setParam('buffer', $ar);
    Request::setParam('buf', $m);
}