예제 #1
0
 /**
  *
  * @todo Consider using request and response as controller constructor
  *       params?
  */
 function __construct()
 {
     $this->_server = Oops_Server::getInstance();
     $this->_request = Oops_Server::getRequest();
     $this->_response = Oops_Server::getResponse();
     $this->_config = Oops_Server::getConfig();
 }
예제 #2
0
 /**
  * Singleton pattern implementaion
  *
  * @static
  * @param string template name
  * @return Oops_Template
  */
 public static function getInstance($tplname)
 {
     $tplname = strtolower($tplname);
     static $a = array();
     if (!isset($a[$tplname])) {
         $a[$tplname] = new Oops_Template($tplname);
     }
     $a[$tplname]->_request = Oops_Server::getRequest();
     $a[$tplname]->_response = Oops_Server::getResponse();
     return $a[$tplname];
 }
예제 #3
0
 /**
  * Handle the request
  *
  * @todo proceed 301, 302, 404 and other statuses. Current response object should be used for this, or Oops_Server::Run should return a response object instead of text
  *
  * @return void
  */
 function _handle()
 {
     if ($this->_isHandled) {
         return;
     }
     $server = Oops_Server::newInstance();
     $response = $server->Run($this->_request);
     while ($response->isRedirect() && $this->_redirectLimit--) {
         /**
          * @todo do something, use Location header
          */
         $this->_request = new Oops_Server_Request_Custom($response->getHeader("Location"));
         $response = $server->Run($this->_request);
     }
     Oops_Server::popInstance();
     $server = null;
     if (!$response->isRedirect()) {
         $this->_content = $response->body;
         /* translate headers in order to deliver control headers like 'X-Accel-Expires' */
         $childHeaders = $response->getHeaders();
         if (count($childHeaders)) {
             $parentHeaders = Oops_Server::getResponse()->getHeaders();
             foreach ($childHeaders as $k => $v) {
                 if (!isset($parentHeaders[$k])) {
                     Oops_Server::getResponse()->setHeader($k, $v);
                 } elseif (is_array($parentHeaders[$k])) {
                     Oops_Utils::ToArray($v);
                     foreach ($v as $vv) {
                         Oops_Server::getResponse()->setHeader($k, $vv, false);
                     }
                 }
             }
         }
     }
     $this->_isHandled = true;
     $this->_position = 0;
 }