X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FUtils%2FDate.php;h=3d4570d7e194fdca20ffdd930f027345d3323a91;hb=bf9ba887d17fc752e1f228a6f566bef579f467d9;hp=5f7d7512ddaa3c10fbfe988098853d6b5a7077c7;hpb=8fe53786227c099fa18725227248b4a335c978b4;p=civicrm-core.git diff --git a/CRM/Utils/Date.php b/CRM/Utils/Date.php index 5f7d7512dd..3d4570d7e1 100644 --- a/CRM/Utils/Date.php +++ b/CRM/Utils/Date.php @@ -1027,8 +1027,8 @@ class CRM_Utils_Date { /** * Resolves the given relative time interval into finite time limits. * - * @param array $relativeTerm - * Relative time frame like this, previous, etc. + * @param string $relativeTerm + * Relative time frame: this, previous, previous_1. * @param int $unit * Frequency unit like year, month, week etc. * @@ -1039,6 +1039,9 @@ class CRM_Utils_Date { $now = getdate(); $from = $to = $dateRange = array(); $from['H'] = $from['i'] = $from['s'] = 0; + $relativeTermParts = explode('_', $relativeTerm); + $relativeTermPrefix = $relativeTermParts[0]; + $relativeTermSuffix = isset($relativeTermParts[1]) ? $relativeTermParts[1] : ''; switch ($unit) { case 'year': @@ -1162,7 +1165,7 @@ class CRM_Utils_Date { $from['d'] = $config->fiscalYearStart['d']; $from['M'] = $config->fiscalYearStart['M']; $fYear = self::calculateFiscalYear($from['d'], $from['M']); - switch ($relativeTerm) { + switch ($relativeTermPrefix) { case 'this': $from['Y'] = $fYear; $fiscalYear = mktime(0, 0, 0, $from['M'], $from['d'] - 1, $from['Y'] + 1); @@ -1174,12 +1177,22 @@ class CRM_Utils_Date { break; case 'previous': - $from['Y'] = $fYear - 1; - $fiscalYear = mktime(0, 0, 0, $from['M'], $from['d'] - 1, $from['Y'] + 1); - $fiscalEnd = explode('-', date("Y-m-d", $fiscalYear)); - $to['d'] = $fiscalEnd['2']; - $to['M'] = $fiscalEnd['1']; - $to['Y'] = $fiscalEnd['0']; + if (!is_numeric($relativeTermSuffix)) { + $from['Y'] = ($relativeTermSuffix === 'before') ? $fYear - 2 : $fYear - 1; + $fiscalYear = mktime(0, 0, 0, $from['M'], $from['d'] - 1, $from['Y'] + 1); + $fiscalEnd = explode('-', date("Y-m-d", $fiscalYear)); + $to['d'] = $fiscalEnd['2']; + $to['M'] = $fiscalEnd['1']; + $to['Y'] = $fiscalEnd['0']; + } + else { + $from['Y'] = $fYear - $relativeTermSuffix; + $fiscalYear = mktime(0, 0, 0, $from['M'], $from['d'] - 1, $from['Y'] + 1); + $fiscalEnd = explode('-', date("Y-m-d", $fiscalYear)); + $to['d'] = $fiscalEnd['2']; + $to['M'] = $fiscalEnd['1']; + $to['Y'] = $fYear; + } break; case 'next': @@ -1745,7 +1758,7 @@ class CRM_Utils_Date { * Fiscal Start Month. * * @return int - * $fy Current Fiscl Year + * $fy Current Fiscal Year */ public static function calculateFiscalYear($fyDate, $fyMonth) { $date = date("Y-m-d");