Typesetter-Original-gtbu/include/tool/Upgrade.php
2021-09-08 19:52:21 +02:00

95 lines
2.3 KiB
PHP

<?php
namespace gp\tool;
defined('is_running') or die('Not an entry point...');
class Upgrade{
function __construct(){
global $config;
if( version_compare($config['gpversion'],'1.6','<') ){
die('Please upgrade to version 1.6, then 1.7 before upgrading to this version. You current version is '.$config['gpversion']);
}
if( version_compare($config['gpversion'],'1.7a2','<') ){
die('Please upgrade to version 1.7 before upgrading to this version. You current version is '.$config['gpversion']);
}
if( version_compare($config['gpversion'],'1.8a1','<') ){
die('Please upgrade to version 2.0 before upgrading to this version. You current version is '.$config['gpversion']);
}
if( version_compare($config['gpversion'],'2.3.4','<') ){
$this->Upgrade_234();
}
}
/**
* Update the gp_index, gp_titles and menus so that special pages can be renamed
*
*/
function Upgrade_234(){
global $gp_index, $gp_titles, $gp_menu, $config, $dataDir;
$special_indexes = array();
$new_index = array();
$new_titles = array();
foreach($gp_index as $title => $index){
$info = $gp_titles[$index];
$type = \gp\tool::SpecialOrAdmin($title);
if( $type === 'special' ){
$special_indexes[$index] = strtolower($title);
$index = strtolower($title);
$info['type'] = 'special'; //some older versions didn't maintain this value well
}
$new_index[$title] = $index;
$new_titles[$index] = $info;
}
$gp_titles = $new_titles;
$gp_index = $new_index;
//update gp_menu
$gp_menu = $this->FixMenu($gp_menu,$special_indexes);
//save pages
if( !\gp\admin\Tools::SavePagesPHP() ){
return;
}
$config['gpversion'] = '2.3.4';
\gp\admin\Tools::SaveConfig();
//update alt menus
if( isset($config['menus']) && is_array($config['menus']) ){
foreach($config['menus'] as $key => $value){
$menu_file = $dataDir.'/data/_menus/'.$key.'.php';
if( \gp\tool\Files::Exists($menu_file) ){
$menu = \gp\tool\Output\Menu::GetMenuArray($key);
$menu = $this->FixMenu($menu,$special_indexes);
\gp\tool\Files::SaveData($menu_file,'menu',$menu);
}
}
}
}
function FixMenu($menu,$special_indexes){
$new_menu = array();
foreach($menu as $key => $value){
if( isset($special_indexes[$key]) ){
$key = $special_indexes[$key];
}
$new_menu[$key] = $value;
}
return $new_menu;
}
}