예제 #1
0
 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);
 }