public static function setTable(array $table, array $table_fields = array()) { if (!isset($table['table_name'])) { throw new Exception('table[table_name] must be set'); } $table_name = $table['table_name']; $currentTable = rex_yform_manager_table::get($table_name); if (!$currentTable) { // Insert $table_insert = rex_sql::factory(); $table_insert->debugsql = self::$debug; $table_insert->setTable(rex_yform_manager_table::table()); $table_insert->setValue('table_name', $table_name); if (!isset($table['name']) || $table['name'] == '') { $table['name'] = $table['table_name']; } foreach (self::$table_fields as $field) { if (isset($table[$field])) { $table_insert->setValue($field, $table[$field]); } } if (!isset($table['prio'])) { $table_insert->setValue('prio', rex_yform_manager_table::getMaximumTablePrio() + 1); } $table_insert->insert(); } else { $currentTable = $currentTable->toArray(); // Update foreach (self::$table_fields as $field) { if (isset($table[$field])) { $currentTable[$field] = $table[$field]; } } if (!isset($table['name']) || $table['name'] == '') { $table['name'] = $table['table_name']; } $table_update = rex_sql::factory(); $table_update->debugsql = self::$debug; $table_update->setTable(rex_yform_manager_table::table()); $table_update->setWhere('table_name = "' . mysql_real_escape_string($table_name) . '"'); foreach (self::$table_fields as $field) { if (isset($table[$field])) { $table_update->setValue($field, $table[$field]); } } $table_update->update(); } if (count($table_fields) > 0) { foreach ($table_fields as $field) { self::setTableField($table_name, $field); } } self::generateTablesAndFields(); return rex_yform_manager_table::get($table_name); }