table: %name% with %cols% columns'; $tablex = '
  • table: %name% with %cols% columns WARNING: exists!
  • '; $view = '
  • view: %name% with %cols% columns
  • '; $viewx = '
  • view: %name% with %cols% columns WARNING: exists!
  • '; foreach($tableXML as $tabledef) { if($tabledef->getName() == 'table') { $tableInfo = TableInfo::fromXML($tabledef); $tableInfo->setName(DBHelper::buildModTableName($mod, $tableInfo)); $st = $db->tableExists($tableInfo->getName()) ? $tablex : $table; $st = str_replace(array('%name%','%cols%'), array( $tableInfo->getName(),$tableInfo->getColumnCount()), $st); $result .= $st; } elseif($tabledef->getName() == 'view') { $viewInfo = ViewInfo::fromXML($tabledef); $viewInfo->setName(DBHelper::buildModTableName($mod, $viewInfo)); $st = $db->tableExists($viewInfo->getName()) ? $viewx : $view; $st = str_replace(array('%name%','%cols%'), array( $viewInfo->getName(),$viewInfo->getColumnCount()), $st); $result .= $st; } } return $result; } public static function createModDBObjects(DB $db, $mod, $tableXML, array $templates = array()) { $result = ''; $table = '
  • creating table: %name% with %cols% columns
  • '; $view = '
  • creating view: %name% with %cols% columns
  • '; foreach($tableXML as $tabledef) { if($tabledef->getName() == 'table') { $tableInfo = TableInfo::fromXML($tabledef); $tableInfo->setName(DBHelper::buildModTableName($mod, $tableInfo)); if($db->tableExists($tableInfo->getName())) $db->dropTable($tableInfo->getName()); $refs = $tableInfo->getRefs(); foreach($refs as $name=>$ref) $tableInfo->setRef($name, 'm_' . str_replace('.', '#', $mod) . '_' . $ref['object'], $ref['column']); $st = str_replace(array('%name%','%cols%'), array( $tableInfo->getName(),$tableInfo->getColumnCount()), $table); $db->createTable($tableInfo); $result .= $st; } elseif($tabledef->getName() == 'view') { $viewInfo = ViewInfo::fromXML($tabledef); $viewInfo->setName(DBHelper::buildModTableName($mod, $viewInfo)); $st = str_replace(array('%name%','%cols%'), array( $viewInfo->getName(),$viewInfo->getColumnCount()), $view); $db->createView($viewInfo); $result .= $st; } } return $result; } public static function listRemoveActions(DB $db, $mod, $tableXML, array $templates = array()) { $result = ''; $table = '
  • table %name% will be removed
  • '; $view = '
  • view %name% will be removed
  • '; $defs = array(); foreach($tableXML as $tabledef) $defs[] = $tabledef; $defs = array_reverse($defs); foreach($defs as $tabledef) { if($tabledef->getName() == 'table') { $tableInfo = TableInfo::fromXML($tabledef); $tableInfo->setName(DBHelper::buildModTableName($mod, $tableInfo)); $st = $table; $st = str_replace(array('%name%','%cols%'), array( $tableInfo->getName(),$tableInfo->getColumnCount()), $st); $result .= $st; } elseif($tabledef->getName() == 'view') { $viewInfo = ViewInfo::fromXML($tabledef); $viewInfo->setName(DBHelper::buildModTableName($mod, $viewInfo)); $st = $view; $st = str_replace(array('%name%','%cols%'), array( $viewInfo->getName(),$viewInfo->getColumnCount()), $st); $result .= $st; } } return $result; } public static function removeModDBObjects(DB $db, $mod, $tableXML, array $templates = array()) { $result = ''; $table = '
  • removing table %name%
  • '; $view = '
  • removing view %name%
  • '; $defs = array(); foreach($tableXML as $tabledef) $defs[] = $tabledef; $defs = array_reverse($defs); // reverse order to prevent foreign key errors foreach($defs as $tabledef) { if($tabledef->getName() == 'table') { $tableInfo = TableInfo::fromXML($tabledef); $tableInfo->setName(DBHelper::buildModTableName($mod, $tableInfo)); $st = str_replace(array('%name%','%cols%'), array( $tableInfo->getName(),$tableInfo->getColumnCount()), $table); $db->dropTable($tableInfo->getName()); $result .= $st; } elseif($tabledef->getName() == 'view') { $viewInfo = ViewInfo::fromXML($tabledef); $viewInfo->setName(DBHelper::buildModTableName($mod, $viewInfo)); $st = str_replace(array('%name%','%cols%'), array( $viewInfo->getName(),$viewInfo->getColumnCount()), $view); $db->dropView($viewInfo->getName()); $result .= $st; } } return $result; } }