Exemple #1
0
/**
 * 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);
        }
    }
}
Exemple #2
0
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);
    }
}
Exemple #3
0
            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');
Exemple #4
0
/**
 * 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);
}