diff --git a/root/install/index.php b/root/install/index.php index a4143da9..6f5200d2 100644 --- a/root/install/index.php +++ b/root/install/index.php @@ -20,6 +20,10 @@ if (!file_exists($phpbb_root_path . 'umil/umil_auto.' . $phpEx)) { trigger_error('Please download the latest UMIL (Unified MOD Install Library) from: phpBB.com/mods/umil', E_USER_ERROR); } +if(!function_exists('board3_basic_install')) +{ + include($phpbb_root_path . 'portal/includes/functions.' . $phpEx); +} // The name of the mod to be displayed during installation. $mod_name = 'Board3 Portal'; @@ -83,7 +87,7 @@ $versions = array( ), 'PRIMARY_KEY' => 'config_name', - )); + )), ), @@ -95,7 +99,6 @@ $versions = array( array('board3_forum_index', 1, 0), array('board3_left_column_width', 180, 0), array('board3_right_column_width', 180, 0), - array('board3_first_install', 1, 0), // this will tell board3 portal to install the basic modules ), 'module_add' => array( @@ -118,6 +121,7 @@ $versions = array( ), ), ), + 'custom' => array('board3_basic_install'), ), ); diff --git a/root/language/en/mods/info_acp_portal.php b/root/language/en/mods/info_acp_portal.php index 06bf47bd..7738b90a 100644 --- a/root/language/en/mods/info_acp_portal.php +++ b/root/language/en/mods/info_acp_portal.php @@ -64,6 +64,10 @@ $lang = array_merge($lang, array( 'PORTAL_LEFT_COLUMN_WIDTH_EXP' => 'Change the width of the left column in pixels; recommended value is 180', 'PORTAL_RIGHT_COLUMN_WIDTH' => 'Width of the right column', 'PORTAL_RIGHT_COLUMN_WIDTH_EXP' => 'Change the width of the right column in pixels; recommended value is 180', + + // Install + 'PORTAL_BASIC_INSTALL' => 'Adding basic set of modules', + 'PORTAL_BASIC_UNINSTALL' => 'Removing modules from database', // Portal Modules diff --git a/root/portal/includes/functions.php b/root/portal/includes/functions.php index 61b786ad..2d3ace3d 100644 --- a/root/portal/includes/functions.php +++ b/root/portal/includes/functions.php @@ -9,7 +9,7 @@ * */ -if (!defined('IN_PHPBB')) +if (!defined('IN_PHPBB') && !defined('UMIL_AUTO') && !defined('IN_INSTALL')) { exit; } @@ -815,85 +815,97 @@ function get_portal_tracking_info($fetch_news) * !! this function should usually only be executed once upon installing the portal !! * DO NOT set $purge_modules to false unless you want to auto-add all modules again after deleting them (i.e. if your database was corrupted) */ -function board3_basic_install($purge_modules = true, $u_action) +function board3_basic_install($mode = 'install', $purge_modules = true, $u_action = '') { - global $db, $phpbb_root_path, $phpEx, $cache, $user; + global $db, $phpbb_root_path, $phpEx, $cache, $user, $table_prefix; - $directory = $phpbb_root_path . 'portal/modules/'; - - if($purge_modules) + if(!defined('PORTAL_MODULES_TABLE')) { - $sql = 'DELETE FROM ' . PORTAL_MODULES_TABLE; - $result = $db->sql_query($sql); - $db->sql_freeresult($result); + include($phpbb_root_path . 'portal/includes/constants.' . $phpEx); } - /* - * this is a list of the basic modules that will be installed - * module_name => array(module_column, module_order) - */ - $modules_ary = array( - // left column - 'portal_main_menu' => array(1, 1), - 'portal_stylechanger' => array(1, 2), - 'portal_birthday_list' => array(1, 3), - 'portal_clock' => array(1, 4), - 'portal_search' => array(1, 5), - 'portal_random_member' => array(1, 6), - 'portal_attachments' => array(1, 7), - 'portal_topposters' => array(1, 8), - 'portal_latest_members' => array(1, 9), - 'portal_link_us' => array(1, 10), - - // center column - 'portal_welcome' => array(2, 1), - 'portal_recent' => array(2, 2), - 'portal_announcements' => array(2, 3), - 'portal_news' => array(2, 4), - 'portal_poll' => array(2, 5), - 'portal_whois_online' => array(2, 6), - // 'portal_jumpbox' => array(2, 7), - - // right column - 'portal_user_menu' => array(3, 1), - 'portal_statistics' => array(3, 2), - 'portal_calendar' => array(3, 3), - 'portal_leaders' => array(3, 4), - 'portal_latest_bots' => array(3, 5), - 'portal_links' => array(3, 6), - ); - - foreach($modules_ary as $module_name => $module_data) + if($mode == 'install') { - $class_name = $module_name . '_module'; - if (!class_exists($class_name)) + $directory = $phpbb_root_path . 'portal/modules/'; + + + + if($purge_modules) { - include($directory . $module_name . '.' . $phpEx); - } - if (!class_exists($class_name)) - { - trigger_error('CLASS_NOT_FOUND', E_USER_ERROR); + $sql = 'DELETE FROM ' . PORTAL_MODULES_TABLE; + $result = $db->sql_query($sql); + $db->sql_freeresult($result); } - $c_class = new $class_name(); - - $sql_ary = array( - 'module_classname' => substr($module_name, 7), - 'module_column' => $module_data[0], - 'module_order' => $module_data[1], - 'module_name' => $c_class->name, - 'module_image_src' => $c_class->image_src, - 'module_group_ids' => '', + /* + * this is a list of the basic modules that will be installed + * module_name => array(module_column, module_order) + */ + $modules_ary = array( + // left column + 'portal_main_menu' => array(1, 1), + 'portal_stylechanger' => array(1, 2), + 'portal_birthday_list' => array(1, 3), + 'portal_clock' => array(1, 4), + 'portal_search' => array(1, 5), + 'portal_random_member' => array(1, 6), + 'portal_attachments' => array(1, 7), + 'portal_topposters' => array(1, 8), + 'portal_latest_members' => array(1, 9), + 'portal_link_us' => array(1, 10), + + // center column + 'portal_welcome' => array(2, 1), + 'portal_recent' => array(2, 2), + 'portal_announcements' => array(2, 3), + 'portal_news' => array(2, 4), + 'portal_poll' => array(2, 5), + 'portal_whois_online' => array(2, 6), + // 'portal_jumpbox' => array(2, 7), + + // right column + 'portal_user_menu' => array(3, 1), + 'portal_statistics' => array(3, 2), + 'portal_calendar' => array(3, 3), + 'portal_leaders' => array(3, 4), + 'portal_latest_bots' => array(3, 5), + 'portal_links' => array(3, 6), ); - $sql = 'INSERT INTO ' . PORTAL_MODULES_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary); - $db->sql_query($sql); + + foreach($modules_ary as $module_name => $module_data) + { + $class_name = $module_name . '_module'; + if (!class_exists($class_name)) + { + include($directory . $module_name . '.' . $phpEx); + } + if (!class_exists($class_name)) + { + trigger_error('CLASS_NOT_FOUND', E_USER_ERROR); + } + + $c_class = new $class_name(); - $c_class->install($db->sql_nextid()); + $sql_ary = array( + 'module_classname' => substr($module_name, 7), + 'module_column' => $module_data[0], + 'module_order' => $module_data[1], + 'module_name' => $c_class->name, + 'module_image_src' => $c_class->image_src, + 'module_group_ids' => '', + ); + $sql = 'INSERT INTO ' . PORTAL_MODULES_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary); + $db->sql_query($sql); + + $c_class->install($db->sql_nextid()); + } + + return $user->lang['PORTAL_BASIC_INSTALL']; + } + else + { + return $user->lang['PORTAL_BASIC_UNINSTALL']; } - - $cache->purge(); // make sure we don't get errors after re-adding a module - - trigger_error($user->lang['SUCCESS_ADD'] . adm_back_link($u_action)); } ?> \ No newline at end of file