Seite 23 von 32

Re: [MODDB] Automatische Sommerzeit 2.0.2

Verfasst: 29.11.2009 02:27
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

Re: [MODDB] Automatische Sommerzeit 2.0.2

Verfasst: 29.11.2009 02:30
von MartectX
Danke allen Rückmeldungen, ich werde das Update nun auch in der MOD-Datenbank eintragen lassen. :)

Re: [MODDB] Automatische Sommerzeit 2.0.2

Verfasst: 30.11.2009 18:03
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

Re: [MODDB] Automatische Sommerzeit 2.0.2

Verfasst: 30.11.2009 18:57
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.

Re: [MODDB] Automatische Sommerzeit 2.0.2

Verfasst: 01.12.2009 13:51
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?

Re: [MODDB] Automatische Sommerzeit 2.0.2

Verfasst: 01.12.2009 14:27
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

Re: [MODDB] Automatische Sommerzeit 2.0.2

Verfasst: 01.12.2009 15:09
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

Re: [MODDB] Automatische Sommerzeit 2.0.2

Verfasst: 01.12.2009 21:14
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:

Re: [MODDB] Automatische Sommerzeit 2.0.2

Verfasst: 04.12.2009 17:35
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

Re: [MODDB] Automatische Sommerzeit 2.0.2

Verfasst: 04.12.2009 18:09
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.