Example #1
0
 /**
  * Constructor
  *
  * @param   object  An optional KConfig object with configuration options
  */
 public function __construct(KConfig $config)
 {
     parent::__construct($config);
     if (strpos(KRequest::protocol(), 'http') !== false) {
         $this->registerCallback('before.read', array($this, 'setReferrer'));
         $this->registerCallback('after.save', array($this, 'unsetReferrer'));
         $this->registerCallback('after.cancel', array($this, 'unsetReferrer'));
     }
     $this->registerCallback('after.read', array($this, 'lockResource'));
     $this->registerCallback('after.save', array($this, 'unlockResource'));
     $this->registerCallback('after.cancel', array($this, 'unlockResource'));
     //Set the default redirect.
     $this->setRedirect(KRequest::referrer());
 }
 /**
  * Set a variable in the request. Cookies and session data are stored persistently.
  *
  * @param   mixed   Variable identifier, prefixed by hash name eg post.foo.bar
  * @param   mixed   Variable value
  */
 public static function set($identifier, $value)
 {
     list($hash, $keys) = self::_parseIdentifier($identifier);
     // Add to _REQUEST hash if original hash is get, post, or cookies
     if (in_array($hash, array('GET', 'POST', 'COOKIE'))) {
         self::set('request.' . implode('.', $keys), $value);
     }
     // Store cookies persistently
     if ($hash == 'COOKIE' && strpos(KRequest::protocol(), 'http') !== false) {
         // rewrite the $keys as foo[bar][bar]
         $ckeys = $keys;
         // get a copy
         $name = array_shift($ckeys);
         foreach ($ckeys as $ckey) {
             $name .= '[' . $ckey . ']';
         }
         if (!setcookie($name, $value)) {
             throw new KRequestException("Couldn't set cookie, headers already sent.");
         }
     }
     // Store in $GLOBALS
     foreach (array_reverse($keys, true) as $key) {
         $value = array($key => $value);
     }
     // Add the global if it's doesn't exist
     if (!isset($GLOBALS['_' . $hash])) {
         $GLOBALS['_' . $hash] = array();
     }
     $GLOBALS['_' . $hash] = KHelperArray::merge($GLOBALS['_' . $hash], $value);
 }
Example #3
0
 /**
  * Push the controller data into the document
  *
  * This function divert the standard behavior and will push specific controller data
  * into the document
  *
  * @return	mixed
  */
 protected function _actionRender(KCommandContext $context)
 {
     //Headers
     if ($context->headers) {
         foreach ($context->headers as $name => $value) {
             header($name . ' : ' . $value);
         }
     }
     //Status
     if ($context->status) {
         header(KHttpResponse::getHeader($context->status, KRequest::protocol()));
     }
     if (is_string($context->result)) {
         return $context->result;
     }
 }