diff options
Diffstat (limited to 'actions/admin')
-rw-r--r-- | actions/admin/upgrade.php | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/actions/admin/upgrade.php b/actions/admin/upgrade.php new file mode 100644 index 000000000..9c4aef1cf --- /dev/null +++ b/actions/admin/upgrade.php @@ -0,0 +1,46 @@ +<?php +/** + * Tidypics upgrade action + */ +require_once "{$CONFIG->pluginspath}tidypics/version.php"; + +$local_version = get_plugin_setting('version', 'tidypics'); + +if ($version <= $local_version) { + register_error('No upgrade required'); + forward($_SERVER['HTTP_REFERER']); +} + +$base_dir = $CONFIG->pluginspath . 'tidypics/upgrades'; + +// taken from engine/lib/version.php +if ($handle = opendir($base_dir)) { + $upgrades = array(); + + while ($updatefile = readdir($handle)) { + // Look for upgrades and add to upgrades list + if (!is_dir("$base_dir/$updatefile")) { + if (preg_match('/^([0-9]{10})\.(php)$/', $updatefile, $matches)) { + $plugin_version = (int) $matches[1]; + if ($plugin_version > $local_version) { + $upgrades[] = "$base_dir/$updatefile"; + } + } + } + } + + // Sort and execute + asort($upgrades); + + if (sizeof($upgrades) > 0) { + foreach ($upgrades as $upgrade) { + include($upgrade); + } + } +} + +set_plugin_setting('version', $version, 'tidypics'); + +system_message("Tidypics has been upgraded"); + +forward($_SERVER['HTTP_REFERER']); |