public static function updateRequirementAndPackage($pack) { $pack->auth->game_id = dbconnection::queryObject("SELECT * FROM requirement_and_packages WHERE requirement_and_package_id = '{$pack->requirement_and_package_id}'")->game_id; $pack->auth->permission = "read_write"; if (!editors::authenticateGameEditor($pack->auth)) { return new return_package(6, NULL, "Failed Authentication"); } if (!$pack->requirement_and_package_id) { return new return_package(1, NULL, "Insufficient data"); } dbconnection::query("UPDATE requirement_and_packages SET " . "game_id = '" . addslashes($pack->game_id) . "'" . (isset($pack->name) ? ", name = '" . addslashes($pack->name) . "'" : "") . " WHERE requirement_and_package_id = '" . addslashes($pack->requirement_and_package_id) . "'"); $sql_currentAtoms = dbconnection::queryArray("SELECT * FROM requirement_atoms WHERE requirement_and_package_id = '{$pack->requirement_and_package_id}'"); for ($i = 0; $i < count($sql_currentAtoms); $i++) { $matchingAtom = null; for ($j = 0; $pack->atoms && $j < count($pack->atoms); $j++) { if ($sql_currentAtoms[$i]->requirement_atom_id == $pack->atoms[$j]->requirement_atom_id) { $matchingAtom = $pack->atoms[$j]; //remove from array so I can just add all remaining later array_splice($pack->atoms, $j, 1); $j--; } } if ($matchingAtom) { $matchingAtom->requirement_and_package_id = $pack->requirement_and_package_id; $matchingAtom->game_id = $pack->game_id; $matchingAtom->auth = $pack->auth; requirements::updateRequirementAtom($matchingAtom); } else { $sql_currentAtoms[$i]->auth = $pack->auth; requirements::deleteRequirementAtom($sql_currentAtoms[$i]); } } for ($i = 0; $pack->atoms && $i < count($pack->atoms); $i++) { $pack->atoms[$i]->requirement_and_package_id = $pack->requirement_and_package_id; $pack->atoms[$i]->game_id = $pack->game_id; $pack->atoms[$i]->auth = $pack->auth; requirements::createRequirementAtom($pack->atoms[$i]); } games::bumpGameVersion($pack); }