Example #1
0
 public function mysql_save_from_post($post)
 {
     $is_new = $this->id == 0;
     if ($is_new) {
         if (!Table::create_new_mysql_table($post['name'])) {
             return json_encode(array("result" => -6, "message" => mysql_error()));
         }
     } else {
         if ($this->name != $post['name']) {
             if (!$this->rename_mysql_table($post['name'])) {
                 return json_encode(array("result" => -6, "message" => mysql_error()));
             }
         }
     }
     $lid = parent::mysql_save_from_post($post);
     $obj = Table::from_mysql_id($lid);
     if (array_key_exists("deleteData", $post)) {
         if ($post["deleteData"] == "*") {
             $sql = sprintf("DELETE FROM `%s`", mysql_real_escape_string($obj->name));
             if (!mysql_query($sql)) {
                 return json_encode(array("result" => -6, "message" => mysql_error()));
             }
         } else {
             $rows = json_decode($post["deleteData"]);
             foreach ($rows as $row) {
                 $sql = sprintf("DELETE FROM `%s` WHERE id='%s'", mysql_real_escape_string($obj->name), mysql_real_escape_string($row));
                 if (!mysql_query($sql)) {
                     return json_encode(array("result" => -6, "message" => mysql_error()));
                 }
             }
         }
     }
     if (array_key_exists("deleteIndexes", $post)) {
         $indexes = json_decode($post["deleteIndexes"]);
         foreach ($indexes as $index) {
             $sql = sprintf("DROP INDEX `%s` ON `%s`", mysql_real_escape_string($index), mysql_real_escape_string($obj->name));
             if (!mysql_query($sql)) {
                 return json_encode(array("result" => -6, "message" => mysql_error()));
             }
         }
     }
     if (array_key_exists("deleteColumns", $post)) {
         $columns = json_decode($post["deleteColumns"]);
         foreach ($columns as $column) {
             $sql = sprintf("ALTER TABLE `%s` DROP COLUMN `%s`", mysql_real_escape_string($obj->name), mysql_real_escape_string($column));
             if (!mysql_query($sql)) {
                 return json_encode(array("result" => -6, "message" => mysql_error()));
             }
         }
     }
     if (array_key_exists("updateColumns", $post)) {
         $columns = json_decode($post["updateColumns"]);
         foreach ($columns as $column) {
             $col = TableColumn::from_ui($column);
             if ($column->id != "") {
                 $sql = sprintf("ALTER TABLE `%s` CHANGE COLUMN `%s` `%s` %s", mysql_real_escape_string($obj->name), mysql_real_escape_string($column->id), mysql_real_escape_string($column->name), $col->get_definition());
                 if (!mysql_query($sql)) {
                     return json_encode(array("result" => -6, "message" => mysql_error()));
                 }
             } else {
                 $sql = sprintf("ALTER TABLE `%s` ADD COLUMN `%s` %s", mysql_real_escape_string($obj->name), mysql_real_escape_string($column->name), $col->get_definition());
                 if (!mysql_query($sql)) {
                     return json_encode(array("result" => -6, "message" => mysql_error()));
                 }
             }
         }
     }
     if (array_key_exists("updateIndexes", $post)) {
         $indexes = json_decode($post["updateIndexes"]);
         foreach ($indexes as $index) {
             $ind = TableIndex::from_ui($index);
             if ($index->id != "") {
                 $sql = sprintf("ALTER TABLE `%s` DROP INDEX `%s`", mysql_real_escape_string($obj->name), mysql_real_escape_string($index->id));
                 if (!mysql_query($sql)) {
                     return json_encode(array("result" => -6, "message" => mysql_error()));
                 }
             }
             $sql = sprintf("ALTER TABLE `%s` ADD %s", mysql_real_escape_string($obj->name), $ind->get_definition());
             if (!mysql_query($sql)) {
                 return json_encode(array("result" => -6, "message" => mysql_error()));
             }
         }
     }
     $columns = $this->get_columns();
     if (array_key_exists("updateData", $post)) {
         $rows = json_decode($post["updateData"], true);
         foreach ($rows as $row) {
             $set = "";
             foreach ($row as $k => $v) {
                 if ($k == "id") {
                     continue;
                 }
                 if ($set != "") {
                     $set .= ",";
                 }
                 if ($v == "") {
                     $nullable = true;
                     foreach ($columns as $col) {
                         if ($col->name == $k) {
                             $nullable = $col->null;
                         }
                     }
                     if (!$nullable) {
                         $set .= "`" . mysql_real_escape_string($k) . "`=''";
                     } else {
                         $set .= "`" . mysql_real_escape_string($k) . "`=NULL";
                     }
                 } else {
                     $set .= "`" . mysql_real_escape_string($k) . "`='" . mysql_real_escape_string($v) . "'";
                 }
             }
             if ($row["id"] != null) {
                 $sql = sprintf("UPDATE `%s` SET %s WHERE `id`=%s", mysql_real_escape_string($obj->name), $set, mysql_real_escape_string($row["id"]));
                 if (!mysql_query($sql)) {
                     return json_encode(array("result" => -6, "message" => mysql_error()));
                 }
             } else {
                 $sql = sprintf("INSERT INTO `%s` SET %s", mysql_real_escape_string($obj->name), $set);
                 if (!mysql_query($sql)) {
                     return json_encode(array("result" => -6, "message" => mysql_error() . " " . $sql));
                 }
             }
         }
     }
     //hash
     if ($obj != null) {
         $xml_hash = $obj->calculate_xml_hash();
         $obj->xml_hash = $xml_hash;
         $obj->mysql_save();
     }
     return $lid;
 }