Register Members List Search Today's Posts Mark Forums Read

Reply
 
Thread Tools
  #1  
Old 03 Sep 2012, 06:57
qpurser qpurser is offline
 
Join Date: Aug 2011
Calculation on date profile fields

This might be a tricky one and I am counting on those who are smarter as I am to help me

Scenario:
Our members must attend at least 1 meeting every 12 months to retain membership.
I created 2 custom user fields (field 16 and 19) where we enter the dates from the last 2 meetings they attended. Data is entered like 2012-12-01.

What we need:
First we have to see which field is closest to TODAY (actual date)
Then we have to use that field and calculate how many days are left from TODAY they are still member.
For example TODAY = 2012-09-03 and the last meeting = 2012-08-03
The output should be 365 (days in a year) minus 31 (difference from TODAY and Last Meeting) and should say something like "Your membership will expire in xxx days"

Hope somebody can help me
Thanks
Reply With Quote
  #2  
Old 03 Sep 2012, 07:47
kh99 kh99 is offline
 
Join Date: Aug 2009
Real name: Kevin
Here's a test program that seems to work:

Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.


(Of course this just shows the calculation, you'll need to change it to use your profile fields and do something with the value other than echo it).
Reply With Quote
  #3  
Old 03 Sep 2012, 10:41
qpurser qpurser is offline
 
Join Date: Aug 2011
thx for the quick reply.

I have been playing around with it and tried to put it in a php forum block:


Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

The block output works and shows the days left when field1 or field2 stay within the 365 day range.
Normally when those fields exceed the 365 days I think I should see the output from the "else" statement ("overdue") but instead I get a minus value (for example: -640)
Reply With Quote
  #4  
Old 03 Sep 2012, 12:02
cellarius's Avatar
cellarius cellarius is offline
 
Join Date: Aug 2005
Real name: Sven
add

Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

to your if-condition.
__________________
Please note that there will be no further updates to my addons, especially they will not be upgraded for vB5. I'm leaving vB, since IB choose to go the banana-way yet again.

http://www.roma-antiqua.de
Reply With Quote
  #5  
Old 03 Sep 2012, 13:05
qpurser qpurser is offline
 
Join Date: Aug 2011
Originally Posted by cellarius View Post
add

Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

to your if-condition.
This didn't do it.

Maybe I explained wrong:
When the result of

Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

is less then 365 days it should display the result from "$days_left"

If the result of

Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

is more then 365 days it should display "overdue"

Thanks for trying to help guys.
Appreciate it
Reply With Quote
  #6  
Old 03 Sep 2012, 14:44
kh99 kh99 is offline
 
Join Date: Aug 2009
Real name: Kevin
The "else" in the code I posted was the case where there was no last meeting date entered in either field (or the format was invalid or something like that). If in that situation you want it to display the "overdue" message, then you could use something like this:


Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.


A couple other things I should mention - because it uses timestamps, if there is a "leap day" between the last meeting day and today, that will add an extra day (i.e. it will show their membership as expiring one day earlier). And the "+ 1" at the end of the calculations rounds up, so that if there is a fraction of a day left it will show as 1 day. If you'd rather have a fraction show as 0 (have it say "0 days left" on their last day) you could remove the + 1. Also, this may mean that you want the condition to be "< 1" instead of "< 0" to display the overdue message.

Also, you'll probably want to remove the $field1 and $field2 variables and replace them with $vbulletin->userinfo['fieldX'] and $vbulletin->userinfo['fieldY'] (where X and Y are the numbers of your custom fields).

One more thing - if you're using a PHP type forum block, you probably need to set the "Cache Time" to 0 for it to work correctly.

Last edited by kh99; 03 Sep 2012 at 14:52.
Reply With Quote
  #7  
Old 03 Sep 2012, 15:02
qpurser qpurser is offline
 
Join Date: Aug 2011
WOW.... Thanks so much.
Works perfect now.

As I am a complete beginner with coding I just want to share my full block code for those who are not that familiar either. Don't know if it is perfect but it gives me the right display:


Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

Attached Images
File Type: png Screen Shot 2012-09-03 at 4.56.49 PM.png (9.2 KB, 3 views)
Reply With Quote
Reply



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools

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


New To Site? Need Help?

All times are GMT. The time now is 15:37.

Layout Options | Width: Wide Color: