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/Model/DateParser.php | 241 ----------------------------------------------- 1 file changed, 241 deletions(-) delete mode 100644 app/Model/DateParser.php (limited to 'app/Model/DateParser.php') 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); - } - } - } -} -- cgit v1.2.3