* @copyright 2007-2014 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ class HelperCalendarCore extends Helper { const DEFAULT_DATE_FORMAT = 'Y-mm-dd'; const DEFAULT_COMPARE_OPTION = 1; private $_actions; private $_compare_actions; private $_compare_date_from; private $_compare_date_to; private $_compare_date_option; private $_date_format; private $_date_from; private $_date_to; private $_rtl; public function __construct() { $this->base_folder = 'helpers/calendar/'; $this->base_tpl = 'calendar.tpl'; parent::__construct(); } public function setActions($value) { if (!is_array($value) && !$value instanceof Traversable) throw new PrestaShopException('Actions value must be an traversable array'); $this->_actions = $value; return $this; } public function getActions() { if (!isset($this->_actions)) $this->_actions = array(); return $this->_actions; } public function setCompareActions($value) { if (!is_array($value) && !$value instanceof Traversable) throw new PrestaShopException('Actions value must be an traversable array'); $this->_compare_actions = $value; return $this; } public function getCompareActions() { if (!isset($this->_compare_actions)) $this->_compare_actions = array(); return $this->_compare_actions; } public function setCompareDateFrom($value) { $this->_compare_date_from = $value; return $this; } public function getCompareDateFrom() { return $this->_compare_date_from; } public function setCompareDateTo($value) { $this->_compare_date_to = $value; return $this; } public function getCompareDateTo() { return $this->_compare_date_to; } public function setCompareOption($value) { $this->_compare_date_option = (int)$value; return $this; } public function getCompareOption() { if (!isset($this->_compare_date_option)) $this->_compare_date_option = self::DEFAULT_COMPARE_OPTION; return $this->_compare_date_option; } public function setDateFormat($value) { if (!is_string($value)) throw new PrestaShopException('Date format must be a string'); $this->_date_format = $value; return $this; } public function getDateFormat() { if (!isset($this->_date_format)) $this->_date_format = self::DEFAULT_DATE_FORMAT; return $this->_date_format; } public function setDateFrom($value) { if (!isset($value) || $value == '') $value = date('Y-m-d', strtotime("-31 days")); if (!is_string($value)) throw new PrestaShopException('Date must be a string'); $this->_date_from = $value; return $this; } public function getDateFrom() { if (!isset($this->_date_from)) $this->_date_from = date('Y-m-d', strtotime("-31 days")); return $this->_date_from; } public function setDateTo($value) { if (!isset($value) || $value == '') $value = date('Y-m-d'); if (!is_string($value)) throw new PrestaShopException('Date must be a string'); $this->_date_to = $value; return $this; } public function getDateTo() { if (!isset($this->_date_to)) $this->_date_to = date('Y-m-d'); return $this->_date_to; } public function setRTL($value) { $this->_rtl = (bool)$value; return $this; } public function addAction($action) { if (!isset($this->_actions)) $this->_actions = array(); $this->_actions[] = $action; return $this; } public function addCompareAction($action) { if (!isset($this->_compare_actions)) $this->_compare_actions = array(); $this->_compare_actions[] = $action; return $this; } public function generate() { $context = Context::getContext(); $admin_webpath = str_ireplace(_PS_CORE_DIR_, '', _PS_ADMIN_DIR_); $admin_webpath = preg_replace('/^'.preg_quote(DIRECTORY_SEPARATOR, '/').'/', '', $admin_webpath); $bo_theme = ((Validate::isLoadedObject($context->employee) && $context->employee->bo_theme) ? $context->employee->bo_theme : 'default'); if (!file_exists(_PS_BO_ALL_THEMES_DIR_.$bo_theme.DIRECTORY_SEPARATOR .'template')) $bo_theme = 'default'; if ($context->controller->ajax) { $html = ''; $html .= ''; } else { $html = ''; $context->controller->addJs(__PS_BASE_URI__.$admin_webpath .'/themes/'.$bo_theme.'/js/date-range-picker.js'); $context->controller->addJs(__PS_BASE_URI__.$admin_webpath .'/themes/'.$bo_theme.'/js/calendar.js'); } $this->tpl = $this->createTemplate($this->base_tpl); $this->tpl->assign(array( 'date_format' => $this->getDateFormat(), 'date_from' => $this->getDateFrom(), 'date_to' => $this->getDateTo(), 'compare_date_from' => $this->getCompareDateFrom(), 'compare_date_to' => $this->getCompareDateTo(), 'actions' => $this->getActions(), 'compare_actions' => $this->getCompareActions(), 'compare_option' => $this->getCompareOption(), 'is_rtl' => $this->isRTL() )); $html .= parent::generate(); return $html; } public function isRTL() { if (!isset($this->_rtl)) $this->_rtl = Context::getContext()->language->is_rtl; return $this->_rtl; } }