function db_planet_list_delete_by_owner($ui_owner_id) { // if(!($si_owner_id = intval($ui_owner_id))) return false; if (!($si_owner_id = idval($ui_owner_id))) { return false; } classSupernova::db_del_record_list(LOC_PLANET, "`id_owner` = {$si_owner_id}"); classSupernova::db_del_record_list(LOC_UNIT, "`unit_location_type` = " . LOC_PLANET . " AND `unit_player_id` = " . $si_owner_id); // Очереди очистятся автоматически по FOREIGN KEY return true; }
public static function db_changeset_apply($db_changeset, $flush_delayed = false) { $result = true; if (!is_array($db_changeset) || empty($db_changeset)) { return $result; } foreach ($db_changeset as $table_name => &$table_data) { // TODO - delayed changeset /* if(static::db_transaction_check(false) && !$flush_delayed && ($table_name == 'users' || $table_name == 'planets' || $table_name == 'unit')) { static::db_changeset_delay($table_name, $table_data); continue; } */ foreach ($table_data as $record_id => &$conditions) { static::db_changeset_condition_compile($conditions, $table_name); if ($conditions['action'] != SQL_OP_DELETE && !$conditions[P_FIELDS_STR]) { continue; } if ($conditions['action'] == SQL_OP_DELETE && !$conditions[P_WHERE_STR]) { continue; } // Защита от случайного удаления всех данных в таблице if ($conditions[P_LOCATION] != LOC_NONE) { //die('spec ops supernova.php line 928 Добавить работу с кэшем юнитов итд'); switch ($conditions['action']) { case SQL_OP_DELETE: $result = classSupernova::db_del_record_list($conditions[P_LOCATION], $conditions[P_WHERE_STR]) && $result; break; case SQL_OP_UPDATE: $result = classSupernova::db_upd_record_list($conditions[P_LOCATION], $conditions[P_WHERE_STR], $conditions[P_FIELDS_STR]) && $result; break; case SQL_OP_INSERT: $result = classSupernova::db_ins_record($conditions[P_LOCATION], $conditions[P_FIELDS_STR]) && $result; break; default: die('Неподдерживаемая операция в classSupernova::db_changeset_apply'); // case SQL_OP_REPLACE: $result = $result && doquery("REPLACE INTO {{{$table_name}}} SET {$fields}"); break; } } else { $result = doquery($conditions[P_QUERY_STR]) && $result; } } } return $result; }
function db_unit_list_delete($user_id = 0, $unit_location_type, $unit_location_id, $unit_snid = 0) { return classSupernova::db_del_record_list(LOC_UNIT, "`unit_location_type` = {$unit_location_type} AND `unit_location_id` = {$unit_location_id}" . ($user_id = idval($user_id) ? " AND `unit_player_id` = {$user_id}" : '') . ($unit_snid = idval($unit_snid) ? " AND `unit_snid` = {$unit_snid}" : '')); }
function db_unit_list_delete($user_id = 0, $unit_location_type, $unit_location_id, $unit_snid = 0) { return classSupernova::db_del_record_list(LOC_UNIT, "`unit_location_type` = {$unit_location_type} AND `unit_location_id` = {$unit_location_id}" . ($user_id = idval($user_id) ? " AND `unit_player_id` = {$user_id}" : '') . ($unit_snid = idval($unit_snid) ? " AND `unit_snid` = {$unit_snid}" : '')); return doquery("DELETE FROM {{unit}}\n WHERE unit_location_type = {$unit_location_type} AND unit_location_id = {$unit_location_id}" . ($user_id = idval($user_id) ? " AND unit_player_id = {$user_id}" : '') . ($unit_snid = idval($unit_snid) ? " AND unit_snid = {$unit_snid}" : '')); }