vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 2.x Beta Releases (https://vborg.vbsupport.ru/forumdisplay.php?f=5)
-   -   Timezone Adjustment Hack (https://vborg.vbsupport.ru/showthread.php?t=50742)

N!ck 03-23-2003 10:00 PM

Timezone Adjustment Hack
 
This is kinda hard to explain, but this hack basically detects when a user doesn't have their timezone set correctly (when their set time doesn't match their computer time). It gives the user a JavaScript prompt asking whether they would like to update their timezone. If they click "OK", it pops open a small window for a couple of seconds, updates the user's timezone offset accordingly in the database, and closes the window.

This is a beta!! I've played with it a little, and it appears to work *most of the time*. I'm releasing it in the hopes that someone can help me fix any errors that come up. (I expect errors to come up.)

It is important to note that the idea was inspired by FireFly's HiveMail, but the JavaScript is written completely by me. I previously asked about it (underestimating my own abilities, I guess) and was told that I had to get permission from Chen. I emailed him but haven't received a response, so I went ahead and wrote this. If any mods have a problem with this, just delete the thread and the hack.

This hack does not work for users in Newfoundland, since their offset is -3:30.

IF YOU DOWNLOADED THIS BEFORE 5:45 PM PDT ON 03/24/03, change all instances of "hi_timezoneoffset" to "hi_timezone" (disregard the quotes in both cases). Then, re-apply step 1.

IF YOU DOWNLOADED BEFORE 6:10 PM PDT ON 03/24/03, remove from your hi_timezone template the following:
Code:

        } else if (difference<0) {
                sdifference="-"+difference;

IF YOU DOWNLOADED BEFORE 7:35 PM PDT ON 3/28/03,
open global.php and replace:

Code:

  eval("\$timezonecheck = \"".gettemplate('hi_timezone')."\";");
with:
Code:

  $nowhours=vbdate("H",time());
  eval("\$timezonecheck = \"".gettemplate('hi_timezone')."\";");

Instructions are attached. Don't forget to upload updatezone.php as well! Enjoy!

N!ck 03-24-2003 02:48 AM

<i>Post reserved for error reports and fixes.</i>

Erwin 03-24-2003 03:03 AM

Very cool idea, Nick. :) I was going to look into this when I had time, glad to see that you've done it. I'll have a look.

Erwin 03-24-2003 03:09 AM

I see what you've done - clever - if you're making it so that it checks on the index.php file, it might be a good idea to add the hi_timezoneoffset template into the templateused cache in index.php OR instead of using templates, just add the contents of hi_timezoneoffset in the <head> section of forumhome. Otherwise, it's an extra unnecessary query in forumhome.

Also, you can achieve the same thing by using templates - instead of editing global.php, add the same code to phpinclude (including the contents of the PHP file - this whole hack could be template based). :) Great idea. I'm at work, but when I get home I'll play around with it.

afterlab 03-24-2003 10:31 AM

Hmm.. Nice hack, N!ck. I'll look into installing this once it's out of Beta stage, expecially since it runs off of index.php.

N!ck 03-24-2003 12:04 PM

Erwin, you're right! I forgot about adding it to the $templatesused variable. Thanks for reminding me; I'll update the instructions.

Dean C 03-24-2003 03:24 PM

Very ingenious hack buddy :)

- miSt

Kars10 03-24-2003 03:25 PM

Damn cool!! Install it right now. :)

Thanks N!ck

[high]* Kars10 kicks installed![/high]

Zelda-King 03-24-2003 06:40 PM

It's not working for me. Something looks odd though. You've named a template hi_timezoneoffset yet in global.php you point to hi_timezone. Changing it to hi_timezoneoffset didn't help though.

N!ck 03-24-2003 10:52 PM

No, change everything from hi_timezoneoffset to hi_timezone. Sorry for the mistake. Fixed. :)

Has anyone tested this extensively?

N!ck 03-24-2003 11:17 PM

Update: I've tried this hack going both directions (positive AND negative), but I've only got it enabled for admins at the moment. Can anyone play with this some? Please? Thanks.

Smoothie 03-25-2003 03:31 AM

To find in index.php;
PHP Code:

require("./global.php"); 

I can find
PHP Code:

require('./global.php'); 


Smoothie 03-25-2003 03:43 AM

Installed, not working.

alkatraz 03-25-2003 06:17 AM

Great idea!
Not going to install it tho

AlexanderT 03-25-2003 07:14 AM

will definitely install it when it is working :)

N!ck 03-25-2003 10:18 PM

Quote:

Yesterday at 10:43 PM Smoothie said this in Post #13
Installed, not working.
You're not a newbie. I shouldn't have to tell you that I need more details. What do you mean it doesn't work? WHAT doesn't work about it?

Zelda-King 03-27-2003 09:05 PM

Well, mine isn't working at all, even if I change the time on my computer clock and mess with my forum time offset. I assume it's supposed to take action whenever someone goes to index.php?

N!ck 03-27-2003 11:43 PM

You are correct. View the page source and make sure there's a JavaScript in the head section of your page that includes a function called checktime(). If you don't see it, perhaps you're not logged in. Or perhaps you haven't added all the templates.

Zelda-King 03-28-2003 12:29 AM

Actually that javascript isn't showing in my 'view source' but I have added/edited the templates and removed
Code:

} else if (difference<0) {
                sdifference="-"+difference;

from the hi_timezone template as you said. I've also gone over the file edits over and over. I'll check again later. (And I was logged in).

Smoothie 03-28-2003 03:45 AM

Quote:

03-25-03 at 07:18 PM N!ck said this in Post #16


You're not a newbie. I shouldn't have to tell you that I need more details. What do you mean it doesn't work? WHAT doesn't work about it?

Woa, calm down there. Your desription of the hack;
Quote:

This is kinda hard to explain, but this hack basically detects when a user doesn't have their timezone set correctly (when their set time doesn't match their computer time). It gives the user a JavaScript prompt asking whether they would like to update their timezone. If they click "OK", it pops open a small window for a couple of seconds, updates the user's timezone offset accordingly in the database, and closes the window.
It does nothing. I'm assuming you mean if your time zone in your user cp is set wrong, this script will detect the incorrect time, and a js will prompt asking if you would like to update to the correct time zone. I use hivemail, I know how it is suppose to work.

N!ck 03-28-2003 09:40 PM

Quote:

Yesterday at 10:45 PM Smoothie said this in Post #20
Woa, calm down there. Your desription of the hack;It does nothing. I'm assuming you mean if your time zone in your user cp is set wrong, this script will detect the incorrect time, and a js will prompt asking if you would like to update to the correct time zone. I use hivemail, I know how it is suppose to work.

You still aren't giving details. View the source, and let me know whether the JS appears.

Smoothie 03-28-2003 11:58 PM

I deleted the hack, but will re-install and let you know.

Zelda-King 03-29-2003 12:16 AM

I do have THIS javascript, but not the checktime() thing.
Code:

<script language="JavaScript">
<!--
var curDate = new Date();
var shours = curDate.getHours();
if (shours!=) {
        var difference = shours-;
        if (difference>0) {
                sdifference="+"+difference;
        } else {
                sdifference=difference;
        }
        if (confirm("We have detected that your timezone is not set correctly.  Would you like to correct it now?")) open("updatezone.php?offset="+sdifference, "", "width=10,height=10");
}
//-->
</script>


N!ck 03-29-2003 12:24 AM

I see something strange. Just a minute...

N!ck 03-29-2003 12:37 AM

Check post #1 for a fix.

Zelda-King 03-29-2003 12:42 AM

I get the "We have detected that your timezone is not set correctly. Would you like to correct it now?" javascript prompt now. I click on it and it takes me to the index page and the time is not changed.

Smoothie 03-29-2003 02:20 AM

Quote:

Today at 06:40 PM N!ck said this in Post #21



You still aren't giving details. View the source, and let me know whether the JS appears.

Made all the necessary changes, viewed source, no JS.

Smoothie 03-29-2003 02:48 AM

Ok, got it working, I see where part of the problem is. Your instructions aren't updated.

Anyway, I set my time in my User CP to a different time zone. When I reload the index page, I get the JS prompt; "we have detected that your timezone is not set correctly. Would you like to correct it now?" click yes, but it sets it 19 hours ahead, it should GMT -5 hours. I'm EST.

The time is correct but....
All times are GMT +19 hours. The time now is 11:50 PM.

N!ck 03-29-2003 04:48 AM

Ah, I will need to look into that. Thanks.

N!ck 03-29-2003 04:54 AM

Smoothie, try this. Edit your hi_timezone template. Find:

Code:

if (shours!=$nowhours) {
        var difference = shours-$nowhours;

And replace it with:
Code:

if (shours!=$nowhours) {
        var difference = shours-$nowhours;
        if (difference>12) {
          difference=difference-24;
        }

And let me know if that works. :) Thanks for your help.

N!ck 03-29-2003 04:56 AM

Also, I did find some more things that needed updating, and I fixed them. Thanks for the heads-up there.

N!ck 03-29-2003 05:30 AM

Quote:

Yesterday at 11:54 PM N!ck said this in Post #30
Smoothie, try this. Edit your hi_timezone template. Find:

Code:

if (shours!=$nowhours) {
        var difference = shours-$nowhours;

And replace it with:
Code:

if (shours!=$nowhours) {
        var difference = shours-$nowhours;
        if (difference>12) {
          difference=difference-24;
        }

And let me know if that works. :) Thanks for your help.


Smoothie, I did this change on my own forums as well (first reproduced the problem, then applied it), and it seems to work 100% fine now. I'm going to go ahead and post this in full releases.


All times are GMT. The time now is 08:07 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01173 seconds
  • Memory Usage 1,808KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (9)bbcode_code_printable
  • (2)bbcode_php_printable
  • (6)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (32)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete