Seite 2 von 4

Verfasst: 26.10.2003 17:41
von Orange
Acid ungleich Acyd?? :D :D du kleiner namefaker!!!! :D :D

aber ich hab was gefunden: Acyd (der mit Y :D ) regelt das ganz einfach

Code: Alles auswählen

<?
/***************************************************************************
 *                            mod_table_inst.php
 *                            -------------------
 *   begin                : Sunday, Jan 13, 2002
 *   copyright            : (C) 2002 Meik Sievertsen
 *   email                : acyd.burn@gmx.de
 *
 *   $Id: mod_table_inst.php,v 1.7 2003/02/05 21:45:30 acydburn Exp $
 *
 ***************************************************************************/

/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 ***************************************************************************/

define('IN_PHPBB', true);

$phpbb_root_path = './';
include($phpbb_root_path.'extension.inc');
include($phpbb_root_path.'common.'.$phpEx);	
	
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);

if ( (!isset($dbms)) || ($dbms == 'oracle') || ($dbms == 'msaccess') )
{
	message_die(GENERAL_ERROR, "This Mod does not support Oracle and MsAccess Databases.");
}

include($phpbb_root_path.'includes/db.'.$phpEx);

//
// Run a complete SQL-Statement, this could be an array
//
function evaluate_statement($sql_query, $hide = FALSE, $replace = FALSE)
{
	global $table_prefix, $remove_remarks, $delimiter, $db;
	
	$errored = FALSE;
	if ($replace)
	{
		$sql_query = preg_replace('/phpbb_/', $table_prefix, $sql_query);
	}

	$sql_query = $remove_remarks($sql_query);
	$sql_query = split_sql_file($sql_query, $delimiter);

	$sql_count = count($sql_query);

	for($i = 0; $i < $sql_count; $i++)
	{
		if (!$hide)
		{
			echo "Running :: " . $sql_query[$i];
		}
		flush();

		if ( !($result = $db->sql_query($sql_query[$i])) )
		{
			$errored = true;
			$error = $db->sql_error();
			if (!$hide)
			{
				echo " -> <b>FAILED</b> ---> <u>" . $error['message'] . "</u><br /><br />\n\n";
			}
		}
		else
		{
			if (!$hide)
			{
				echo " -> <b><span class=\"ok\">COMPLETED</span></b><br /><br />\n\n";
			}
		}
	}

	if ($errored)
	{
		return (FALSE);
	}
	else
	{
		return $result;
	}
}

function fill_new_table_data($dbms)
{
	
	$data = '';

	if ( ($dbms == 'mysql') || ($dbms == 'mysql4') )
	{
		$data = '
CREATE TABLE phpbb_stats_config (
  config_name varchar(50) NOT NULL default \'\',
  config_value varchar(255) NOT NULL default \'\',
  PRIMARY KEY (config_name)
);

CREATE TABLE phpbb_stats_modules (
  module_id tinyint(8) NOT NULL default \'0\',
  name varchar(150) NOT NULL default \'\',
  active tinyint(1) NOT NULL default \'0\',
  installed tinyint(1) NOT NULL default \'0\',
  display_order mediumint(8) unsigned NOT NULL default \'0\',
  update_time mediumint(8) unsigned NOT NULL default \'0\',
  auth_value tinyint(2) NOT NULL default \'0\',
  module_info_cache blob,
  module_db_cache blob,
  module_result_cache blob,
  module_info_time int(10) unsigned NOT NULL default \'0\',
  module_cache_time int(10) unsigned NOT NULL default \'0\',
  PRIMARY KEY (module_id)
);

INSERT INTO phpbb_stats_config (config_name, config_value) VALUES (\'install_date\', \'' . time() . '\');
INSERT INTO phpbb_stats_config (config_name, config_value) VALUES (\'return_limit\', \'10\');
INSERT INTO phpbb_stats_config (config_name, config_value) VALUES (\'version\', \'2.1.5\');
INSERT INTO phpbb_stats_config (config_name, config_value) VALUES (\'modules_dir\', \'stat_modules\');
INSERT INTO phpbb_stats_config (config_name, config_value) VALUES (\'page_views\', \'0\');
';
	}
	else if ( ($dbms == 'mssql') || ($dbms == 'mssql-odbc') )
	{
		$data = '
BEGIN TRANSACTION
GO

CREATE TABLE [phpbb_stats_config] (
	[config_name] [varchar] (50) NOT NULL ,
	[config_value] [varchar] (50) NOT NULL 
) ON [PRIMARY]
GO

ALTER TABLE [phpbb_stats_config] WITH NOCHECK ADD 
	CONSTRAINT [PK_phpbb_stats_config] PRIMARY KEY CLUSTERED 
	(
		[config_name]
	)  ON [PRIMARY] 
GO

CREATE TABLE [phpbb_stats_modules] (
	[module_id] [int] NOT NULL ,
	[name] [char] (150) NOT NULL ,
	[active] [int] NOT NULL,
	[installed] [int] NOT NULL,
	[display_order] [int] NOT NULL,
	[update_time] [int] NOT NULL,
	[auth_value] [int] NOT NULL,
	[module_info_cache] [text],
	[module_db_cache] [text],
	[module_result_cache] [text],
	[module_info_time] [int] NOT NULL,
	[module_cache_time] [int] NOT NULL
) ON [PRIMARY]
GO

ALTER TABLE [phpbb_stats_modules] WITH NOCHECK ADD 
	CONSTRAINT [PK_phpbb_stats_modules] PRIMARY KEY  CLUSTERED 
	(
		[module_id]
	)  ON [PRIMARY] 
GO

ALTER TABLE [phpbb_stats_modules] WITH NOCHECK ADD 
	CONSTRAINT [DF_phpbb_stats_modules_module_id] DEFAULT (0) FOR [module_id],
	CONSTRAINT [DF_phpbb_stats_modules_active] DEFAULT (0) FOR [active],
	CONSTRAINT [DF_phpbb_stats_modules_installed] DEFAULT (0) FOR [installed],
	CONSTRAINT [DF_phpbb_stats_modules_display_order] DEFAULT (0) FOR [display_order],
	CONSTRAINT [DF_phpbb_stats_modules_update_time] DEFAULT (0) FOR [update_time],
	CONSTRAINT [DF_phpbb_stats_modules_auth_value] DEFAULT (0) FOR [auth_value],
	CONSTRAINT [DF_phpbb_stats_modules_module_info_time] DEFAULT (0) FOR [module_info_time],
	CONSTRAINT [DF_phpbb_stats_modules_module_cache_time] DEFAULT (0) FOR [module_cache_time]
GO

INSERT INTO phpbb_stats_config (config_name, config_value) VALUES (\'install_date\', \'' . time() . '\');
INSERT INTO phpbb_stats_config (config_name, config_value) VALUES (\'return_limit\', \'10\');
INSERT INTO phpbb_stats_config (config_name, config_value) VALUES (\'version\', \'2.1.5\');
INSERT INTO phpbb_stats_config (config_name, config_value) VALUES (\'modules_dir\', \'stat_modules\');
INSERT INTO phpbb_stats_config (config_name, config_value) VALUES (\'page_views\', \'0\');

COMMIT
GO
	';
	}
	else if ($dbms == 'postgres')
	{
		$data = '
CREATE TABLE phpbb_stats_config (
   config_name varchar(50) NOT NULL,
   config_value varchar(50) NOT NULL,
   CONSTRAINT phpbb_attachments_config_pkey PRIMARY KEY (config_name)
);

CREATE TABLE phpbb_stats_modules (
  module_id int4 NOT NULL DEFAULT 0,
  name varchar(150) NOT NULL default \'\',
  active int2 NOT NULL default 0,
  installed int2 NOT NULL default 0,
  display_order int4 NOT NULL default 0,
  update_time int4 NOT NULL default 0,
  auth_value int2 NOT NULL default 0,
  module_info_cache text,
  module_db_cache text,
  module_result_cache text,
  module_info_time int4 NOT NULL default 0,
  module_cache_time int4 NOT NULL default 0,
  CONSTRAINT phpbb_stats_modules_pkey PRIMARY KEY (module_id)
);

INSERT INTO phpbb_stats_config (config_name, config_value) VALUES (\'install_date\', \'' . time() . '\');
INSERT INTO phpbb_stats_config (config_name, config_value) VALUES (\'return_limit\', \'10\');
INSERT INTO phpbb_stats_config (config_name, config_value) VALUES (\'version\', \'2.1.5\');
INSERT INTO phpbb_stats_config (config_name, config_value) VALUES (\'modules_dir\', \'stat_modules\');
INSERT INTO phpbb_stats_config (config_name, config_value) VALUES (\'page_views\', \'0\');
';
	}

	return $data;
}

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;">
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css">
<!--

font,th,td,p,body { font-family: "Courier New", courier; font-size: 11pt }

a:link,a:active,a:visited { color : #006699; }
a:hover		{ text-decoration: underline; color : #DD6900;}

hr	{ height: 0px; border: solid #D1D7DC 0px; border-top-width: 1px;}

.maintitle,h1,h2	{font-weight: bold; font-size: 22px; font-family: "Trebuchet MS",Verdana, Arial, Helvetica, sans-serif; text-decoration: none; line-height : 120%; color : #000000;}

.ok {color:green}

/* Import the fancy styles for IE only (NS4.x doesn't use the @import function) */
@import url("templates/subSilver/formIE.css"); 
-->
</style>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#006699" vlink="#5584AA">

<table width="100%" border="0" cellspacing="0" cellpadding="10" align="center"> 
	<tr>
		<td><table width="100%" border="0" cellspacing="0" cellpadding="0">
			<tr>
				<td><img src="templates/subSilver/images/logo_phpBB.gif" border="0" alt="Forum Home" vspace="1" /></td>
				<td align="center" width="100%" valign="middle"><span class="maintitle">Installing Statistics Mod Version 2.1.5</span></td>
			</tr>
		</table></td>
	</tr>
</table>

<br clear="all" />

<?

//
// Here we go
//
include($phpbb_root_path.'includes/sql_parse.'.$phpEx);

$available_dbms = array(
	"mysql" => array(
		"DELIM" => ";",
		"DELIM_BASIC" => ";",
		"COMMENTS" => "remove_remarks"
	), 
	"mysql4" => array(
		"DELIM" => ";", 
		"DELIM_BASIC" => ";",
		"COMMENTS" => "remove_remarks"
	),
	"mssql" => array(
		"DELIM" => "GO", 
		"DELIM_BASIC" => ";",
		"COMMENTS" => "remove_comments"
	),
	"mssql-odbc" =>	array(
		"DELIM" => "GO",
		"DELIM_BASIC" => ";",
		"COMMENTS" => "remove_comments"
	),
	"postgres" => array(
		"LABEL" => "PostgreSQL 7.x",
		"DELIM" => ";", 
		"DELIM_BASIC" => ";",
		"COMMENTS" => "remove_comments"
	)
);

$remove_remarks = $available_dbms[$dbms]['COMMENTS'];;
$delimiter = $available_dbms[$dbms]['DELIM']; 
$delimiter_basic = $available_dbms[$dbms]['DELIM_BASIC']; 

$sql_query = fill_new_table_data($dbms);

$result = evaluate_statement($sql_query, false, true);

$message = '';

if ( !$result )
{
	$message .= "<br />Some queries failed. Please contact me via email, pm, at the board or whatever, so we can solve your problems...<br />";
}
else
{
	$message .= "<br />Statistics Mod Tables generated successfully.";
}

echo "\n<br />\n<b>COMPLETE! Go to the Administration Panel and Install Modules. You have to install and activate Modules before you are able to see anything within the statistics page.</b><br />\n";
echo $message . "<br />";
echo "<br /><b>NOW DELETE THIS FILE</b><br />\n";
echo "</body>";
echo "</html>";

?>


da kann er dann nämlich direkt den sql code einfügen! meinst man kann die datei einfach mit einem include in die schon bestehende einfügen????

Verfasst: 26.10.2003 17:45
von Acid
Nein, entweder musst du die Queries aus dieser Datei extrahieren und in deine bestehende *.php einbinden oder andersherum.

PS: Ich fake sicherlich nich Acyd´s Namen. :grin:

Verfasst: 26.10.2003 17:51
von Orange
war ja auch nur ein geck!! hast du doch gar net nötig!! (<- mein ich ernst auch wenns ironisch klingt :grin: )

Verfasst: 26.10.2003 17:53
von Orange
was würdest du mir den empfehlen??? die queries in die datei von acyd einbinden oder die sql befehle nach php umwandeln und die von h.c. andersen einbinden?

Verfasst: 26.10.2003 19:09
von Orange
sry, dass ich dauernd nerve, aber ich habs dann auch mal versucht, aber ich hab dabei immer ein problem ein neues problem:

wenn ich die zeilen:

Code: Alles auswählen

CREATE TABLE `phpbb_jr_admin_users` (
  `user_id` mediumint(9) NOT NULL default '0',
  `user_jr_admin` longtext NOT NULL,
  `start_date` int(10) unsigned NOT NULL default '0',
  `update_date` int(10) unsigned NOT NULL default '0',
  `admin_notes` text NOT NULL,
  `notes_view` tinyint(1) NOT NULL default '0',
  PRIMARY KEY  (`user_id`)
) TYPE=MyISAM;
in das hier änder:

Code: Alles auswählen

'CREATE TABLE '.JR_ADMIN_USERS_TABLE.' (
  user_id mediumint(9) NOT NULL default "0",
  user_jr_admin longtext NOT NULL,
  start_date int(10) unsigned NOT NULL default "0",
  update_date int(10) unsigned NOT NULL default "0",
  admin_notes text NOT NULL,
  notes_view tinyint(1) NOT NULL default "0",
  PRIMARY KEY  (user_id)
) TYPE=MyISAM; '
dann added der keine tabelle die phpbb_jr_admin_users heisst in die datenbank sondern die heisst dann JR_ADMIN_USERS_TABLE!

für mich sieht das aber eigentlich genauso aus, wie der code für den color groups mod (bis auf die werte eben). muss man phpbb vielleicht noch irgendwo sagen, dass JR_ADMIN_USERS_TABLE jr_admin_users heisst??

Verfasst: 26.10.2003 19:35
von Acid
Orange hat geschrieben:muss man phpbb vielleicht noch irgendwo sagen, dass JR_ADMIN_USERS_TABLE jr_admin_users heisst??
..genau!
Entweder müsstest du zuerst die angepasste constants.php hochladen.. dann weiss phpBB bescheid, oder du fügst folgendes am Anfang der *.php ein (nach dem Includen von common.php):

Code: Alles auswählen

define('JR_ADMIN_USERS_TABLE', $table_prefix.'jr_admin_users');

Verfasst: 27.10.2003 09:33
von Orange
ich bin am verzweifeln!! jetzt hab ich endlich ein installationsscript geschrieben und jetzt funktioniert das nich!!!! und zwar mein problem is: den attachment mod muss man ja vorher installieren, damit das forum funktioniert! so ich dachte das ist ja kein problem das script wird sich ja einmal kurz ausführen lassen und dann geht alles: falsch gelegen!!!!!!

der zeigt bei mir jetzt immer ganz unten im footer an (auch wenn ich das script aufrufe, das script hat das komplette forum design - wenn du weisst was ich meine):
message_die() was called multiple times. This isn't supposed to happen. Was message_die() used in page_tail.php?
am rest (also ich mein die "normalen" php scripte) kanns eigentlich nicht liegen, ich hab noch ne parallele installation (wo ich alles per hand in mysql eingefügt habe) da funktioniert es ganz wunderbar!!!! woran könnte dass den liegen?? kann man vielleicht abschalten, dass der beim installatsionsscript noch teile des forums anzeigt?? (also den header mein ich zum beispiel)! oder gibt es vielleicht irgendne andere möglichkeit??? ich mein mir is es ja egal wenn ich da mal nen bisl mysql in phpmyadmin einfügen muss, aber für die anderen user wäre so ein script ja schon viel besser und bei phpbbplus gibts sowas ja auch, also muss es irgendwie gehen!!! wenn dir das was bringt kann ich dir mal den link zum installationsscript posten , dann aber lieber als pm!! das installationsscript ist das hier: www.spawnpoint.net/db_update.txt

ganz großes danke schonmal, cu Orange!!

Verfasst: 27.10.2003 09:58
von AWSW
Hallo,
ich mische mich ja meist nur ungern ein :roll: [ externes Bild ] :roll:

Beim Attachment MOD und beim Global Announcement MOD liegen doch schon solche Scripts bei - oder habe ich in den Posts oben etwas überlesen ?!?

Als DB_Installer nehme ich meist dieses Script, bei dem dann nur die rot markierten Zeilen gegen die entsprechenden Codes zu ersetzen sind:
<?php
define('IN_PHPBB', 1);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'config.'.$phpEx);
include($phpbb_root_path . 'common.'.$phpEx);
include($phpbb_root_path . 'includes/constants.'.$phpEx);
include($phpbb_root_path . 'includes/db.'.$phpEx);

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
//
// End session management
//

//
//
// Restrict to members:
if( !$userdata['session_logged_in'] )
{
header("Location: " . append_sid("login.$phpEx?redirect=intro_portal_mod_db_install.$phpEx", true));
exit;
}
//
//

if ( $userdata['user_level'] == ADMIN )
{
}
else
{
message_die(GENERAL_MESSAGE, $lang['Not_Authorised'], $lang['Not_Authorised']);
exit;
}

echo '<html>
<head>
<title>SQL-DB-Installer - Intro + Portal MOD</title>
</head>
<body>
<h1>SQL-DB-Installer - Intro + Portal MOD</h1>
<hr />';
if (!isset($HTTP_GET_VARS['install'])) {
echo '<a href="?install=1">Please click here | Bitte hier klicken</a>';
}
else {
$queries = array(

"CREATE TABLE " . $table_prefix . "introportalmod (config_name varchar(255) NOT NULL default '', config_value varchar(255) NOT NULL default '', PRIMARY KEY (config_name)) TYPE=MyISAM;",

"INSERT INTO " . $table_prefix . "introportalmod VALUES ('config_id', '1')",
"INSERT INTO " . $table_prefix . "introportalmod VALUES ('modversion', '1.25')",
"INSERT INTO " . $table_prefix . "introportalmod VALUES ('globalannouncemod_active', '0')",

"CREATE TABLE " . $table_prefix . "introportalmodnav ( nav_id int(11) NOT NULL auto_increment, navsort_id int(11) NOT NULL default '0', nav_link varchar(255) NOT NULL default '', nav_name varchar(255) NOT NULL default '', PRIMARY KEY (nav_id)) TYPE=MyISAM;"

);

$success = true;
foreach($queries as $query) {
if (!$db->sql_query($query)) {
echo '<font color="red">An error occurred ! Changes have not been entered successfully !<br /><br />Es Fehler ist aufgetreten ! Änderung nicht erfolgreich eingetragen !</font><br /><br />';
echo mysql_error();
$success = false;
break;
}
}
if ($success) {
echo '<font color="green">DB-Changes have been entered successfully. You should delete this SQL-DB-Installer as soon as possible !<br /><br />DB-Änderung wurde erfolgreich ausgeführt. Du solltest diesen SQL-DB-Installer sobald wie möglich löschen !';
}
}
?>
HTH! :wink:

Verfasst: 27.10.2003 10:02
von Acid
Die Fehlermeldung besagt in ´nem Standard-phpBB, das die Ordner /install und /contrib noch auf dem Server vorhanden sind und das der Name des Template falsch geschrieben wurde (z.B. anstatt subSilver dann subsilver).
Kannst du diese Fehlerquellen ausschliessen ?

Verfasst: 27.10.2003 10:04
von Orange
du kannst dir ja mal das installationsscript angucken, was ich geschrieben habe, da habe ich einfach das vom global announcement mod genommen und dann alle anderen zeilen eingefügt!!!!
so, wenn man aber erst das komplette gemoddete forum (mit attachment mod hochlädt) dann kann man das installationsscript von mir nicht mehr fehlerfrei ausführen!! ich denke das liegt daran, dass in dem script auch ein header und ein footer eingebunden wird, und die scheinen ja nicht mit integrietem aber noch nicht installierten attachment mod zu funktionieren!! deshalb ist meine frage - kann ich das script irgendwie so umbauen, dass es sozusagen "außerhalb" von phpbb läuft?? das zwar die für die installation benötigten variablen eingebunden werden, aber z. B. kein header und kein footer erzeugt wird, denn das bringt ja immer die fehlermeldung!!!!!