Seite 1 von 4

Brauche hilfe bei Installationsscript!

Verfasst: 25.10.2003 14:45
von Orange
Hi,

ich bau gerad ein phpbb mit mehrern mods zusammen und will ein installationsscript schreiben, dass automatisch alle eintragungen in die datenbank, die die mods erfordern, vornimmt!

ich hab als vorlage einfach mal das script des global announcement mods genommen und steh jetzt vor einem problem! ich will die eintragungen in die db die der color groups mod vornimmt auch in das script integrieren, aber die scheinen ein etwas anderes format zu haben!

das script sieht bis jetzt so aus:

Code: Alles auswählen

<?php
#########################################################
## SQL commands to phpBB2
## Author: Niels Chr. Rød
## Nickname: Niels Chr. Denmark
## Email: ncr@db9.dk
##
## Ver 1.0.7
##
## phpBB2 database update script for mods
## this file is intended to use with phpBB2, when installing mods
## after so you may delete this file, but only admin can use so it really doesen't matter
## The script will look what prefix you are using, and use the existing DB defined by config.php
## The execution of this script's included SQL is harmless, so you can run it as meny times you like
## note, though that the users last visit, will be set back to his/her last login, 
## but that is a minor cosmetic isue, that will correct it self next time the use logs in
##
## the following example are from my mods, and you can add some self, for other mods if you like
## you will after execution get a list over those commands that are run with succes and those with warnings !
## delete the sample lines if you are using it only for other mods
##
#########################################################

define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
include($phpbb_root_path . 'includes/functions_selects.'.$phpEx);
define('SITE_HISTORY_TABLE', $table_prefix.'site_history');

###################################################################################################
##
## put the SQL commands below here, the SQL commands listed below are only exampels, substitude them with the one you need ##
##
###################################################################################################
$sql=array(
'ALTER TABLE '.FORUMS_TABLE.' ADD auth_globalannounce TINYINT (2) DEFAULT "3" NOT NULL AFTER auth_announce',
'ALTER TABLE '.AUTH_ACCESS_TABLE.' ADD auth_globalannounce TINYINT (1) not null AFTER auth_announce',
'ALTER TABLE '.USERS_TABLE.' ADD user_birthday INT DEFAULT "999999" not null  ',
'ALTER TABLE '.USERS_TABLE.' ADD user_next_birthday_greeting INT DEFAULT "0" not null ',
'INSERT INTO '.CONFIG_TABLE.' (config_name, config_value) VALUES ("birthday_required", "0")',
'INSERT INTO '.CONFIG_TABLE.' (config_name, config_value) VALUES ("birthday_greeting", "1")',
'INSERT INTO '.CONFIG_TABLE.' (config_name, config_value) VALUES ("max_user_age", "100")',
'INSERT INTO '.CONFIG_TABLE.' (config_name, config_value) VALUES ("min_user_age", "5")',
'INSERT INTO '.CONFIG_TABLE.' (config_name, config_value) VALUES ("birthday_check_day", "7")'
'ALTER TABLE '.USERS_TABLE.' ADD user_gender TINYINT not null DEFAULT "0"'
);

$mods = array ( 
'Global Announcement Mod','Global Announcement Mod',
'Birthday PART 1 Mod','Birthday PART 1 Mod','Birthday PART 2 Mod','Birthday PART 2 Mod','Birthday PART 2 Mod','Birthday PART 2 Mod','Birthday PART 2 Mod',
'Gender Mod'
);

############################################### Do not change anything below this line #######################################

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

if ($userdata['user_level']!=ADMIN)
      message_die(GENERAL_ERROR, "You are not Authorised to do this"); 
$n=0;
$message="<b>This list is a result of the SQL queries needed for the additional mods in the pre-moded pack</b><br/><br/>";
while($sql[$n])
{
	$message .= ($mods[$n-1] != $mods[$n]) ? '<p><b><font size=3>'.$mods[$n].'</font></b><br/>' : '';
	if(!$result = $db->sql_query($sql[$n])) 
	$message .= '<b><font color=#FF0000>[Already added]</font></b> line: '.($n+1).' , '.$sql[$n].'<br />';
	else $message .='<b><font color=#0000fF>[Added/Updated]</font></b> line: '.($n+1).' , '.$sql[$n].'<br />';
	$n++;
}
 message_die(GENERAL_MESSAGE, $message); 
?>
so, die eintragungen des color groups mod muss man aber über phpmyadmin vornehmen, die zeilen die man da eintragen muss lauten so:

Code: Alles auswählen

CREATE TABLE `phpbb_color_groups` (
  `group_id` mediumint(8) unsigned NOT NULL auto_increment,
  `group_name` varchar(255) NOT NULL default '',
  `group_color` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`group_id`),
  UNIQUE KEY `group_name` (`group_name`)
) TYPE=MyISAM ;
ALTER TABLE `phpbb_users` ADD `user_color_group` MEDIUMINT UNSIGNED NOT NULL ;
ALTER TABLE `phpbb_color_groups` ADD `hidden` TINYINT( 1 ) DEFAULT '0' NOT NULL ;
ALTER TABLE `phpbb_color_groups` ADD `order_num` MEDIUMINT NOT NULL ;
ALTER TABLE `phpbb_groups` ADD `group_color_group` MEDIUMINT UNSIGNED NOT NULL ;
da das hier ja die direkte mysql syntax is, glaub ich nicht dass ich das so einfach da einfügen kann!

kann mir jemand sagen, was ich ändern muss, um die zeilen in mein script zu übernehmen??

Re: Brauche hilfe bei Installationsscript!

Verfasst: 25.10.2003 15:49
von Acid
Orange hat geschrieben:..ich bau gerad ein phpbb mit mehrern mods zusammen und will ein installationsscript schreiben..
Dann reicht es eigentlich, wenn du mysql_basic.sql bzw. mysql_schema.sql anpasst (also einfach die jeweiligen Queries dort hineinkopierst; auf Format der Standardqueries achten).

Ansonsten müsstest du einfach die Queries des Color-Hacks dementsprechend bzw. nach dem Muster des Global-Hacks anpassen. (Z.B. anstatt die Tabelle mit phpbb_users anzusprechen, die phpBB-Variabel '. USERS_TABLE .' nutzen.. usw.)

Verfasst: 25.10.2003 18:54
von Orange
ja soweit bin ich auch schon, aber es sollte schon ein php script sein, denn es wäre viel besser, wenn man einfach die dateien des gemoddeten forums darüberkopieren und einmal das script ausführen könnte! wie würden denn die anweisungen vom color groups mod lauten, wenn ich die in die php datei einfügen wollte?? oder könnte ich einfach mit der datei ne sql datei aufrufen????

Verfasst: 26.10.2003 00:55
von Acid

Code: Alles auswählen

'CREATE TABLE '.COLOR_GROUPS_TABLE.' (
  group_id mediumint(8) unsigned NOT NULL auto_increment,
  group_name varchar(255) NOT NULL default "",
  group_color varchar(50) NOT NULL default "",
  hidden tinyint(1) NOT NULL default "0",
  order_num mediumint NOT NULL,
  PRIMARY KEY  (group_id),
  UNIQUE KEY group_name (group_name)
) TYPE=MyISAM ',
'ALTER TABLE '.USERS_TABLE.' ADD user_color_group MEDIUMINT UNSIGNED NOT NULL ',
'ALTER TABLE '.GROUPS_TABLE.' ADD group_color_group MEDIUMINT UNSIGNED NOT NULL '
..wäre der Code, wenn du die Queries für den Color-Hack ebenfalls in den sql_array() einfügen willst.
aber es sollte schon ein php script sein, denn es wäre viel besser, wenn man einfach die dateien des gemoddeten forums darüberkopieren und einmal das script ausführen könnte! [...] oder könnte ich einfach mit der datei ne sql datei aufrufen????
Wie gesagt, du kannst die Queries in der Ursprungsform auch in die oben genannten *.sql Dateien eintragen. Dann werden sie beim Aufruf des phpBB-Installationsscripts automatisch mit erstellt.

Verfasst: 26.10.2003 15:12
von Orange
ok! wenn ich ein ältere version eines boards updaten will, werden die sql dateien aus den installationsscripts denn dann auch ausgeführt???

Verfasst: 26.10.2003 15:14
von Acid
Die Version hat damit nix zu tun.. das Installationsscript verarbeitet alle in den *.sql Dateien enthaltenen Queries.

Verfasst: 26.10.2003 17:07
von Orange
ja klar!! aber ich hab immernoch nicht verstanden ob die auch bei einem boardupdate sagen wir mal von 2.0.4 komplett verarbeitet werden?? denn da müssten die tabellenstrukturen ja schon existieren!

Verfasst: 26.10.2003 17:12
von Acid
aso.. nee beim Update werden die *.sql Dateien nicht beachtet.
Diesbezüglich stehen die Datenbankänderungen direkt in der update_to_xx.php (sortiert nach Datenbanktyp und Versionsnummer).

Verfasst: 26.10.2003 17:23
von Orange
für deinen attachement mod hast du nicht zufällig die befehle auch in php zur hand??????
also versteh mich nicht falsch, ich möchte dir nicht zumuten dass für mich extra zu machen, das prinzip hab ich ja jetzt verstanden aber es könnt ja sein, dass du sie irgendwo rumliegen hast!!

Verfasst: 26.10.2003 17:29
von Acid
Mal abgesehen davon, das es nicht mein Hack ist (der Autor hat einen ähnlichen Namen wie ich ;) ), findest du die Queries dort ebenfalls in *.sql Dateien im /install/schemas Ordner.

Oder was meinst du jetzt mit "Befehle in php" ? Diese Queries in den *.sql Dateien, müssten nach obigen Muster angepasst werden.