예제 #1
0
 /**
  *  create FROM clause for all SELECT query
  * @return array  FROM string and WHERE string
  */
 protected final function _getFromClause()
 {
     $tables = $this->_dataParser->getTables();
     foreach ($tables as $table_name => $table) {
         $tables[$table_name]['realname'] = '\'.$this->_conn->prefixTable(\'' . $table['realname'] . '\').\'';
     }
     $primarytable = $tables[$this->_dataParser->getPrimaryTable()];
     $ptrealname = $this->_encloseName($primarytable['realname']);
     $ptname = $this->_encloseName($primarytable['name']);
     list($sqlFrom, $sqlWhere) = $this->genOuterJoins($tables, $ptname);
     if ($primarytable['name'] != $primarytable['realname']) {
         $sqlFrom = $ptrealname . $this->aliasWord . $ptname . $sqlFrom;
     } else {
         $sqlFrom = $ptrealname . $sqlFrom;
     }
     foreach ($this->_dataParser->getInnerJoins() as $tablejoin) {
         $table = $tables[$tablejoin];
         $tablename = $this->_encloseName($table['name']);
         if ($table['name'] != $table['realname']) {
             $sqlFrom .= ', ' . $this->_encloseName($table['realname']) . $this->aliasWord . $tablename;
         } else {
             $sqlFrom .= ', ' . $this->_encloseName($table['realname']);
         }
         foreach ($table['fk'] as $k => $fk) {
             $sqlWhere .= ' AND ' . $ptname . '.' . $this->_encloseName($fk) . '=' . $tablename . '.' . $this->_encloseName($table['pk'][$k]);
         }
     }
     $sqlWhere = $sqlWhere != '' ? ' WHERE ' . substr($sqlWhere, 4) : '';
     return array(' FROM ' . $sqlFrom, $sqlWhere);
 }
예제 #2
0
 protected function import($xml, $tools)
 {
     if (isset($xml['import'])) {
         $import = (string) $xml['import'];
         jApp::pushCurrentModule($this->selector->module);
         // Keep the same driver as current used
         $importSel = new jSelectorDaoDb($import, $this->selector->driver, $this->selector->dbType);
         jApp::popCurrentModule();
         $doc = new DOMDocument();
         if (!$doc->load($importSel->getPath())) {
             throw new jException('jelix~daoxml.file.unknown', $importSel->getPath());
         }
         $parser = new jDaoParser($importSel);
         $parser->parse(simplexml_import_dom($doc), $tools);
         $this->_properties = $parser->getProperties();
         $this->_tables = $parser->getTables();
         $this->_primaryTable = $parser->getPrimaryTable();
         $this->_methods = $parser->getMethods();
         $this->_ojoins = $parser->getOuterJoins();
         $this->_ijoins = $parser->getInnerJoins();
         $this->_eventList = $parser->getEvents();
         $this->_userRecord = $parser->getUserRecord();
         $this->_importedDao = $parser->getImportedDao();
         $this->hasOnlyPrimaryKeys = $parser->hasOnlyPrimaryKeys;
         if ($this->_importedDao) {
             $this->_importedDao[] = $importSel;
         } else {
             $this->_importedDao = array($importSel);
         }
     }
 }