/**
  * Updates composer dependencies.
  */
 public function updateDependencies()
 {
     $container = InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer');
     // Keep track of the current directory
     $previousDirectory = getcwd();
     // Retrieve the Innomatic Platform root directory
     $platformHome = RootContainer::instance('\\Innomatic\\Core\\RootContainer')->getPlatformHome();
     // Switch current directory to the Innomatic Platform root
     chdir($platformHome);
     // Call composer install command
     $input = new ArrayInput(array('command' => 'update'));
     if ($container->getInterface() == InnomaticContainer::INTERFACE_CONSOLE) {
         $output = new ConsoleOutput();
     } else {
         $output = new BufferedOutput();
     }
     $application = new ComposerApplication();
     // Prevent application run method from exiting the script
     $application->setAutoExit(false);
     $application->run($input, $output);
     // Switch back to the previous current directory
     chdir($previousDirectory);
     // Switch back to the standard Innomatic PHP error handler
     set_error_handler(array($container, 'errorHandler'));
 }
Esempio n. 2
0
 /**
  * Class constructor.
  *
  * @param string $tenantName Internal name of the tenant.
  * @access public
  * @return void
  */
 public function ___construct($tenantName = '')
 {
     if (!strlen($tenantName)) {
         $tenantName = \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getCurrentTenant()->getDomainId();
     }
     $this->home = \Innomatic\Core\RootContainer::instance('\\Innomatic\\Core\\RootContainer')->getHome() . $tenantName . '/';
     if (!$this->modulesClassPathsAdded) {
         $this->addModulesClassPaths();
     }
 }
 public function ___construct()
 {
     $root_home = \Innomatic\Core\RootContainer::instance('\\Innomatic\\Core\\RootContainer')->getHome();
     $this->home = $root_home;
     $this->config = array();
     if (file_exists($root_home . 'innomatic/core/conf/webapp.ini')) {
         $this->useDefaults = false;
         $this->config = @parse_ini_file($root_home . 'innomatic/core/conf/webapp.ini');
     } else {
         $this->useDefaults = true;
     }
     $this->processor = new WebAppProcessor();
 }
 /**
  * Reports errors
  */
 public function report(WebAppRequest $req, WebAppResponse $res)
 {
     $statusReportsTree = simplexml_load_file(\Innomatic\Core\RootContainer::instance('\\Innomatic\\Core\\RootContainer')->getHome() . 'innomatic/core/conf/webapp/statusreports.xml');
     $statusReports = array();
     foreach ($statusReportsTree->status as $status) {
         $statusReports[sprintf('%s', $status->statuscode)] = sprintf('%s', $status->statusreport);
     }
     $tpl = new \Innomatic\Php\PHPTemplate(\Innomatic\Core\RootContainer::instance('\\Innomatic\\Core\\RootContainer')->getHome() . 'innomatic/core/conf/webapp/report.tpl.php');
     $tpl->set('status_code', $res->getStatus());
     $tpl->set('message', htmlspecialchars($res->getMessage()));
     $tpl->set('report', str_replace('{0}', $res->getMessage(), isset($statusReports[$res->getStatus()]) ? $statusReports[$res->getStatus()] : ''));
     $tpl->set('title', $req->getServerName());
     $tpl->set('server_info', $req->getServerName());
     $tpl->set('e', $res->getException());
     $res->startBuffer();
     echo $tpl->parse();
     $res->flushBuffer();
 }
Esempio n. 5
0
 public function doGet(\Innomatic\Webapp\WebAppRequest $req, \Innomatic\Webapp\WebAppResponse $res)
 {
     // Start Innomatic
     $innomatic = \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer');
     $innomatic->setInterface(\Innomatic\Core\InnomaticContainer::INTERFACE_EXTERNAL);
     $root = \Innomatic\Core\RootContainer::instance('\\Innomatic\\Core\\RootContainer');
     $innomatic_home = $root->getHome() . 'innomatic/';
     $innomatic->bootstrap($innomatic_home, $innomatic_home . 'core/conf/innomatic.ini');
     // Start Innomatic domain
     \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->startDomain(\Innomatic\Webapp\WebAppContainer::instance('\\Innomatic\\Webapp\\WebAppContainer')->getCurrentWebApp()->getName());
     // Innomedia page
     $scope_page = 'frontend';
     // Check if the page exists in the page tree
     $pageSearch = PageTree::findPageByPath(substr($req->getPathInfo(), 1));
     if ($pageSearch === false) {
         // This is a static page (excluding the home page).
         $location = explode('/', $req->getPathInfo());
         $module_name = isset($location[1]) ? $location[1] : '';
         $page_name = isset($location[2]) ? $location[2] : '';
         $pageId = isset($location[3]) ? $location[3] : 0;
     } else {
         // This is the home page or a content page.
         $module_name = $pageSearch['module'];
         $page_name = $pageSearch['page'];
         $pageId = $pageSearch['page_id'];
     }
     // Define Innomatic context
     $home = \Innomatic\Webapp\WebAppContainer::instance('\\Innomatic\\Webapp\\WebAppContainer')->getCurrentWebApp()->getHome();
     $context = Context::instance('\\Innomedia\\Context');
     $context->setRequest($req)->setResponse($res)->process();
     // Build Innomedia page
     $page = new Page($module_name, $page_name, $pageId, $scope_page);
     $page->parsePage();
     // Check if the page is valid
     if (!$page->isValid()) {
         $res->sendError(\Innomatic\Webapp\WebAppResponse::SC_NOT_FOUND, $req->getRequestURI());
     } else {
         $page->build();
     }
 }
 public function doGet(WebAppRequest $req, WebAppResponse $res)
 {
     // Start Innomatic and Tenant
     $innomatic = \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer');
     $innomatic->setInterface(\Innomatic\Core\InnomaticContainer::INTERFACE_EXTERNAL);
     $root = \Innomatic\Core\RootContainer::instance('\\Innomatic\\Core\\RootContainer');
     $innomatic_home = $root->getHome() . 'innomatic/';
     $innomatic->bootstrap($innomatic_home, $innomatic_home . 'core/conf/innomatic.ini');
     $innomatic->startDomain(\Innomatic\Webapp\WebAppContainer::instance('\\Innomatic\\Webapp\\WebAppContainer')->getCurrentWebApp()->getName());
     $request_uri = \Innomatic\Webapp\WebAppContainer::instance('\\Innomatic\\Webapp\\WebAppContainer')->getProcessor()->getRequest()->getUrlPath(true) . '/_xajax/call.xajax';
     $xajax = Xajax::instance('Xajax', $request_uri);
     // Set debug mode
     if ($innomatic->getState() == \Innomatic\Core\InnomaticContainer::STATE_DEBUG) {
         $xajax->debugOn();
     }
     $xajax->setLogFile($innomatic->getHome() . 'core/log/ajax.log');
     $cfg = XajaxConfig::getInstance(\Innomatic\Webapp\WebAppContainer::instance('\\Innomatic\\Webapp\\WebAppContainer')->getCurrentWebApp(), \Innomatic\Webapp\WebAppContainer::instance('\\Innomatic\\Webapp\\WebAppContainer')->getCurrentWebApp()->getHome() . 'core/conf/ajax.xml');
     if (isset($cfg->functions)) {
         foreach ($cfg->functions as $name => $functionData) {
             $xajax->registerExternalFunction(array($name, $functionData['classname'], $functionData['method']), $functionData['classfile']);
         }
     }
     $xajax->processRequests();
 }
Esempio n. 7
0
 public function __construct($home)
 {
     $this->home = $home;
     $this->name = basename($home);
     // If the webapp contains classes, adds them to the include path.
     // The webapp classes take precedence over Innomatic ones.
     if (file_exists($this->home . 'core/classes/')) {
         set_include_path($this->home . 'core/classes/' . PATH_SEPARATOR . get_include_path());
     }
     // Sets var directory
     $container = \Innomatic\Webapp\WebAppContainer::instance('\\Innomatic\\Webapp\\WebAppContainer');
     if ($container->useDefaults() or !$container->isKey('webapps.var_dir') or $container->getKey('webapps.var_dir') == 'shared') {
         $this->varDir = \Innomatic\Core\RootContainer::instance('\\Innomatic\\Core\\RootContainer')->getHome() . 'innomatic/core/domains/' . $this->getName() . '/var/';
     } else {
         $this->varDir = $this->getHome() . 'core/var/';
     }
     // Make var directories
     if (!is_dir($this->varDir)) {
         @mkdir($this->varDir, 0777, true);
     }
     // Init configuration
     // Must be called only after the cache directory has been set
     $this->parseConfig($home . 'core/web.xml');
 }
Esempio n. 8
0
 public function testGetHomeIsCorrect()
 {
     $this->assertEquals($this->context->getHome(), \Innomatic\Core\RootContainer::instance('\\Innomatic\\Core\\RootContainer')->getHome() . 'innomatic/');
 }
Esempio n. 9
0
 /**
  * Used only when the component is a domain override.
  *
  * @param unknown_type $domainid
  * @param unknown_type $params
  * @return bool
  */
 public function doDisableDomainAction($domainid, $params)
 {
     if (!strlen($params['name'])) {
         return false;
     }
     if (!isset($params['override']) and $params['override'] = self::OVERRIDE_DOMAIN) {
         return true;
     }
     $domain_query = $this->rootda->execute('SELECT domainid FROM domains WHERE id=' . $domainid);
     if ($domain_query == false or $domain_query->getNumberRows() == 0) {
         return false;
     }
     $domain_id = $domain_query->getFields('domainid');
     if (file_exists($this->container->getHome() . 'core/domains/' . $domain_id . '/overrides/classes/' . $params['name'])) {
         \Innomatic\Core\RootContainer::clearClassesCache();
         return unlink($this->container->getHome() . 'core/domains/' . $domain_id . '/overrides/classes/' . $params['name']);
         // TODO add removal of empty class directory
     }
     return false;
 }
 /**
  * Prepares the environment before running a test.
  */
 protected function setUp()
 {
     parent::setUp();
     $this->InnomaticSettings = new \Innomatic\Core\InnomaticSettings(\Innomatic\Core\RootContainer::instance('\\Innomatic\\Core\\RootContainer')->getHome() . '/innomatic/core/classes/innomatic/core/tests/innomatic.ini');
 }
Esempio n. 11
0
<?php

/**
 * Innomatic
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.
 *
 * @copyright  1999-2014 Innomatic Company
 * @license    http://www.innomatic.io/license/ New BSD License
 * @link       http://www.innomatic.io
 */
// Saves webapp home.
$webAppHome = getcwd() . '/';
// Checks if this receiver script has been called directly.
if ($webAppHome == dirname(__FILE__) . '/') {
    // Redirects to innomatic webapp.
    header('Location: innomatic/');
    exit;
}
// Starts the Root Container.
require_once dirname(__FILE__) . '/innomatic/core/classes/innomatic/core/RootContainer.php';
$rootContainer = \Innomatic\Core\RootContainer::instance('\\Innomatic\\Core\\RootContainer');
// Starts the WebAppContainer.
$container = \Innomatic\Webapp\WebAppContainer::instance('\\Innomatic\\Webapp\\WebAppContainer');
// Starts the WebApp. This is where all the real stuff is done.
$container->startWebApp($webAppHome);
// Stops the Root Container so that the instance is marked as cleanly exited.
$rootContainer->stop();
Esempio n. 12
0
 protected function getUploadedFilesTempPath()
 {
     list($pageModule, $pageName) = explode('/', $this->pageName);
     // Handle case of site wide block parameters
     if (!strlen($pageModule) && !strlen($pageName)) {
         $pageModule = 'site';
         $pageName = 'global';
     }
     list($blockModule, $blockName) = explode('/', $this->blockName);
     $pageId = strlen($this->pageId) ? $this->pageId : 0;
     $blockCounter = strlen($this->blockCounter) ? $this->blockCounter : 1;
     $root = \Innomatic\Core\RootContainer::instance('\\Innomatic\\Core\\RootContainer');
     $innomatic_home = $root->getHome() . 'innomatic/';
     $domainName = \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getCurrentDomain()->getDomainId();
     return $innomatic_home . 'core/temp/dropzone/' . $domainName . '/' . $pageModule . '/' . $pageName . '/' . $pageId . '/' . $blockModule . '/' . $blockName . '/' . $blockCounter;
 }
 * Innomatic
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.
 *
 * @copyright  1999-2014 Innoteam Srl
 * @license    http://www.innomatic.io/license/ New BSD License
 * @link       http://www.innomatic.io
 */
// Copy the phpunit distribution file
@copy($tmpdir . '/phpunit.xml', \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getHome() . 'phpunit.xml');
// Updates the front receiver file.
@copy($tmpdir . '/../index.php', \Innomatic\Core\RootContainer::instance('\\Innomatic\\Core\\RootContainer')->getHome() . 'index.php');
@chmod(\Innomatic\Core\RootContainer::instance('\\Innomatic\\Core\\RootContainer')->getHome() . 'index.php', 0644);
/*
@copy($tmpdir . '/core/web.xml',
      \Innomatic\Core\InnomaticContainer::instance('\Innomatic\Core\InnomaticContainer')->getHome()
      . 'core/web.xml');

@chmod(\Innomatic\Core\InnomaticContainer::instance('\Innomatic\Core\InnomaticContainer')->getHome()
       . 'core/web.xml', 0644);
*/
@copy($tmpdir . '/index.php', \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getHome() . 'index.php');
@chmod(\Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getHome() . 'index.php', 0644);
@copy($tmpdir . '/favicon.png', \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getHome() . 'favicon.png');
@chmod(\Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getHome() . 'favicon.png', 0644);
// Innomatic dependencies fix
//
$appQuery = \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getDataAccess()->execute('SELECT id
Esempio n. 14
0
 public function run($webApp = '')
 {
     // Change current directory to the legacy stack.
     $platformHome = getcwd();
     // @todo Must get innomatic_legacy path from configuration.
     chdir($platformHome . '/../innomatic_legacy/innomatic');
     // Saves webapp home.
     $webAppHome = getcwd() . (strlen($webApp) ? '/../' . $webApp . '/' : '/');
     // Start the legacy Root Container and the legacy autoloader.
     require_once getcwd() . '/core/classes/innomatic/core/RootContainer.php';
     $rootContainer = \Innomatic\Core\RootContainer::instance('\\Innomatic\\Core\\RootContainer');
     // Add the Symfony service container
     $rootContainer->setServiceContainer($this->container);
     // Starts the WebAppContainer.
     $container = \Innomatic\Webapp\WebAppContainer::instance('\\Innomatic\\Webapp\\WebAppContainer');
     ob_start();
     // Starts the WebApp. This is where all the real stuff is done.
     $container->startWebApp($webAppHome);
     $result = ob_get_contents();
     ob_end_clean();
     // Stops the Root Container so that the instance is marked as cleanly exited.
     $rootContainer->stop();
     chdir($platformHome);
     return $result;
 }