Skip to content

Commit

Permalink
Improvements to the period selection functions:
Browse files Browse the repository at this point in the history
1 Changed variable names to conform to coding standards
2 Added  options to show financial years as well as calendar years
3 Added extra parameter to allow only some options to appear in drop down list
4 Added default case to prevent dropping through without anything being selected
  • Loading branch information
timschofield committed Mar 20, 2018
1 parent c35f132 commit 1fd7a0d
Showing 1 changed file with 127 additions and 78 deletions.
205 changes: 127 additions & 78 deletions includes/MiscFunctions.php
Expand Up @@ -385,23 +385,23 @@ function SendMailBySmtp(&$mail,$To) {
$SendFrom = $_SESSION['SMTPSettings']['username'].'@'.$Domain;
}
$mail->setFrom($SendFrom);
$result = $mail->send($To,'smtp');
return $result;
$Result = $mail->send($To,'smtp');
return $Result;
}

function GetMailList($MailGroup){
$ToList = array();
$sql = "SELECT email,realname
$SQL = "SELECT email,realname
FROM mailgroupdetails INNER JOIN www_users
ON www_users.userid=mailgroupdetails.userid
WHERE mailgroupdetails.groupname='" . $MailGroup . "'";
$ErrMsg = _('Failed to retrieve mail lists');
$result = DB_query($sql,$ErrMsg);
if(DB_num_rows($result) != 0){
$Result = DB_query($SQL,$ErrMsg);
if(DB_num_rows($Result) != 0){

//Create the string which meets the Recipients requirements
while($myrow = DB_fetch_array($result)){
$ToList[]= $myrow['realname'] . '<'.$myrow['email'].'>';
while($MyRow = DB_fetch_array($Result)){
$ToList[]= $MyRow['realname'] . '<'.$MyRow['email'].'>';

}

Expand All @@ -413,49 +413,64 @@ function ChangeFieldInTable($TableName, $FieldName, $OldValue, $NewValue){
/* Used in Z_ scripts to change one field across the table.
*/
echo '<br />' . _('Changing') . ' ' . $TableName . ' ' . _('records');
$sql = "UPDATE " . $TableName . " SET " . $FieldName . " ='" . $NewValue . "' WHERE " . $FieldName . "='" . $OldValue . "'";
$SQL = "UPDATE " . $TableName . " SET " . $FieldName . " ='" . $NewValue . "' WHERE " . $FieldName . "='" . $OldValue . "'";
$DbgMsg = _('The SQL statement that failed was');
$ErrMsg = _('The SQL to update' . ' ' . $TableName . ' ' . _('records failed'));
$result = DB_query($sql,$ErrMsg,$DbgMsg,true);
$Result = DB_query($SQL,$ErrMsg,$DbgMsg,true);
echo ' ... ' . _('completed');
}

/* Used in report scripts for standard periods.
* Parameter $choice is from the 'Period' combobox value.
*/
function ReportPeriodList( $choice ){
$periods = array( _('This Month'), _('This Quarter'), _('This Year'),
_('Last Month'), _('Last Quarter'), _('Last Year'),
_('Next Month'), _('Next Quarter'), _('Next Year') );
* Parameter $Choice is from the 'Period' combobox value.
*/
function ReportPeriodList($Choice, $Options = array('t', 'l', 'n')) {
$Periods = array();

if (in_array('t', $Options)) {
$Periods[] = _('This Month');
$Periods[] = _('This Year');
$Periods[] = _('This Financial Year');
}

$count = count($periods);
if (in_array('l', $Options)) {
$Periods[] = _('Last Month');
$Periods[] = _('Last Year');
$Periods[] = _('Last Financial Year');
}

$html = '<select name="Period">
<option value=""></option>';
if (in_array('n', $Options)) {
$Periods[] = _('Next Month');
$Periods[] = _('Next Year');
$Periods[] = _('Next Financial Year');
}

for ( $x = 0; $x < $count; ++$x ) {
if ( !empty($choice) && $choice == $periods[$x] ){
$html .= '<option value="' . $periods[$x] . '" selected>' . $periods[$x] . '</option>';
}
else {
$html .= '<option value="' . $periods[$x] . '">' . $periods[$x] . '</option>';
$Count = count($Periods);

$HTML = '<select name="Period">
<option value=""></option>';

for ($x = 0;$x < $Count;++$x) {
if (!empty($Choice) && $Choice == $Periods[$x]) {
$HTML.= '<option value="' . $Periods[$x] . '" selected>' . $Periods[$x] . '</option>';
} else {
$HTML.= '<option value="' . $Periods[$x] . '">' . $Periods[$x] . '</option>';
}
}

$html .= '</select>';
$HTML.= '</select>';

return $html;
return $HTML;
}

function ReportPeriod($PeriodName, $FromOrTo){
function ReportPeriod($PeriodName, $FromOrTo) {
/* Used in report scripts to determine period.
*/
$ThisMonth = date('m');
$ThisYear = date('Y');
$LastMonth = $ThisMonth-1;
$LastYear = $ThisYear-1;
$NextMonth = $ThisMonth+1;
$NextYear = $ThisYear+1;
$LastMonth = $ThisMonth - 1;
$LastYear = $ThisYear - 1;
$NextMonth = $ThisMonth + 1;
$NextYear = $ThisYear + 1;
// Find total number of days in this month:
$TotalDays = cal_days_in_month(CAL_GREGORIAN, $ThisMonth, $ThisYear);
// Find total number of days in last month:
Expand All @@ -464,57 +479,91 @@ function ReportPeriod($PeriodName, $FromOrTo){
$TotalDaysNext = cal_days_in_month(CAL_GREGORIAN, $NextMonth, $ThisYear);
switch ($PeriodName) {

Case _('This Month'):
$ds = date('Y-m-d', mktime(0,0,0, $ThisMonth, 1, $ThisYear));
$de = date('Y-m-d', mktime(0,0,0, $ThisMonth, $TotalDays, $ThisYear));
break;
Case _('This Quarter'):
$QtrStrt = intval(($ThisMonth-1)/3)*3+1;
$QtrEnd = intval(($ThisMonth-1)/3)*3+3;
if ( $QtrEnd == 4 OR $QtrEnd == 6 OR $QtrEnd == 9 OR $QtrEnd == 11 ) { $TotalDays=30; }
$ds = date('Y-m-d', mktime(0,0,0, $QtrStrt, 1, $ThisYear));
$de = date('Y-m-d', mktime(0,0,0, $QtrEnd, $TotalDays, $ThisYear));
break;
Case _('This Year'):
$ds = date('Y-m-d', mktime(0,0,0, 1, 1, $ThisYear));
$de = date('Y-m-d', mktime(0,0,0, 12, 31, $ThisYear));
break;
Case _('Last Month'):
$ds = date('Y-m-d', mktime(0,0,0, $LastMonth, 1, $ThisYear));
$de = date('Y-m-d', mktime(0,0,0, $LastMonth, $TotalDaysLast, $ThisYear));
break;
Case _('Last Quarter'):
$QtrStrt = intval(($ThisMonth-1)/3)*3-2;
$QtrEnd = intval(($ThisMonth-1)/3)*3+0;
if ( $QtrEnd == 4 OR $QtrEnd == 6 OR $QtrEnd == 9 OR $QtrEnd == 11 ) { $TotalDays=30; }
$ds = date('Y-m-d', mktime(0,0,0, $QtrStrt, 1, $ThisYear));
$de = date('Y-m-d', mktime(0,0,0, $QtrEnd, $TotalDays, $ThisYear));
break;
Case _('Last Year'):
$ds = date('Y-m-d', mktime(0,0,0, 1, 1, $LastYear));
$de = date('Y-m-d', mktime(0,0,0, 12, 31, $LastYear));
break;
Case _('Next Month'):
$ds = date('Y-m-d', mktime(0,0,0, $NextMonth, 1, $ThisYear));
$de = date('Y-m-d', mktime(0,0,0, $NextMonth, $TotalDaysNext, $ThisYear));
break;
Case _('Next Quarter'):
$QtrStrt = intval(($ThisMonth-1)/3)*3+4;
$QtrEnd = intval(($ThisMonth-1)/3)*3+6;
if ( $QtrEnd == 4 OR $QtrEnd == 6 OR $QtrEnd == 9 OR $QtrEnd == 11 ) { $TotalDays=30; }
$ds = date('Y-m-d', mktime(0,0,0, $QtrStrt, 1, $ThisYear));
$de = date('Y-m-d', mktime(0,0,0, $QtrEnd, $TotalDays, $ThisYear));
break;
Case _('Next Year'):
$ds = date('Y-m-d', mktime(0,0,0, 1, 1, $NextYear));
$de = date('Y-m-d', mktime(0,0,0, 12, 31, $NextYear));
break;
case _('This Month'):
$DateStart = date($_SESSION['DefaultDateFormat'], mktime(0, 0, 0, $ThisMonth, 1, $ThisYear));
$DateEnd = date($_SESSION['DefaultDateFormat'], mktime(0, 0, 0, $ThisMonth, $TotalDays, $ThisYear));
break;
case _('This Quarter'):
$QtrStrt = intval(($ThisMonth - 1) / 3) * 3 + 1;
$QtrEnd = intval(($ThisMonth - 1) / 3) * 3 + 3;
if ($QtrEnd == 4 or $QtrEnd == 6 or $QtrEnd == 9 or $QtrEnd == 11) {
$TotalDays = 30;
}
$DateStart = date($_SESSION['DefaultDateFormat'], mktime(0, 0, 0, $QtrStrt, 1, $ThisYear));
$DateEnd = date($_SESSION['DefaultDateFormat'], mktime(0, 0, 0, $QtrEnd, $TotalDays, $ThisYear));
break;
case _('This Year'):
$DateStart = date($_SESSION['DefaultDateFormat'], mktime(0, 0, 0, 1, 1, $ThisYear));
$DateEnd = date($_SESSION['DefaultDateFormat'], mktime(0, 0, 0, 12, 31, $ThisYear));
break;
case _('This Financial Year'):
if (Date('m') > $_SESSION['YearEnd']) {
$DateStart = Date($_SESSION['DefaultDateFormat'], Mktime(0, 0, 0, $_SESSION['YearEnd'] + 1, 1, Date('Y')));
} else {
$DateStart = Date($_SESSION['DefaultDateFormat'], Mktime(0, 0, 0, $_SESSION['YearEnd'] + 1, 1, Date('Y') - 1));
}
$DateEnd = date($_SESSION['DefaultDateFormat'], YearEndDate($_SESSION['YearEnd'], 0));
break;
case _('Last Month'):
$DateStart = date($_SESSION['DefaultDateFormat'], mktime(0, 0, 0, $LastMonth, 1, $ThisYear));
$DateEnd = date($_SESSION['DefaultDateFormat'], mktime(0, 0, 0, $LastMonth, $TotalDaysLast, $ThisYear));
break;
case _('Last Quarter'):
$QtrStrt = intval(($ThisMonth - 1) / 3) * 3 - 2;
$QtrEnd = intval(($ThisMonth - 1) / 3) * 3 + 0;
if ($QtrEnd == 4 or $QtrEnd == 6 or $QtrEnd == 9 or $QtrEnd == 11) {
$TotalDays = 30;
}
$DateStart = date($_SESSION['DefaultDateFormat'], mktime(0, 0, 0, $QtrStrt, 1, $ThisYear));
$DateEnd = date($_SESSION['DefaultDateFormat'], mktime(0, 0, 0, $QtrEnd, $TotalDays, $ThisYear));
break;
case _('Last Year'):
$DateStart = date($_SESSION['DefaultDateFormat'], mktime(0, 0, 0, 1, 1, $LastYear));
$DateEnd = date($_SESSION['DefaultDateFormat'], mktime(0, 0, 0, 12, 31, $LastYear));
break;
case _('Last Financial Year'):
if (Date('m') > $_SESSION['YearEnd']) {
$DateStart = Date($_SESSION['DefaultDateFormat'], Mktime(0, 0, 0, $_SESSION['YearEnd'] + 1, 1, Date('Y') - 1));
} else {
$DateStart = Date($_SESSION['DefaultDateFormat'], Mktime(0, 0, 0, $_SESSION['YearEnd'] + 1, 1, Date('Y') - 2));
}
$DateEnd = date($_SESSION['DefaultDateFormat'], YearEndDate($_SESSION['YearEnd'], -1));
break;
case _('Next Month'):
$DateStart = date($_SESSION['DefaultDateFormat'], mktime(0, 0, 0, $NextMonth, 1, $ThisYear));
$DateEnd = date($_SESSION['DefaultDateFormat'], mktime(0, 0, 0, $NextMonth, $TotalDaysNext, $ThisYear));
break;
case _('Next Quarter'):
$QtrStrt = intval(($ThisMonth - 1) / 3) * 3 + 4;
$QtrEnd = intval(($ThisMonth - 1) / 3) * 3 + 6;
if ($QtrEnd == 4 or $QtrEnd == 6 or $QtrEnd == 9 or $QtrEnd == 11) {
$TotalDays = 30;
}
$DateStart = date($_SESSION['DefaultDateFormat'], mktime(0, 0, 0, $QtrStrt, 1, $ThisYear));
$DateEnd = date($_SESSION['DefaultDateFormat'], mktime(0, 0, 0, $QtrEnd, $TotalDays, $ThisYear));
break;
case _('Next Year'):
$DateStart = date($_SESSION['DefaultDateFormat'], mktime(0, 0, 0, 1, 1, $NextYear));
$DateEnd = date($_SESSION['DefaultDateFormat'], mktime(0, 0, 0, 12, 31, $NextYear));
break;
case _('Next Financial Year'):
if (Date('m') > $_SESSION['YearEnd']) {
$DateStart = Date($_SESSION['DefaultDateFormat'], Mktime(0, 0, 0, $_SESSION['YearEnd'] + 1, 1, Date('Y') + 1));
} else {
$DateStart = Date($_SESSION['DefaultDateFormat'], Mktime(0, 0, 0, $_SESSION['YearEnd'] + 1, 1, Date('Y')));
}
$DateEnd = date($_SESSION['DefaultDateFormat'], YearEndDate($_SESSION['YearEnd'], 1));
break;
default:
$DateStart = date($_SESSION['DefaultDateFormat'], mktime(0, 0, 0, $LastMonth, 1, $ThisYear));
$DateEnd = date($_SESSION['DefaultDateFormat'], mktime(0, 0, 0, $LastMonth, $TotalDaysLast, $ThisYear));
break;
}

if ($FromOrTo == 'From') {
$Period = GetPeriod(ConvertSQLDate($ds));
$Period = GetPeriod($DateStart);
} else {
$Period = GetPeriod(ConvertSQLDate($de));
$Period = GetPeriod($DateEnd);
}

return $Period;
Expand Down

0 comments on commit 1fd7a0d

Please sign in to comment.