Beispiel #1
0
 /**
  * create the SQL install file
  * @param object package $row
  */
 protected function makeInstallSQL($row)
 {
     $sql = '';
     $config = JFactory::getConfig();
     $db = FabrikWorker::getDbo(true);
     //create the sql for the cloned fabrik meta data tables
     foreach ($this->tables as $table) {
         $db->setQuery('SHOW CREATE TABLE ' . $table);
         $tbl = $db->loadRow();
         $tbl = str_replace('_fabrik_', '_' . $row->component_name . '_', $tbl[1]);
         $tbl = str_replace($config->get('dbprefix'), '#__', $tbl);
         $sql .= str_replace('CREATE TABLE', 'CREATE TABLE IF NOT EXISTS', $tbl) . ";\n\n";
         $table = str_replace(array('_fabrik_', '{package}'), array('_' . $row->component_name . '_', $row->component_name), $table);
         $sql .= 'TRUNCATE TABLE ' . $table . ";\n\n";
     }
     foreach ($row->blocks as $block => $ids) {
         $key = fabrikString::rtrimword($block, 's');
     }
     // create the sql to build the db tables that store the data.
     $formModel = JModel::getInstance('form', 'FabrikFEModel');
     $lookups = $this->getInstallItems($row);
     $lids = $lookups->list;
     JArrayHelper::toInteger($lids);
     foreach ($lids as $lid) {
         $listModel = JModel::getInstance('list', 'FabrikFEModel');
         $listModel->setId($lid);
         $sql .= "\n\n" . $listModel->getCreateTableSQL(true);
     }
     $plugins = array();
     foreach ($lookups->form as $fid) {
         $formModel->setId($fid);
         if (!in_array($fid, $lookups->list)) {
             $lookups->list[] = $fid;
         }
         //@FIXME get sql to create tables for dbjoin/cdd elements (need to do if not exists)
         $dbs = $formModel->getElementOptions(false, 'name', true, true, array());
     }
     $sql .= "\n\n";
     foreach ($lookups->visualization as $vid) {
         $vrow = FabTable::getInstance('Visualization', 'FabrikTable');
         $vrow->load($vid);
         $visModel = JModel::getInstance($vrow->plugin, 'fabrikModel');
         $visModel->setId($vid);
         $visModel->setListIds();
         $listModels = $visModel->getlistModels();
         foreach ($listModels as $lmodel) {
             $sql .= $lmodel->getCreateTableSQL(true);
             //add the table ids to the $lookups->list
             if (!in_array($lmodel->getId(), $lookups->list)) {
                 $lookups->list[] = $lmodel->getId();
             }
         }
     }
     $path = $this->outputPath . 'admin/sql/install.mysql.uft8.sql';
     JFile::write($path, $sql);
     return $path;
 }