public static function generateModel($module, $table) { if (!file_exists(APP_MODULES_PATH . '/' . $module)) { trigger_error("Module {$module} not found under " . APP_MODULES_PATH); } if (!is_writable(APP_MODULES_PATH . '/' . $module)) { trigger_error("Unable to write into module folder [" . APP_MODULES_PATH . '/' . $module . "]"); } if (!file_exists(APP_MODULES_PATH . '/' . $module . '/Model')) { mkdir(APP_MODULES_PATH . '/' . $module . '/Model'); } $modelCode = "<?php\n"; $maxNameLength = 0; $priKey = array(); $myModel = new MySQLManager_ObjectsModel(); $columns = $myModel->listTableColumns($table); if (sizeof($columns) == 0) { trigger_error("No table {$table} found or the table has no column. No code generated."); } foreach ($columns as $column) { if (strlen($column['COLUMN_NAME']) > $maxNameLength) { $maxNameLength = strlen($column['COLUMN_NAME']); } if ($column['COLUMN_KEY'] == 'PRI') { $priKey[] = array('name' => $column['COLUMN_NAME'], 'type' => self::getPhpType($column['DATA_TYPE']), 'extra' => $column['EXTRA'], 'desc' => $column['COLUMN_COMMENT']); } } if (sizeof($priKey) == 0) { trigger_error("There's no primary key defined for table {$table}. No code generated."); } $introCode = self::generateIntro($module, $table); $readCode = self::generateReadCode($module, $table, $columns, $maxNameLength, $priKey); $getNextCode = self::generateGetNextCode($module, $table, $columns, $maxNameLength, $priKey); $constructCode = self::generateConstructCode($module, $table, $columns, $maxNameLength, $priKey); $listCode = self::generateListCode($module, $table, $columns, $maxNameLength, $priKey); $createCode = self::generateCreateCode($module, $table, $columns, $maxNameLength, $priKey); $updateCode = self::generateUpdateCode($module, $table, $columns, $maxNameLength, $priKey); $deleteCode = self::generateDeleteCode($module, $table, $columns, $maxNameLength, $priKey); $functionCode = self::generateFunctionCode($module, $table, $columns, $maxNameLength, $priKey); $modelCode .= $introCode; $modelCode .= "class " . $module . "_" . $table . "ModelGen extends Pokelio_MySql_Connector{ \n"; $modelCode .= $constructCode; $modelCode .= $readCode; $modelCode .= $listCode; $modelCode .= $getNextCode; $modelCode .= $createCode; $modelCode .= $updateCode; $modelCode .= $deleteCode; $modelCode .= $functionCode; $modelCode .= "} \n\n"; //Write ModelGen file Pokelio_File::writeFile(APP_MODULES_PATH . '/' . $module . '/Model/' . $table . 'ModelGen.php', $modelCode); //Write Model wrapper file self::generateWrapper($module, $table); //Write Entity file self::generateEntityClass($module, $table, $columns, $maxNameLength); }
public static function listTables() { $om = new MySQLManager_ObjectsModel(); return $om->books(); }