logo       


Re: mantisbt/core class.period.php,NONE,1.1: msg#00046

Subject: Re: mantisbt/core class.period.php,NONE,1.1
This code looks at first glance as though it may cause issues with other
DB's as it doesn't use the ADODB date functionality?

In addtion, "%Y-%m-%d " - we need to start making this also support other
DB's - e.g. there's some bugs in bug tracker about mssql and using m/d/y
vs d/m/y etc

Has this only been tested against mysql so far?

Paul

> --- NEW FILE: class.period.php ---
> <?php
> # Mantis - a php based bugtracking system
> # Copyright (C) 2000 - 2002  Kenzaburo Ito - 
> kenito-J7RQz27tXwtAfugRpC6u6w@xxxxxxxxxxxxxxxx
> # Copyright (C) 2002 - 2007  Mantis Team   -
> mantisbt-dev-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@xxxxxxxxxxxxxxxx
> # This program is distributed under the terms and conditions of the GPL
> # See the README and LICENSE files for details
>
> # --------------------------------------------------------
> # $Id: class.period.php,v 1.1 2007/08/15 02:51:33 thraxisp Exp $
> # --------------------------------------------------------
> /**
> * Class for actions dealing with date periods
> *
> * This class encapsulates all actions dealing with time intervals. It
> handles data
> * storage, and retrieval, as well as formatting and access.
> *
> * @copyright Logical Outcome Ltd. 2005 - 2007
> * @author Glenn Henshaw 
> <thraxisp-3kkvZBxzQh2+Mgy9Xt2BoPd9D2ou9A/h@xxxxxxxxxxxxxxxx>
> *
> * @version $Id: class.period.php,v 1.1 2007/08/15 02:51:33 thraxisp Exp $
> */
> class Period {
> /**
> * @var string start date
> */
>       var             $start = '';
> /**
> * @var string end date
> */
>     var               $end = '';
>
> //******* End vars *********************************************
>
> /**
> * Constructor
> */
> function Period() {
>       $this->start = ''; // default to today
>       $this->end = ''; // default to today
> }
>
> /**
> * return a matching SQL clause
> *
> * create an SQL clause that matches the set date.
> *
> * @return string SQL clause
> */
> function get_sql_clause () {
>       if ( '' == $this->start ) {
>               if ( '' == $this->end ) {
>                       $t_clause = '';
>               } else {
>                       $t_clause = " =< '" . $this->end . "'";
>               }
>       } else {
>               if ( '' == $this->end ) {
>                       $t_clause = " >= '" . $this->start . "'";
>               } else {
>                       $t_clause = " BETWEEN '" . $this->start . "' AND '" . 
> $this->end . "'";
>               }
>       }
>       return $t_clause;
> }
>
> /**
> * return a matching text clause
> *
> * create an text clause that matches the set date.
> *
> * @return string SQL clause
> */
> function get_text_clause () {
>       if ( '' == $this->start ) {
>               if ( '' == $this->end ) {
>                       $t_clause = lang_get( 'all_dates' );
>               } else {
>                       list( $t_end_date, $t_end_time ) = split( ' ', 
> $this->end );
>                       $t_clause = lang_get( 'before' ) . ' ' . $t_end_date;
>               }
>       } else {
>               list( $t_start_date, $t_start_time ) = split( ' ', $this->start 
> );
>               if ( '' == $this->end ) {
>                       $t_clause = lang_get( 'after' ) . ' ' . $t_start_date;
>               } else {
>                       list( $t_end_date, $t_end_time ) = split( ' ', 
> $this->end );
>                       $t_clause = lang_get( 'from_date' ) . ' ' . 
> $t_start_date . ' ' .
> lang_get( 'to_date' ) . ' ' . $t_end_date;
>               }
>       }
>       return $t_clause;
> }
>
> /**
> * set dates for a week
> *
> * @param string date string to expand to a week (Sun to Sat)
> */
> function a_week ( $p_when, $p_weeks = 1 ) {
>       list( $t_year, $t_month, $t_day ) = split( "-", $p_when );
>     $t_now = getdate( mktime( 0,0,0,$t_month, $t_day, $t_year ) );
>       $this->end = strftime( "%Y-%m-%d 23:59:59",
>           mktime( 0,0,0, $t_month, $t_day - $t_now['wday'] + ( $p_weeks * 7 ) 
> -
> 1, $t_year ) );
>       $this->start = strftime( "%Y-%m-%d 00:00:00", mktime( 0,0,0,$t_month,
> $t_day - $t_now['wday'], $t_year ) );
> }
>
> /**
> * set dates for this week
> *
> */
> function this_week ( ) {
>       $this->a_week( date( 'Y-m-d' ) );
> }
>
> /**
> * set dates for last week
> *
> */
> function last_week ( $p_weeks = 1) {
>       $this->a_week( date( 'Y-m-d', strtotime( '-'.$p_weeks.' week' ) ),
> $p_weeks );
> }
>
> /**
> * set dates for this week to date
> *
> */
> function week_to_date ( ) {
>     $this->this_week( );
>       $this->end = date( 'Y-m-d' ) . ' 23:59:59';
> }
>
> /**
> * set dates for a month
> *
> * @param string date string to expand to a month
> */
> function a_month ( $p_when ) {
>       list( $t_year, $t_month, $t_day ) = split( "-", $p_when );
>       $this->end = strftime( "%Y-%m-%d 23:59:59", mktime( 0,0,0, $t_month+1, 
> 0,
> $t_year ) );
>       $this->start = strftime( "%Y-%m-%d 00:00:00", mktime( 0,0,0,$t_month, 1,
> $t_year ) );
> }
>
> /**
> * set dates for this month
> *
> */
> function this_month ( ) {
>       $this->a_month( date( 'Y-m-d' ) );
> }
>
> /**
> * set dates for last month
> *
> */
> function last_month ( ) {
>       $this->a_month( date( 'Y-m-d', strtotime( '-1 month' ) ) );
> }
>
> /**
> * set dates for this month to date
> *
> */
> function month_to_date ( ) {
>       $this->end = date( 'Y-m-d' ) . ' 23:59:59';
>       list( $t_year, $t_month, $t_day ) = split( "-", $this->end );
>       $this->start = strftime( "%Y-%m-%d 00:00:00", mktime( 0,0,0,$t_month, 1,
> $t_year ) );
> }
>
> /**
> * set dates for a quarter
> *
> * @param string date string to expand to a quarter
> */
> function a_quarter ( $p_when ) {
>       list( $t_year, $t_month, $t_day ) = split( "-", $p_when );
>       $t_month = ( (int)( ( $t_month - 1 ) / 3 ) * 3 ) + 1;
>       $this->end = strftime( "%Y-%m-%d 23:59:59", mktime( 0,0,0, $t_month+3, 
> 0,
> $t_year ) );
>       $this->start = strftime( "%Y-%m-%d 00:00:00", mktime( 0,0,0,$t_month, 1,
> $t_year ) );
> }
>
> /**
> * set dates for this quarter
> *
> */
> function this_quarter ( ) {
>       $this->a_quarter( date( 'Y-m-d' ) );
> }
>
> /**
> * set dates for last month
> *
> */
> function last_quarter ( ) {
>       $this->a_quarter( date( 'Y-m-d', strtotime( '-3 months' ) ) );
> }
>
> /**
> * set dates for this quarter to date
> *
> */
> function quarter_to_date ( ) {
>       $this->end = date( 'Y-m-d' ) . ' 23:59:59';
>       list( $t_year, $t_month, $t_day ) = split( "-", $this->end );
>       $t_month = ( (int)( ( $t_month - 1 ) / 3 ) * 3 ) + 1;
>       $this->start = strftime( "%Y-%m-%d 00:00:00", mktime( 0,0,0,$t_month, 1,
> $t_year ) );
> }
>
> /**
> * set dates for a year
> *
> * @param string date string to expand to a year
> */
> function a_year ( $p_when ) {
>       list( $t_year, $t_month, $t_day ) = split( "-", $p_when );
>       $this->end = strftime( "%Y-%m-%d 23:59:59", mktime( 0,0,0, 12, 31,
> $t_year ) );
>       $this->start = strftime( "%Y-%m-%d 00:00:00", mktime( 0,0,0, 1, 1,
> $t_year ) );
> }
>
> /**
> * set dates for this year
> *
> */
> function this_year ( ) {
>       $this->a_year( date( 'Y-m-d' ) );
> }
>
> /**
> * set dates for current year, ending today
> *
> */
> function year_to_date ( ) {
>       $this->end = date( 'Y-m-d' ) . ' 23:59:59';
>       list( $t_year, $t_month, $t_day ) = split( "-", $this->end );
>       $this->start = strftime( "%Y-%m-%d 00:00:00", mktime( 0,0,0, 1, 1,
> $t_year ) );
> }
>
> /**
> * set dates for last year
> *
> */
> function last_year ( ) {
>       $this->a_year( date( 'Y-m-d', strtotime( '-1 year' ) ) );
> }
>
> /**
> * get start date in unix timestamp format
> *
> */
> function get_start_timestamp ( ) {
>       return strtotime( $this->start );
> }
>
> /**
> * get end date in unix timestamp format
> *
> */
> function get_end_timestamp ( ) {
>       return strtotime( $this->end );
> }
>
> /**
> * get formatted start date
> *
> */
> function get_start_formatted ( ) {
>       return ($this->start == '' ? '' : strftime( '%Y-%m-%d',
> $this->get_start_timestamp()) );
> }
>
> /**
> * get formatted end date
> *
> */
> function get_end_formatted ( ) {
>       return ($this->end == '' ? '' : strftime( '%Y-%m-%d',
> $this->get_end_timestamp()) );
> }
>
> /**
> * get number of days in interval
> *
> */
> function get_elapsed_days ( ) {
>       return ( $this->get_end_timestamp() - $this->get_start_timestamp() ) /
> (24 * 60 * 60);
> }
>
> /**
> * print a period selector
> *
> */
> function period_selector ( $p_control_name ) {
>       $t_periods = array(
>               0 => lang_get( 'period_none' ),
>               7 => lang_get( 'period_this_week' ),
>               8 => lang_get( 'period_last_week' ),
>               9 => lang_get( 'period_two_weeks' ),
>               1 => lang_get( 'period_this_month' ),
>               2 => lang_get( 'period_last_month' ),
>               3 => lang_get( 'period_this_quarter' ),
>               4 => lang_get( 'period_last_quarter' ),
>               5 => lang_get( 'period_year_to_date' ),
>               6 => lang_get( 'period_last_year' ),
>               10 => lang_get( 'period_select' )
>       );
>       $t_default = gpc_get_int( $p_control_name, 0 );
>       $t_formatted_start = $this->get_start_formatted();
>       $t_formatted_end = $this->get_end_formatted();
>       $t_ret = '<div id="period_menu">';
>       $t_ret .= get_dropdown( $t_periods, $p_control_name, $t_default, false,
> false, 'setDisplay(\'dates\',
> document.getElementById(\''.$p_control_name.'\').value == 10)');
>     $t_ret .= '</div><div id="dates">'.
>         lang_get('from_date').'&nbsp;'.
>         '<input type="text" id="start_date" name="start_date" size="10"
> value="'.$t_formatted_start.'" />'.
>           '<img src="images/calendar-img.gif" id="f_trigger_s" style="cursor:
> pointer; border: 1px solid red;" '.
>               ' title="Date selector"
> onmouseover="this.style.background=\'red\';"'.
>               ' onmouseout="this.style.background=\'white\'" />'."\n".
>           '<br />'.
>         lang_get('to_date').'&nbsp;&nbsp;&nbsp;&nbsp;'.
>         '<input type="text" id="end_date" name="end_date" size="10"
> value="'.$t_formatted_end.'" />'.
>           '<img src="images/calendar-img.gif" id="f_trigger_e" style="cursor:
> pointer; border: 1px solid red;" '.
>               ' title="Date selector"
> onmouseover="this.style.background=\'red\';"'.
>               ' onmouseout="this.style.background=\'white\'" />'."\n".
>           '<script type="text/javascript">
>                       <!--
>                       Calendar.setup({ inputField : "start_date", ifFormat : 
> "%Y-%m-%d",
> button : "f_trigger_s",
>                           align : "cR", singleClick : false,  showTime : 
> false });
>               Calendar.setup({ inputField : "end_date", ifFormat : "%Y-%m-%d",
> button : "f_trigger_e",
>                           align : "cR", singleClick : false,  showTime : 
> false });
>               var t = document.getElementById(\''.$p_control_name.'\').value;
>               setDisplay(\''.$p_control_name.'\',true);
>               setDisplay(\'dates\',
> document.getElementById(\''.$p_control_name.'\').value == 10);
>                       //-->
>               </script>'."\n".
>               '</div>';
>     return $t_ret;
>
> }
>
> /**
> * set date based on period selector
> *
> */
> function set_period_from_selector ( $p_control_name,
> $p_start_field='start_date', $p_end_field='end_date' ) {
>       $t_default = gpc_get_int( $p_control_name, 0 );
>       switch ( $t_default ) {
>               case 1:
>                       $this->month_to_date();
>                       break;
>               case 2:
>                       $this->last_month();
>                       break;
>               case 3:
>                       $this->quarter_to_date();
>                       break;
>               case 4:
>                       $this->last_quarter();
>                       break;
>               case 5:
>                       $this->year_to_date();
>                       break;
>               case 6:
>                       $this->last_year();
>                       break;
>       case 7:
>               $this->week_to_date();
>               break;
>               case 8:
>                       $this->last_week();
>                       break;
>       case 9:
>               $this->last_week( 2 );
>               break;
>         case 10:
>             $t_today = date( 'Y-m-d' );
>             if ($p_start_field != '') {
>                 $this->start = gpc_get_string($p_start_field, '') . '
> 00:00:00';
>                 if ($this->start == '') {
>                     $this->start = $t_today . ' 00:00:00';
>                 }
>             }
>             if ($p_end_field != '') {
>                 $this->end = gpc_get_string($p_end_field, '') . '
> 23:59:59';
>                 if ($this->end == '') {
>                     $this->end = $t_today . ' 23:59:59';
>                 }
>             }
>             break;
>               default:
>       }
> }
>
> } // end class
>
> ?>
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Splunk Inc.
> Still grepping through log files to find problems?  Stop.
> Now Search log events and configuration files using AJAX and a browser.
> Download your FREE copy of Splunk now >>  http://get.splunk.com/
> _______________________________________________
> mantisbt-cvs mailing list
> mantisbt-cvs-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@xxxxxxxxxxxxxxxx
> https://lists.sourceforge.net/lists/listinfo/mantisbt-cvs
>
>




-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/


Ruby Jobs
Java Jobs
Jobs in California
more...
what
job title, keywords
where
city, state, zip
jobs by job search
<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

Recently Viewed:
encryption.gpg....    ietf.rfc822/199...    freebsd.devel.i...    lang.haskell.li...    mail.squirrelma...    web.zope.plone....    yellowdog.gener...    text.xml.xalan....    recreation.phot...    kde.devel.educa...    hardware.bus.ca...    printing.ghosts...    voip.peering/20...    assembly/2006-0...    org.user-groups...    culture.interne...    network.i2p/200...    boot-loaders.ya...    xfree86.render/...    qnx.openqnx.dev...    jakarta.velocit...    user-groups.pal...   
Home | blog view | USPTO Patent Archive | advertise | OSDir is an inevitable website. super tiny logo

Free Magazines

Cisco News
Receive a free quarterly e-newsletter with exclusive articles on how Cisco IT uses its own products and solutions to enable the business.
subscribe

Systems Management News, the newspaper for IT systems administration and data center managers! Each issue of Systems Management News is chock-full of news and analysis to help you understand what's happening in your field.
subscribe

The Enterprise Newsweekly eWeek is the essential technology information source for builders of e-business.
subscribe

Oracle Magazine Oracle Magazine contains technology strategy articles, sample code, tips, Oracle and partner news, how to articles for developers and DBAs, and more. Oracle (NASDAQ: ORCL) is the world's largest enterprise software company.
subscribe

Total Telecom Total Telecom is "The Economist of the communications industry".
subscribe