| 
<?phpif (! defined('BASEPATH')) exit('No direct script access allowed');
 
 use Jaxon\Features\App;
 use Jaxon\CI\View;
 use Jaxon\CI\Session;
 use Jaxon\CI\Logger;
 
 class Jaxon
 {
 use App;
 
 public function __construct()
 {
 // Initialize the Jaxon plugin
 $this->setup();
 }
 
 /**
 * Set the module specific options for the Jaxon library.
 *
 * @return void
 */
 protected function setup()
 {
 // Load Jaxon config settings
 $ci = get_instance();
 $ci->config->load('jaxon', true);
 $aLibOptions = $ci->config->item('lib', 'jaxon');
 $aAppOptions = $ci->config->item('app', 'jaxon');
 
 // Jaxon library default settings
 $bIsDebug = $ci->config->item('debug');
 $sJsUrl = rtrim($ci->config->item('base_url'), '/') . '/jaxon/js';
 $sJsDir = rtrim(FCPATH, '/') . '/jaxon/js';
 
 $jaxon = jaxon();
 $di = $jaxon->di();
 $viewManager = $di->getViewManager();
 // Set the default view namespace
 $viewManager->addNamespace('default', '', '', 'codeigniter');
 // Add the view renderer
 $viewManager->addRenderer('codeigniter', function() {
 return new View();
 });
 
 // Set the session manager
 $di->setSessionManager(function() {
 return new Session();
 });
 
 // Set the logger
 $this->setLogger(new Logger());
 
 $this->bootstrap()
 ->lib($aLibOptions)
 ->app($aAppOptions)
 // ->uri($sUri)
 ->js(!$bIsDebug, $sJsUrl, $sJsDir, !$bIsDebug)
 ->run();
 
 // Prevent the Jaxon library from sending the response or exiting
 $jaxon->setOption('core.response.send', false);
 $jaxon->setOption('core.process.exit', false);
 }
 
 /**
 * Get the HTTP response
 *
 * @param string    $code       The HTTP response code
 *
 * @return mixed
 */
 public function httpResponse($code = '200')
 {
 $jaxon = jaxon();
 // Get the reponse to the request
 $jaxonResponse = $jaxon->di()->getResponseManager()->getResponse();
 if(!$jaxonResponse)
 {
 $jaxonResponse = $jaxon->getResponse();
 }
 
 // Create and return a CodeIgniter HTTP response
 get_instance()->output
 ->set_status_header($code)
 ->set_content_type($jaxonResponse->getContentType(), $jaxonResponse->getCharacterEncoding())
 ->set_output($jaxonResponse->getOutput());
 // ->_display();
 }
 
 /**
 * Process an incoming Jaxon request, and return the response.
 *
 * @return mixed
 */
 public function processRequest()
 {
 // Process the jaxon request
 jaxon()->processRequest();
 
 // Return the reponse to the request
 $this->httpResponse();
 }
 }
 
 |