diff --git a/e107_admin/e107_update.php b/e107_admin/e107_update.php index b319fe2e1..1b4f6a475 100644 --- a/e107_admin/e107_update.php +++ b/e107_admin/e107_update.php @@ -163,6 +163,7 @@ class e107Update { var $core = array(); var $updates = 0; + var $disabled = 0; function __construct($core=null) @@ -197,7 +198,7 @@ class e107Update { $mes = e107::getMessage(); - foreach($this->core as $func => $rmks) + foreach($this->core as $func => $data) { if(function_exists('update_'.$func)) // Legacy Method. { @@ -207,7 +208,7 @@ class e107Update { if(function_exists("update_".$func)) { - $message = LAN_UPDATE_7." {$rmks}"; + $message = LAN_UPDATE_7." ".$data['title']; $error = call_user_func("update_".$func, "do"); if($error != '') @@ -250,7 +251,7 @@ class e107Update { $text .= "<tr> <td>".$val['@attributes']['name']."</td> - <td>".$frm->admin_button('update['.$path.']', LAN_UPDATE, 'warning')."</td> + <td>".$frm->admin_button('update['.$path.']', LAN_UPDATE, 'warning', '', 'disabled='.$this->disabled)."</td> </tr>"; } @@ -263,15 +264,21 @@ class e107Update function core() { $frm = e107::getForm(); + $mes = e107::getMessage(); $text = ""; - foreach($this->core as $func => $rmks) + foreach($this->core as $func => $data) { if(function_exists("update_".$func)) { - $text .= "<tr><td>{$rmks}</td>"; - + $text .= "<tr><td>".$data['title']."</td>"; + + if(vartrue($data['message'])) + { + $mes->addInfo($data['message']); + } + if(call_user_func("update_".$func)) { $text .= "<td>".LAN_UPDATE_3."</td>"; @@ -279,7 +286,12 @@ class e107Update else { $this->updates ++; - $text .= "<td>".$frm->admin_button('update_core['.$func.']', LAN_UPDATE, 'warning', '', "id=e-{$func}")."</td>"; + + $text .= "<td>".$frm->admin_button('update_core['.$func.']', LAN_UPDATE, 'warning', '', "id=e-{$func}&disabled=".$this->disabled)."</td>"; + if($data['master'] == true) + { + $this->disabled = 1; + } } $text .= "</tr>\n"; } diff --git a/e107_admin/update_routines.php b/e107_admin/update_routines.php index 0cd796ad7..6025fe248 100644 --- a/e107_admin/update_routines.php +++ b/e107_admin/update_routines.php @@ -43,7 +43,7 @@ include_lan(e_LANGUAGEDIR.e_LANGUAGE.'/admin/lan_e107_update.php'); // If following line uncommented, enables a test routine // define('TEST_UPDATE',TRUE); -$update_debug = FALSE; // TRUE gives extra messages in places +$update_debug = TRUE; // TRUE gives extra messages in places //$update_debug = TRUE; // TRUE gives extra messages in places if (defined('TEST_UPDATE')) $update_debug = TRUE; @@ -120,13 +120,16 @@ if (!$dont_check_update) } } + // List of potential updates if (defined('TEST_UPDATE')) { $dbupdate['test_code'] = 'Test update routine'; } - $dbupdate['core_prefs'] = LAN_UPDATE_13; // Prefs check - $dbupdate['706_to_800'] = LAN_UPDATE_8.' 1.x '.LAN_UPDATE_9.' 2.0 (Must be run first)'; + + // set 'master' to true to prevent other upgrades from running before it is complete. + $dbupdate['706_to_800'] = array('master'=>true, 'title'=>LAN_UPDATE_8.' 1.x '.LAN_UPDATE_9.' 2.0','message'=>"Depending on your particular configuration, the v1.x - 2.0 upgrade may need to be run several times"); + $dbupdate['core_prefs'] = array('master'=>true, 'title'=>LAN_UPDATE_13); // Prefs check // $dbupdate['70x_to_706'] = LAN_UPDATE_8.' .70x '.LAN_UPDATE_9.' .706'; } // End if (!$dont_check_update) @@ -413,7 +416,7 @@ function update_706_to_800($type='') $tmp = $th->getThemeInfo($pref['sitetheme']); if(is_array($tmp['custompages'])) { - if ($just_check) return update_needed(); + if ($just_check) return update_needed('SiteTheme Custom Page Pref fix'); $pref['sitetheme_custompages'] = $tmp['custompages']; $do_save = TRUE; } @@ -429,7 +432,7 @@ function update_706_to_800($type='') if (isset($pref['forum_user_customtitle']) && !isset($pref['signup_option_customtitle'])) { - if ($just_check) return update_needed(); + if ($just_check) return update_needed('Rename a core pref'); $pref['signup_option_customtitle'] = $pref['forum_user_customtitle']; unset($pref['forum_user_customtitle']); $log->logMessage(LAN_UPDATE_20.'customtitle', E_MESSAGE_SUCCESS); @@ -441,7 +444,7 @@ function update_706_to_800($type='') $serialz_qry .= "AND e107_name IN (".implode(",",$serialized_prefs).") "; if(e107::getDb()->db_Select("core", "*", $serialz_qry)) { - if ($just_check) return update_needed(); + if ($just_check) return update_needed('Convert serialized core prefs'); while ($row = e107::getDb()->db_Fetch(MYSQL_ASSOC)) { $status = e107::getDb('sql2')->update('core',"e107_value=\"".convert_serialized($row['e107_value'])."\" WHERE e107_name='".$row['e107_name']."'"); @@ -540,7 +543,7 @@ function update_706_to_800($type='') //change menu_path for online_menu (if it still exists) if($sql->db_Select('menus', 'menu_path', "menu_path='online_menu' || menu_path='online_menu/'")) { - if ($just_check) return update_needed(); + if ($just_check) return update_needed('change menu_path for online menu'); $status = $sql->update('menus', "menu_path='online/' WHERE menu_path='online_menu' || menu_path='online_menu/' ") ? E_MESSAGE_DEBUG : E_MESSAGE_ERROR; $log->logMessage(LAN_UPDATE_23."<b>online_menu</b> : online/", $status); @@ -729,6 +732,21 @@ function update_706_to_800($type='') // Tables defined in core_sql.php to be RENAMED. + + + // Next bit will be needed only by the brave souls who used an early CVS - probably delete before release + if ($sql->db_Table_exists('rl_history') && !$sql->db_Table_exists('dblog')) + { + if ($just_check) return update_needed('Rename rl_history to dblog'); + $sql->gen('ALTER TABLE `'.MPREFIX.'rl_history` RENAME `'.MPREFIX.'dblog`'); + //$updateMessages[] = LAN_UPDATE_44; + $log->logMessage(LAN_UPDATE_44, E_MESSAGE_DEBUG); + catch_error($sql); + } + + + + //--------------------------------- if ($sql->db_Table_exists('dblog') && !$sql->db_Table_exists('admin_log')) { @@ -739,16 +757,7 @@ function update_706_to_800($type='') $log->logMessage(LAN_UPDATE_43, E_MESSAGE_DEBUG); } - - // Next bit will be needed only by the brave souls who used an early CVS - probably delete before release - if ($sql->db_Table_exists('rl_history') && !$sql->db_Table_exists('dblog')) - { - if ($just_check) return update_needed('Rename rl_history to dblog'); - $sql->gen('ALTER TABLE `'.MPREFIX.'rl_history` RENAME `'.MPREFIX.'dblog`'); - //$updateMessages[] = LAN_UPDATE_44; - $log->logMessage(LAN_UPDATE_44, E_MESSAGE_DEBUG); - catch_error($sql); - } + // New tables required (list at top. Definitions in core_sql.php) // ALL DEPRECATED by db_verify class.. see below. @@ -894,13 +903,16 @@ function update_706_to_800($type='') } */ - + + // Obsolete tables (list at top) + $sql->mySQLtableList = false; // clear the cached table list. foreach ($obs_tables as $ot) { if ($sql->db_Table_exists($ot)) { if ($just_check) return update_needed("Delete table: ".$ot); + $status = $sql->gen('DROP TABLE `'.MPREFIX.$ot.'`') ? E_MESSAGE_DEBUG : E_MESSAGE_ERROR; $log->logMessage(LAN_UPDATE_25.$ot, $status); } @@ -1000,8 +1012,11 @@ function update_706_to_800($type='') // --- Notify Prefs - $notify_prefs = $sysprefs -> get('notify_prefs'); - $notify_prefs = $eArrayStorage -> ReadArray($notify_prefs); +// $notify_prefs = $sysprefs -> get('notify_prefs'); +// $notify_prefs = $eArrayStorage -> ReadArray($notify_prefs); + e107::getCache()->clearAll('system'); + + $notify_prefs = e107::getConfig('notify',true,true)->getPref(); $nt_changed = 0; if(vartrue($notify_prefs['event'])) @@ -1030,6 +1045,7 @@ function update_706_to_800($type='') } } } + if ($nt_changed) { $s_prefs = $tp -> toDB($notify_prefs); @@ -1040,7 +1056,7 @@ function update_706_to_800($type='') $log->logMessage($message, $status); } - + @@ -1179,7 +1195,7 @@ function update_706_to_800($type='') $sql->update('core_media_cat', "media_cat_owner = 'download', media_cat_category='download_thumb' WHERE media_cat_nick = 'downloadthumb' "); $sql->update('core_media_cat', "media_cat_owner = 'news', media_cat_category='news_thumb' WHERE media_cat_nick = 'newsthumb' "); e107::getMessage()->addDebug("core-media-cat Categories and Ownership updated"); - if(mysql_query("ALTER TABLE `".MPREFIX."core_media_cat` DROP `media_cat_nick`")) + if($sql->gen("ALTER TABLE `".MPREFIX."core_media_cat` DROP `media_cat_nick`")) { e107::getMessage()->addDebug("core-media-cat `media_cat_nick` field removed."); } @@ -1225,14 +1241,11 @@ function update_706_to_800($type='') { if ($just_check) return update_needed('Media-Manager Category Data needs to be updated.'); $sql->update('core_media_cat', "media_cat_category='_common_image' WHERE media_cat_category = '_common' "); - mysql_query("INSERT INTO `".MPREFIX."core_media_cat` VALUES(0, '_common', '_common_file', '(Common Area)', 'Media in this category will be available in all areas of admin. ', 253, '', 0);"); - mysql_query("INSERT INTO `".MPREFIX."core_media_cat` VALUES(0, 'download', 'download_file', 'Download Files', '', 253, '', 0);"); + $sql->gen("INSERT INTO `".MPREFIX."core_media_cat` VALUES(0, '_common', '_common_file', '(Common Area)', 'Media in this category will be available in all areas of admin. ', 253, '', 0);"); + $sql->gen("INSERT INTO `".MPREFIX."core_media_cat` VALUES(0, 'download', 'download_file', 'Download Files', '', 253, '', 0);"); e107::getMessage()->addDebug("core-media-cat _common Category updated"); } - - - - + $count = $sql->gen("SELECT * FROM `#core_media_cat` WHERE `media_cat_owner` = '_common' LIMIT 1 "); if($count != 1) @@ -1240,25 +1253,29 @@ function update_706_to_800($type='') if ($just_check) return update_needed('Add Media-Manager Categories and Import existing images.'); - mysql_query("INSERT INTO `".MPREFIX."core_media_cat` VALUES(0, '_common', '_common_image', '(Common Images)', 'Media in this category will be available in all areas of admin. ', 253, '', 0);"); - mysql_query("INSERT INTO `".MPREFIX."core_media_cat` VALUES(0, '_common', '_common_file', '(Common Files)', 'Media in this category will be available in all areas of admin. ', 253, '', 0);"); + $sql->gen("INSERT INTO `".MPREFIX."core_media_cat` VALUES(0, '_common', '_common_image', '(Common Images)', 'Media in this category will be available in all areas of admin. ', 253, '', 0, 1);"); + $sql->gen("INSERT INTO `".MPREFIX."core_media_cat` VALUES(0, '_common', '_common_file', '(Common Files)', 'Media in this category will be available in all areas of admin. ', 253, '', 0, 2);"); - mysql_query("INSERT INTO `".MPREFIX."core_media_cat` VALUES(0, 'news', 'news', 'News', 'Will be available in the news area. ', 253, '', 1);"); - mysql_query("INSERT INTO `".MPREFIX."core_media_cat` VALUES(0, 'page', 'page', 'Custom Pages', 'Will be available in the custom pages area of admin. ', 253, '', 0);"); + $sql->gen("INSERT INTO `".MPREFIX."core_media_cat` VALUES(0, 'news', 'news', 'News', 'Will be available in the news area. ', 253, '', 1, 3);"); + $sql->gen("INSERT INTO `".MPREFIX."core_media_cat` VALUES(0, 'page', 'page', 'Custom Pages', 'Will be available in the custom pages area of admin. ', 253, '', 0, 4);"); - mysql_query("INSERT INTO `".MPREFIX."core_media_cat` VALUES(0, 'download', 'download_image', 'Download Images', '', 253, '', 0);"); - mysql_query("INSERT INTO `".MPREFIX."core_media_cat` VALUES(0, 'download', 'download_thumb', 'Download Thumbnails', '', 253, '', 0);"); - mysql_query("INSERT INTO `".MPREFIX."core_media_cat` VALUES(0, 'download', 'download_file', 'Download Files', '', 253, '', 0);"); + $sql->gen("INSERT INTO `".MPREFIX."core_media_cat` VALUES(0, 'download', 'download_image', 'Download Images', '', 253, '', 0, 5);"); + $sql->gen("INSERT INTO `".MPREFIX."core_media_cat` VALUES(0, 'download', 'download_thumb', 'Download Thumbnails', '', 253, '', 0, 6);"); + $sql->gen("INSERT INTO `".MPREFIX."core_media_cat` VALUES(0, 'download', 'download_file', 'Download Files', '', 253, '', 0, 7);"); // mysql_query("INSERT INTO `".MPREFIX."core_media_cat` VALUES(0, 'gallery', 'gallery_1', 'Gallery', 'Visible to the public at /gallery.php', 0, '', 0);"); - mysql_query("INSERT INTO `".MPREFIX."core_media_cat` VALUES(0, 'news', 'news_thumb', 'News Thumbnails (Legacy)', 'Legacy news thumbnails. ', 253, '', 1);"); + $sql->gen("INSERT INTO `".MPREFIX."core_media_cat` VALUES(0, 'news', 'news_thumb', 'News Thumbnails (Legacy)', 'Legacy news thumbnails. ', 253, '', 1, 8);"); $med->import('news_thumb', e_IMAGE.'newspost_images',"^thumb_"); $med->import('news',e_IMAGE.'newspost_images'); $med->import('page',e_IMAGE.'custom'); } + else + { + e107::getMessage()->addDebug("Media COUNT was ".$count. " LINE: ".__LINE__); + } // Check for Legacy Download Images. @@ -1316,7 +1333,7 @@ function update_706_to_800($type='') (0, '_icon', '_icon_64', 'Icons 64px', 'Available where icons are used in admin. ', 253, '', 0); "; - if(!mysql_query($query)) + if(!$sql->gen($query)) { // echo "mysyql error"; // error or already exists. @@ -1344,7 +1361,7 @@ function update_706_to_800($type='') //FIXME grab message-stack from $log for the log. - if ($just_check) return TRUE; + //if ($just_check) return TRUE; $log->flushMessages('UPDATE_01'); // Write admin log entry, update message handler //$admin_log->log_event('UPDATE_01',LAN_UPDATE_14.$e107info['e107_version'].'[!br!]'.implode('[!br!]',$updateMessages),E_LOG_INFORMATIVE,''); // Log result of actual update return $just_check; @@ -1527,7 +1544,7 @@ function update_needed($message='') $emessage = e107::getMessage(); - if ($update_debug) $emessage->add("Update: ".$message, E_MESSAGE_DEBUG); +// if ($update_debug) $emessage->add("Update: ".$message, E_MESSAGE_DEBUG); if(E107_DEBUG_LEVEL) { $tmp = debug_backtrace(); diff --git a/e107_handlers/e107_class.php b/e107_handlers/e107_class.php index 88047d5b0..fdeef406a 100644 --- a/e107_handlers/e107_class.php +++ b/e107_handlers/e107_class.php @@ -826,7 +826,7 @@ class e107 * @param string $name core|core_backup|emote|menu|search|notify * @return e_core_pref */ - public static function getConfig($name = 'core', $load = true) + public static function getConfig($name = 'core', $load = true, $refresh=false) { if(isset(self::$_plug_config_arr[$name])) //FIXME Load pluginPref Object instead - Not quite working with calendar_menu. @@ -834,7 +834,7 @@ class e107 return self::getPlugConfig($name); } - if(!isset(self::$_core_config_arr[$name])) + if(!isset(self::$_core_config_arr[$name]) || ($refresh == true)) // required by update_routines to clear out earlier values. { e107_require_once(e_HANDLER.'pref_class.php'); self::$_core_config_arr[$name] = new e_core_pref($name, $load); diff --git a/e107_handlers/plugin_class.php b/e107_handlers/plugin_class.php index c890e4238..111e9b2c6 100644 --- a/e107_handlers/plugin_class.php +++ b/e107_handlers/plugin_class.php @@ -366,7 +366,7 @@ class e107plugin $_installed = ($plug_info['@attributes']['installRequired'] == 'true' || $plug_info['@attributes']['installRequired'] == 1 ? 0 : 1); - if (e107::getDb()->db_Insert("plugin", "0, '".$tp->toDB($pName, true)."', '".$tp->toDB($plug_info['@attributes']['version'], true)."', '".$tp->toDB($plugin_path, true)."',{$_installed}, '{$eplug_addons}', '".$this->manage_category($plug_info['category'])."', '".varset($plug_info['@attributes']['releaseUrl'])."' ")) + if (e107::getDb()->db_Insert("plugin", "0, '".$tp->toDB($pName, true)."', '".$tp->toDB($plug_info['@attributes']['version'], true)."', '".$tp->toDB($plugin_path, true)."',{$_installed}, '{$eplug_addons}', '".$this->manage_category($plug_info['category'])."' ")) { $mes->addDebug("Added <b>".$tp->toHTML($pName,false,"defs")."</b> to the plugin table."); } @@ -1461,7 +1461,7 @@ class e107plugin if ($function == 'install' || $function == 'upgrade') { - $sql->update('plugin', "plugin_installflag = 1, plugin_addons = '{$eplug_addons}', plugin_version = '{$plug_vars['@attributes']['version']}', plugin_category ='".$this->manage_category($plug_vars['category'])."', plugin_releaseUrl= '".varset($plug_vars['@attributes']['releaseUrl'])."' WHERE plugin_id = ".$id); + $sql->update('plugin', "plugin_installflag = 1, plugin_addons = '{$eplug_addons}', plugin_version = '{$plug_vars['@attributes']['version']}', plugin_category ='".$this->manage_category($plug_vars['category'])."' WHERE plugin_id = ".$id); $p_installed[$plug['plugin_path']] = $plug_vars['@attributes']['version']; e107::getConfig('core')->setPref('plug_installed', $p_installed); @@ -1470,7 +1470,7 @@ class e107plugin if ($function == 'uninstall') { - $sql->update('plugin', "plugin_installflag = 0, plugin_addons = '{$eplug_addons}', plugin_version = '{$plug_vars['@attributes']['version']}', plugin_category ='".$this->manage_category($plug_vars['category'])."', plugin_releaseUrl= '".varset($plug_vars['@attributes']['releaseUrl'])."' WHERE plugin_id = ".$id); + $sql->update('plugin', "plugin_installflag = 0, plugin_addons = '{$eplug_addons}', plugin_version = '{$plug_vars['@attributes']['version']}', plugin_category ='".$this->manage_category($plug_vars['category'])."' WHERE plugin_id = ".$id); unset($p_installed[$plug['plugin_path']]); e107::getConfig('core')->setPref('plug_installed', $p_installed);