[ABD] Simple Calendar

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
silke1977

Beitrag von silke1977 »

Du, ich hab das alte Forum ja noch online. Ich richte da mal eben nen User ein, dann kannste dir das mal ansehen okay ?
BB-BF-BM
Mitglied
Beiträge: 2179
Registriert: 28.10.2005 16:38
Wohnort: Essen

Beitrag von BB-BF-BM »

Versuch einmal folgendes:
Füge in der Datei calendar/functions.php am Ende folgende Funktion ein:

Code: Alles auswählen

function get_private_birthdays_as_events()
{
	$events = array();
	$forum_ids = '0';
	
	$sql = 'SELECT post_id, post_subject, post_text, bbcode_uid, bbcode_bitfield, enable_bbcode, enable_smilies, enable_magic_url
		FROM ' . POSTS_TABLE . '
		WHERE forum_id IN ('.$forum_ids.')';
	$result = $GLOBALS['db']->sql_query($sql);
	while ($row = $GLOBALS['db']->sql_fetchrow($result))
	{
		$bday = explode('.', substr($row['post_text'], -10));
		$bday = array((int)$bday[0], (int)$bday[1], (int)$bday[2]);
		$cond = array(
			'start'	=>	(string) gmmktime(0, 0, 0, $bday[1], $bday[0], $bday[2]),
			'end'	=>	'',
			'week_of_month'	=>	'',
			'week_of_month_begin'	=>	'',
			'week_of_year'	=>	'',
			'week_of_year_begin'	=>	'',
			'w'	=>	'',
			'd'	=>	(string) $bday[0],
			'm'	=>	(string) $bday[1],
			'Y'	=>	'',
			'anti'	=>	0,
			'priority'	=>	1
		);
		
		$flags = ($row['enable_bbcode'] ? 1 : 0) + ($row['enable_smilies'] ? 2 : 0) + ($row['enable_magic_url'] ? 4 : 0);
		$desc_edit = decode_message($row['post_text']);
		$events[] = array(
			'event_url'		=>	append_sid("{$GLOBALS['phpbb_root_path']}viewtopic.{$GLOBALS['phpEx']}", 'p='.$row['post_id']),
			'event_name'	=>	sprintf($GLOBALS['user']->lang['_BIRTHDAY_OF'], $row['post_subject']),
			'event_desc_edit'	=>	$desc_edit,
			'event_desc_clean'	=>	generate_text_for_display($row['post_text'], $row['bbcode_uid'], $row['bbcode_bitfield'], $flags),
			'author'		=>	ANONYMOUS,
			'cat_id'		=>	CAL_BIRTHDAY_CAT,
			'conditions'	=>	array($cond),
		);
	}
	
	$GLOBALS['db']->sql_freeresult($result);
	return $events;
}
Bei

Code: Alles auswählen

$forum_ids = '0';
musst du statt der 0 die IDs der Foren eintragen, durch Kommas getrennt.
In deinem alten Forum müsste da dann stehen:

Code: Alles auswählen

$forum_ids = '11,12,13,14,15,16,17,18,19,20,21,22';

Dann musst du noch in der gleichen Datei

Code: Alles auswählen

function collect_events($refresh = false)
{
	static $events = array();
	if ($events && !$refresh)
	{
		return $events;
	}
	else
	{
		$events = array();
		$events = array_merge($events, get_events_from_db());
		$events = array_merge($events, get_birthdays_as_events());
		return $events;
	}
}
mit

Code: Alles auswählen

function collect_events($refresh = false)
{
	static $events = array();
	if ($events && !$refresh)
	{
		return $events;
	}
	else
	{
		$events = array();
		$events = array_merge($events, get_events_from_db());
		$events = array_merge($events, get_birthdays_as_events());
		$events = array_merge($events, get_private_birthdays_as_events());
		return $events;
	}
}
ersetzen.

Ich hoffe, das funktioniert!
Zuletzt geändert von BB-BF-BM am 27.09.2007 16:40, insgesamt 2-mal geändert.
silke1977

Beitrag von silke1977 »

Na du bist ja klasse, das werde ich gleich mal probieren und bescheid geben :-)
silke1977

Beitrag von silke1977 »

So, hab die Änderungen jetzt gemacht (originale functions natürlich gespeichert :wink: ) und es kommt folgende Fehlermeldung:

Code: Alles auswählen

SQL ERROR [ mysql5 ]

Unknown column 'bbcode_options' in 'field list' [1054]

SQL

SELECT post_id, post_subject, post_text, bbcode_uid, bbcode_bitfield, bbcode_options, enable_bbcode, enable_smilies, enable_magic_url FROM phpbb3_posts WHERE forum_id IN (11,12,13,14,15,16,17,18,19,20,21,22)

BACKTRACE


FILE: includes/db/mysql.php
LINE: 158
CALL: dbal_mysql->sql_error()

FILE: calendar/functions.php
LINE: 1526
CALL: dbal_mysql->sql_query()

FILE: calendar/functions.php
LINE: 82
CALL: get_private_birthdays_as_events()

FILE: calendar.php
LINE: 151
CALL: collect_events()
[/code]
BB-BF-BM
Mitglied
Beiträge: 2179
Registriert: 28.10.2005 16:38
Wohnort: Essen

Beitrag von BB-BF-BM »

tausche im hinzugefügten Code

Code: Alles auswählen

	$sql = 'SELECT post_id, post_subject, post_text, bbcode_uid, bbcode_bitfield, bbcode_options, enable_bbcode, enable_smilies, enable_magic_url
		FROM ' . POSTS_TABLE . '
		WHERE forum_id IN ('.$forum_ids.')';
gegen folgenden aus:

Code: Alles auswählen

	$sql = 'SELECT post_id, post_subject, post_text, bbcode_uid, bbcode_bitfield, enable_bbcode, enable_smilies, enable_magic_url
		FROM ' . POSTS_TABLE . '
		WHERE forum_id IN ('.$forum_ids.')';
silke1977

Beitrag von silke1977 »

jetzt kommt folgendes:

Code: Alles auswählen

Fatal error: Call to undefined function: sub_str() in /homepages/14/d200439175/htdocs/mamitas/phpBB3/calendar/functions.php on line 1529
Und hier die Zeilen 1523-1544 meiner geänderten funktions.php

Code: Alles auswählen

$sql = 'SELECT post_id, post_subject, post_text, bbcode_uid, bbcode_bitfield, enable_bbcode, enable_smilies, enable_magic_url 
      FROM ' . POSTS_TABLE . ' 
      WHERE forum_id IN ('.$forum_ids.')'; 
   $result = $GLOBALS['db']->sql_query($sql); 
   while ($row = $GLOBALS['db']->sql_fetchrow($result)) 
   { 
      $bday = explode('.', sub_str($row['post_text'], -10)); 
      $bday = array((int)$bday[0], (int)$bday[1], (int)$bday[2]); 
      $cond = array( 
         'start'   =>   (string) gmmktime(0, 0, 0, $bday[1], $bday[0], $bday[2]), 
         'end'   =>   '', 
         'week_of_month'   =>   '', 
         'week_of_month_begin'   =>   '', 
         'week_of_year'   =>   '', 
         'week_of_year_begin'   =>   '', 
         'w'   =>   '', 
         'd'   =>   (string) $bday[0], 
         'm'   =>   (string) $bday[1], 
         'Y'   =>   '', 
         'anti'   =>   0, 
         'priority'   =>   1 
      ); 
BB-BF-BM
Mitglied
Beiträge: 2179
Registriert: 28.10.2005 16:38
Wohnort: Essen

Beitrag von BB-BF-BM »

ok, ersetze

Code: Alles auswählen

$bday = explode('.', sub_str($row['post_text'], -10)); 
mit

Code: Alles auswählen

$bday = explode('.', substr($row['post_text'], -10)); 
silke1977

Beitrag von silke1977 »

Ich hab das jetzt geändert, es sind keinerlei Fehlermeldungen mehr da.
Allerdings aber zeigt er auch nichts aus Forum an. Am 20.10. müsste etwas stehen, was im Forum auch steht. Wie muss ich denn jetzt die Termine am besten eintragen ?

Mein anderes Problem ist, das ich schon vor Tagen Kategorien angelegt habe, 3 um genau zu sein. Leider nimmt er offensichtlich im Kalnder nur eine davon an. Was hab ich denn da falsch gemacht ? Im ACP aber werden mir alle drei angezeigt.
BB-BF-BM
Mitglied
Beiträge: 2179
Registriert: 28.10.2005 16:38
Wohnort: Essen

Beitrag von BB-BF-BM »

Hast du für alle Kategorien auch die entsprechenden Rechte vergeben?

Die Geburtstage werden in der Kategorie angezeigt, in der auch phpBB-interne Geburtstage angezeigt werden, sofern du dort eine Kategorie gewählt hast.

Wenn du das nicht möchtest, musst du CAL_BIRTHDAY_CAT mit der Kategorie-ID ersetzen.
BTW: Die Foren-IDs hast du überprüft?
silke1977

Beitrag von silke1977 »

Problem mit den ID's ist, das in meiner Datenbank keine namen stehen sondern nur was mit BOT und ne kb zahl.
ich bin dann einfach im ACP im Register Foren mit der Maus auf den Entprechenden Foren gefahren und dann stand unten in der Statusleiste im Link ne ID. Und es stimmte sogar mit dem ein, was du geschrieben hast, also hat er wohl die ID's aus dem alten Forum übernommen.

Welche Rechte in den kategorien ? Wie mach ich das denn ? Genau wie mit den Foren ?


Im Kalender hatte ich eingestellt, das er Foreninterne Birthdays in der Kategorie Geburtstage (von mir im ACP erstellt) ausgeben soll. Hatte auch geklappt.
Hatte es dann aber ausgestellt, weiß auch nicht warum. Muss ich mal nochmal aktivieren.
Antworten

Zurück zu „[3.0.x] Mods in Entwicklung“