[MODDB] Automatische Sommerzeit 2.0.2

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.
Benutzeravatar
HEADLINE
Mitglied
Beiträge: 415
Registriert: 09.09.2007 17:23
Wohnort: Zweibrücken
Kontaktdaten:

Re: [MODDB] Automatische Sommerzeit 2.0.2

Beitrag von HEADLINE »

MartectX hat geschrieben:FINDE

Code: Alles auswählen

		// Try to manually determine the timezone and adjust the dst if the server date/time complies with the default setting +/- 1
		$timezone = date('Z') / 3600;
		$is_dst = date('I');

		if ($config['board_timezone'] == $timezone || $config['board_timezone'] == ($timezone - 1))
		{
			$timezone = ($is_dst) ? $timezone - 1 : $timezone;

			if (!isset($user->lang['tz_zones'][(string) $timezone]))
			{
				$timezone = $config['board_timezone'];
			}
		}
		else
		{
			$is_dst = $config['board_dst'];
			$timezone = $config['board_timezone'];
		}
ERSETZE MIT

Code: Alles auswählen

		$timezone = AUTOMATIC_DST_BOARD_TIMEZONE;
		$is_dst = AUTOMATIC_DST_BOARD_ISDST;
*Juhu* jetzt passt es! :grin:

Vielen Dank für die schnelle und kompetente Hilfe!

Liebe Grüße, HEADLINE
Benutzeravatar
MartectX
Ehemaliger Übersetzer
Beiträge: 648
Registriert: 10.05.2008 17:08
Wohnort: Marienplatz

Re: [MODDB] Automatische Sommerzeit 2.0.2

Beitrag von MartectX »

Danke allen Rückmeldungen, ich werde das Update nun auch in der MOD-Datenbank eintragen lassen. :)
DJSonic
Mitglied
Beiträge: 14
Registriert: 14.07.2008 16:21

Re: [MODDB] Automatische Sommerzeit 2.0.2

Beitrag von DJSonic »

Ich habe heute das Update gemacht. Im Forum läuft auch alles super. Allerdings ist es per Bridge an Joomla gekoppelt und die Joomla-Seite sagt mir jetzt folgendes:

Code: Alles auswählen

Fatal error: Call to undefined function automatic_dst_cache() in [...]/includes/cache.php on line 77
Jemand ne Idee wie ich meine Joomla-Seite wieder ans laufen bekomme?

Ach, ein

Code: Alles auswählen

require_once ( JPATH_BASE .DS.'distribution/includes/automatic_dst.php');
in der index.php von Joomla bringt eine Seite ohne Inhalt.


Gruß
DJSonic
DJSonic
Mitglied
Beiträge: 14
Registriert: 14.07.2008 16:21

Re: [MODDB] Automatische Sommerzeit 2.0.2

Beitrag von DJSonic »

So, ich habe mir jetzt mal wie folgt beholfen:

Ich habe alle Aufrufe

Code: Alles auswählen

require($phpbb_root_path . 'includes/automatic_dst.' . $phpEx);
in ein

Code: Alles auswählen

 require_once ($phpbb_root_path . 'includes/automatic_dst.' . $phpEx);
geändert und genau diese Zeile auch noch in die cache.php eingefügt.

Aktuell läuft dadurch mein Forum und meine Joomla Seite.
Benutzeravatar
MartectX
Ehemaliger Übersetzer
Beiträge: 648
Registriert: 10.05.2008 17:08
Wohnort: Marienplatz

Re: [MODDB] Automatische Sommerzeit 2.0.2

Beitrag von MartectX »

DJSonic hat geschrieben:...und genau diese Zeile auch noch in die cache.php eingefügt.

Aktuell läuft dadurch mein Forum und meine Joomla Seite.
Ich habe mich damals nicht getraut, das so zu lösen, weil ich mich in PHP nicht gut genug auskenne, um die Folgen einer Dateiinklusion innerhalb einer Klasse vorauszusehen. Wenn es so bei Dir funktioniert, super!

PS: Kannst Du die cache.php mal verlinken bitte?
DJSonic
Mitglied
Beiträge: 14
Registriert: 14.07.2008 16:21

Re: [MODDB] Automatische Sommerzeit 2.0.2

Beitrag von DJSonic »

Also so weit ich das verstanden habe macht require_once nichts anderes, als die Datei genau einmal einzubinden und somit mehrfaches einlesen, parsen usw. verhindert.

Laufen tut das ganze unter http://www.domaene-aachen.de/distribution

Und hier mal der Inhalt der cache.php

Code: Alles auswählen

<?php
/**
*
* @package acm
* @version $Id: cache.php 9726 2009-07-07 12:59:30Z rxu $
* @copyright (c) 2005 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
	exit;
}
require_once ($phpbb_root_path . 'includes/automatic_dst.' . $phpEx);
/**
* Class for grabbing/handling cached entries, extends acm_file or acm_db depending on the setup
* @package acm
*/
class cache extends acm
{
	/**
	* Get config values
	*/
	function obtain_config()
	{
		global $db;

		if (($config = $this->get('config')) !== false)
		{
			$sql = 'SELECT config_name, config_value
				FROM ' . CONFIG_TABLE . '
				WHERE is_dynamic = 1';
			$result = $db->sql_query($sql);

			while ($row = $db->sql_fetchrow($result))
			{
				$config[$row['config_name']] = $row['config_value'];
			}
			$db->sql_freeresult($result);
		}
		else
		{
			$config = $cached_config = array();

			$sql = 'SELECT config_name, config_value, is_dynamic
				FROM ' . CONFIG_TABLE;
			$result = $db->sql_query($sql);

			while ($row = $db->sql_fetchrow($result))
			{
				if (!$row['is_dynamic'])
				{
					$cached_config[$row['config_name']] = $row['config_value'];
				}

				$config[$row['config_name']] = $row['config_value'];
			}
			$db->sql_freeresult($result);

			$this->put('config', $cached_config);
		}

                // MOD => Automatic daylight savings time
		$config['board_dst'] = ($config['board_dst']) ? date('I') : DST_OFF;

		/**
		*   AUTOMATIC DAYLIGHT SAVINGS TIME 2
		*
		*   If your script halts at this point, you tried to call $cache->obtain_config() without including common.php.
		*   Add the following line to your main script:
		*   require($phpbb_root_path . 'includes/automatic_dst.' . $phpEx);
		*/
		$config['board_timezone'] = automatic_dst_cache($config['board_timezone']);
		$config['board_dst'] = AUTOMATIC_DST_BOARD_ISDST;

		return $config;
	}

	/**
	* Obtain list of naughty words and build preg style replacement arrays for use by the
	* calling script
	*/
	function obtain_word_list()
	{
		global $db;

		if (($censors = $this->get('_word_censors')) === false)
		{
			$sql = 'SELECT word, replacement
				FROM ' . WORDS_TABLE;
			$result = $db->sql_query($sql);

			$censors = array();
			while ($row = $db->sql_fetchrow($result))
			{
				if ((version_compare(PHP_VERSION, '5.1.0', '>=') || (version_compare(PHP_VERSION, '5.0.0-dev', '<=') && version_compare(PHP_VERSION, '4.4.0', '>='))) && @preg_match('/\p{L}/u', 'a') !== false)
				{
					$censors['match'][] = '#(?<![\p{Nd}\p{L}_])(' . str_replace('\*', '[\p{Nd}\p{L}_]*?', preg_quote($row['word'], '#')) . ')(?![\p{Nd}\p{L}_])#u';
				}
				else
				{
					$censors['match'][] = '#(?<!\S)(' . str_replace('\*', '\S*?', preg_quote($row['word'], '#')) . ')(?!\S)#iu';
				}

				$censors['replace'][] = $row['replacement'];
			}
			$db->sql_freeresult($result);

			$this->put('_word_censors', $censors);
		}

		return $censors;
	}

	/**
	* Obtain currently listed icons
	*/
	function obtain_icons()
	{
		if (($icons = $this->get('_icons')) === false)
		{
			global $db;

			// Topic icons
			$sql = 'SELECT *
				FROM ' . ICONS_TABLE . '
				ORDER BY icons_order';
			$result = $db->sql_query($sql);

			$icons = array();
			while ($row = $db->sql_fetchrow($result))
			{
				$icons[$row['icons_id']]['img'] = $row['icons_url'];
				$icons[$row['icons_id']]['width'] = (int) $row['icons_width'];
				$icons[$row['icons_id']]['height'] = (int) $row['icons_height'];
				$icons[$row['icons_id']]['display'] = (bool) $row['display_on_posting'];
			}
			$db->sql_freeresult($result);

			$this->put('_icons', $icons);
		}

		return $icons;
	}

	/**
	* Obtain ranks
	*/
	function obtain_ranks()
	{
		if (($ranks = $this->get('_ranks')) === false)
		{
			global $db;

			$sql = 'SELECT *
				FROM ' . RANKS_TABLE . '
				ORDER BY rank_min DESC';
			$result = $db->sql_query($sql);

			$ranks = array();
			while ($row = $db->sql_fetchrow($result))
			{
				if ($row['rank_special'])
				{
					$ranks['special'][$row['rank_id']] = array(
						'rank_title'	=>	$row['rank_title'],
						'rank_image'	=>	$row['rank_image']
					);
				}
				else
				{
					$ranks['normal'][] = array(
						'rank_title'	=>	$row['rank_title'],
						'rank_min'		=>	$row['rank_min'],
						'rank_image'	=>	$row['rank_image']
					);
				}
			}
			$db->sql_freeresult($result);

			$this->put('_ranks', $ranks);
		}

		return $ranks;
	}

	/**
	* Obtain allowed extensions
	*
	* @param mixed $forum_id If false then check for private messaging, if int then check for forum id. If true, then only return extension informations.
	*
	* @return array allowed extensions array.
	*/
	function obtain_attach_extensions($forum_id)
	{
		if (($extensions = $this->get('_extensions')) === false)
		{
			global $db;

			$extensions = array(
				'_allowed_post'	=> array(),
				'_allowed_pm'	=> array(),
			);

			// The rule is to only allow those extensions defined. ;)
			$sql = 'SELECT e.extension, g.*
				FROM ' . EXTENSIONS_TABLE . ' e, ' . EXTENSION_GROUPS_TABLE . ' g
				WHERE e.group_id = g.group_id
					AND (g.allow_group = 1 OR g.allow_in_pm = 1)';
			$result = $db->sql_query($sql);

			while ($row = $db->sql_fetchrow($result))
			{
				$extension = strtolower(trim($row['extension']));

				$extensions[$extension] = array(
					'display_cat'	=> (int) $row['cat_id'],
					'download_mode'	=> (int) $row['download_mode'],
					'upload_icon'	=> trim($row['upload_icon']),
					'max_filesize'	=> (int) $row['max_filesize'],
					'allow_group'	=> $row['allow_group'],
					'allow_in_pm'	=> $row['allow_in_pm'],
				);

				$allowed_forums = ($row['allowed_forums']) ? unserialize(trim($row['allowed_forums'])) : array();

				// Store allowed extensions forum wise
				if ($row['allow_group'])
				{
					$extensions['_allowed_post'][$extension] = (!sizeof($allowed_forums)) ? 0 : $allowed_forums;
				}

				if ($row['allow_in_pm'])
				{
					$extensions['_allowed_pm'][$extension] = 0;
				}
			}
			$db->sql_freeresult($result);

			$this->put('_extensions', $extensions);
		}

		// Forum post
		if ($forum_id === false)
		{
			// We are checking for private messages, therefore we only need to get the pm extensions...
			$return = array('_allowed_' => array());

			foreach ($extensions['_allowed_pm'] as $extension => $check)
			{
				$return['_allowed_'][$extension] = 0;
				$return[$extension] = $extensions[$extension];
			}

			$extensions = $return;
		}
		else if ($forum_id === true)
		{
			return $extensions;
		}
		else
		{
			$forum_id = (int) $forum_id;
			$return = array('_allowed_' => array());

			foreach ($extensions['_allowed_post'] as $extension => $check)
			{
				// Check for allowed forums
				if (is_array($check))
				{
					$allowed = (!in_array($forum_id, $check)) ? false : true;
				}
				else
				{
					$allowed = true;
				}

				if ($allowed)
				{
					$return['_allowed_'][$extension] = 0;
					$return[$extension] = $extensions[$extension];
				}
			}

			$extensions = $return;
		}

		if (!isset($extensions['_allowed_']))
		{
			$extensions['_allowed_'] = array();
		}

		return $extensions;
	}

	/**
	* Obtain active bots
	*/
	function obtain_bots()
	{
		if (($bots = $this->get('_bots')) === false)
		{
			global $db;

			switch ($db->sql_layer)
			{
				case 'mssql':
				case 'mssql_odbc':
					$sql = 'SELECT user_id, bot_agent, bot_ip
						FROM ' . BOTS_TABLE . '
						WHERE bot_active = 1
					ORDER BY LEN(bot_agent) DESC';
				break;

				case 'firebird':
					$sql = 'SELECT user_id, bot_agent, bot_ip
						FROM ' . BOTS_TABLE . '
						WHERE bot_active = 1
					ORDER BY CHAR_LENGTH(bot_agent) DESC';
				break;

				// LENGTH supported by MySQL, IBM DB2 and Oracle for sure...
				default:
					$sql = 'SELECT user_id, bot_agent, bot_ip
						FROM ' . BOTS_TABLE . '
						WHERE bot_active = 1
					ORDER BY LENGTH(bot_agent) DESC';
				break;
			}
			$result = $db->sql_query($sql);

			$bots = array();
			while ($row = $db->sql_fetchrow($result))
			{
				$bots[] = $row;
			}
			$db->sql_freeresult($result);

			$this->put('_bots', $bots);
		}

		return $bots;
	}

	/**
	* Obtain cfg file data
	*/
	function obtain_cfg_items($theme)
	{
		global $config, $phpbb_root_path;

		$parsed_items = array(
			'theme'		=> array(),
			'template'	=> array(),
			'imageset'	=> array()
		);

		foreach ($parsed_items as $key => $parsed_array)
		{
			$parsed_array = $this->get('_cfg_' . $key . '_' . $theme[$key . '_path']);

			if ($parsed_array === false)
			{
				$parsed_array = array();
			}

			$reparse = false;
			$filename = $phpbb_root_path . 'styles/' . $theme[$key . '_path'] . '/' . $key . '/' . $key . '.cfg';

			if (!file_exists($filename))
			{
				continue;
			}

			if (!isset($parsed_array['filetime']) || (($config['load_tplcompile'] && @filemtime($filename) > $parsed_array['filetime'])))
			{
				$reparse = true;
			}

			// Re-parse cfg file
			if ($reparse)
			{
				$parsed_array = parse_cfg_file($filename);
				$parsed_array['filetime'] = @filemtime($filename);

				$this->put('_cfg_' . $key . '_' . $theme[$key . '_path'], $parsed_array);
			}
			$parsed_items[$key] = $parsed_array;
		}

		return $parsed_items;
	}

	/**
	* Obtain disallowed usernames
	*/
	function obtain_disallowed_usernames()
	{
		if (($usernames = $this->get('_disallowed_usernames')) === false)
		{
			global $db;

			$sql = 'SELECT disallow_username
				FROM ' . DISALLOW_TABLE;
			$result = $db->sql_query($sql);

			$usernames = array();
			while ($row = $db->sql_fetchrow($result))
			{
				$usernames[] = str_replace('%', '.*?', preg_quote(utf8_clean_string($row['disallow_username']), '#'));
			}
			$db->sql_freeresult($result);

			$this->put('_disallowed_usernames', $usernames);
		}

		return $usernames;
	}

	/**
	* Obtain hooks...
	*/
	function obtain_hooks()
	{
		global $phpbb_root_path, $phpEx;

		if (($hook_files = $this->get('_hooks')) === false)
		{
			$hook_files = array();

			// Now search for hooks...
			$dh = @opendir($phpbb_root_path . 'includes/hooks/');

			if ($dh)
			{
				while (($file = readdir($dh)) !== false)
				{
					if (strpos($file, 'hook_') === 0 && substr($file, -(strlen($phpEx) + 1)) === '.' . $phpEx)
					{
						$hook_files[] = substr($file, 0, -(strlen($phpEx) + 1));
					}
				}
				closedir($dh);
			}

			$this->put('_hooks', $hook_files);
		}

		return $hook_files;
	}
}

?>
Gruß
DJSonic
Gast234254
Gesperrt
Beiträge: 1999
Registriert: 08.02.2009 22:58

Re: [MODDB] Automatische Sommerzeit 2.0.2

Beitrag von Gast234254 »

was ich nicht versteh an dem ganzen hier, ich hab das 2.0.2 neu installiert mit phpbb 3.0.6, alles neu installiert und nix geändert und in meinem testforum läuft es fehlerfrei :-?

gruß
stephan
Benutzeravatar
MartectX
Ehemaliger Übersetzer
Beiträge: 648
Registriert: 10.05.2008 17:08
Wohnort: Marienplatz

Re: [MODDB] Automatische Sommerzeit 2.0.2

Beitrag von MartectX »

DJSonic hat geschrieben:Also so weit ich das verstanden habe macht require_once nichts anderes, als die Datei genau einmal einzubinden und somit mehrfaches einlesen, parsen usw. verhindert.
Ich hatte den include erst nach der Klassendeklaration gesetzt... dämlicher Fehler.

Werde das vermutlich in 2.0.3 umsetzen!
wintstar hat geschrieben:was ich nicht versteh an dem ganzen hier, ich hab das 2.0.2 neu installiert mit phpbb 3.0.6, alles neu installiert und nix geändert und in meinem testforum läuft es fehlerfrei :-?
Ist ja auch gut so! :grin:
Benutzeravatar
Hand of Shadow
Mitglied
Beiträge: 221
Registriert: 05.07.2005 21:47
Wohnort: Mönchengladbach #HERMGES#
Kontaktdaten:

Re: [MODDB] Automatische Sommerzeit 2.0.2

Beitrag von Hand of Shadow »

hallo

ich wollte den mod updaten von 1.0.6 nach 2.0.2
phpbbcore ist 3.0.6

als ich die dateien hochgeladen habe und wie in der anleitung beschrieben über acp den cache löschen wollte erreischeint jetzt diese fehler meldung

Code: Alles auswählen

SQL ERROR [ mysql4 ]

Incorrect decimal value: 'Europe/Berlin' for column 'user_timezone' at row 1 [1366]

An sql error occurred while fetching this page. Please contact an administrator if this problem persists.

thx im vorraus für die hilfe
Benutzeravatar
franki
Ehemaliges Teammitglied
Beiträge: 2823
Registriert: 21.10.2007 14:02
Wohnort: Sonsbeck
Kontaktdaten:

Re: [MODDB] Automatische Sommerzeit 2.0.2

Beitrag von franki »

1. Hast Du "convert_timezones.php" ausgeführt ?
und wenn ja
2. schau nach ob die user_timezone auch bei dir in der Tabelle geändert wurde.
Das war nämlich mein Problem. Er hatte alle geändert außer meine eigene.
Nach dem ändern waren alle Fehlermeldungen weg.
LG Franki
Antworten

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