/** * Describe the SQL scripts that will be used to upgrade KnowledgeTree * * Return an array of arrays with two components: a string identifier * that uniquely describes the step to be taken and a string which is an * HTML-formatted description of the step to be taken. These will be * returned in any order - describeUpgrade performs the ordering. * * @param string Original version (e.g., "1.2.4") * @param string Current version (e.g., "2.0.2") * * @return array Array of SQLUpgradeItem describing steps to be taken * * STATIC */ public static function getUpgrades($origVersion, $currVersion) { $dbType = 'mysql'; $sqlupgradedir = KT_DIR . 'sql/' . $dbType . '/upgrade/'; $ret = array(); if (!is_dir($sqlupgradedir)) { return false; } if (!($dh = opendir($sqlupgradedir))) { return false; } while (($file = readdir($dh)) !== false) { // Each entry can be a file or a directory // // A file is legacy before the upgrade system was created, but // will be supported anyway. // // A directory is the end-result version: so, 2.0.5 contains // every script that differentiates it from a previous version, // say, 2.0.5rc1 or 2.0.4. // if (in_array($file, array('.', '..', 'CVS'))) { continue; } $fullpath = $sqlupgradedir . $file; if (is_file($fullpath)) { // Legacy file support, will be in form of // 1.2.4-to-2.0.0.sql. $details = SQLUpgradeItem::_getDetailsFromFileName($file); if ($details) { if (!gte_version($details[0], $origVersion)) { continue; } if (!lte_version($details[1], $currVersion)) { continue; } $ret[] = new SQLUpgradeItem($file); } } if (is_dir($fullpath)) { $subdir = $file; if (!($subdh = opendir($fullpath))) { continue; } while (($file = readdir($subdh)) !== false) { $relpath = $subdir . '/' . $file; $details = SQLUpgradeItem::_getDetailsFromFileName($relpath); if ($details) { if (!gte_version($details[0], $origVersion)) { continue; } if (!lte_version($details[1], $currVersion)) { continue; } $ret[] = new SQLUpgradeItem($relpath); } } } } closedir($dh); return $ret; }
function getUpgrades($origVersion, $currVersion) { $aUpgradeFunctions = new UpgradeFunctions(); $ret = array(); foreach ($aUpgradeFunctions->upgrades as $version => $funcs) { if (!gte_version($version, $origVersion)) { continue; } if (!lte_version($version, $currVersion)) { continue; } foreach ($funcs as $func) { $iPhase = KTUtil::arrayGet($aUpgradeFunctions->phases, $func, 0); $iPriority = KTUtil::arrayGet($aUpgradeFunctions->priority, $func, 0); $ret[] = new FunctionUpgradeItem($func, $version, $aUpgradeFunctions->descriptions[$func], $iPhase, $iPriority); } } return $ret; }