diff --git a/root/install_portal/index.html b/root/install_portal/index.html new file mode 100644 index 00000000..e69de29b diff --git a/root/install_portal/install.php b/root/install_portal/install.php new file mode 100644 index 00000000..7a149d04 --- /dev/null +++ b/root/install_portal/install.php @@ -0,0 +1,911 @@ +session_begin(); +$auth->acl($user->data); +$user->setup('mods/portal_install'); + +$version_array = array('0.1.0', 'p3p1.2.2', 'p3p1.2.1', 'p3p1.2.0', 'p3p1.1.0b'); + +$old_version = 0; +$phpbb3portal = false; +$installed = $updated = $uninstalled =false; + +$sql = 'SELECT config_value as version + FROM ' . PORTAL_CONFIG_TABLE . " + WHERE config_name = 'portal_version'"; +$result = @$db->sql_query_limit( $sql, 1 ); +if( $db->sql_affectedrows($result) > 0 ) +{ + $version = $db->sql_fetchrow( $result ); + $old_version = $version['version']; +} +else +{ + $db->sql_freeresult( $result ); + $sql = 'SELECT config_value as version + FROM ' . CONFIG_TABLE . " + WHERE config_name = 'portal_version'"; + $result = @$db->sql_query_limit( $sql, 1 ); + if( $db->sql_affectedrows($result) > 0 ) + { + $version = $db->sql_fetchrow( $result ); + $phpbb3portal = true; + $old_version = ( strtolower($version['version']) == '1.1.0.b' ) ? '1.1.0b' : $version['version'] ; + } +} +$db->sql_freeresult( $result ); + +$check_mode = 'none'; + +if( $old_version == 0 ) +{ + $check_mode = 'install'; +} +elseif( $phpbb3portal === TRUE || version_compare( $old_version, $current_version, "<" ) === TRUE ) +{ + $check_mode = 'update'; +} + +$page_title = 'Board3portal v' . $current_version; + +$mode = request_var('mode', ''); +$confirm = request_var('confirm', 0); + +$error_array = array(); + +function split_sql_file($sql, $delimiter) +{ + $sql = str_replace("\r" , '', $sql); + $data = preg_split('/' . preg_quote($delimiter, '/') . '$/m', $sql); + + $data = array_map('trim', $data); + + // The empty case + $end_data = end($data); + + if (empty($end_data)) + { + unset($data[key($data)]); + } + + return $data; +} + +function db_error( $error, $sql, $line, $file, $skip = false ) +{ + global $error, $lang, $db; + + if( $skip ) + { + $error_array[] = '' . $user->lang['GENERAL_ERROR'] . ': ' . basename($file) . ' [ ' . $line . ' ]
+ ' . $error . '
» SQL:' . $sql; + return; + } else { + include $phpbb_root_path . 'install_portal/style/layout_header.php'; + echo '
+

'. $user->lang['GENERAL_ERROR'] .'

+

' . $error . '
» SQL:' . $sql . '
+ ' . basename($file) . ' [ ' . $line . ' ]

+
'; + include $phpbb_root_path . 'install_portal/style/layout_footer.php'; + exit; + } +} + +function remove_comments(&$output) +{ + $lines = explode("\n", $output); + $output = ''; + + // try to keep mem. use down + $linecount = sizeof($lines); + + $in_comment = false; + for ($i = 0; $i < $linecount; $i++) + { + if (trim($lines[$i]) == '/*') + { + $in_comment = true; + } + + if (!$in_comment) + { + $output .= $lines[$i] . "\n"; + } + + if (trim($lines[$i]) == '*/') + { + $in_comment = false; + } + } + + unset($lines); + return $output; +} + +function remove_remarks(&$sql) +{ + $sql = preg_replace('/\n{2,}/', "\n", preg_replace('/^#.*$/m', "\n", $sql)); +} + +// What sql_layer should we use? +switch ($db->sql_layer) +{ + case 'mysql': + $db_schema = 'mysql_40'; + $delimiter = ';'; + $comments = 'remove_remarks'; + break; + + case 'mysql4': + if (version_compare($db->mysql_version, '4.1.3', '>=')) + { + $db_schema = 'mysql_41'; + } + else + { + $db_schema = 'mysql_40'; + } + $delimiter = ';'; + $comments = 'remove_remarks'; + break; + + case 'mysqli': + $db_schema = 'mysql_41'; + $delimiter = ';'; + $comments = 'remove_remarks'; + break; + + case 'mssql': + $db_schema = 'mssql'; + $delimiter = 'GO'; + $comments = 'remove_comments'; + break; + + case 'postgres': + $db_schema = 'postgres'; + $delimiter = ';'; + $comments = 'remove_comments'; + break; + + case 'sqlite': + $db_schema = 'sqlite'; + $delimiter = ';'; + $comments = 'remove_remarks'; + break; + + case 'firebird': + $db_schema = 'firebird'; + $delimiter = ';;'; + $comments = 'remove_remarks'; + break; + + case 'oracle': + $db_schema = 'oracle'; + $delimiter = '/'; + $comments = 'remove_comments'; + break; + + default: + trigger_error('Sorry, unsupported DBMS found.'); + break; +} + +// Get old version if it is installed. + +switch ($mode) +{ +// Installing from scratch +case 'install': + if( $check_mode == 'install' ) + { + if( $confirm == 1) + { + // Drop thes tables if existing + switch( $db->sql_layer ) + { + case 'mysql4': + case 'mysqli': + case 'oracle': + case 'firebird': + case 'sqlite': + case 'mysql': + $sql = 'DROP TABLE IF EXISTS ' . $table_prefix . 'portal_config'; + $result = $db->sql_query($sql); + $db->sql_freeresult($result); + break; + case '': + $sql = 'SELECT version() as version'; + $result = $db->sql_query($sql); + $data = $db->sql_fetchrow($result); + if( version_compare($data['version'], '8.1.11', '>') === TRUE ) + { + $sql = 'DROP TABLE IF EXISTS ' . $table_prefix . 'portal_config'; + $result = $db->sql_query($sql); + $db->sql_freeresult($result); + } else { + $sql = 'DROP TABLE ' . $table_prefix . 'portal_config'; + $result = @$db->sql_query($sql); + $db->sql_freeresult($result); + } + break; + case 'mssql': + $sql = 'if exists (select * from sysobjects where name = ' . $table_prefix . 'portal_config) + drop table ' . $table_prefix . 'portal_config'; + $result = $db->sql_query($sql); + $db->sql_freeresult($result); + break; + } + + // locate the schema files + $dbms_schema = 'schemas/_' . $db_schema . '_schema.sql'; + $sql_query = @file_get_contents($dbms_schema); + $sql_query = preg_replace('#phpbb_#i', $table_prefix, $sql_query); + $comments($sql_query); + $sql_query = split_sql_file($sql_query, $delimiter); + + // Make tables + foreach ($sql_query as $sql) + { + if (!$db->sql_query($sql)) + { + $error = $db->sql_error(); + db_error($error['message'], $sql, __LINE__, __FILE__); + } + } + unset($sql_query); + + // Now for the data + + $sql_query = @file_get_contents('schemas/_schema_data.sql'); + switch ($db->sql_layer) + { + case 'mssql': + case 'mssql_odbc': + $sql_query = preg_replace('#\# MSSQL IDENTITY (phpbb_[a-z_]+) (ON|OFF) \##s', 'SET IDENTITY_INSERT \1 \2;', $sql_query); + break; + case 'postgres': + $sql_query = preg_replace('#\# POSTGRES (BEGIN|COMMIT) \##s', '\1; ', $sql_query); + break; + } + + $sql_query = preg_replace('#phpbb_#i', $table_prefix, $sql_query); + $sql_query = preg_replace('/\n{2,}/', "\n", preg_replace('/^#.*$/m', "\n", $sql_query)); + $sql_query = split_sql_file($sql_query, ';'); + + $sql_query[] = "INSERT INTO {$table_prefix}portal_config (config_name, config_value) VALUES ('portal_version', '{$current_version}')"; + + foreach ($sql_query as $sql) + { + if (!$db->sql_query($sql)) + { + $error = $db->sql_error(); + db_error($error['message'], $sql, __LINE__, __FILE__); + } + } + unset($sql_query); + + // create the acp modules - Nickvergessen's code + $modules = new acp_modules(); + $portal = array( + 'module_basename' => '', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => 31, + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_INFO', + 'module_mode' => '', + 'module_auth' => '' + ); + $modules->update_module_data($portal); + $general = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_GENERAL_INFO', + 'module_mode' => 'general', + 'module_auth' => '' + ); + $modules->update_module_data($general); + $news = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_NEWS_INFO', + 'module_mode' => 'news', + 'module_auth' => '' + ); + $modules->update_module_data($news); + $announcements = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_ANNOUNCE_INFO', + 'module_mode' => 'announcements', + 'module_auth' => '' + ); + $modules->update_module_data($announcements); + $welcome = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_WELCOME_INFO', + 'module_mode' => 'welcome', + 'module_auth' => '' + ); + $modules->update_module_data($welcome); + $recent = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_RECENT_INFO', + 'module_mode' => 'recent', + 'module_auth' => '' + ); + $modules->update_module_data($recent); + $wordgraph = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_WORDGRAPH_INFO', + 'module_mode' => 'wordgraph', + 'module_auth' => '' + ); + $modules->update_module_data($wordgraph); + $paypal = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_PAYPAL_INFO', + 'module_mode' => 'paypal', + 'module_auth' => '' + ); + $modules->update_module_data($paypal); + $attachments = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_ATTACHMENTS_NUMBER_INFO', + 'module_mode' => 'attachments', + 'module_auth' => '' + ); + $modules->update_module_data($attachments); + $members = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_MEMBERS_INFO', + 'module_mode' => 'members', + 'module_auth' => '' + ); + $modules->update_module_data($members); + $polls = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_POLLS_INFO', + 'module_mode' => 'polls', + 'module_auth' => '' + ); + $modules->update_module_data($polls); + $bots = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_BOTS_INFO', + 'module_mode' => 'bots', + 'module_auth' => '' + ); + $modules->update_module_data($bots); + $poster = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_MOST_POSTER_INFO', + 'module_mode' => 'poster', + 'module_auth' => '' + ); + $modules->update_module_data($poster); + $minicalendar = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_MINICALENDAR_INFO', + 'module_mode' => 'minicalendar', + 'module_auth' => '' + ); + $modules->update_module_data($minicalendar); + // clear cache and log what we did + $cache->purge(); + add_log('admin', $page_title . ' installed'); + $installed = true; + } + include($phpbb_root_path . 'install_portal/style/layout_install.'.$phpEx); + } + else + { + include($phpbb_root_path . 'install_portal/style/layout_menu.'.$phpEx); + } +break; +// Updating +case 'update': + if( $check_mode == 'update' ) + { + $confirm = request_var('confirm', ''); + if( $confirm == 1 ) + { + if( $phpbb3portal === TRUE ) + { + // Drop thes tables if existing + switch( $db->sql_layer ) + { + case 'mysql4': + case 'mysqli': + case 'oracle': + case 'firebird': + case 'sqlite': + case 'mysql': + $sql = 'DROP TABLE IF EXISTS ' . $table_prefix . 'portal_config'; + $result = $db->sql_query($sql); + $db->sql_freeresult($result); + break; + case '': + $sql = 'SELECT version() as version'; + $result = $db->sql_query($sql); + $data = $db->sql_fetchrow($result); + if( version_compare($data['version'], '8.1.11', '>') === TRUE ) + { + $sql = 'DROP TABLE IF EXISTS ' . $table_prefix . 'portal_config'; + $result = $db->sql_query($sql); + $db->sql_freeresult($result); + } else { + $sql = 'DROP TABLE ' . $table_prefix . 'portal_config'; + $result = @$db->sql_query($sql); + $db->sql_freeresult($result); + } + break; + case 'mssql': + $sql = 'if exists (select * from sysobjects where name = ' . $table_prefix . 'portal_config) + drop table ' . $table_prefix . 'portal_config'; + $result = $db->sql_query($sql); + $db->sql_freeresult($result); + break; + } + + // locate the schema files + $dbms_schema = 'schemas/_' . $db_schema . '_schema.sql'; + $sql_query = @file_get_contents($dbms_schema); + $sql_query = preg_replace('#phpbb_#i', $table_prefix, $sql_query); + $comments($sql_query); + $sql_query = split_sql_file($sql_query, $delimiter); + + // Make tables + foreach ($sql_query as $sql) + { + if (!$db->sql_query($sql)) + { + $error = $db->sql_error(); + db_error($error['message'], $sql, __LINE__, __FILE__); + } + } + unset($sql_query); + + // Start by inserting default data + + $sql_query = @file_get_contents('schemas/_schema_data.sql'); + switch ($db->sql_layer) + { + case 'mssql': + case 'mssql_odbc': + $sql_query = preg_replace('#\# MSSQL IDENTITY (phpbb_[a-z_]+) (ON|OFF) \##s', 'SET IDENTITY_INSERT \1 \2;', $sql_query); + break; + case 'postgres': + $sql_query = preg_replace('#\# POSTGRES (BEGIN|COMMIT) \##s', '\1; ', $sql_query); + break; + } + + $sql_query = preg_replace('#phpbb_#i', $table_prefix, $sql_query); + $sql_query = preg_replace('/\n{2,}/', "\n", preg_replace('/^#.*$/m', "\n", $sql_query)); + $sql_query = split_sql_file($sql_query, ';'); + + $sql_query[] = "INSERT INTO {$table_prefix}portal_config (config_name, config_value) VALUES ('portal_version', '{$current_version}')"; + foreach ($sql_query as $sql) + { + if (!$db->sql_query($sql)) + { + $error = $db->sql_error(); + db_error($error['message'], $sql, __LINE__, __FILE__); + } + } + unset($sql_query); + + // Set old settings. + $sql = 'SELECT * FROM ' . PORTAL_CONFIG_TABLE; + $result = $db->sql_query($sql); + while ($row = $db->sql_fetchrow($result)) + { + if (isset($config[$row['config_name']])) + { + $sql2 = 'UPDATE ' . PORTAL_CONFIG_TABLE . " SET config_value = '" . $config[$row['config_name']] . "' WHERE config_name = '" . $row['config_name'] . "' LIMIT 1"; + $db->sql_query($sql2); + $sql3 = 'DELETE FROM ' . CONFIG_TABLE . " WHERE config_name = '" . $row['config_name'] . "' LIMIT 1"; + $db->sql_query($sql3); + } + } + $db->sql_freeresult($result); + $sql = 'UPDATE ' . PORTAL_CONFIG_TABLE . " SET config_value = '{$current_version}' where config_name = 'portal_version'"; + $db->sql_query($sql); + + // Delete old portal stuff + $sql = "ALTER TABLE {$table_prefix}config CHANGE config_value config_value varchar(255) NOT NULL"; + $db->sql_query($sql); + + $sql = 'SELECT right_id, module_id FROM ' . MODULES_TABLE . " + WHERE module_langname = 'ACP_PORTAL_GENERAL_INFO' + OR module_langname = 'ACP_PORTAL_NEWS_INFO' + OR module_langname = 'ACP_PORTAL_ANNOUNCE_INFO' + OR module_langname = 'ACP_PORTAL_WELCOME_INFO' + OR module_langname = 'ACP_PORTAL_RECENT_INFO' + OR module_langname = 'ACP_PORTAL_WORDGRAPH_INFO' + OR module_langname = 'ACP_PORTAL_PAYPAL_INFO' + OR module_langname = 'ACP_PORTAL_ADS_INFO' + OR module_langname = 'ACP_PORTAL_ATTACHMENTS_NUMBER_INFO' + OR module_langname = 'ACP_PORTAL_MEMBERS_INFO' + OR module_langname = 'ACP_PORTAL_POLLS_INFO' + OR module_langname = 'ACP_PORTAL_BOTS_INFO' + OR module_langname = 'ACP_PORTAL_MOST_POSTER_INFO' + OR module_langname = 'ACP_PORTAL_MINICALENDAR_INFO'"; + $result = $db->sql_query($sql); + while ($row = $db->sql_fetchrow($result)) + { + $sql = 'DELETE FROM ' . MODULES_TABLE . " WHERE module_id = '{$row['module_id']}'"; + $db->sql_query($sql); + $sql = 'UPDATE ' . MODULES_TABLE . " + SET left_id = left_id - 2 + WHERE module_class = 'acp' + AND left_id > {$row['right_id']}"; + $db->sql_query($sql); + + $sql = 'UPDATE ' . MODULES_TABLE . " + SET right_id = right_id - 2 + WHERE module_class = 'acp' + AND right_id > {$row['right_id']}"; + $db->sql_query($sql); + } + $db->sql_freeresult($result); + + $sql = 'SELECT right_id, module_id FROM ' . MODULES_TABLE . " + WHERE module_langname = 'ACP_PORTAL_INFO'"; + $result = $db->sql_query($sql); + while ($row = $db->sql_fetchrow($result)) + { + $sql = 'DELETE FROM ' . MODULES_TABLE . " WHERE module_id = '{$row['module_id']}'"; + $db->sql_query($sql); + $sql = 'UPDATE ' . MODULES_TABLE . " + SET left_id = left_id - 2 + WHERE module_class = 'acp' + AND left_id > {$row['right_id']}"; + $db->sql_query($sql); + + $sql = 'UPDATE ' . MODULES_TABLE . " + SET right_id = right_id - 2 + WHERE module_class = 'acp' + AND right_id > {$row['right_id']}"; + $db->sql_query($sql); + } + $db->sql_freeresult($result); + + // create the acp modules + $modules = new acp_modules(); + $portal = array( + 'module_basename' => '', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => 31, + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_INFO', + 'module_mode' => '', + 'module_auth' => '' + ); + $modules->update_module_data($portal); + $general = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_GENERAL_INFO', + 'module_mode' => 'general', + 'module_auth' => '' + ); + $modules->update_module_data($general); + $news = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_NEWS_INFO', + 'module_mode' => 'news', + 'module_auth' => '' + ); + $modules->update_module_data($news); + $announcements = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_ANNOUNCE_INFO', + 'module_mode' => 'announcements', + 'module_auth' => '' + ); + $modules->update_module_data($announcements); + $welcome = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_WELCOME_INFO', + 'module_mode' => 'welcome', + 'module_auth' => '' + ); + $modules->update_module_data($welcome); + $recent = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_RECENT_INFO', + 'module_mode' => 'recent', + 'module_auth' => '' + ); + $modules->update_module_data($recent); + $wordgraph = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_WORDGRAPH_INFO', + 'module_mode' => 'wordgraph', + 'module_auth' => '' + ); + $modules->update_module_data($wordgraph); + $paypal = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_PAYPAL_INFO', + 'module_mode' => 'paypal', + 'module_auth' => '' + ); + $modules->update_module_data($paypal); + $attachments = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_ATTACHMENTS_NUMBER_INFO', + 'module_mode' => 'attachments', + 'module_auth' => '' + ); + $modules->update_module_data($attachments); + $members = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_MEMBERS_INFO', + 'module_mode' => 'members', + 'module_auth' => '' + ); + $modules->update_module_data($members); + $polls = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_POLLS_INFO', + 'module_mode' => 'polls', + 'module_auth' => '' + ); + $modules->update_module_data($polls); + $bots = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_BOTS_INFO', + 'module_mode' => 'bots', + 'module_auth' => '' + ); + $modules->update_module_data($bots); + $poster = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_MOST_POSTER_INFO', + 'module_mode' => 'poster', + 'module_auth' => '' + ); + $modules->update_module_data($poster); + $minicalendar = array( + 'module_basename' => 'portal', + 'module_enabled' => 1, + 'module_display' => 1, + 'parent_id' => $portal['module_id'], + 'module_class' => 'acp', + 'module_langname' => 'ACP_PORTAL_MINICALENDAR_INFO', + 'module_mode' => 'minicalendar', + 'module_auth' => '' + ); + $modules->update_module_data($minicalendar); + + // clear cache and log what we did + $cache->purge(); + add_log('admin', $page_title . ' updated'); + $updated = true; + } + else + { + $portal_update_array = array(); + + include 'schemas/update_schema.php'; + + foreach( $sql_update as $sql_ver => $sql_data ) + { + if( version_compare($old_version, $sql_ver, ">=") === TRUE ) + { + continue; + } else { + $portal_update_array = array_merge($portal_update_array, $sql_data); + } + } + + $portal_update_array[] = 'UPDATE ' . PORTAL_CONFIG_TABLE . " SET config_value='{$current_version}' WHERE config_name = 'portal_version'"; + + foreach($portal_update_array as $sql) + { + $sql = preg_replace('#phpbb_#i', $table_prefix, $sql); + if (!$db->sql_query($sql)) + { + $error = $db->sql_error(); + db_error($error['message'], $sql, __LINE__, __FILE__); + } + } + unset($portal_update_array, $sql_update); + $updated = true; + } + } + include($phpbb_root_path . 'install_portal/style/layout_update.'.$phpEx); + } + else + { + include($phpbb_root_path . 'install_portal/style/layout_menu.'.$phpEx); + } + +break; +// Uninstalling +case 'uninstall': + if( $old_version != 0 ) + { + if( $confirm == 1) + { + if( $phpbb3portal === FALSE ) + { + // Drop thes tables if existing + switch( $db->sql_layer ) + { + case 'mysql4': + case 'mysqli': + case 'oracle': + case 'firebird': + case 'sqlite': + case 'mysql': + $sql = 'DROP TABLE IF EXISTS ' . $table_prefix . 'portal_config'; + $result = $db->sql_query($sql); + $db->sql_freeresult($result); + break; + case '': + $sql = 'SELECT version() as version'; + $result = $db->sql_query($sql); + $data = $db->sql_fetchrow($result); + if( version_compare($data['version'], '8.1.11', '>') === TRUE ) + { + $sql = 'DROP TABLE IF EXISTS ' . $table_prefix . 'portal_config'; + $result = $db->sql_query($sql); + $db->sql_freeresult($result); + } else { + $sql = 'DROP TABLE ' . $table_prefix . 'portal_config'; + $result = @$db->sql_query($sql); + $db->sql_freeresult($result); + } + break; + case 'mssql': + $sql = 'if exists (select * from sysobjects where name = ' . $table_prefix . 'portal_config) + drop table ' . $table_prefix . 'portal_config'; + $result = $db->sql_query($sql); + $db->sql_freeresult($result); + break; + } + $installed = true; + } + else + { + include($phpbb_root_path . 'install_portal/style/layout_header.'.$phpEx); + echo '

' . $user->lang['INSTALLER_ERROR'] . '

'; + echo '

' . $user->lang['INSTALLER_UNINSTALL_OLDVERSION'] . '

'; + include($phpbb_root_path . 'install_portal/style/layout_footer.'.$phpEx); + } + } + include($phpbb_root_path . 'install_portal/style/layout_uninstall.'.$phpEx); + } else { + include($phpbb_root_path . 'install_portal/style/layout_menu.'.$phpEx); + } + +break; +// Welcome page! +default: + + include($phpbb_root_path . 'install_portal/style/layout_menu.'.$phpEx); + +break; +} + +?> \ No newline at end of file diff --git a/root/install_portal/schemas/_firebird_schema.sql b/root/install_portal/schemas/_firebird_schema.sql new file mode 100644 index 00000000..f713711c --- /dev/null +++ b/root/install_portal/schemas/_firebird_schema.sql @@ -0,0 +1,14 @@ +# +# $Id: $ +# + + +# Table: 'phpbb_portal_config' +CREATE TABLE phpbb_portal_config ( + config_name VARCHAR(255) CHARACTER SET NONE DEFAULT '' NOT NULL, + config_value VARCHAR(255) CHARACTER SET NONE DEFAULT '' NOT NULL +);; + +ALTER TABLE phpbb_portal_config ADD PRIMARY KEY (config_name);; + + diff --git a/root/install_portal/schemas/_mssql_schema.sql b/root/install_portal/schemas/_mssql_schema.sql new file mode 100644 index 00000000..b046e576 --- /dev/null +++ b/root/install_portal/schemas/_mssql_schema.sql @@ -0,0 +1,30 @@ +/* + + $Id: $ + +*/ + +BEGIN TRANSACTION +GO + +/* + Table: 'phpbb_portal_config' +*/ +CREATE TABLE [phpbb_portal_config] ( + [config_name] [varchar] (255) DEFAULT ('') NOT NULL , + [config_value] [varchar] (255) DEFAULT ('') NOT NULL +) ON [PRIMARY] +GO + +ALTER TABLE [phpbb_portal_config] WITH NOCHECK ADD + CONSTRAINT [PK_phpbb_portal_config] PRIMARY KEY CLUSTERED + ( + [config_name] + ) ON [PRIMARY] +GO + + + +COMMIT +GO + diff --git a/root/install_portal/schemas/_mysql_40_schema.sql b/root/install_portal/schemas/_mysql_40_schema.sql new file mode 100644 index 00000000..ef7b2b18 --- /dev/null +++ b/root/install_portal/schemas/_mysql_40_schema.sql @@ -0,0 +1,12 @@ +# +# $Id: $ +# + +# Table: 'phpbb_portal_config' +CREATE TABLE phpbb_portal_config ( + config_name varbinary(255) DEFAULT '' NOT NULL, + config_value varbinary(255) DEFAULT '' NOT NULL, + PRIMARY KEY (config_name) +); + + diff --git a/root/install_portal/schemas/_mysql_41_schema.sql b/root/install_portal/schemas/_mysql_41_schema.sql new file mode 100644 index 00000000..ad7b4408 --- /dev/null +++ b/root/install_portal/schemas/_mysql_41_schema.sql @@ -0,0 +1,12 @@ +# +# $Id: $ +# + +# Table: 'phpbb_portal_config' +CREATE TABLE phpbb_portal_config ( + config_name varchar(255) DEFAULT '' NOT NULL, + config_value varchar(255) DEFAULT '' NOT NULL, + PRIMARY KEY (config_name) +) CHARACTER SET `utf8` COLLATE `utf8_bin`; + + diff --git a/root/install_portal/schemas/_oracle_schema.sql b/root/install_portal/schemas/_oracle_schema.sql new file mode 100644 index 00000000..155a45ff --- /dev/null +++ b/root/install_portal/schemas/_oracle_schema.sql @@ -0,0 +1,54 @@ +/* + + $Id: $ + +*/ + +/* + This first section is optional, however its probably the best method + of running phpBB on Oracle. If you already have a tablespace and user created + for phpBB you can leave this section commented out! + + The first set of statements create a phpBB tablespace and a phpBB user, + make sure you change the password of the phpBB user before you run this script!! +*/ + +/* +CREATE TABLESPACE "PHPBB" + LOGGING + DATAFILE 'E:\ORACLE\ORADATA\LOCAL\PHPBB.ora' + SIZE 10M + AUTOEXTEND ON NEXT 10M + MAXSIZE 100M; + +CREATE USER "PHPBB" + PROFILE "DEFAULT" + IDENTIFIED BY "phpbb_password" + DEFAULT TABLESPACE "PHPBB" + QUOTA UNLIMITED ON "PHPBB" + ACCOUNT UNLOCK; + +GRANT ANALYZE ANY TO "PHPBB"; +GRANT CREATE SEQUENCE TO "PHPBB"; +GRANT CREATE SESSION TO "PHPBB"; +GRANT CREATE TABLE TO "PHPBB"; +GRANT CREATE TRIGGER TO "PHPBB"; +GRANT CREATE VIEW TO "PHPBB"; +GRANT "CONNECT" TO "PHPBB"; + +COMMIT; +DISCONNECT; + +CONNECT phpbb/phpbb_password; +*/ +/* + Table: 'phpbb_portal_config' +*/ +CREATE TABLE phpbb_portal_config ( + config_name varchar2(255) DEFAULT '' , + config_value varchar2(255) DEFAULT '' , + CONSTRAINT pk_phpbb_portal_config PRIMARY KEY (config_name) +) +/ + +