Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
  #1  
Old 05-22-2009, 02:14 AM
stardotstar stardotstar is offline
 
Join Date: May 2008
Location: SYD, AU
Posts: 156
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default How do I reset board timezone after plugin callout to another script which sets UTC

There is a bug in the latest openx
https://developer.openx.org/jira/bro...3Aall-tabpanel
Which is:
Quote:
3. The alocal.php forces the PHP timezone to date_timezone_set('UTC'), always!
4. My site which has a PHP timezone 'Europe/Tallinn' defined now goes wild everytime date() related functions are used after any local OpenX tag. SQL queries which use the current date are obviously wrong then and so on.
5. Changing the [timezone]:location= config option has no effect. (Cause the PHP code does not use it at all)

This worked in 2.4.5 and is a regression. I understand that the new statistic timestamps are to be saved in UTC however this should not break existing timezones for websites when using the local mode tag.

A solution would be to restore a previously set timezone after the view_local has been called."
I need to know how to reset the board timezone in the plugin for phpadsnew integration (currently only supported up to vb3.5 - I have it working on 3.8.2 except for this timezone issue.

Can a dev point me to the best way to put the timezone back after the plugin has done its thing in getting the ad?

Here is the plugin:

Code:
if (!function_exists('view_ad'))
{
	/**
	* Calls view_raw function from phpAdsNew either locally or via xml-rpc to get HTML advertisement code, see phpAdsNew for infos.
	*
	* @param	string	Zone name (zone:x) or keywords (keyword1|keyword2|...)
	* @param	integer	Client-ID
	* @param	string	Target
	* @param	string	Source
	* @param	integer	Withtext
	*
	* @return	string
	*/
	function view_ad($what, $clientid = 0, $target = '', $source = '', $withtext = 0)
	{
		global $vbulletin;
		static $panpath;
		
		if (!$panpath)
		{
			trim($vbulletin->options['panpath']);
			$panpath = @parse_url($vbulletin->options['panpath']);
		}
		
		// Calculate an identifier for the requested ad - this could be used to cache banners retrieved via xmlrpc in future versions
		$adid = sprintf('%u', crc32($what . $clientid . $target . $source . $withtext));
		
		if ($vbulletion->options['addtemplatename'] or $vbulletin->config['Misc']['debug'])
		{
			// Be verbose
			$adcomment = 'id="' . $adid . '" what="' . htmlspecialchars($what) . '" clientid="' . htmlspecialchars($clientid)
					. '" target="' . htmlspecialchars($target) . '" source="' . htmlspecialchars($source)
					. '" withtext="' . htmlspecialchars($withtext) . '"';
		}
		else
		{
			$adcomment = $adid;
		}
		
		if ($vbulletin->options['panpath'] == '')
		{
			// Path to phpAdsNew is empty - disable ads
			return "<!-- ad {$adcomment} / -->";
		}
		elseif (strtolower($panpath['scheme']) == 'http')
		{
			// get banner from phpAdsNew via xml-rpc
			/*
			//	ATTN:
			//	In phpAdsNew 2.0.6 (and maybe earlier versions) is a tiny bug which prevents xml-rpc from working cleanly.
			//	
			//	Patch:
			//	--- phpAdsNew/misc/samples/xmlrpc/php/lib-xmlrpc.inc.php.orig	Tue Aug 16 10:51:26 2005
			//	+++ phpAdsNew/misc/samples/xmlrpc/php/lib-xmlrpc.inc.php	Thu Oct 27 17:12:26 2005
			//	@@ -76,6 +76,7 @@
			//			global $xmlrpcStruct;
			//	 
			//			global $xmlrpcTypes;
			//	+		global $xmlrpc_valid_parents;
			//			global $xmlEntities;
			//			global $xmlrpcerr;
			//			global $xmlrpcstr;
			//			
			//	See https://sourceforge.net/tracker/?func=detail&atid=111386&aid=1339623&group_id=11386 for details.
			*/
	
			global $xmlrpcbanner, $phpAds_remoteInfo;
			require_once(DIR . '/includes/lib-xmlrpc-class.inc.php');  // see misc/samples/xmlrpc/php/ directory of your phpAdsNew installation
	
			if (!$xmlrpcbanner)
			{
				$xmlrpcbanner = new phpAds_XmlRpc($panpath['host'], $panpath['path'], (intval($panpath['port']) > 0 ? $panpath['port'] : 80));
			}
	
			$ad = $xmlrpcbanner->view_raw($what, $clientid, $target, $source, $withtext);
	
			return "<!-- BEGIN ad {$adcomment} -->{$ad['html']}<!-- END ad {$adid} -->";
		}
		else
		{
			// get banner via direct invocation of phpAdsNew
			// this is basically taken from the invocationcode generated by phpAdsNew - it does its own checks to prevent multiple inclusion
	
			global $phpAds_context;
			
			if (@require($vbulletin->options['panpath'] . (strstr($vbulletin->options['panpath'] , '/phpadsnew.inc.php') ? '' : '/phpadsnew.inc.php' )))
			{
				if (!isset($phpAds_context))
				{
					$phpAds_context = array();
				}
	
				$ad = view_raw($what, $clientid, $target, $source, $withtext, $phpAds_context);
				
				if ($vbulletin->options['panbandupes'])
				{
					// Remember bannerid to prevent showing banner multiple times on same page
					$phpAds_context[] = array('!=' => 'bannerid:'.$ad['bannerid']);
				}

				return "<!-- BEGIN ad {$adcomment} -->{$ad['html']}<!-- END ad {$adid} -->";
	putenv("TZ=Australia/Sydney");
			}
		}
	}
}
You will see my attempt to "putenv" back but it works not.
Once I have this worked out I will post step by steps for 3.8.2 in the product thread!

Appreciated,
Will
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 12:38 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.08323 seconds
  • Memory Usage 2,177KB
  • Queries Executed 13 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)bbcode_code
  • (1)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete