Source for file jDaoCompiler.class.php

Documentation is available at jDaoCompiler.class.php

  1. <?php
  2. /**
  3. @package    jelix
  4. @subpackage dao
  5. @author      Laurent Jouanneau
  6. @copyright   2005-2012 Laurent Jouanneau
  7. *  Idea of this class was get originally from the Copix project
  8. *  (CopixDaoCompiler, Copix 2.3dev20050901, http://www.copix.org)
  9. *  no more line of code are copyrighted by CopixTeam
  10. *
  11. @link        http://www.jelix.org
  12. @licence  http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public Licence, see LICENCE file
  13. */
  14.  
  15. /**
  16.  *
  17.  */
  18. require_once(JELIX_LIB_PATH.'dao/jDaoParser.class.php');
  19.  
  20. /**
  21.  * The compiler for the DAO xml files. it is used by jIncluder
  22.  * It produces some php classes
  23.  * @package  jelix
  24.  * @subpackage dao
  25.  */
  26. class jDaoCompiler  implements jISimpleCompiler {
  27.  
  28.     /**
  29.     * compile the given class id.
  30.     */
  31.     public function compile ($selector{
  32.  
  33.         $daoPath $selector->getPath();
  34.  
  35.         // load the XML file
  36.         $doc new DOMDocument();
  37.  
  38.         if(!$doc->load($daoPath)){
  39.             throw new jException('jelix~daoxml.file.unknown'$daoPath);
  40.         }
  41.  
  42.         if($doc->documentElement->namespaceURI != JELIX_NAMESPACE_BASE.'dao/1.0'){
  43.             throw new jException('jelix~daoxml.namespace.wrong',array($daoPath$doc->namespaceURI));
  44.         }
  45.  
  46.         $tools jApp::loadPlugin($selector->driver'db''.dbtools.php'$selector->driver.'DbTools');
  47.         if(is_null($tools))
  48.             throw new jException('jelix~db.error.driver.notfound'$selector->driver);
  49.  
  50.         $parser new jDaoParser ($selector);
  51.         $parser->parse(simplexml_import_dom($doc)$tools);
  52.  
  53.         require_once(jApp::config()->_pluginsPathList_db[$selector->driver].$selector->driver.'.daobuilder.php');
  54.         $class $selector->driver.'DaoBuilder';
  55.         $generator new $class ($selector$tools$parser);
  56.  
  57.         // generation of PHP classes corresponding to the DAO definition
  58.         $compiled '<?php ';
  59.         $compiled .= "\nif (jApp::config()->compilation['checkCacheFiletime']&&(\n";
  60.         $compiled .= "\n filemtime('".$daoPath.'\') > '.filemtime($daoPath);
  61.         $importedDao $parser->getImportedDao();
  62.         if ($importedDao{
  63.             foreach($importedDao as $selimpdao{
  64.                 $path $selimpdao->getPath();
  65.                 $compiled .= "\n|| filemtime('".$path.'\') > '.filemtime($path);
  66.             }
  67.         }
  68.         $compiled .=")){ return false;\n}\nelse {\n";
  69.         $compiled .= $generator->buildClasses ()."\n return true; }";
  70.  
  71.         jFile::write ($selector->getCompiledFilePath()$compiled);
  72.         return true;
  73.     }
  74. }

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