From 98b203fe691ec1ea9d6d19e916827185b575b05a Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Fri, 16 Oct 2015 22:43:07 -0400 Subject: Move DateParser class to Core namespace --- app/Core/DateParser.php | 241 ++++++++++++++++++++++++++++++++++ app/Model/DateParser.php | 241 ---------------------------------- app/ServiceProvider/ClassProvider.php | 2 +- 3 files changed, 242 insertions(+), 242 deletions(-) create mode 100644 app/Core/DateParser.php delete mode 100644 app/Model/DateParser.php (limited to 'app') diff --git a/app/Core/DateParser.php b/app/Core/DateParser.php new file mode 100644 index 00000000..026cf305 --- /dev/null +++ b/app/Core/DateParser.php @@ -0,0 +1,241 @@ += $start && $date <= $end; + } + + /** + * Get the total number of hours between 2 datetime objects + * Minutes are rounded to the nearest quarter + * + * @access public + * @param DateTime $d1 + * @param DateTime $d2 + * @return float + */ + public function getHours(DateTime $d1, DateTime $d2) + { + $seconds = $this->getRoundedSeconds(abs($d1->getTimestamp() - $d2->getTimestamp())); + return round($seconds / 3600, 2); + } + + /** + * Round the timestamp to the nearest quarter + * + * @access public + * @param integer $seconds Timestamp + * @return integer + */ + public function getRoundedSeconds($seconds) + { + return (int) round($seconds / (15 * 60)) * (15 * 60); + } + + /** + * Return a timestamp if the given date format is correct otherwise return 0 + * + * @access public + * @param string $value Date to parse + * @param string $format Date format + * @return integer + */ + public function getValidDate($value, $format) + { + $date = DateTime::createFromFormat($format, $value); + + if ($date !== false) { + $errors = DateTime::getLastErrors(); + if ($errors['error_count'] === 0 && $errors['warning_count'] === 0) { + $timestamp = $date->getTimestamp(); + return $timestamp > 0 ? $timestamp : 0; + } + } + + return 0; + } + + /** + * Parse a date and return a unix timestamp, try different date formats + * + * @access public + * @param string $value Date to parse + * @return integer + */ + public function getTimestamp($value) + { + foreach ($this->getAllFormats() as $format) { + $timestamp = $this->getValidDate($value, $format); + + if ($timestamp !== 0) { + return $timestamp; + } + } + + return 0; + } + + /** + * Get ISO8601 date from user input + * + * @access public + * @param string $value Date to parse + * @return string + */ + public function getIsoDate($value) + { + return date('Y-m-d', ctype_digit($value) ? $value : $this->getTimestamp($value)); + } + + /** + * Get all combinations of date/time formats + * + * @access public + * @return string[] + */ + public function getAllFormats() + { + $formats = array(); + + foreach ($this->getDateFormats() as $date) { + foreach ($this->getTimeFormats() as $time) { + $formats[] = $date.' '.$time; + } + } + + return array_merge($formats, $this->getDateFormats()); + } + + /** + * Return the list of supported date formats (for the parser) + * + * @access public + * @return string[] + */ + public function getDateFormats() + { + return array( + $this->config->get('application_date_format', 'm/d/Y'), + 'Y-m-d', + 'Y_m_d', + ); + } + + /** + * Return the list of supported time formats (for the parser) + * + * @access public + * @return string[] + */ + public function getTimeFormats() + { + return array( + 'H:i', + 'g:i A', + 'g:iA', + ); + } + + /** + * Return the list of available date formats (for the config page) + * + * @access public + * @return array + */ + public function getAvailableFormats() + { + return array( + 'm/d/Y' => date('m/d/Y'), + 'd/m/Y' => date('d/m/Y'), + 'Y/m/d' => date('Y/m/d'), + 'd.m.Y' => date('d.m.Y'), + ); + } + + /** + * Remove the time from a timestamp + * + * @access public + * @param integer $timestamp Timestamp + * @return integer + */ + public function removeTimeFromTimestamp($timestamp) + { + return mktime(0, 0, 0, date('m', $timestamp), date('d', $timestamp), date('Y', $timestamp)); + } + + /** + * Get a timetstamp from an ISO date format + * + * @access public + * @param string $date + * @return integer + */ + public function getTimestampFromIsoFormat($date) + { + return $this->removeTimeFromTimestamp(ctype_digit($date) ? $date : strtotime($date)); + } + + /** + * Format date (form display) + * + * @access public + * @param array $values Database values + * @param string[] $fields Date fields + * @param string $format Date format + */ + public function format(array &$values, array $fields, $format = '') + { + if ($format === '') { + $format = $this->config->get('application_date_format'); + } + + foreach ($fields as $field) { + if (! empty($values[$field])) { + $values[$field] = date($format, $values[$field]); + } + else { + $values[$field] = ''; + } + } + } + + /** + * Convert date (form input data) + * + * @access public + * @param array $values Database values + * @param string[] $fields Date fields + * @param boolean $keep_time Keep time or not + */ + public function convert(array &$values, array $fields, $keep_time = false) + { + foreach ($fields as $field) { + if (! empty($values[$field]) && ! is_numeric($values[$field])) { + $timestamp = $this->getTimestamp($values[$field]); + $values[$field] = $keep_time ? $timestamp : $this->removeTimeFromTimestamp($timestamp); + } + } + } +} diff --git a/app/Model/DateParser.php b/app/Model/DateParser.php deleted file mode 100644 index 8159341d..00000000 --- a/app/Model/DateParser.php +++ /dev/null @@ -1,241 +0,0 @@ -= $start && $date <= $end; - } - - /** - * Get the total number of hours between 2 datetime objects - * Minutes are rounded to the nearest quarter - * - * @access public - * @param DateTime $d1 - * @param DateTime $d2 - * @return float - */ - public function getHours(DateTime $d1, DateTime $d2) - { - $seconds = $this->getRoundedSeconds(abs($d1->getTimestamp() - $d2->getTimestamp())); - return round($seconds / 3600, 2); - } - - /** - * Round the timestamp to the nearest quarter - * - * @access public - * @param integer $seconds Timestamp - * @return integer - */ - public function getRoundedSeconds($seconds) - { - return (int) round($seconds / (15 * 60)) * (15 * 60); - } - - /** - * Return a timestamp if the given date format is correct otherwise return 0 - * - * @access public - * @param string $value Date to parse - * @param string $format Date format - * @return integer - */ - public function getValidDate($value, $format) - { - $date = DateTime::createFromFormat($format, $value); - - if ($date !== false) { - $errors = DateTime::getLastErrors(); - if ($errors['error_count'] === 0 && $errors['warning_count'] === 0) { - $timestamp = $date->getTimestamp(); - return $timestamp > 0 ? $timestamp : 0; - } - } - - return 0; - } - - /** - * Parse a date and return a unix timestamp, try different date formats - * - * @access public - * @param string $value Date to parse - * @return integer - */ - public function getTimestamp($value) - { - foreach ($this->getAllFormats() as $format) { - $timestamp = $this->getValidDate($value, $format); - - if ($timestamp !== 0) { - return $timestamp; - } - } - - return 0; - } - - /** - * Get ISO8601 date from user input - * - * @access public - * @param string $value Date to parse - * @return string - */ - public function getIsoDate($value) - { - return date('Y-m-d', ctype_digit($value) ? $value : $this->getTimestamp($value)); - } - - /** - * Get all combinations of date/time formats - * - * @access public - * @return string[] - */ - public function getAllFormats() - { - $formats = array(); - - foreach ($this->getDateFormats() as $date) { - foreach ($this->getTimeFormats() as $time) { - $formats[] = $date.' '.$time; - } - } - - return array_merge($formats, $this->getDateFormats()); - } - - /** - * Return the list of supported date formats (for the parser) - * - * @access public - * @return string[] - */ - public function getDateFormats() - { - return array( - $this->config->get('application_date_format', 'm/d/Y'), - 'Y-m-d', - 'Y_m_d', - ); - } - - /** - * Return the list of supported time formats (for the parser) - * - * @access public - * @return string[] - */ - public function getTimeFormats() - { - return array( - 'H:i', - 'g:i A', - 'g:iA', - ); - } - - /** - * Return the list of available date formats (for the config page) - * - * @access public - * @return array - */ - public function getAvailableFormats() - { - return array( - 'm/d/Y' => date('m/d/Y'), - 'd/m/Y' => date('d/m/Y'), - 'Y/m/d' => date('Y/m/d'), - 'd.m.Y' => date('d.m.Y'), - ); - } - - /** - * Remove the time from a timestamp - * - * @access public - * @param integer $timestamp Timestamp - * @return integer - */ - public function removeTimeFromTimestamp($timestamp) - { - return mktime(0, 0, 0, date('m', $timestamp), date('d', $timestamp), date('Y', $timestamp)); - } - - /** - * Get a timetstamp from an ISO date format - * - * @access public - * @param string $date - * @return integer - */ - public function getTimestampFromIsoFormat($date) - { - return $this->removeTimeFromTimestamp(ctype_digit($date) ? $date : strtotime($date)); - } - - /** - * Format date (form display) - * - * @access public - * @param array $values Database values - * @param string[] $fields Date fields - * @param string $format Date format - */ - public function format(array &$values, array $fields, $format = '') - { - if ($format === '') { - $format = $this->config->get('application_date_format'); - } - - foreach ($fields as $field) { - if (! empty($values[$field])) { - $values[$field] = date($format, $values[$field]); - } - else { - $values[$field] = ''; - } - } - } - - /** - * Convert date (form input data) - * - * @access public - * @param array $values Database values - * @param string[] $fields Date fields - * @param boolean $keep_time Keep time or not - */ - public function convert(array &$values, array $fields, $keep_time = false) - { - foreach ($fields as $field) { - if (! empty($values[$field]) && ! is_numeric($values[$field])) { - $timestamp = $this->getTimestamp($values[$field]); - $values[$field] = $keep_time ? $timestamp : $this->removeTimeFromTimestamp($timestamp); - } - } - } -} diff --git a/app/ServiceProvider/ClassProvider.php b/app/ServiceProvider/ClassProvider.php index 4acebfeb..9df2dede 100644 --- a/app/ServiceProvider/ClassProvider.php +++ b/app/ServiceProvider/ClassProvider.php @@ -29,7 +29,6 @@ class ClassProvider implements ServiceProviderInterface 'Config', 'Currency', 'CustomFilter', - 'DateParser', 'File', 'LastLogin', 'Link', @@ -79,6 +78,7 @@ class ClassProvider implements ServiceProviderInterface 'ProjectGanttFormatter', ), 'Core' => array( + 'DateParser', 'Helper', 'HttpClient', 'Lexer', -- cgit v1.2.3