示例#1
0
 /**
  * Initializes $this->globalParams, $this->signal & $this->signalReceiver, $this->action, $this->view. Called by run().
  * @return void
  * @throws BadRequestException if action name is not valid
  */
 private function initGlobalParameters()
 {
     // init $this->globalParams
     $this->globalParams = array();
     $selfParams = array();
     $params = $this->request->getParameters();
     if ($this->isAjax()) {
         $params += $this->request->getPost();
     }
     foreach ($params as $key => $value) {
         if (!preg_match('#^((?:[a-z0-9_]+-)*)((?!\\d+$)[a-z0-9_]+)$#i', $key, $matches)) {
             $this->error("'Invalid parameter name '{$key}'");
         }
         if (!$matches[1]) {
             $selfParams[$key] = $value;
         } else {
             $this->globalParams[substr($matches[1], 0, -1)][$matches[2]] = $value;
         }
     }
     // init & validate $this->action & $this->view
     $this->changeAction(isset($selfParams[self::ACTION_KEY]) ? $selfParams[self::ACTION_KEY] : self::DEFAULT_ACTION);
     // init $this->signalReceiver and key 'signal' in appropriate params array
     $this->signalReceiver = $this->getUniqueId();
     if (isset($selfParams[self::SIGNAL_KEY])) {
         $param = $selfParams[self::SIGNAL_KEY];
         if (!is_string($param)) {
             $this->error('Signal name is not string.');
         }
         $pos = strrpos($param, '-');
         if ($pos) {
             $this->signalReceiver = substr($param, 0, $pos);
             $this->signal = substr($param, $pos + 1);
         } else {
             $this->signalReceiver = $this->getUniqueId();
             $this->signal = $param;
         }
         if ($this->signal == NULL) {
             // intentionally ==
             $this->signal = NULL;
         }
     }
     $this->loadState($selfParams);
 }
示例#2
0
 /**
  * Initializes $this->globalParams, $this->signal & $this->signalReceiver, $this->action, $this->view. Called by run().
  * @return void
  * @throws BadRequestException if action name is not valid
  */
 private function initGlobalParams()
 {
     // init $this->globalParams
     $this->globalParams = array();
     $selfParams = array();
     $params = $this->request->getParams();
     if ($this->isAjax()) {
         $params = $this->request->getPost() + $params;
     }
     foreach ($params as $key => $value) {
         $a = strlen($key) > 2 ? strrpos($key, self::NAME_SEPARATOR, -2) : FALSE;
         if ($a === FALSE) {
             $selfParams[$key] = $value;
         } else {
             $this->globalParams[substr($key, 0, $a)][substr($key, $a + 1)] = $value;
         }
     }
     // init & validate $this->action & $this->view
     $this->changeAction(isset($selfParams[self::ACTION_KEY]) ? $selfParams[self::ACTION_KEY] : self::$defaultAction);
     // init $this->signalReceiver and key 'signal' in appropriate params array
     $this->signalReceiver = $this->getUniqueId();
     if (!empty($selfParams[self::SIGNAL_KEY])) {
         $param = $selfParams[self::SIGNAL_KEY];
         $pos = strrpos($param, '-');
         if ($pos) {
             $this->signalReceiver = substr($param, 0, $pos);
             $this->signal = substr($param, $pos + 1);
         } else {
             $this->signalReceiver = $this->getUniqueId();
             $this->signal = $param;
         }
         if ($this->signal == NULL) {
             // intentionally ==
             $this->signal = NULL;
         }
     }
     $this->loadState($selfParams);
 }