Page 1 of 2

[Erweiterung] kommende Geburtstage

Posted: 23. January 2008 20:26
by kendoo
Hi leute,
ich hab mir mal die Arbeit gemacht und in meinem Portal die Geburtstagsliste um die Funktion kommende Geburtstage erweitert. Ich habe dazu die Mod Upcoming Birthday list als Grundlage genommen http://www.phpbb.com/community/viewtopi ... 9#p3186661

Ich poste hier jetzt nur mal das, was für die Erweiterung der Gerburtstagsliste des Portals davon notwenig wäre:

Zunächst muss die Tabelle phpbb_portal_config um einen Eintrag erweitert werden

Code: Select all

INSERT INTO `phpbb_portal_config` (`config_name`, `config_value`) VALUES ('portal_birthdays_ahead', '30');
Dann müssen in den jeweiligen language/(en/de)/mods/lang_portal.php Dateien zwei zusätzliche Sprachvariablen angelegt werden:
einmal für englisch

Code: Select all

//Birthdays
'BIRTHDAYS_AHEAD'		=> 'Birthday within the next %s days',
'NO_BIRTHDAYS_AHEAD'    => 'No birthdays in this time',
einaml für deutsch

Code: Select all

//Birthdays
'BIRTHDAYS_AHEAD'		=> 'In den nächsten %s Tagen',
'NO_BIRTHDAYS_AHEAD'    => 'In diesem Zeitraum hat kein Mitglied Geburtstag',
Dann kommen wir zu den Anpassungen im Portal, ich poste hier gleich die kompletten von mir überarbeiteten zwei Dateien root/portal/block/birthday_list.php und root/styles/prosilver/template/portal/block/birthday_list.html

root/portal/block/birthday_list.php

Code: Select all

<?php

/**
*
* @package - Board3portal
* @version $Id: birthday_list.php 99 2008-01-15 20:31:25Z kevin74 $
* @copyright (c) kevin / saint ( http://www.board3.de/ ), (c) nickvergessen ( http://mods.flying-bits.org/ ), (c) redbull254 ( http://www.digitalfotografie-foren.de ), (c)kendoo (http://kfa-teampage.pytalhost.com)
* @license http://opensource.org/licenses/gpl-license.php GNU Public License 
*
*/

if (!defined('IN_PHPBB') || !defined('IN_PORTAL'))
{
   exit;
}

// Generate birthday list if required ...   / borrowed from index.php (RC4) 
$birthday_list = '';
$birthday_ahead_list = '';
if ($config['load_birthdays'] && $config['allow_birthdays'])
{
	$now = getdate(time() + $user->timezone + $user->dst - date('Z'));
    $today = (mktime(0, 0, 0, $now['mon'], $now['mday'], $now['year']));
	
	$sql = 'SELECT user_id, username, user_colour, user_birthday
		FROM ' . USERS_TABLE . "
		WHERE user_birthday <> ''
			AND user_type IN (" . USER_NORMAL . ', ' . USER_FOUNDER . ') ORDER BY SUBSTRING(user_birthday FROM 4 FOR 2) ASC, SUBSTRING(user_birthday FROM 1 FOR 2) ASC, username_clean ASC';
	$result = $db->sql_query($sql);

	while ($row = $db->sql_fetchrow($result))
	{
	   $birthdaydate = (gmdate('Y') . '-' . trim(substr($row['user_birthday'],3,-5)) . '-' . trim(substr($row['user_birthday'],0,-8) ));
       $user_birthday = strtotime($birthdaydate);
	   if($user_birthday == $today)
	   {
		$birthday_list .= get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']);

		if ($age = (int) substr($row['user_birthday'], -4))
		{
			$birthday_list .= ' (' . ($now['year'] - $age) . ')<br  />'."\n";
		}	   
	   }
       
	   if( $portal_config['portal_birthdays_ahead'] > 0 )
	   {
	     if ( $user_birthday >= ($today + 86400) && $user_birthday <= ($today + ($portal_config['portal_birthdays_ahead'] * 86400) ) )
	     {
		   if ($row['user_colour'])
		   {
		      $user_colour = ' style="color:#' . $row['user_colour'] . '"';
			  $row['username'] = '<strong>' . $row['username'] . '</strong>';
		   }
		   else
		   {
			  $user_colour = '';
		   }

	          $birthday_ahead_list .= '<a' . $user_colour . ' href="' . append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $row['user_id']) . '" title="' . date('d M', $user_birthday) . '">' . $row['username'] . '</a>';

		   if ( $age = (int) substr($row['user_birthday'], -4) )
		   {
			  $birthday_ahead_list .= ' (' . ($now['year'] - $age) . ')<br  />'."\n";
		   }
		  }
	    }
	}
	$db->sql_freeresult($result);
}

// Assign index specific vars
$template->assign_vars(array(
	'BIRTHDAY_LIST'	=> $birthday_list,
	'BIRTHDAYS_AHEAD_LIST'	=> ( $portal_config['portal_birthdays_ahead'] > 0 ) ? $birthday_ahead_list : '',
	'L_BIRTHDAYS_AHEAD'	=> sprintf($user->lang['BIRTHDAYS_AHEAD'], $portal_config['portal_birthdays_ahead']),
	'S_DISPLAY_BIRTHDAY_LIST'	=> ($config['load_birthdays']) ? true : false,
	)
);

?>
root/styles/prosilver/template/portal/block/birthday_list.html

Code: Select all

<div class="panel">
	<div class="inner">
		<span class="corners-top"><span></span></span>
			<h3>{L_BIRTHDAYS}</h3>
			<!-- IF BIRTHDAY_LIST -->
			<strong>{BIRTHDAY_LIST}</strong>
			<!-- ELSE -->
			{L_NO_BIRTHDAYS}
			<!-- ENDIF -->
			<h3>{L_BIRTHDAYS_AHEAD}</h3>
			<!-- IF BIRTHDAYS_AHEAD_LIST -->
			<strong>{BIRTHDAYS_AHEAD_LIST}</strong>
			<!-- ELSE -->
			{L_NO_BIRTHDAYS_AHEAD}
			<!-- ENDIF -->
		<span class="corners-bottom"><span></span></span>
	</div>
</div>
<br style="clear:both" />
Hoffe habe nichts vergessen :D
Demo kann man sich hier anschauen http://sumsum.pytalhost.de

Nun sollten sich die Portalcoder mal überlegen, ob es nicht sinnvoll wäre, diese Erweiterung gleich mit zu integrieren,
Im Adminbereich gibt es dafür so natürlich noch keine Einstellungsmöglichkeit, welche sich aber ohnehin nur auf den Zeitraum der Tage beschränken würde, diese ist so jetzt fest auf 30 Tage eingestellt, wer sich die komplette orginale Mod installiert, hat dann auch im Adminbereich Einstellungsmöglichkeiten dafür und die Liste wird auch im Forum selbst angezeigt, zumindest im Subsilver Style

Meine Version ist ausschließlich für das Portal gedacht und wenn man es integrieren sollte, wäre eine entsprechende Erweiterung im acp notwendig

//edit: Anpassung der Variablen auf das Portal
mfg Kendoo

Re: [Erweiterung] kommende Geburtstage

Posted: 23. January 2008 20:42
by Kevin
Das sieht gut aus - sehr schöne Idee!

Ich hab nur kurz drüber geschaut, aber schon mal vorweg, was sinnvoll wäre um das fest ins Portal zu integrieren:
  • der DB Eintrag sollte nicht in die phpbb_config, sondern in die phpbb_portal_config
  • die Language Variablen sollten in die lang_portal.php
Das hält das Original phpBB3 schlank und es müssen diese Änderungen dann nicht händisch gemacht werden.

Wenn Du magst erstelle doch bitte einen Feature Request im Bugtracker, mit Link zu diesem Post, damit wir das nicht aus den Augen verlieren.
Am besten auf Englisch, da wir ja nun auch einen englischen Entwickler im Team haben.

Re: [Erweiterung] kommende Geburtstage

Posted: 23. January 2008 21:49
by kendoo
also das mit den Variablen ist klar, ich bin ja dabei noch nicht davon ausgegangen, dass es mit integirert wird,

joa also Feautere Request kein Problem aber my english is to bad um das in Englisch zu schreiben
Ich schreibe es in Duetsch und jemand muss es übersetzen wenn das wichtig ist :D

Re: [Erweiterung] kommende Geburtstage

Posted: 23. January 2008 23:43
by Kevin
kendoo wrote:also das mit den Variablen ist klar, ich bin ja dabei noch nicht davon ausgegangen, dass es mit integirert wird
Selbst wenn es nicht integriert würde, würde ich es in den entsprechenden Portal Table integrieren und auch die Sprachvariablen in den Portaldateien integrieren.
Ansonsten finde ich das eine sehr feine Sache und würde es gerne schon mit in die nächste Beta aufnehmen, wenn du (und auch der original Mod Autor) damit einverstanden bist.
kendoo wrote:joa also Feautere Request kein Problem aber my english is to bad um das in Englisch zu schreiben
Ich schreibe es in Duetsch und jemand muss es übersetzen wenn das wichtig ist
Kein Problem, hau es in Deutsch rein.

Re: [Erweiterung] kommende Geburtstage

Posted: 23. January 2008 23:56
by kendoo
also das mit den Variablen ist ja nun so, meine jetzige Ausführung bezieht sich ausschließlich auf die Integration ins Portal, das hat mit dem Originalmod eigentlich nur noch die Variablennamen gemeinsam hat, die Kernproblematik dabei war ja die DB Abfrage, womit man jetzt gleich beide Werte also wer hat heute B-Day und wer in den nächsten x Tagen zusammen aus einer Abfrage bekommt, was im Originalmod ja nicht der Fall ist

Ich würde das so wie es ist, natürlich die Variablen so wie sie für das Portal verwendet werden (wie von Dir beschrieben) integrieren. Ich werde das morgen oben noch entsprechend korrigieren. Ich dachte zunächst an die Kompatibilität, wenn jemand noch zusätzlich die Mod einbaut, dann würden die dafür notwendigen Variablen schon vorhanden sein. Sonst sind sie ja doppelt vorhanden aber das ist ja dann nicht das Problem des Portals

Re: [Erweiterung] kommende Geburtstage

Posted: 24. January 2008 09:38
by morte
Die Idee gefällt mir gut aber hast du das in deinem Beispielforum ausgeschaltet? Da sehe ich es nicht mehr.

Re: [Erweiterung] kommende Geburtstage

Posted: 24. January 2008 14:54
by kendoo
So, hab es jetzt für die Integration ins Portal angepasst und der Block bei mir ist wieder eingeschaltet, falls noch jemand schauen möchte

Re: [Erweiterung] kommende Geburtstage

Posted: 24. January 2008 17:49
by Kevin
Wird ins nächste Release rein genommen:
bugtracker/viewbug.php?b=37

Besten Dank kendoo! :smile:

Re: [Erweiterung] kommende Geburtstage

Posted: 26. January 2008 22:47
by DJmension
Eigenartig ???

bei mir kommt der eintrag im Portal so :

Geburtstage
Heute hat kein Mitglied Geburtstag
In den nächsten Tagen
In diesem Zeitraum hat kein Mitglied Geburtstag

und so sollte es eigentlich aussehen :
Geburtstage
Heute hat kein Mitglied Geburtstag
In den nächsten 30 Tagen
In diesem Zeitraum hat kein Mitglied Geburtstag

Datenbankeintrag ist vorhanden , äääähm grübel grübel

DB eintrag : allow_birthdays_ahead 30

Re: [Erweiterung] kommende Geburtstage

Posted: 27. January 2008 12:52
by Kevin
Wir haben es jetzt als portal_birthdays_ahead in den Portal Configtable eingepflegt.
Wie auch immer - mit der nächsten Beta sollte es dann bei dir stimmen. :wink:

Re: [Erweiterung] kommende Geburtstage

Posted: 27. January 2008 14:33
by kendoo
kontrolliere noch mal die Sprachvariablen, dort besonders ob das %s auch vorhanden ist

Re: [Erweiterung] kommende Geburtstage

Posted: 27. January 2008 21:33
by DJmension
ist auch drinn :-)

Re: [Erweiterung] kommende Geburtstage

Posted: 28. January 2008 00:28
by kendoo
dann hast Du wohl an anderer Stelle etwas vergessen, so wie es oben steht funktioniert es bereits auf mehreren Portalen exzellent 8)
also warte lieber bis die Jungs hier die nächste Version freigeben, dort ist es bereits integriert dann

Re: [Erweiterung] kommende Geburtstage

Posted: 28. January 2008 00:44
by Redbull254
So ist es ;-)

Re: [Erweiterung] kommende Geburtstage

Posted: 28. January 2008 05:49
by DJmension
seid mir jetzt bitte nicht böse , aber was gibt es da falsch zu machen ?
1. Datenbank eintrag vornemen : Das erledigt schonmal SQL ganz bequem für mich , nur Code ins SQL einfügen ausführen fertig !
2. Sprach Variablen einfügen : deutsch de-Du , de-Sie , en -------- auch kein Problem :?
3. Datei inhallt ersetzen von root/portal/block/birthday_list.php und root/styles/prosilver/template/portal/block/birthday_list.html ------- alles komplett ersetzt.

Also sollte es funktionieren !

Tut es aber nicht Cookies und Themplatates habe ich alle aktualisiert , und es wird immernoch müde der language inhallt angezeigt . Die Zahl 30 taucht nicht auf , und mein Name auch nicht , obwohl ich am 16.02. Geburtstag hätte, ich könnte es auch verstehen wenn ich mein Datum in meinem Profil nicht angegeben hätte , aber verflixt dort steht es auch drin.

Jetzt hab ich mir die Codes mal etwas genauer angesehen , ich kann dort auch nicht finden wo die Datenbank abfgrage an die Variable %s übergeben wird.

jetzt bitte sagt mir was ich vergessen haben soll , von diesen wenigen schritten etwas zu vergessen ist doch sehr unwahrscheinlich , da ich das ganze nun schon schritt für schritt 4 mal durch gegangen bin ?