Viewing file: bridgemgr.php (72.43 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/*************************
Coppermine Photo Gallery
************************
Copyright (c) 2003-2008 Dev Team
v1.1 originally written by Gregory DEMAR
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 3
as published by the Free Software Foundation.
********************************************
Coppermine version: 1.4.18
$HeadURL: https://coppermine.svn.sourceforge.net/svnroot/coppermine/trunk/cpg1.4.x/bridgemgr.php $
$Revision: 4380 $
$Author: gaugau $
$Date: 2008-04-12 12:00:19 +0200 (Sa, 12 Apr 2008) $
**********************************************/
define('IN_COPPERMINE', true);
define('BRIDGEMGR_PHP', true);
require('include/init.inc.php');
///////////// function defintions start /////////////////////////////
function write_to_db($step) {
global $BRIDGE,$CONFIG,$default_bridge_data,$lang_bridgemgr_php, $previous_step, $next_step;
$error = 0;
// do the check for plausibility of posted data
foreach($_POST as $key => $value) { // loop through the posted data -- start
// filter the post data that doesn't get written
if (array_key_exists($key, $BRIDGE)) { // post data exists as db key -- start
// do the lookups
$options = explode(',', $default_bridge_data[$BRIDGE['short_name']][$key.'_used']);
foreach($options as $key2) {
$options[$key2] = trim($options[$key2], ','); // get rid of the delimiters
}
if ($options[0] != '') { // only continue with this loop if there really is an option to check --- start
if ($options[0] == 'lookfor') { // check for the existance of a local file/folder --- start
if (file_exists($value.$options[1]) == false) {
$return[$key] = sprintf($lang_bridgemgr_php['error_folder_not_exist'], '<tt>'.$value.$options[1].'</tt>','<i>'.$lang_bridgemgr_php[$key].'</i>');
}
} // check for the existance of a file/folder --- end
if ($options[0] == 'cookie') { // check for the existance of a cookie --- start
foreach ($_COOKIE as $key2 => $value2) { // loop through the cookie global var --- start
//print '<br>cookie:'.$key2.', content:'.$value2."<br />\n";
if (@strstr($key2,$value) == false && $options[1] == 'not_empty') {
$return[$key] = sprintf($lang_bridgemgr_php['error_cookie_not_readible'], '"<tt>'.$value.'</tt>*"','<i>'.$lang_bridgemgr_php[$key].'</i>');
}
} // loop through the cookie global var --- end
if (isset($temp_err)) $return[$key] = $temp_err;
} // check for the existance of a cookie --- end
if ($options[1] == 'not_empty') { // check for empty mandatory fields --- start
if ($value == '') {
$return[$key] = sprintf($lang_bridgemgr_php['error_mandatory_field_empty'], '<i>'.$lang_bridgemgr_php[$key].'</i>');
}
} // check for empty mandatory fields --- end
if ($options[0] == 'no_trailing_slash' || $options[1] == 'no_trailing_slash' || $options[2] == 'no_trailing_slash') { // check for unneeded trailing slashes --- start
if ($value != rtrim($value, '/')) {
$return[$key] = sprintf($lang_bridgemgr_php['error_no_trailing_slash'], '<i>'.$lang_bridgemgr_php[$key].'</i>');
}
} // check for unneeded traling slashes --- end
if ($options[0] == 'trailing_slash' || $options[1] == 'trailing_slash' || $options[2] == 'trailing_slash') { // check for needed trailing slashes --- start
if ($value == rtrim($value, '/')) {
$return[$key] = sprintf($lang_bridgemgr_php['error_trailing_slash'], '<i>'.$lang_bridgemgr_php[$key].'</i>');
}
} // check for needed traling slashes --- end
//print "<hr />\n";
//print $options[0].':'.$options[1].','.$options[2];
//print "<hr />\n";
} // only continue with this loop if there really is an option to check --- end
} // post data exists as db key -- end
} // loop through the posted data -- end
// loop through the expected data
//void
// do some checking according to the step we're currently in
switch ($step) {
case "choose_bbs":
if ($_POST['short_name'] == '') {
$return['short_name'] = $lang_bridgemgr_php['error_specify_bbs'];
$error++;
}
if ($_POST['short_name'] == 'custom_selector') {
$_POST['short_name'] = $_POST['custom_filename'];
if ($_POST['short_name'] == '') {
$return['short_name'] = $lang_bridgemgr_php['error_no_blank_name'];
}
if (ereg('[^A-Za-z0-9_-]',$_POST['short_name'])) {
$return['short_name'] = $lang_bridgemgr_php['error_no_special_chars'];
}
}
// check if the bridge file actually exists
if (file_exists('bridge/'.$_POST['short_name'].'.inc.php') == false) {
$return['bridge_file_not_exist'] = sprintf($lang_bridgemgr_php['error_bridge_file_not_exist'],'<i>bridge/'.$_POST['short_name'].'.inc.php</i>');
}
break;
case "settings_path":
//if ($_POST['short_name'] == '') {
// $return['short_name'] = $lang_bridgemgr_php['error_specify_bbs'];
//}
break;
case "db_group":
//if ($_POST['use_standard_groups'] == '') {
// $_POST['use_standard_groups'] = 0 ;
//}
break;
case "db_connect":
if ($default_bridge_data[$BRIDGE['short_name']]['db_hostname_used'] != '') { // check the db connection --- start
@mysql_close(); //temporarily disconnect from the coppermine database
ob_start();
$link = mysql_connect($_POST['db_hostname'], $_POST['db_username'], $_POST['db_password']);
$mysql_error_output = ob_get_contents();
ob_end_clean();
if (!$link) {
$return[$step] = $lang_bridgemgr_php['error_db_connect'].'<tt>'.$mysql_error_output.'</tt>';
} elseif ($default_bridge_data[$BRIDGE['short_name']]['db_database_name_used'] != '') { // check the database
ob_start();
$db_selected = mysql_select_db($_POST['db_database_name'], $link);
print mysql_error();
$mysql_error_output = ob_get_contents();
ob_end_clean();
if (!$db_selected) {
$return['db_database_name'] = sprintf($lang_bridgemgr_php['error_db_name'], '<i>'.$_POST['db_database_name'].'</i>', '<i>'.$lang_bridgemgr_php['db_database_name'].'</i>'). ' <tt>'.$mysql_error_output.'</tt>';
}
}
@mysql_close($link);
cpg_db_connect(); // connect back to coppermine db
} // check the db connection --- end
break;
case "db_tables":
if ($default_bridge_data[$BRIDGE['short_name']]['table_prefix_used'] != '') {
$prefix_and_table = sprintf($lang_bridgemgr_php['error_prefix_and_table'], '<i>'.$lang_bridgemgr_php['table_prefix'].'</i>');
}
@mysql_close(); //temporarily disconnect from the coppermine database
$link = @mysql_connect($BRIDGE['db_hostname'], $BRIDGE['db_username'], $BRIDGE['db_password']);
$db_selected = @mysql_select_db($BRIDGE['db_database_name'], $link);
$loop_table_names = array ('user_table', 'session_table', 'group_table', 'group_table', 'group_relation_table', 'group_mapping_table');
foreach ($loop_table_names as $key) { // loop through the possible tables --- start
if ($default_bridge_data[$BRIDGE['short_name']][$key.'_used'] != '') { // check if table exists --- start
$temp_tablename = $_POST['table_prefix'].$_POST[$key];
$result = mysql_query('SELECT * FROM '.$temp_tablename);
if (!$result) {
$return['db_'.$key] = sprintf($lang_bridgemgr_php['error_db_table'], '<i>'.$temp_tablename.'</i>', $prefix_and_table.'<i>'.$lang_bridgemgr_php[$key].'</i>'). ' <tt>'.$mysql_error_output.'</tt>';
}
@mysql_free_result($result);
} // check if table exists --- end
} // loop through the possible tables --- end
@mysql_close($link);
cpg_db_connect(); // connect back to coppermine db
break;
} // end switch
// write the post data to the database
//print_r($_POST);
foreach($_POST as $key => $value) {
// filter the post data that doesn't get written
if (array_key_exists($key, $BRIDGE)) {
if ($CONFIG['debug_mode'] != 0) { // print what actually get's written when in debug_mode
print '<span class="explanation">Writing to database: ';
print $key . '|' . $value;
print '<br /></span>';
}
if ($return[$key] != '') {
//print '|Error in this key';
} else {
cpg_db_query("UPDATE {$CONFIG['TABLE_BRIDGE']} SET value = '$value' WHERE name = '$key'");
}
//print '<br />';
}
}
$value = $_POST['bridge_enable'];
if ($value != '0' && $value != '1') {
$value = $CONFIG['bridge_enable'];
}
cpg_db_query("UPDATE {$CONFIG['TABLE_CONFIG']} SET value = '$value' WHERE name = 'bridge_enable'");
if ($_POST['clear_unused_db_fields'] == 1) {
// clear all database entries that aren't actually used with the current bridge file
// not implemented yet (not sure if necessary after all)
}
// ouput error messages, if any
if (is_array($return)) {
starttable('100%',$lang_bridgemgr_php['error_title']);
print '<tr><td class="tableb" align="left"><ul>';
foreach($return as $key) {
print '<li>'.$key.'</li>';
}
print '</ul></td></tr>';
print '<tr>'.$new_line;
print ' <td class="tablef" align="center">'.$new_line;
print ' <a href="javascript:history.back()" class="admin_menu" title="'.$lang_bridgemgr_php['back'].'" />«'.$lang_bridgemgr_php['back'].'</a>'.$new_line;
print ' </td>'.$new_line;
print '</tr>'.$new_line;
endtable();
$error = 1;
}
print '<br />';
if ($error != '') {return 'error';}
}
function cpg_check_allowed_emergency_logon($timestamp,$failures = '') {
//define the wait time (in seconds)
$wait_time = array('0','5','10','20','30','60','120', '300', '1500', '6000');
// make a real timestamp out of the date
$timestamp = strtotime($timestamp);
// if failed more than x times, the wait time will keep the same
if ($failures > count($wait_time)) {$failures = count($wait_time);}
//print 'Last logon:'.$timestamp.'|'.date('Y-m-d H:i:s', $timestamp);
//print '<br>';
$current_timestamp = time();
//print 'Current time:'.$current_timestamp.'|'.date('Y-m-d H:i:s',$current_timestamp);
//print '<br>';
$allowed_timestamp = $timestamp+($wait_time[$failures]);
//print 'Allowed logon:'.$allowed_timestamp.'|'.date('Y-m-d H:i:s', $allowed_timestamp).'|'.$wait_time[$failures];
//print '<hr>';
$difference = $allowed_timestamp - $current_timestamp;
//print 'Difference in seconds:'.$difference;
return $difference;
}
function cpg_bridge_prefill( $bridge = '', $key = '') {
global $BRIDGE,$default_bridge_data;
if ($BRIDGE[$key]) {
return $BRIDGE[$key];
} else {
return $default_bridge_data[$bridge][$key.'_default'];
}
}
function cpg_submit_button($step, $back = 'true', $columns = '3', $next = 'true')
{
global $lang_bridgemgr_php,$new_line;
$checked = '';
if ($_POST['hide_unused_fields'] != '' || $back != 'true') {
$checked = 'checked="checked"';
}
$return = ' <tr>'.$new_line;
$return .= ' <td colspan="'.$columns.'" class="tablef" align="center">'.$new_line;
$return .= ' <table border="0" cellspacing="0" cellpadding="0" width="100%"><tr>'.$new_line;
$return .= ' <td align="left">'.$new_line;
$return .= ' <input type="Checkbox" name="hide_unused_fields" id="hide_unused_fields" value="1" class="checkbox" '.$checked.' onclick="toggleUnusedFields(this);" />'.$new_line;
$return .= ' <label for="hide_unused_fields" class="clickable_option">'.$new_line;
$return .= ' <span class="explanation">'.$new_line;
$return .= ' '.$lang_bridgemgr_php['hide_unused_fields'].$new_line;
$return .= ' </span>'.$new_line;
$return .= ' </label>'.$new_line;
$return .= ' <script type="text/javascript">';
$return .= ' <!--'.$new_line;
$return .= ' //function toggleUnusedFields(el_name) {'.$new_line;
$return .= ' //var elems = el_name.getElementsById("hide_row");'.$new_line;
$return .= ' '.$new_line;
$return .= ' '.$new_line;
$return .= ' }'.$new_line;
$return .= ' -->'.$new_line;
$return .= ' </script>'.$new_line;
$return .= ' </td>'.$new_line;
$return .= ' <td align="center">'.$new_line;
if ($back == 'true') {
$return .= ' <input type="button" name="back" value="«'.$lang_bridgemgr_php['back'].'" class="button" onclick="javascript:history.back()" />'.$new_line;
}
if ($next != 'false') {
$return .= ' <input type="submit" name="submit" value="'.$lang_bridgemgr_php['next'].'»" class="button" />'.$new_line;
}
$return .= ' <input type="hidden" name="step" value="'.$step.'" />'.$new_line;
$return .= ' </td>';
$return .= ' </tr></table>';
$return .= ' </td>'.$new_line;
$return .= ' </tr>'.$new_line;
return $return;
}
function remote_file_exists ($url)
{
// currently not used - will have to be looked into: we need a reliable way to check if an url exists, even if we can not use fopen, because it is disabled in php.ini
/*
Return error codes:
1 = Invalid URL host
2 = Unable to connect to remote host
*/
$head = "";
$url_p = parse_url ($url);
if (isset ($url_p["host"]))
{ $host = $url_p["host"]; }
else
{ return 1; }
if (isset ($url_p["path"]))
{ $path = $url_p["path"]; }
else
{ $path = ""; }
$fp = fsockopen ($host, 80, $errno, $errstr, 20);
if (!$fp)
{ return 2; }
else
{
$parse = parse_url($url);
$host = $parse['host'];
fputs($fp, "HEAD ".$url." HTTP/1.1\r\n");
fputs($fp, "HOST: ".$host."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
$headers = "";
while (!feof ($fp))
{ $headers .= fgets ($fp, 128); }
}
fclose ($fp);
$arr_headers = explode("\n", $headers);
$return = false;
if (isset ($arr_headers[0]))
{ $return = strpos ($arr_headers[0], "404") === false; }
return $return;
}
function cpg_refresh_config_db_values() {
global $CONFIG;
// Retrieve DB stored configuration
$results = cpg_db_query("SELECT * FROM {$CONFIG['TABLE_CONFIG']}");
while ($row = mysql_fetch_array($results)) {
$CONFIG[$row['name']] = $row['value'];
} // while
mysql_free_result($results);
return $CONFIG;
}
function cpg_is_writable($folder)
{
$return = 0;
$file_content = "this is just a test file that hasn't been deleted properly.\nIt's safe to delete it now";
@unlink($folder.'/cpgvc_tf.txt');
if ($fd = @fopen($folder.'/cpgvc_tf.txt', 'w')) {
@fwrite($fd, $file_content);
@fclose($fd);
@unlink($folder.'/cpgvc_tf.txt');
$return = 1;
} else {
$return = -1;
}
return $return;
}
///////////// function defintions end /////////////////////////////
if (GALLERY_ADMIN_MODE) { // gallery admin mode --- start
// define the var array
// status: bridge ok, manager was ok a while ago ..
$default_bridge_data['invisionboard20'] = array(
'full_name' => 'Invision Power Board 2.x',
'short_name' => 'invisionboard20',
'support_url' => 'http://forums.invisionpower.com/',
'full_forum_url_default' => 'http://www.yoursite.com/board',
'full_forum_url_used' => 'mandatory,not_empty,no_trailing_slash',
'relative_path_to_config_file_default' => '../board/',
'relative_path_to_config_file_used' => 'lookfor,conf_global.php',
'use_post_based_groups_default' => '0',
'use_post_based_groups_used' => 'radio,1,0',
);
// status: bridge ok, manager ok
$default_bridge_data['mambo'] = array(
'full_name' => 'Mambo server',
'short_name' => 'mambo',
'support_url' => 'http://www.mamboserver.com/',
'full_forum_url_default' => 'http://www.yoursite.com/board',
'full_forum_url_used' => 'mandatory,not_empty,no_trailing_slash',
'relative_path_to_config_file_default' => '../board/',
'relative_path_to_config_file_used' => 'lookfor,configuration.php',
'use_post_based_groups_default' => '0',
'use_post_based_groups_used' => 'radio,1,0',
);
// status: bridge ok, manager ok
$default_bridge_data['phpbb'] = array(
'full_name' => 'phpBB versions prior to 2.0.18',
'short_name' => 'phpbb20',
'support_url' => 'http://www.phpbb.com/',
'full_forum_url_default' => 'http://www.yoursite.com/board',
'full_forum_url_used' => 'mandatory,not_empty,no_trailing_slash',
'relative_path_to_config_file_default' => '../board/',
'relative_path_to_config_file_used' => 'lookfor,config.php',
'use_post_based_groups_default' => '0',
'use_post_based_groups_used' => 'radio,1,0',
'cookie_prefix_default' => 'phpbb2mysql',
'cookie_prefix_used' => 'cookie',
);
$default_bridge_data['phpbb2018'] = array(
'full_name' => 'phpBB version 2.0.18 or better',
'short_name' => 'phpbb2018',
'support_url' => 'http://www.phpbb.com/',
'full_forum_url_default' => 'http://www.yoursite.com/board',
'full_forum_url_used' => 'mandatory,not_empty,no_trailing_slash',
'relative_path_to_config_file_default' => '../board/',
'relative_path_to_config_file_used' => 'lookfor,config.php',
'use_post_based_groups_default' => '0',
'use_post_based_groups_used' => 'radio,1,0',
'cookie_prefix_default' => 'phpbb2mysql',
'cookie_prefix_used' => 'cookie',
);
// status: bridge ok, manager unknown
$default_bridge_data['phpbb22'] = array(
'full_name' => 'phpBB 2.2',
'short_name' => 'phpbb22',
'support_url' => 'http://www.phpbb.com/',
'full_forum_url_default' => 'http://www.yoursite.com/board',
'full_forum_url_used' => 'mandatory,not_empty,no_trailing_slash',
'relative_path_to_config_file_default' => '../board/',
'relative_path_to_config_file_used' => 'lookfor,config.php',
'use_post_based_groups_default' => '0',
'use_post_based_groups_used' => 'radio,1,0',
);
// status: bridge unknown, manager unknown
$default_bridge_data['punbb115'] = array(
'full_name' => 'PunBB v1.1.5',
'short_name' => 'punbb115',
'support_url' => 'http://www.punbb.org/',
'full_forum_url_default' => 'http://www.yoursite.com/board',
'full_forum_url_used' => 'mandatory,not_empty,no_trailing_slash',
'relative_path_to_config_file_default' => '../board/',
'relative_path_to_config_file_used' => 'lookfor,config.php',
'use_post_based_groups_default' => '0',
);
// status: bridge ok, manager ok
$default_bridge_data['punbb12'] = array(
'full_name' => 'PunBB v1.2',
'short_name' => 'punbb12',
'support_url' => 'http://www.punbb.org/',
'full_forum_url_default' => 'http://www.yoursite.com/board',
'full_forum_url_used' => 'mandatory,not_empty,no_trailing_slash',
'relative_path_to_config_file_default' => '../board/',
'relative_path_to_config_file_used' => 'lookfor,config.php',
'use_post_based_groups_default' => '0',
'use_post_based_groups_used' => 'radio,1,0',
);
// status: bridge ok, manager ok
$default_bridge_data['smf10'] = array(
'full_name' => 'Simple Machines (SMF) 1.x',
'short_name' => 'smf10',
'support_url' => 'http://www.simplemachines.org/',
'full_forum_url_default' => 'http://www.yoursite.com/board',
'full_forum_url_used' => 'mandatory,not_empty,no_trailing_slash',
'relative_path_to_config_file_default' => '../board/',
'relative_path_to_config_file_used' => 'lookfor,Settings.php',
'use_post_based_groups_default' => '0',
'use_post_based_groups_used' => 'radio,1,0',
);
// status: bridge ok, manager ok
$default_bridge_data['smf20'] = array(
'full_name' => 'Simple Machines (SMF) 2.x',
'short_name' => 'smf20',
'support_url' => 'http://www.simplemachines.org/',
'full_forum_url_default' => 'http://www.yoursite.com/board',
'full_forum_url_used' => 'mandatory,not_empty,no_trailing_slash',
'relative_path_to_config_file_default' => '../board/',
'relative_path_to_config_file_used' => 'lookfor,Settings.php',
'use_post_based_groups_default' => '0',
'use_post_based_groups_used' => 'radio,1,0',
);
// status: bridge unknown, manager unknown
$default_bridge_data['vbulletin30'] = array(
'full_name' => 'vBulletin 3.0',
'short_name' => 'vbulletin30',
'support_url' => 'http://www.vbulletin.com/',
'full_forum_url_default' => 'http://www.yoursite.com/board',
'full_forum_url_used' => 'mandatory,not_empty,no_trailing_slash',
'relative_path_to_config_file_default' => '../board/',
'relative_path_to_config_file_used' => 'lookfor,includes/config.php',
'use_post_based_groups_default' => '0',
'use_post_based_groups_used' => 'radio,1,0',
);
$default_bridge_data['mybb'] = array(
'full_name' => 'MyBB 1.02',
'short_name' => 'mybb',
'support_url' => 'http://www.mybboard.com/',
'full_forum_url_default' => 'http://www.yoursite.com/board',
'full_forum_url_used' => 'mandatory,not_empty,no_trailing_slash',
'relative_path_to_config_file_default' => '../board/inc',
'relative_path_to_config_file_used' => 'lookfor,config.php',
'use_post_based_groups_default' => '0',
'use_post_based_groups_used' => 'radio,1,0',
);
$default_bridge_data['xmb'] = array(
'full_name' => 'XMB 1.9',
'short_name' => 'xmb',
'support_url' => 'http://www.xmbforum.com/',
'full_forum_url_default' => 'http://www.yoursite.com/board',
'full_forum_url_used' => 'mandatory,not_empty,no_trailing_slash',
'relative_path_to_config_file_default' => '../board/',
'relative_path_to_config_file_used' => 'lookfor,config.php',
'use_post_based_groups_default' => '0',
'use_post_based_groups_used' => 'radio,1,0',
);
$default_bridge_data['xoops'] = array(
'full_name' => 'Xoops 2.0',
'short_name' => 'xoops',
'support_url' => 'http://www.xoops.org/',
'full_forum_url_default' => 'http://www.yoursite.com/board',
'full_forum_url_used' => 'mandatory,not_empty,no_trailing_slash',
'relative_path_to_config_file_default' => '../board/',
'relative_path_to_config_file_used' => 'lookfor,mainfile.php',
'use_post_based_groups_default' => '0',
'use_post_based_groups_used' => 'radio,1,0',
);
$default_bridge_data['phorum'] = array(
'full_name' => 'Phorum 5',
'short_name' => 'phorum',
'support_url' => 'http://www.phorum.org/',
'full_forum_url_default' => '',
'full_forum_url_used' => '',
'relative_path_to_config_file_default' => '../phorum/',
'relative_path_to_config_file_used' => 'lookfor,common.php',
'use_post_based_groups_default' => '0',
'use_post_based_groups_used' => 'radio,1,0',
);
//////////////// main code start //////////////////////
// initialize vars
$step = $_POST['step'];
if (!$step) {
$step = 'finalize';
}
$new_line = "\n";
/*
$next_step = array( // this defines the order of steps
'choose_bbs' => 'settings_path',
'settings_path' => 'db_connect',
'db_connect' => 'db_tables',
'db_tables' => 'db_groups',
'db_groups' => 'special_settings',
'special_settings' => 'finalize',
'finalize' => 'finalize',
);
*/
$next_step = array( // this defines the order of steps
'choose_bbs' => 'settings_path',
'settings_path' => 'special_settings',
'special_settings' => 'finalize',
'finalize' => 'finalize',
);
$previous_step = array_flip($next_step);
pageheader($lang_bridgemgr_php['title']);
echo <<<EOT
<style type="text/css">
.explanation {font-size: 80%;}
.important {color:red;}
</style>
EOT;
//print 'Current step:'.$step.', previous step:'.$previous_step[$step].', next step:'.$next_step[$step]; // debug ouput
// get the bridge db vars first
$BRIDGE = cpg_get_bridge_db_values();
//print_r($BRIDGE);
//print '<hr>';
switch ($step) {
case "choose_bbs":
$BRIDGE = cpg_get_bridge_db_values();
print '<form name="'.$step.'" action="'.$_SERVER['PHP_SELF'].'" method="post">';
//print '<input type="hidden" name="hide_unused_fields" value="1" />';
starttable('100%', $lang_bridgemgr_php['title'].': '.$lang_bridgemgr_php['choose_bbs_app'],2);
$checked[$BRIDGE['short_name']] = 'checked="checked"';
foreach($default_bridge_data as $key => $value) {
print '<tr>'.$new_line;
print ' <td class="tableb">'.$new_line;
print ' <input type="Radio" name="short_name" id="'.$key.'" class="radio" value="'.$key.'" '.$checked[$key].' />'.$new_line;
print ' <label for="'.$key.'" class="clickable_option">'.$new_line;
print ' '.$value['full_name'].$new_line;
print ' </label>'.$new_line;
print ' </td>'.$new_line;
print ' <td class="tableb">'.$new_line;
print ' <span class="explanation">'.$new_line;
print ' <a href="'.$value['support_url'].'" title="'.$lang_bridgemgr_php['support_url'].'" rel="external">'.$value['support_url'].'</a>'.$new_line;
print ' </span>'.$new_line;
print ' </td>'.$new_line;
print '</tr>'.$new_line;
} // end foreach
// loop through the pre-made bridges. If there's one in the db that doesn't exist in the bridges, that's our custom theme; prefill the form fields with it.
$prefill = '';
$checked = '';
$custom_bridge_counter_exist = 0;
foreach($default_bridge_data as $key => $value) {
if ($BRIDGE['short_name'] == $key) {
$custom_bridge_counter_exist++;
}
}
if ($custom_bridge_counter_exist == 0) { // we have a custom bridge --- start
$prefill = $BRIDGE['short_name'];
$checked = 'checked="checked"';
} // we have a custom bridge --- end
// form field for the custom bridge
print '<tr>'.$new_line;
print ' <td class="tableb">'.$new_line;
print ' <input type="Radio" name="short_name" id="custom_selector" class="radio" value="custom_selector" '.$checked.' onclick="document.'.$step.'.custom_filename.focus();" />'.$new_line;
//print ' <label for="custom_selector" class="clickable_option">'.$new_line;
print ' <input type="text" name="custom_filename" value="'.$prefill.'" size="30" class="textinput" onclick="document.getElementById(\'custom_selector\').checked=true;" />'.$new_line;
//print ' </label>'.$new_line;
print ' </td>'.$new_line;
print ' <td class="tableb">'.$new_line;
print ' <span class="explanation">'.$new_line;
print ' '.$lang_bridgemgr_php['custom_bridge_file'].$new_line;
print ' </span>'.$new_line;
print ' </td>'.$new_line;
print '</tr>'.$new_line;
print cpg_submit_button($next_step[$step], 'false', '2');
endtable();
print "</form>\n";
break;
case "settings_path":
$error = write_to_db($previous_step[$step]);
if (!$error) {
$BRIDGE = cpg_get_bridge_db_values();
print '<form name="'.$step.'" action="'.$_SERVER['PHP_SELF'].'" method="post">';
starttable('100%',$lang_bridgemgr_php['title'].': '.$lang_bridgemgr_php['settings_path'], 3);
$loop_array = array('full_forum_url','relative_path_of_forum_from_webroot','relative_path_to_config_file', 'cookie_prefix');
$rows_displayed = 0;
$section_number = 0;
foreach($loop_array as $key) {
$prefill = cpg_bridge_prefill($BRIDGE['short_name'],$key);
if ($key == 'relative_path_of_forum_from_webroot') {
$minibrowser = '<a href="javascript:;" onclick="MM_openBrWindow(\'minibrowser.php?startfolder='.rawurlencode($prefill).'&parentform='.rawurlencode($step).'&formelementname='.rawurlencode($key).'\',\''.uniqid(rand()) .'\',\'scrollbars=yes,toolbar=no,status=no,locationbar=no,resizable=yes,width=600,height=400\')"><img src="images/folder.gif" width="16" height="16" border="0" alt="" title="'.$lang_bridgemgr_php['browse'].'" /></a>';
} else {
$minibrowser = '';
}
$reset_to_default = '';
if ($default_bridge_data[$BRIDGE['short_name']][$key.'_used'] == '') {
$disabled = 'disabled="disabled" style="background-color:InactiveCaptionText;color:GrayText"';
$minibrowser = '';
} else {
$disabled = '';
$rows_displayed++;
if ($default_bridge_data[$BRIDGE['short_name']][$key.'_default'] != '') {
$reset_to_default = '<img src="images/flags/reset.gif" width="16" height="11" border="0" alt="" title="'.$lang_bridgemgr_php['reset_to_default'].'" style="cursor:pointer" onclick="document.getElementById(\''.$key.'\').value=\''.$default_bridge_data[$BRIDGE['short_name']][$key.'_default'].'\'" />';
}
}
if ($_POST['hide_unused_fields'] != 1 || $disabled == '')
{
print '<tr>'.$new_line;
print ' <td class="tableb">'.$new_line;
print ' '.$lang_bridgemgr_php[$key].':'.$new_line;
print ' </td>'.$new_line;
print ' <td class="tableb" style="overflow:visible">'.$new_line;
print ' <input type="text" name="'.$key.'" id="'.$key.'" class="textinput" value="'.$prefill.'" '.$disabled.' size="50" />'.$minibrowser.$reset_to_default.$new_line;
print ' </td>'.$new_line;
print ' <td class="tableb">'.$new_line;
print $display1.$new_line;
print ' <span class="explanation">'.$lang_bridgemgr_php[$key.'_explanation'].'</span>'.$new_line;
print $display2.$new_line;
print ' </td>'.$new_line;
print '</tr>'.$new_line;
}
}
if ($rows_displayed == 0) {
print '<tr>';
print ' <td class="tableh2" colspan="3" align="center">';
print ' <h2>'.$lang_bridgemgr_php['no_action_needed'].'</h2>';
print ' </td>';
print '</tr>';
}
print cpg_submit_button($next_step[$step]);
endtable();
print "</form>\n";
} // end if not error
break;
case "db_connect":
$error = write_to_db($previous_step[$step]);
if (!$error) {
$BRIDGE = cpg_get_bridge_db_values();
print '<form name="'.$step.'" action="'.$_SERVER['PHP_SELF'].'" method="post">';
starttable('100%',$lang_bridgemgr_php['title'].': '.$lang_bridgemgr_php['database_connection'], 3);
$loop_array = array('db_database_name','db_hostname','db_username','db_password');
$rows_displayed = 0;
foreach($loop_array as $key) {
$prefill = cpg_bridge_prefill($BRIDGE['short_name'],$key);
$reset_to_default = '';
if ($default_bridge_data[$BRIDGE['short_name']][$key.'_used'] == '') {
$disabled = 'disabled="disabled" style="background-color:InactiveCaptionText;color:GrayText"';
} else {
$disabled = '';
$rows_displayed++;
if ($default_bridge_data[$BRIDGE['short_name']][$key.'_default'] != '') {
$reset_to_default = '<img src="images/flags/reset.gif" width="16" height="11" border="0" alt="" title="'.$lang_bridgemgr_php['reset_to_default'].'" style="cursor:pointer" onclick="document.getElementById(\''.$key.'\').value=\''.$default_bridge_data[$BRIDGE['short_name']][$key.'_default'].'\'" />';
}
}
if ($default_bridge_data[$BRIDGE['short_name']][$key.'_used'] == 'password') {$fieldtype = 'password';} else {$fieldtype = 'text';}
if ($_POST['hide_unused_fields'] != 1 || $disabled == '')
{
//print $default_bridge_data[$BRIDGE['short_name']][$key.'_used'].'|<br>';
print '<tr>';
print ' <td class="tableb">';
print ' '.$lang_bridgemgr_php[$key].':';
print ' </td>';
print ' <td class="tableb">';
print ' <input type="'.$fieldtype.'" name="'.$key.'" id="'.$key.'" class="textinput" value="'.$prefill.'" '.$disabled.' size="30" style="width:80%" />'.$reset_to_default;
print ' </td>';
print ' <td class="tableb">';
print ' <span class="explanation">'.$lang_bridgemgr_php[$key.'_explanation'].'</span>';
print ' </td>';
print '</tr>';
}
}
if ($rows_displayed == 0) {
print '<tr>';
print ' <td class="tableh2" colspan="3" align="center">';
print ' <h2>'.$lang_bridgemgr_php['no_action_needed'].'</h2>';
print ' </td>';
print '</tr>';
}
print cpg_submit_button($next_step[$step]);
endtable();
print "</form>\n";
} // end if error
break;
case "db_tables":
$error = write_to_db($previous_step[$step]);
if (!$error) {
$BRIDGE = cpg_get_bridge_db_values();
print '<form name="'.$step.'" action="'.$_SERVER['PHP_SELF'].'" method="post">';
starttable('100%',$lang_bridgemgr_php['title'].': '.$lang_bridgemgr_php['database_tables'], 3);
$loop_array = array('table_prefix', 'user_table', 'session_table', 'group_table', 'group_relation_table', 'group_mapping_table');
$rows_displayed = 0;
foreach($loop_array as $key) {
$prefill = cpg_bridge_prefill($BRIDGE['short_name'],$key);
$reset_to_default = '';
if ($default_bridge_data[$BRIDGE['short_name']][$key.'_used'] == '') {
$disabled = 'disabled="disabled" style="background-color:InactiveCaptionText;color:GrayText"';
} else {
$disabled = '';
$rows_displayed++;
if ($default_bridge_data[$BRIDGE['short_name']][$key.'_default'] != '') {
$reset_to_default = '<img src="images/flags/reset.gif" width="16" height="11" border="0" alt="" title="'.$lang_bridgemgr_php['reset_to_default'].'" style="cursor:pointer" onclick="document.getElementById(\''.$key.'\').value=\''.$default_bridge_data[$BRIDGE['short_name']][$key.'_default'].'\'" />';
}
}
if ($default_bridge_data[$BRIDGE['short_name']][$key.'_used'] == 'password') {$fieldtype = 'password';} else {$fieldtype = 'text';}
if ($_POST['hide_unused_fields'] != 1 || $disabled == '')
{
//print $default_bridge_data[$BRIDGE['short_name']][$key.'_used'].'|<br>';
print '<tr>';
print ' <td class="tableb">';
print ' '.$lang_bridgemgr_php[$key].':';
print ' </td>';
print ' <td class="tableb">';
print ' <input type="'.$fieldtype.'" name="'.$key.'" id="'.$key.'" class="textinput" value="'.$prefill.'" '.$disabled.' size="30" style="width:80%" />'.$reset_to_default;
print ' </td>';
print ' <td class="tableb">';
print ' <span class="explanation">'.$lang_bridgemgr_php[$key.'_explanation'].'</span>';
print ' </td>';
print '</tr>';
}
}
if ($rows_displayed == 0) {
print '<tr>'.$new_line;
print ' <td class="tableh2" colspan="3" align="center">'.$new_line;
print ' <h2>'.$lang_bridgemgr_php['no_action_needed'].'</h2>'.$new_line;
print ' </td>'.$new_line;
print '</tr>'.$new_line;
}
print cpg_submit_button($next_step[$step]);
endtable();
print "</form>\n";
} // end if error
break;
case "db_groups":
$error = write_to_db($previous_step[$step]);
if (!$error) {
$BRIDGE = cpg_get_bridge_db_values();
print '<form name="'.$step.'" action="'.$_SERVER['PHP_SELF'].'" method="post">';
starttable('100%',$lang_bridgemgr_php['title'].': '.$lang_bridgemgr_php['bbs_groups'], 3);
if ($default_bridge_data[$BRIDGE['short_name']]['use_standard_groups_used'] != '')
{
if ($BRIDGE['use_standard_groups'] != '') {
$prefill = $BRIDGE['use_standard_groups'];
} else {
$prefill = $default_bridge_data[$BRIDGE['short_name']]['use_standard_groups_default'];
}
if ($prefill == 1) {
$checked = 'checked="checked"';
} else {
$checked = '';
}
print '<tr>'.$new_line;
print ' <td class="tableb" colspan="2" align="left">'.$new_line;
print ' <input type="hidden" name="use_standard_groups" id="use_standard_groups" value="'.$prefill.'" />'.$new_line;
print ' <input type="checkbox" name="dummy_use_standard_groups" id="dummy_use_standard_groups" class="checkbox" value="1" '.$checked.' onclick="toggleGroupFields();" />'.$new_line;
print ' <label for="dummy_use_standard_groups" class="clickable_option">'.$lang_bridgemgr_php['use_standard_groups'].'</label>'.$new_line;
print ' </td>'.$new_line;
print ' <td class="tableb">'.$new_line;
print ' <span class="explanation">'.$lang_bridgemgr_php['use_standard_groups_explanation'].'</span>'.$new_line;
print ' </td>'.$new_line;
print '</tr>'.$new_line;
}
$loop_array = array('validating_group', 'guest_group', 'member_group', 'admin_group', 'banned_group', 'global_moderators_group');
$rows_displayed = 0;
foreach($loop_array as $key) { // foreach loop start
$prefill = cpg_bridge_prefill($BRIDGE['short_name'],$key);
$reset_to_default = '';
if ($default_bridge_data[$BRIDGE['short_name']][$key.'_used'] == '') {
$disabled = 'disabled="disabled" style="background-color:InactiveCaptionText;color:GrayText"';
} else {
$disabled = '';
$rows_displayed++;
if ($default_bridge_data[$BRIDGE['short_name']][$key.'_default'] != '') {
$reset_to_default = '<img src="images/flags/reset.gif" width="16" height="11" border="0" alt="" title="'.$lang_bridgemgr_php['reset_to_default'].'" style="cursor:pointer" onclick="document.getElementById(\''.$key.'\').value=\''.$default_bridge_data[$BRIDGE['short_name']][$key.'_default'].'\'" />';
}
}
if ($default_bridge_data[$BRIDGE['short_name']][$key.'_used'] == 'password') {$fieldtype = 'password';} else {$fieldtype = 'text';}
if ($_POST['hide_unused_fields'] != 1 || $disabled == '')
{
print '<tr>'.$new_line;
print ' <td class="tableb">'.$new_line;
print ' '.$lang_bridgemgr_php[$key].':'.$new_line;
print ' </td>'.$new_line;
print ' <td class="tableb">'.$new_line;
print ' <input type="'.$fieldtype.'" name="'.$key.'" id="'.$key.'" class="textinput" value="'.$prefill.'" '.$disabled.' size="30" style="width:80%" />'.$reset_to_default.$new_line;
print ' </td>'.$new_line;
print ' <td class="tableb">'.$new_line;
print ' <span class="explanation">'.$lang_bridgemgr_php[$key.'_explanation'].'</span>'.$new_line;
print ' </td>'.$new_line;
print '</tr>'.$new_line;
$keywords[] = $key;
}
} // foreach loop end
if ($rows_displayed == 0) {
print '<tr>'.$new_line;
print ' <td class="tableh2" colspan="3" align="center">'.$new_line;
print ' <h2>'.$lang_bridgemgr_php['no_action_needed'].'</h2>'.$new_line;
print ' </td>'.$new_line;
print '</tr>'.$new_line;
} else {
// dome dhtml magic to disable the input fields in case they get overridden with the option 'use_standard_groups' anyway
print '<script type="text/javascript">'.$new_line;
print '<!--'.$new_line;
print 'toggleGroupFields();'.$new_line;
print 'function toggleGroupFields() {'.$new_line;
print ' var use_standard_groups = document.getElementById("dummy_use_standard_groups").checked;'.$new_line;
print ' if (use_standard_groups == true) {'.$new_line;
print ' AllGroupFieldsDisable();'.$new_line;
print ' document.getElementById("use_standard_groups").value = 1;'.$new_line;
print ' }'.$new_line;
print ' if (use_standard_groups == false) {'.$new_line;
print ' AllGroupFieldsEnable();'.$new_line;
print ' document.getElementById("use_standard_groups").value = 0;'.$new_line;
print ' }'.$new_line;
print '}'.$new_line;
print 'function AllGroupFieldsDisable() {'.$new_line;
foreach($keywords as $key) {
print ' document.getElementById("'.$key.'").disabled = true;'.$new_line;
print ' document.getElementById("'.$key.'").style.backgroundColor = \'InactiveCaptionText\';'.$new_line;
print ' document.getElementById("'.$key.'").style.color = \'GrayText\';'.$new_line;
}
print '}'.$new_line;
print 'function AllGroupFieldsEnable() {'.$new_line;
foreach($keywords as $key) {
print ' document.getElementById("'.$key.'").disabled = false;'.$new_line;
print ' document.getElementById("'.$key.'").style.backgroundColor = \'Window\';'.$new_line;
print ' document.getElementById("'.$key.'").style.color = \'MenuText\';'.$new_line;
}
print '}'.$new_line;
print '-->'.$new_line;
print '</script>'.$new_line;
}
print cpg_submit_button($next_step[$step]);
endtable();
print "</form>\n";
} // end if error
break;
case "special_settings":
$error = write_to_db($previous_step[$step]);
if (!$error) {
$BRIDGE = cpg_get_bridge_db_values();
print '<form name="'.$step.'" action="'.$_SERVER['PHP_SELF'].'" method="post">';
starttable('100%',$lang_bridgemgr_php['title'].': '.$lang_bridgemgr_php['special_settings'], 3);
$loop_array = array('logout_flag', 'use_post_based_groups','license_number');
$rows_displayed = 0;
foreach($loop_array as $key) { // foreach loop_array --- start
if ($BRIDGE[$key]) {
$prefill = $BRIDGE[$key];
} else {
$prefill = $default_bridge_data[$BRIDGE['short_name']][$key.'_default'];
}
//print 'key:'.$key.',prefill:'.$prefill.'<br>';
//print_r($default_bridge_data[$BRIDGE['short_name']]);
//if ($default_bridge_data['phpbb']['logout_flag_default'] == true){print '<h1>true</h1>';}else{print '<h1>not true</h1>';}
$reset_to_default = '';
if ($default_bridge_data[$BRIDGE['short_name']][$key.'_used'] == '') {
$disabled = 'disabled="disabled"';
} else {
$disabled = '';
$rows_displayed++;
}
// get the possible options for the value
// e.g. 'option_name_used' => 'radio,1,0',
$option_yes = '';
$option_no = '';
$options = explode(',', $default_bridge_data[$BRIDGE['short_name']][$key.'_used']);
//print_r($options);
if ($options[0] == 'radio') {$option_yes = $options[1]; $option_no = $options[2];}
if ($BRIDGE[$key] == $options[1]) {
$checked_yes = 'checked="checked"';
$checked_no = '';
} elseif ($BRIDGE[$key] == $options[2]) {
$checked_yes = '';
$checked_no = 'checked="checked"';
}
//if ($BRIDGE[$key] == 1){print $key.'true<br>';}
//if ($BRIDGE[$key] == 0){print $key.'false<br>';}
//print $key.$BRIDGE[$key];
if ($default_bridge_data[$BRIDGE['short_name']][$key.'_used'] == 'password') {$fieldtype = 'password';} else {$fieldtype = 'text';}
if ($_POST['hide_unused_fields'] != 1 || $disabled == '') { // actually display the row? --- start
if ($options[0] == 'radio') { // radio button --- start
print '<tr>'.$new_line;
print ' <td class="tableb">'.$new_line;
print ' '.$lang_bridgemgr_php[$key].':'.$new_line;
print ' </td>'.$new_line;
print ' <td class="tableb">'.$new_line;
print ' <input type="Radio" name="'.$key.'" id="'.$key.'_yes" class="radio" value="'.$option_yes.'" '.$disabled.' '.$checked_yes.' />'.$new_line;
print ' <label for="'.$key.'_yes" class="clickable_option">'.$new_line;
print ' '.$lang_bridgemgr_php[$key.'_yes'].$new_line;
print ' </label> '.$new_line;
print ' <br />'.$new_line;
print ' <input type="Radio" name="'.$key.'" id="'.$key.'_no" class="radio" value="'.$option_no.'" '.$disabled.' '.$checked_no.' /><label for="'.$key.'_no" class="clickable_option">'.$lang_bridgemgr_php[$key.'_no'].'</label>'.$new_line;
print ' </td>'.$new_line;
print ' <td class="tableb">'.$new_line;
print ' <span class="explanation">'.$lang_bridgemgr_php[$key.'_explanation'].'</span>'.$new_line;
print ' </td>'.$new_line;
print '</tr>'.$new_line;
} // radio button --- end
if ($options[0] == 'mandatory') { // input field --- start
print '<tr>'.$new_line;
print ' <td class="tableb">'.$new_line;
print ' '.$lang_bridgemgr_php[$key].':'.$new_line;
print ' </td>'.$new_line;
print ' <td class="tableb">'.$new_line;
print ' <input type="'.$fieldtype.'" name="'.$key.'" id="'.$key.'" class="textinput" value="'.$prefill.'" '.$disabled.' size="30" style="width:80%" />'.$reset_to_default.$new_line;
print ' </td>'.$new_line;
print ' <td class="tableb">'.$new_line;
print ' <span class="explanation">'.$lang_bridgemgr_php[$key.'_explanation'].'</span>'.$new_line;
print ' </td>'.$new_line;
print '</tr>'.$new_line;
} // input field --- end
if ($options[0] == 'checkbox') { // checkbox --- start
print '<tr>'.$new_line;
print ' <td class="tableb" colspan="2">'.$new_line;
print ' <input type="checkbox" name="'.$key.'" id="'.$key.'" class="checkbox" value="1" '.$checked.' />'.$new_line;
print ' <label for="'.$key.'" class="clickable_option">'.$new_line;
print ' '.$lang_bridgemgr_php[$key].$new_line;
print ' </label> '.$new_line;
print ' </td>'.$new_line;
print ' <td class="tableb">'.$new_line;
print ' <span class="explanation">'.$lang_bridgemgr_php[$key.'_explanation'].'</span>'.$new_line;
print ' </td>'.$new_line;
print '</tr>'.$new_line;
} // checkbox --- end
} // actually display the row? --- end
} // foreach loop_array --- end
if ($default_bridge_data[$BRIDGE['short_name']]['create_redir_file_content'] != '') { // create redirection file question --- start
// sub-step1: make up the content of the redir file
$default_bridge_data[$BRIDGE['short_name']]['create_redir_file_content'] = str_replace('{COPPERMINE_URL}', rtrim($CONFIG['ecards_more_pic_target'], '/').'/', $default_bridge_data[$BRIDGE['short_name']]['create_redir_file_content']);
// sub-step2: can we read the folder it's suppossed to go into?
// sub-step3: is the redir file already in place and if yes: does it match the content we have come up with?
// sub-step4: is the folder writable?
// if we can't write (for whatever reason), just output the contents for copy and paste
// what do we need: write the file, display it only or do both?
$redir_action = explode(',', $default_bridge_data[$BRIDGE['short_name']]['create_redir_file_action']);
if (in_array('write',$redir_action)) { // the file should be created --- start
// come up with the folder the bbs resides in
if ($BRIDGE['relative_path_of_forum_from_webroot'] != '' && $default_bridge_data[$BRIDGE['short_name']]['relative_path_of_forum_from_webroot_used'] != '') {
// we have a db entry and the user appears to have it configured
$redir_folder = $BRIDGE['relative_path_of_forum_from_webroot'];
} elseif ($BRIDGE['relative_path_to_config_file'] != '' && $default_bridge_data[$BRIDGE['short_name']]['relative_path_to_config_file_used'] != '') {
// we have a relative path. We'll use it if we don't have a folder already
$redir_folder = $BRIDGE['relative_path_to_config_file'];
} else {
// something strange happened: there is no path set at all. We won't be able to write the file. Change the option to "display_only"
$default_bridge_data[$BRIDGE['short_name']]['create_redir_file_action'] = @str_replace(',write', '', $default_bridge_data[$BRIDGE['short_name']]['create_redir_file_action']);
$default_bridge_data[$BRIDGE['short_name']]['create_redir_file_action'] = @str_replace('write,', '', $default_bridge_data[$BRIDGE['short_name']]['create_redir_file_action']);
$default_bridge_data[$BRIDGE['short_name']]['create_redir_file_action'] = @str_replace('write', '', $default_bridge_data[$BRIDGE['short_name']]['create_redir_file_action']);
$redir_action = explode(',', $default_bridge_data[$BRIDGE['short_name']]['create_redir_file_action']);
}
// check if the redir file already exists
print $redir_folder;
$redir_folder_writable = cpg_is_writable($redir_folder);
if ($redir_folder_writable == '-1') {
// the redir folder is not writable
print 'Not writable';
}
} // the file should be created --- end
// display the option
// temporarily removed this section, as it's still under construction
print '<!--';
print '<tr>'.$new_line;
print ' <td class="tableb" colspan="2">'.$new_line;
print ' <input type="checkbox" name="create_redir_file" id="create_redir_file" class="checkbox" value="1" checked="checked" />'.$new_line;
print ' <label for="create_redir_file" class="clickable_option">'.$new_line;
print ' <span class="explanation">'.$new_line;
print ' '.$lang_bridgemgr_php['create_redir_file'].$new_line;
print ' </span>'.$new_line;
print ' </label> '.$new_line;
print ' </td>'.$new_line;
print ' <td class="tableb">'.$new_line;
print ' <span class="explanation">'.$new_line;
print ' '.$lang_bridgemgr_php['create_redir_file_explanation'].$new_line;
print ' </span>'.$new_line;
print ' </td>'.$new_line;
print '</tr>'.$new_line;
print '<tr>'.$new_line;
print ' <td class="tableb" colspan="3">'.$new_line;
print ' <textarea style="width:100%">';
print $default_bridge_data[$BRIDGE['short_name']]['create_redir_file_content'];
print ' </textarea>';
print ' </td>'.$new_line;
print '</tr>'.$new_line;
print '-->';
// temporarily removed this section, as it's still under construction --- end
} // create redirection file question --- end
if ($rows_displayed == 0) {
print '<tr>';
print ' <td class="tableh2" colspan="3" align="center">';
print ' <h2>'.$lang_bridgemgr_php['no_action_needed'].'</h2>';
print ' </td>';
print '</tr>';
}
print cpg_submit_button($next_step[$step]);
endtable();
print "</form>\n";
} // end if error
break;
case "finalize":
$error = write_to_db($previous_step[$step]);
if (!$error) {
$BRIDGE = cpg_get_bridge_db_values();
$CONFIG = cpg_refresh_config_db_values();
// sync groups here now :)
if ($CONFIG['bridge_enable']){
include_once 'bridge/' . $BRIDGE['short_name'] . '.inc.php';
$cpg_udb->synchronize_groups();
} else {
// ok, then restore group table
cpg_db_query("DELETE FROM {$CONFIG['TABLE_USERGROUPS']} WHERE 1");
cpg_db_query("INSERT INTO {$CONFIG['TABLE_USERGROUPS']}
VALUES (1, 'Administrators', 0, 1, 1, 1, 1, 1, 1, 0, 0, 3, 0, 5, 3)");
cpg_db_query("INSERT INTO {$CONFIG['TABLE_USERGROUPS']}
VALUES (2, 'Registered', 1024, 0, 1, 1, 1, 1, 1, 1, 0, 3, 0, 5, 3)");
cpg_db_query("INSERT INTO {$CONFIG['TABLE_USERGROUPS']}
VALUES (3, 'Anonymous', 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 5, 3)");
cpg_db_query("INSERT INTO {$CONFIG['TABLE_USERGROUPS']}
VALUES (4, 'Banned', 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 5, 3)");
}
print '<form name="'.$step.'" action="'.$_SERVER['PHP_SELF'].'" method="post">';
echo <<<EOT
<script type="text/javascript">
<!--
function changeSubmitButton() {
document.finalize.submit.value='{$lang_bridgemgr_php['finish']}';
document.finalize.step.value='finalize';
document.finalize.force_startpage.value='1';
}
-->
</script>
EOT;
starttable(-1,$lang_bridgemgr_php['title'].': '.$lang_bridgemgr_php['finalize'],2);
if ($_POST['submit'] && $CONFIG['bridge_enable'] != 1) {
print '<tr>';
print '<td class="tableb" colspan="2">';
print '<span class="explanation">';
printf($lang_bridgemgr_php['finalize_explanation'],$CONFIG['ecards_more_pic_target'].'/bridgemgr.php');
print '</span>';
print '</td>';
print '</tr>';
}
if (is_array($BRIDGE)) { // there are entries in the db already --- start
print '<tr>';
print '<td class="tableh2" colspan="2">';
print $lang_bridgemgr_php['your_bridge_settings'];
print '</td>';
print '</tr>';
$mandatory_fields_missing = 0;
foreach($BRIDGE as $key => $value) {
if ($default_bridge_data[$BRIDGE['short_name']][$key.'_used'] != '') {
print '<tr>';
print ' <td class="tableb" width="50%">';
print ' <span class="explanation">'.$lang_bridgemgr_php[$key].':</span>';
print ' </td>';
print ' <td class="tableb" width="50%">';
if ($default_bridge_data[$BRIDGE['short_name']][$key.'_used'] == 'password') {
$pw = '';
for ($i=1; $i <= strlen($value);$i++) {
$pw = $pw.'*';
}
$value = $pw;
}
print ' <span class="explanation">'.$value;
// check if we really can allow enabling bridging: are all required fields in the db?
if (strstr($default_bridge_data[$BRIDGE['short_name']][$key.'_used'], 'not_empty') != false && $value == '') {
print ' (<span class="important">'.$lang_bridgemgr_php['error_must_not_be_empty'].'</span>)';
$mandatory_fields_missing++;
}
$explode = explode(',', $default_bridge_data[$BRIDGE['short_name']][$key.'_used']);
if ($explode[0] == radio && ($value != $explode[1] && $value != $explode[2])) {
printf(' ('.$lang_bridgemgr_php['error_either_be'].')',$explode[1],$explode[2]);
$mandatory_fields_missing++;
}
//print '<br>';
print '</span>';
print ' </td>';
print '</tr>';
}
}
} // there are entries in the db already --- end
if ($BRIDGE['short_name'] != '') {// display the enable/disable option only if there's at least a db entry about the file to bridge with --- start
print '<tr>';
print '<td class="tableh2" colspan="2">';
printf($lang_bridgemgr_php['title_enable'], '<b>'.$default_bridge_data[$BRIDGE['short_name']]['full_name'].'</b>');
print '</td>';
print '</tr>';
//print 'bridge enabled:'.$CONFIG['bridge_enable'];
if ($CONFIG['bridge_enable'] == 1) {
$checked_yes = 'checked="checked"';
$checked_no = '';
$disabled_yes = '';
$disabled_no = '';
} else {
$checked_yes = '';
$checked_no = 'checked="checked"';
if ($mandatory_fields_missing != 0) {
$disabled_yes = 'disabled="disabled"';
$disabled_no = '';
} else {
$disabled_yes = '';
$disabled_no = '';
}
}
} // display the enable/disable option only if there's at least a db entry about the file to bridge with --- end
if ($_POST['submit'] == '' || $_POST['wizard_finished'] != '' || $_POST['force_startpage'] == '1') {
if ($BRIDGE['short_name'] != '') {// display the enable/disable option only if there's at least a db entry about the file to bridge with --- start
print '<tr>';
print ' <td class="tableb" width="50%">';
print ' <input type="Radio" name="bridge_enable" id="bridge_enable_yes" class="radio" value="1" '.$disabled_yes.' '.$checked_yes.' onclick="changeSubmitButton();" /><label for="bridge_enable_yes" class="clickable_option">'.$lang_bridgemgr_php['bridge_enable_yes'].'</label>';
print ' </td>';
print ' <td class="tableb" width="50%">';
print ' <input type="Radio" name="bridge_enable" id="bridge_enable_no" class="radio" value="0" '.$disabled_no.' '.$checked_no.' onclick="changeSubmitButton();" /><label for="bridge_enable_no" class="clickable_option">'.$lang_bridgemgr_php['bridge_enable_no'].'</label>';
print ' </td>';
print '</tr>';
} // display the enable/disable option only if there's at least a db entry about the file to bridge with --- end
print '<tr>'.$new_line;
print ' <td colspan="2" class="tablef" align="center">'.$new_line;
print ' <table border="0" cellspacing="0" cellpadding="0" width="100%">'.$new_line;
print ' <tr>'.$new_line;
print ' <td align="left">'.$new_line;
print ' <!--<input type="Checkbox" name="hide_unused_fields" id="hide_unused_fields" value="1" class="checkbox" />'.$new_line;
print ' <label for="hide_unused_fields" class="clickable_option"><span class="explanation">hide unused form fields (recommended)</span></label>-->'.$new_line;
print ' </td>'.$new_line;
print ' <td align="center">'.$new_line;
print ' <!--<input type="button" name="back" value="«back" class="button" onclick="javascript:history.back()" />-->'.$new_line;
print ' <input type="submit" name="submit" value="'.$lang_bridgemgr_php['start_wizard'].'" class="button" />'.$new_line;
print ' <input type="hidden" name="step" value="choose_bbs" />'.$new_line;
print ' <input type="hidden" name="force_startpage" value="0" />'.$new_line;
print ' </td>'.$new_line;
print ' </tr>'.$new_line;
print ' </table>'.$new_line;
print ' </td>'.$new_line;
print '</tr>'.$new_line;
} else {
print '<tr>';
print ' <td class="tableb" width="50%">';
print ' <input type="Radio" name="bridge_enable" id="bridge_enable_yes" class="radio" value="1" '.$disabled_yes.' '.$checked_yes.' /><label for="bridge_enable_yes" class="clickable_option">'.$lang_bridgemgr_php['bridge_enable_yes'].'</label>';
print ' </td>';
print ' <td class="tableb" width="50%">';
print ' <input type="Radio" name="bridge_enable" id="bridge_enable_no" class="radio" value="0" '.$disabled_no.' '.$checked_no.' /><label for="bridge_enable_no" class="clickable_option">'.$lang_bridgemgr_php['bridge_enable_no'].'</label>';
print ' </td>';
print '</tr>';
print '<tr>'.$new_line;
print ' <td colspan="2" class="tablef" align="center">'.$new_line;
print ' <table border="0" cellspacing="0" cellpadding="0" width="100%">'.$new_line;
print ' <tr>'.$new_line;
print ' <td align="left">'.$new_line;
//print ' <input type="Checkbox" name="clear_unused_db_fields" id="clear_unused_db_fields" value="1" class="checkbox" checked="checked" />'.$new_line;
//print ' <label for="clear_unused_db_fields" class="clickable_option"><span class="explanation">'.$lang_bridgemgr_php['clear_unused_db_fields'].'</span></label>'.$new_line;
print ' </td>'.$new_line;
print ' <td align="center">'.$new_line;
print ' <input type="button" name="back" value="«'.$lang_bridgemgr_php['back'].'" class="button" onclick="javascript:history.back()" />'.$new_line;
print ' <input type="submit" name="submit" value="'.$lang_bridgemgr_php['finish'].'" class="button" />'.$new_line;
print ' <input type="hidden" name="step" value="finalize" />'.$new_line;
print ' <input type="hidden" name="wizard_finished" value="finished" />'.$new_line;
print ' </td>'.$new_line;
print ' </tr>'.$new_line;
print ' </table>'.$new_line;
print ' </td>'.$new_line;
print '</tr>'.$new_line;
}
endtable();
print '</form>';
} // end if error
break;
}
print "<br />\n";
pagefooter();
} // gallery admin mode --- end
else { // not in gallery admin mode --- start
if ($CONFIG['bridge_enable'] != 1) { cpg_die(ERROR, $lang_errors['access_denied'], __FILE__, __LINE__); }
// initialize vars
$step = $_POST['step'];
$new_line = "\n";
pageheader($lang_bridgemgr_php['title']);
switch ($step) {
case "attempt_to_disable":
// check if the wait time is over; if it isn't, send them back
$results = cpg_db_query("SELECT value FROM {$CONFIG['TABLE_BRIDGE']} WHERE name = 'recovery_logon_timestamp'");
if (mysql_num_rows($results)) {
$row = mysql_fetch_array($results);
}
$recovery_logon_timestamp = $row['value'];
//print $recovery_logon_timestamp;
$results = cpg_db_query("SELECT value FROM {$CONFIG['TABLE_BRIDGE']} WHERE name = 'recovery_logon_failures'");
if (mysql_num_rows($results)) {
$row = mysql_fetch_array($results);
}
$recovery_logon_failures = $row['value'];
$logon_allowed = cpg_check_allowed_emergency_logon($recovery_logon_timestamp,$recovery_logon_failures);
if ($logon_allowed > 0) {
// the user is not allowed to logon yet, the wait time has not elapsed yet
msg_box($lang_bridgemgr_php['recovery_wait_title'], $lang_bridgemgr_php['recovery_wait_content'], $lang_bridgemgr_php['try_again'], $_SERVER['PHP_SELF'], "-1");
} else { // the logon wait time has passed, the user is allowed to try to logon now
// go through the list of standalone admins and check if we have a match
$temp_user_table = $CONFIG['TABLE_PREFIX'].'users';
// Check if encrypted passwords are enabled
if ($CONFIG['enable_encrypted_passwords']) {
$encpassword = md5(addslashes($_POST['password']));
} else {
$encpassword = addslashes($_POST['password']);
}
$results = cpg_db_query("SELECT user_id, user_name, user_password FROM $temp_user_table WHERE user_name = '" . addslashes($_POST['username']) . "' AND BINARY user_password = '" . $encpassword . "' AND user_active = 'YES' AND user_group = '1'");
if (mysql_num_rows($results)) {
$retrieved_data = mysql_fetch_array($results);
}
if ($retrieved_data['user_name'] == $_POST['username'] && $retrieved_data['user_password'] == $encpassword && $retrieved_data['user_name'] != '' ) {
// authentification successfull
cpg_db_query("UPDATE {$CONFIG['TABLE_CONFIG']} SET value = '0' WHERE name = 'bridge_enable'");
cpg_db_query("UPDATE {$CONFIG['TABLE_BRIDGE']} SET value = '0' WHERE name = 'recovery_logon_failures'");
cpg_db_query("UPDATE {$CONFIG['TABLE_BRIDGE']} SET value = NOW() WHERE name = 'recovery_logon_timestamp'");
// ok, then restore group table
cpg_db_query("DELETE FROM {$CONFIG['TABLE_USERGROUPS']} WHERE 1");
cpg_db_query("INSERT INTO {$CONFIG['TABLE_USERGROUPS']}
VALUES (1, 'Administrators', 0, 1, 1, 1, 1, 1, 1, 0, 0, 3, 0, 5, 3)");
cpg_db_query("INSERT INTO {$CONFIG['TABLE_USERGROUPS']}
VALUES (2, 'Registered', 1024, 0, 1, 1, 1, 1, 1, 1, 0, 3, 0, 5, 3)");
cpg_db_query("INSERT INTO {$CONFIG['TABLE_USERGROUPS']}
VALUES (3, 'Anonymous', 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 5, 3)");
cpg_db_query("INSERT INTO {$CONFIG['TABLE_USERGROUPS']}
VALUES (4, 'Banned', 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 5, 3)");
if (USER_ID) { //user already logged in
msg_box($lang_bridgemgr_php['recovery_success_title'], $lang_bridgemgr_php['recovery_success_content'], $lang_bridgemgr_php['goto_bridgemgr'], $_SERVER['PHP_SELF'], "-1");
} else { // user not logged in yet
msg_box($lang_bridgemgr_php['recovery_success_title'], $lang_bridgemgr_php['recovery_success_content'].'<br />'.$lang_bridgemgr_php['recovery_success_advice_login'], $lang_bridgemgr_php['goto_login'], "login.php?referer=".$_SERVER['PHP_SELF'], "-1");
}
} else {
// authentification failed
cpg_db_query("UPDATE {$CONFIG['TABLE_BRIDGE']} SET value = NOW() WHERE name = 'recovery_logon_timestamp'");
$results = cpg_db_query("SELECT value FROM {$CONFIG['TABLE_BRIDGE']} WHERE name = 'recovery_logon_failures'");
if (mysql_num_rows($results)) {
$row = mysql_fetch_array($results);
}
$number_of_failed_attempts = $row['value'] + 1;
cpg_db_query("UPDATE {$CONFIG['TABLE_BRIDGE']} SET value = '$number_of_failed_attempts' WHERE name = 'recovery_logon_failures'");
msg_box($lang_bridgemgr_php['recovery_failure_title'], $lang_bridgemgr_php['recovery_failure_content'], $lang_bridgemgr_php['try_again'], $_SERVER['PHP_SELF'], "-1");
}
}
break;
default:
// check if the wait time is over; if it isn't, disable the submit button
$results = cpg_db_query("SELECT value FROM {$CONFIG['TABLE_BRIDGE']} WHERE name = 'recovery_logon_timestamp'");
if (mysql_num_rows($results)) {
$row = mysql_fetch_array($results);
}
$recovery_logon_timestamp = $row['value'];
//print $recovery_logon_timestamp;
$results = cpg_db_query("SELECT value FROM {$CONFIG['TABLE_BRIDGE']} WHERE name = 'recovery_logon_failures'");
if (mysql_num_rows($results)) {
$row = mysql_fetch_array($results);
}
$recovery_logon_failures = $row['value'];
$logon_allowed = cpg_check_allowed_emergency_logon($recovery_logon_timestamp,$recovery_logon_failures);
if ($logon_allowed < 0) {$logon_allowed = 0;}
starttable(-1,$lang_bridgemgr_php['recovery_title'],2);
echo <<<EOT
<form name="disable_integration" action="{$_SERVER['PHP_SELF']}" method="post">
<tr>
<td class="tableb" colspan="2">
{$lang_bridgemgr_php['recovery_explanation']}
</td>
</tr>
<tr>
<td class="tableb" width="40%">{$lang_bridgemgr_php['username']}</td>
<td class="tableb" width="60%"><input type="text" class="textinput" name="username" style="width: 100%" /></td>
</tr>
<tr>
<td class="tableb">{$lang_bridgemgr_php['password']}</td>
<td class="tableb"><input type="password" class="textinput" name="password" style="width: 100%" /></td>
</tr>
<tr>
<td class="tablef" colspan="2" align="center">
<input type="submit" name="submit" id="submit" value="{$lang_bridgemgr_php['disable_submit']}" class="button" />
<input type="hidden" name="step" value="attempt_to_disable" />
</td>
</tr>
<script language="javascript" type="text/javascript">
<!--
document.disable_integration.username.focus();
document.disable_integration.submit.disabled = true;
EOT;
print ' var countDownTime = '.$logon_allowed;
echo <<<EOT
counter=setTimeout("countDown()", 1000);
var aktiv = window.setInterval("countDown()",1000);
var message = '{$lang_bridgemgr_php['wait']}';
function countDown(){
countDownTime--;
if (countDownTime <=0) {
message = '{$lang_bridgemgr_php['disable_submit']}';
document.getElementById('submit').disabled = false;
countDownTime='';
clearTimeout(counter);
//return;
}
document.getElementById('submit').value = message +' '+countDownTime;
}
window.onload=countDown();
-->
</script>
EOT;
endtable();
print '</form>';
break;
}
pagefooter();
} // not in gallery admin mode --- end
//////////////////////// main code end /////////////////////////////////
?>
|