/** * 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; }