/** * Do something on the 'upgrade', 'system' event (when running upgrade.php) * * @param string $event which event was triggered * @param string $type what is the type of the event * @param mixed $object On what object was the event triggered * * @return void * * @see elgg_trigger_event() */ function newsletter_upgrade_event_handler($event, $type, $object) { // amke sure the correct classes are set for our own classes if (!update_subtype("object", Newsletter::SUBTYPE, "Newsletter")) { // first time the plugin was activated add_subtype("object", Newsletter::SUBTYPE, "Newsletter"); } if (!update_subtype("object", NewsletterSubscription::SUBTYPE, "NewsletterSubscription")) { // first time the plugin was activated add_subtype("object", NewsletterSubscription::SUBTYPE, "NewsletterSubscription"); } // proccess upgrade scripts $upgrade_scripts = array(); $upgrade_dir = dirname(__FILE__) . "/upgrades/"; $fh = opendir($upgrade_dir); // read all available upgrade scripts if (!empty($fh)) { while (($upgrade_file = readdir($fh)) !== false) { if (!is_dir($upgrade_dir . $upgrade_file)) { $upgrade_scripts[] = $upgrade_file; } } closedir($fh); } if (!empty($upgrade_scripts)) { // get already run scripts $upgrades = datalist_get("processed_upgrades"); $processed_upgrades = unserialize($upgrades); if (!is_array($processed_upgrades)) { $processed_upgrades = array(); } // do we have something left $unprocessed = array_diff($upgrade_scripts, $processed_upgrades); if (!empty($unprocessed)) { // proccess all upgrades foreach ($unprocessed as $script) { include $upgrade_dir . $script; $processed_upgrades[] = $script; } // save new list elgg_set_processed_upgrades($processed_upgrades); } } }
function file_tools_upgrade_handler() { $upgrades_path = dirname(dirname(__FILE__)) . "/upgrades/"; // find all upgrade files $upgrade_files = elgg_get_upgrade_files($upgrades_path); // get processed upgrade file, so we can add our own files when done $processed_upgrades = elgg_get_processed_upgrades(); // get unprocessed upgrade files if ($unprocessed_upgrades = elgg_get_unprocessed_upgrades($upgrade_files, $processed_upgrades)) { foreach ($unprocessed_upgrades as $upgrade_file) { // make sure we don't try to run someone elses upgrade files if (in_array($upgrade_file, $upgrade_files) && file_exists($upgrades_path . $upgrade_file)) { // run upgrade include $upgrades_path . $upgrade_file; // make sure we don't do it again $processed_upgrades[] = $upgrade_file; } } // store processed upgrade files elgg_set_processed_upgrades($processed_upgrades); } }
datalist_set("plugins_done_" . $subsite->getGUID(), true); if ($subsites_done == 10) { forward("upgrade.php"); } $subsites_done++; } } // cleanup datalist $query = "DELETE FROM " . elgg_get_config("dbprefix") . "datalists"; $query .= " WHERE name LIKE 'plugins_done_%'"; delete_data($query); access_show_hidden_entities($hidden); } elgg_set_ignore_access($old_id); /** * @hack * * We stop the upgrade at this point because plugins weren't given the chance to * load due to the new plugin code introduced with Elgg 1.8. Instead, we manually * set the version and start the upgrade process again. * * The variables from upgrade_code() are available because this script was included */ if ($upgrade_version > $version) { datalist_set('version', $upgrade_version); } // add ourselves to the processed_upgrades. $processed_upgrades[] = '2011010101.php'; $processed_upgrades = array_unique($processed_upgrades); elgg_set_processed_upgrades($processed_upgrades); forward('upgrade.php');
/** * Boot straps into 1.8 upgrade system from 1.7 * * This runs all the 1.7 upgrades, then sets the processed_upgrades to all existing 1.7 upgrades. * Control is then passed back to the main upgrade function which detects and runs the * 1.8 upgrades, regardless of filename convention. * * @return bool * @access private */ function elgg_upgrade_bootstrap_17_to_18() { $db_version = (int) datalist_get('version'); // the 1.8 upgrades before the upgrade system change that are interspersed with 1.7 upgrades. $upgrades_18 = array('2010111501.php', '2010121601.php', '2010121602.php', '2010121701.php', '2010123101.php', '2011010101.php'); $upgrade_files = elgg_get_upgrade_files(); $processed_upgrades = array(); foreach ($upgrade_files as $upgrade_file) { // ignore if not in 1.7 format or if it's a 1.8 upgrade if (in_array($upgrade_file, $upgrades_18) || !preg_match("/[0-9]{10}\\.php/", $upgrade_file)) { continue; } $upgrade_version = elgg_get_upgrade_file_version($upgrade_file); // this has already been run in a previous 1.7.X -> 1.7.X upgrade if ($upgrade_version < $db_version) { $processed_upgrades[] = $upgrade_file; } } return elgg_set_processed_upgrades($processed_upgrades); }