optimization fo the removal of orphan records
This commit is contained in:
@@ -33,7 +33,7 @@ function hotpot_upgrade($oldversion) {
|
||||
require_once $update_to_v2;
|
||||
$ok = $ok && hotpot_update_to_v2_1_17();
|
||||
}
|
||||
if ($oldversion < 2006042801) {
|
||||
if ($oldversion < 2006042802) {
|
||||
require_once $update_to_v2;
|
||||
$ok = $ok && hotpot_update_to_v2_1_18();
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ function hotpot_upgrade($oldversion) {
|
||||
require_once $update_to_v2;
|
||||
$ok = $ok && hotpot_update_to_v2_1_17();
|
||||
}
|
||||
if ($oldversion < 2006042801) {
|
||||
if ($oldversion < 2006042802) {
|
||||
require_once $update_to_v2;
|
||||
$ok = $ok && hotpot_update_to_v2_1_18();
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ function hotpot_update_to_v2_1_18() {
|
||||
|
||||
return $ok;
|
||||
}
|
||||
function hotpot_remove_orphans($secondarytable, $secondarykeyfield, $primarytable) {
|
||||
function hotpot_remove_orphans($secondarytable, $secondarykeyfield, $primarytable, $primarykeyfield='id') {
|
||||
global $CFG,$db;
|
||||
$ok = true;
|
||||
|
||||
@@ -22,23 +22,21 @@ function hotpot_remove_orphans($secondarytable, $secondarykeyfield, $primarytabl
|
||||
|
||||
$records = get_records_sql("
|
||||
SELECT
|
||||
t2.id, t2.id
|
||||
t2.$secondarykeyfield, t2.$secondarykeyfield
|
||||
FROM
|
||||
{$CFG->prefix}$secondarytable AS t2 LEFT JOIN {$CFG->prefix}$primarytable AS t1
|
||||
ON (t2.$secondarykeyfield = t1.id)
|
||||
WHERE
|
||||
t1.id IS NULL
|
||||
ORDER BY
|
||||
t2.id
|
||||
t1.$primarykeyfield IS NULL
|
||||
");
|
||||
|
||||
// restore SQL message echo setting
|
||||
$db->debug = $debug;
|
||||
|
||||
if ($records) {
|
||||
$ids = implode(',', array_keys($records));
|
||||
print 'removing '.count($records)." orphan record(s) from {$CFG->prefix}$secondarytable<br>";
|
||||
$ok = $ok && execute_sql("DELETE FROM {$CFG->prefix}$secondarytable WHERE $secondarykeyfield IN ($ids)");
|
||||
$keys = implode(',', array_keys($records));
|
||||
print "removing orphan record(s) from {$CFG->prefix}$secondarytable<br>";
|
||||
$ok = $ok && execute_sql("DELETE FROM {$CFG->prefix}$secondarytable WHERE $secondarykeyfield IN ($keys)");
|
||||
}
|
||||
|
||||
return $ok;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/// Code fragment to define the version of hotpot
|
||||
/// This fragment is called by moodle_needs_upgrading() and /admin/index.php
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
$module->version = 2006042801; // release date of this version (see note below)
|
||||
$module->version = 2006042802; // release date of this version (see note below)
|
||||
$module->release = 'v2.1.18'; // human-friendly version name (used in mod/hotpot/lib.php)
|
||||
$module->cron = 0; // period for cron to check this module (secs)
|
||||
// interpretation of YYYYMMDDXY version numbers
|
||||
|
||||
Reference in New Issue
Block a user