Source for file init.php

Documentation is available at init.php

  1. <?php
  2. /**
  3. * Initialize all defines and includes necessary files
  4. *
  5. @package  jelix
  6. @subpackage core
  7. @author   Laurent Jouanneau
  8. @contributor Loic Mathaud, Julien Issler
  9. @copyright 2005-2012 Laurent Jouanneau
  10. @copyright 2007 Julien Issler
  11. @link     http://www.jelix.org
  12. @licence  GNU Lesser General Public Licence see LICENCE file or http://www.gnu.org/licenses/lgpl.html
  13. */
  14.  
  15. /**
  16.  * Version number of Jelix
  17.  * @name  JELIX_VERSION
  18.  */
  19. define ('JELIX_VERSION''1.5.8');
  20.  
  21. /**
  22.  * base of namespace path used in xml files of jelix
  23.  * @name  JELIX_NAMESPACE_BASE
  24.  */
  25. define ('JELIX_NAMESPACE_BASE' 'http://jelix.org/ns/');
  26.  
  27. define ('JELIX_LIB_PATH',         __DIR__.'/');
  28. define ('JELIX_LIB_CORE_PATH',    JELIX_LIB_PATH.'core/');
  29. define ('JELIX_LIB_UTILS_PATH',   JELIX_LIB_PATH.'utils/');
  30. define ('LIB_PATH',               dirname(JELIX_LIB_PATH).'/');
  31.  
  32.  
  33. define ('BYTECODE_CACHE_EXISTS'function_exists('opcache_compile_file'|| function_exists('apc_cache_info'|| function_exists('eaccelerator_info'|| function_exists('xcache_info'));
  34.  
  35. error_reporting (E_ALL E_STRICT);
  36.  
  37. require (JELIX_LIB_CORE_PATH 'jApp.class.php');
  38. require (JELIX_LIB_CORE_PATH 'jelix_api.php');
  39. require (JELIX_LIB_CORE_PATH 'jICoordPlugin.iface.php');
  40. require (JELIX_LIB_CORE_PATH 'jISelector.iface.php');
  41. require (JELIX_LIB_CORE_PATH 'jIUrlEngine.iface.php');
  42. require (JELIX_LIB_CORE_PATH 'jBasicErrorHandler.class.php');
  43. require (JELIX_LIB_CORE_PATH 'jException.class.php');
  44. require (JELIX_LIB_CORE_PATH 'jConfig.class.php');
  45. require (JELIX_LIB_CORE_PATH 'jConfigAutoloader.class.php');
  46. require (JELIX_LIB_CORE_PATH 'jSelector.class.php');
  47. require (JELIX_LIB_CORE_PATH 'jServer.class.php');
  48. require (JELIX_LIB_CORE_PATH 'selector/jSelectorModule.class.php');
  49. require (JELIX_LIB_CORE_PATH 'selector/jSelectorActFast.class.php');
  50. require (JELIX_LIB_CORE_PATH 'selector/jSelectorAct.class.php');
  51. require (JELIX_LIB_CORE_PATH 'selector/jSelectorClass.class.php');
  52. require (JELIX_LIB_CORE_PATH 'selector/jSelectorDao.class.php');
  53. require (JELIX_LIB_CORE_PATH 'selector/jSelectorDaoRecord.class.php');
  54. require (JELIX_LIB_CORE_PATH 'selector/jSelectorForm.class.php');
  55. require (JELIX_LIB_CORE_PATH 'selector/jSelectorIface.class.php');
  56. require (JELIX_LIB_CORE_PATH 'selector/jSelectorLoc.class.php');
  57. require (JELIX_LIB_CORE_PATH 'selector/jSelectorTpl.class.php');
  58. require (JELIX_LIB_CORE_PATH 'selector/jSelectorZone.class.php');
  59. require (JELIX_LIB_CORE_PATH 'selector/jSelectorSimpleFile.class.php');
  60. require (JELIX_LIB_CORE_PATH 'selector/jSelectorFile.lib.php');
  61. require (JELIX_LIB_CORE_PATH 'jUrlBase.class.php');
  62. require (JELIX_LIB_CORE_PATH 'jUrlAction.class.php');
  63. require (JELIX_LIB_CORE_PATH 'jUrl.class.php');
  64. require (JELIX_LIB_CORE_PATH 'jCoordinator.class.php');
  65. require (JELIX_LIB_CORE_PATH 'jController.class.php');
  66. require (JELIX_LIB_CORE_PATH 'jRequest.class.php');
  67. require (JELIX_LIB_CORE_PATH 'jResponse.class.php');
  68. require (JELIX_LIB_CORE_PATH 'jBundle.class.php');
  69. require (JELIX_LIB_CORE_PATH 'jLocale.class.php');
  70. require (JELIX_LIB_CORE_PATH 'jLog.class.php');
  71. require (JELIX_LIB_CORE_PATH 'jIncluder.class.php');
  72. require (JELIX_LIB_CORE_PATH 'jSession.class.php');
  73.  
  74. /**
  75.  * contains path for __autoload function
  76.  * @global array $gLibPath 
  77.  * @name $gLibPath
  78.  * @see __autoload()
  79.  */
  80. $gLibPath=array('Db'=>JELIX_LIB_PATH.'db/''Dao'=>JELIX_LIB_PATH.'dao/',
  81.  'Forms'=>JELIX_LIB_PATH.'forms/''Event'=>JELIX_LIB_PATH.'events/',
  82.  'Tpl'=>JELIX_LIB_PATH.'tpl/''Controller'=>JELIX_LIB_PATH.'controllers/',
  83.  'Auth'=>JELIX_LIB_PATH.'auth/''Installer'=>JELIX_LIB_PATH.'installer/',
  84.  'KV'=>JELIX_LIB_PATH.'kvdb/');
  85.  
  86. /**
  87.  * function used by php to try to load an unknown class
  88.  */
  89. function jelix_autoload($class{
  90.     if (strpos($class'jelix\\'=== 0{
  91.         $f LIB_PATH.str_replace('\\'DIRECTORY_SEPARATOR$class).'.php';
  92.     }
  93.     else if(preg_match('/^j(Dao|Tpl|Event|Db|Controller|Forms|Auth|Installer|KV).*/i'$class$m)){
  94.         $f=$GLOBALS['gLibPath'][$m[1]].$class.'.class.php';
  95.     }
  96.     elseif(preg_match('/^cDao(?:Record)?_(.+)_Jx_(.+)_Jx_(.+)$/'$class$m)){
  97.         // for DAO which are stored in sessions for example
  98.         if(!isset(jApp::config()->_modulesPathList[$m[1]])){
  99.             //this may happen if we have several entry points, but the current one does not have this module accessible
  100.             return;
  101.         }
  102.         $s new jSelectorDao($m[1].'~'.$m[2]$m[3]false);
  103.         if(jApp::config()->compilation['checkCacheFiletime']){
  104.             // if it is needed to check the filetime, then we use jIncluder
  105.             // because perhaps we will have to recompile the dao before the include
  106.             jIncluder::inc($s);
  107.         }else{
  108.             $f $s->getCompiledFilePath();
  109.             // we should verify that the file is here and if not, we recompile
  110.             // (case where the temp has been cleaned, see bug #6062 on berlios.de)
  111.             if (!file_exists($f)) {
  112.                 jIncluder::inc($s);
  113.             }
  114.             else
  115.                 require($f);
  116.         }
  117.         return;
  118.     }else{
  119.         $f JELIX_LIB_UTILS_PATH.$class.'.class.php';
  120.     }
  121.  
  122.     if(file_exists($f)){
  123.         require($f);
  124.     }
  125. }
  126.  
  127. spl_autoload_register("jelix_autoload");
  128.  
  129. /**
  130.  * check if the application is opened. If not, it displays the yourapp/install/closed.html
  131.  * file with a http error (or lib/jelix/installer/closed.html), and exit.
  132.  * This function should be called in all entry point, before the creation of the coordinator.
  133.  * @see jAppManager
  134.  * @todo migrate the code to jAppManager or jApp
  135.  */
  136. function checkAppOpened({
  137.     if (!jApp::isInit()) {
  138.         header("HTTP/1.1 500 Application not available");
  139.         header('Content-type: text/html');
  140.         echo "checkAppOpened: jApp is not initialized!";
  141.         exit(1);
  142.     }
  143.     if (file_exists(jApp::configPath('CLOSED'))) {
  144.         $message file_get_contents(jApp::configPath('CLOSED'));
  145.  
  146.         if (jServer::isCLI()) {
  147.             echo "Application closed."($message?"\n$message\n":"\n");
  148.             exit(1);
  149.         }
  150.  
  151.         if (file_exists(jApp::appPath('install/closed.html'))) {
  152.             $file jApp::appPath('install/closed.html');
  153.         }
  154.         else
  155.             $file JELIX_LIB_PATH.'installer/closed.html';
  156.  
  157.         header("HTTP/1.1 500 Application not available");
  158.         header('Content-type: text/html');
  159.         echo str_replace('%message%'$messagefile_get_contents($file));
  160.         exit(1);
  161.     }
  162. }
  163.  
  164. /**
  165.  * check if the application is not installed. If the app is installed, an
  166.  * error message appears and the scripts ends.
  167.  * It should be called only by some scripts
  168.  * like an installation wizard, not by an entry point.
  169.  * @todo migrate the code to jAppManager or jApp
  170.  */
  171. function checkAppNotInstalled({
  172.     if (isAppInstalled()) {
  173.          if (jServer::isCLI()) {
  174.             echo "Application is installed. The script cannot be runned.\n";
  175.         }
  176.         else {
  177.             header("HTTP/1.1 500 Application not available");
  178.             header('Content-type: text/plain');
  179.             echo "Application is installed. The script cannot be runned.\n";
  180.         }
  181.         exit(1);
  182.     }
  183. }
  184.  
  185. /**
  186.  * @todo migrate the code to jAppManager or jApp
  187.  */
  188. function isAppInstalled({
  189.     return file_exists(jApp::configPath('installer.ini.php'));
  190. }

Documentation generated on Wed, 04 Jan 2017 22:51:56 +0100 by phpDocumentor 1.4.3