diff --git a/composer.json b/composer.json index a2911726e9..c51df1ad87 100644 --- a/composer.json +++ b/composer.json @@ -39,6 +39,7 @@ "mobiledetect/mobiledetectlib": "^3.74", "nanasess/mdb2": "^2.5", "nanasess/php8-compat": "^1.0", + "nobuhiko/calendar": "^1.0", "pear/archive_tar": "^1.4.3", "pear/mail": "*", "pear/net_smtp": "^1.12", diff --git a/composer.lock b/composer.lock index 4776063e81..22e6b8a41b 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "61103d3a54c8391d2c0c246e909f46f5", + "content-hash": "ebdd83e60c352fb264ec7b9ef3e6bdee", "packages": [ { "name": "mobiledetect/mobiledetectlib", @@ -160,6 +160,55 @@ }, "time": "2020-12-08T04:46:03+00:00" }, + { + "name": "nobuhiko/calendar", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/nobuhiko/Calendar.git", + "reference": "a43c49fc4dd9c9f13f37e09ef5331d97057df21a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nobuhiko/Calendar/zipball/a43c49fc4dd9c9f13f37e09ef5331d97057df21a", + "reference": "a43c49fc4dd9c9f13f37e09ef5331d97057df21a", + "shasum": "" + }, + "require": { + "nanasess/php8-compat": "^1.0", + "pear/pear_exception": "*" + }, + "require-dev": { + "phpunit/phpunit": "^9.6" + }, + "suggest": { + "pear/date": "Install optionally via your project's composer.json" + }, + "type": "library", + "autoload": { + "psr-0": { + "Calendar": "./" + } + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "./" + ], + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "KIMOTO Nobuhiko", + "email": "nobuhiko.kimoto@gmail.com" + } + ], + "description": "More info available on: http://pear.php.net/package/Calendar", + "support": { + "source": "https://github.com/nobuhiko/Calendar/tree/1.0.0" + }, + "time": "2024-12-20T04:37:00+00:00" + }, { "name": "pear/archive_tar", "version": "1.5.0", diff --git a/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Calendar.php b/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Calendar.php index aa477e9979..04dd272c6f 100644 --- a/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Calendar.php +++ b/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Calendar.php @@ -21,8 +21,6 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -defined('CALENDAR_ROOT') || define('CALENDAR_ROOT', DATA_REALDIR.'module/Calendar'.DIRECTORY_SEPARATOR); - /** * Calendar のページクラス. * diff --git a/data/module/Calendar/Calendar.php b/data/module/Calendar/Calendar.php deleted file mode 100644 index 809df81759..0000000000 --- a/data/module/Calendar/Calendar.php +++ /dev/null @@ -1,739 +0,0 @@ - | -// | Lorenzo Alberton | -// +----------------------------------------------------------------------+ -// -// $Id: Calendar.php,v 1.3 2005/10/22 10:07:11 quipo Exp $ -// -/* - * @package Calendar - * @version $Id$ - */ - -/* - * Allows Calendar include path to be redefined - */ -if (!defined('CALENDAR_ROOT')) { - define('CALENDAR_ROOT', 'Calendar'.DIRECTORY_SEPARATOR); -} - -/* - * Constant which defines the calculation engine to use - */ -if (!defined('CALENDAR_ENGINE')) { - define('CALENDAR_ENGINE', 'UnixTS'); -} - -/* - * Define Calendar Month states - */ -define('CALENDAR_USE_MONTH', 1); -define('CALENDAR_USE_MONTH_WEEKDAYS', 2); -define('CALENDAR_USE_MONTH_WEEKS', 3); - -/** - * Contains a factory method to return a Singleton instance of a class - * implementing the Calendar_Engine_Interface.
- * Note: this class must be modified to "register" alternative - * Calendar_Engines. The engine used can be controlled with the constant - * CALENDAR_ENGINE - * - * @see Calendar_Engine_Interface - */ -class Calendar_Engine_Factory -{ - /** - * Returns an instance of the engine - * - * @return object instance of a calendar calculation engine - */ - public static function &getEngine() - { - static $engine = false; - switch (CALENDAR_ENGINE) { - case 'PearDate': - $class = 'Calendar_Engine_PearDate'; - break; - case 'UnixTS': - default: - $class = 'Calendar_Engine_UnixTS'; - break; - } - if (!$engine) { - if (!class_exists($class)) { - require_once CALENDAR_ROOT.'Engine'.DIRECTORY_SEPARATOR.CALENDAR_ENGINE.'.php'; - } - $engine = new $class(); - } - - return $engine; - } -} - -/** - * Base class for Calendar API. This class should not be instantiated - * directly. - * - * @abstract - */ -class Calendar -{ - /** - * Instance of class implementing calendar engine interface - * - * @var object - */ - public $cE; - - /** - * Instance of Calendar_Validator (lazy initialized when isValid() or - * getValidor() is called - * - * @var Calendar_Validator - */ - public $validator; - - /** - * Year for this calendar object e.g. 2003 - * - * @var int - */ - public $year; - - /** - * Month for this calendar object e.g. 9 - * - * @var int - */ - public $month; - - /** - * Day of month for this calendar object e.g. 23 - * - * @var int - */ - public $day; - - /** - * Hour of day for this calendar object e.g. 13 - * - * @var int - */ - public $hour; - - /** - * Minute of hour this calendar object e.g. 46 - * - * @var int - */ - public $minute; - - /** - * Second of minute this calendar object e.g. 34 - * - * @var int - */ - public $second; - - /** - * Marks this calendar object as selected (e.g. 'today') - * - * @var bool - */ - public $selected = false; - - /** - * Collection of child calendar objects created from subclasses - * of Calendar. Type depends on the object which created them. - * - * @var array - */ - public $children = []; - - /** - * Constructs the Calendar - * - * @param int year - * @param int month - * @param int day - * @param int hour - * @param int minute - * @param int second - */ - public function __construct($y = 2000, $m = 1, $d = 1, $h = 0, $i = 0, $s = 0) - { - static $cE = null; - if (!isset($cE)) { - $cE = &Calendar_Engine_Factory::getEngine(); - } - $this->cE = &$cE; - $this->year = (int) $y; - $this->month = (int) $m; - $this->day = (int) $d; - $this->hour = (int) $h; - $this->minute = (int) $i; - $this->second = (int) $s; - } - - /** - * Defines the calendar by a timestamp (Unix or ISO-8601), replacing values - * passed to the constructor - * - * @param int|string Unix or ISO-8601 timestamp - * - * @return void - */ - public function setTimestamp($ts) - { - $this->year = $this->cE->stampToYear($ts); - $this->month = $this->cE->stampToMonth($ts); - $this->day = $this->cE->stampToDay($ts); - $this->hour = $this->cE->stampToHour($ts); - $this->minute = $this->cE->stampToMinute($ts); - $this->second = $this->cE->stampToSecond($ts); - } - - /** - * Returns a timestamp from the current date / time values. Format of - * timestamp depends on Calendar_Engine implementation being used - * - * @return int|string timestamp - */ - public function getTimestamp() - { - return $this->cE->dateToStamp( - $this->year, $this->month, $this->day, - $this->hour, $this->minute, $this->second); - } - - /** - * Defines calendar object as selected (e.g. for today) - * - * @param bool state whether Calendar subclass - * - * @return void - */ - public function setSelected($state = true) - { - $this->selected = $state; - } - - /** - * True if the calendar subclass object is selected (e.g. today) - * - * @return bool - */ - public function isSelected() - { - return $this->selected; - } - - /** - * Adjusts the date (helper method) - * - * @return void - */ - public function adjust() - { - $stamp = $this->getTimeStamp(); - $this->year = $this->cE->stampToYear($stamp); - $this->month = $this->cE->stampToMonth($stamp); - $this->day = $this->cE->stampToDay($stamp); - $this->hour = $this->cE->stampToHour($stamp); - $this->minute = $this->cE->stampToMinute($stamp); - $this->second = $this->cE->stampToSecond($stamp); - } - - /** - * Returns the date as an associative array (helper method) - * - * @param mixed timestamp (leave empty for current timestamp) - * - * @return array - */ - public function toArray($stamp = null) - { - if (is_null($stamp)) { - $stamp = $this->getTimeStamp(); - } - - return [ - 'year' => $this->cE->stampToYear($stamp), - 'month' => $this->cE->stampToMonth($stamp), - 'day' => $this->cE->stampToDay($stamp), - 'hour' => $this->cE->stampToHour($stamp), - 'minute' => $this->cE->stampToMinute($stamp), - 'second' => $this->cE->stampToSecond($stamp), - ]; - } - - /** - * Returns the value as an associative array (helper method) - * - * @param string type of date object that return value represents - * @param string $format ['int' | 'array' | 'timestamp' | 'object'] - * @param mixed timestamp (depending on Calendar engine being used) - * @param int integer default value (i.e. give me the answer quick) - * - * @return mixed - */ - public function returnValue($returnType, $format, $stamp, $default) - { - switch (strtolower($format)) { - case 'int': - return $default; - case 'array': - return $this->toArray($stamp); - break; - case 'object': - require_once CALENDAR_ROOT.'Factory.php'; - - return Calendar_Factory::createByTimestamp($returnType, $stamp); - break; - case 'timestamp': - default: - return $stamp; - break; - } - } - - /** - * Abstract method for building the children of a calendar object. - * Implemented by Calendar subclasses - * - * @param array containing Calendar objects to select (optional) - * - * @return bool - * @abstract - */ - public function build($sDates = []) - { - require_once 'PEAR.php'; - PEAR::raiseError( - 'Calendar::build is abstract', null, PEAR_ERROR_TRIGGER, - E_USER_NOTICE, 'Calendar::build()'); - - return false; - } - - /** - * Abstract method for selected data objects called from build - * - * @param array - * - * @return bool - * @abstract - */ - public function setSelection($sDates) - { - require_once 'PEAR.php'; - PEAR::raiseError( - 'Calendar::setSelection is abstract', null, PEAR_ERROR_TRIGGER, - E_USER_NOTICE, 'Calendar::setSelection()'); - - return false; - } - - /** - * Iterator method for fetching child Calendar subclass objects - * (e.g. a minute from an hour object). On reaching the end of - * the collection, returns false and resets the collection for - * further iteratations. - * - * @return mixed either an object subclass of Calendar or false - */ - public function fetch() - { - $child = current($this->children); - next($this->children); - if ($child) { - return $child; - } else { - reset($this->children); - - return false; - } - } - - /** - * Fetches all child from the current collection of children - * - * @return array - */ - public function fetchAll() - { - return $this->children; - } - - /** - * Get the number Calendar subclass objects stored in the internal - * collection. - * - * @return int - */ - public function size() - { - return count($this->children); - } - - /** - * Determine whether this date is valid, with the bounds determined by - * the Calendar_Engine. The call is passed on to - * Calendar_Validator::isValid - * - * @return bool - */ - public function isValid() - { - $validator = &$this->getValidator(); - - return $validator->isValid(); - } - - /** - * Returns an instance of Calendar_Validator - * - * @return Calendar_Validator - */ - public function &getValidator() - { - if (!isset($this->validator)) { - require_once CALENDAR_ROOT.'Validator.php'; - $this->validator = new Calendar_Validator($this); - } - - return $this->validator; - } - - /** - * Returns a reference to the current Calendar_Engine being used. Useful - * for Calendar_Table_Helper and Calendar_Validator - * - * @return object implementing Calendar_Engine_Inteface - */ - public function &getEngine() - { - return $this->cE; - } - - /** - * Set the CALENDAR_FIRST_DAY_OF_WEEK constant to the $firstDay value - * if the constant is not set yet. - * - * @throws E_USER_WARNING this method throws a WARNING if the - * CALENDAR_FIRST_DAY_OF_WEEK constant is already defined and - * the $firstDay parameter is set to a different value - * - * @param int $firstDay first day of the week (0=sunday, 1=monday, ...) - * - * @return int - */ - public function defineFirstDayOfWeek($firstDay = null) - { - if (defined('CALENDAR_FIRST_DAY_OF_WEEK')) { - if (!is_null($firstDay) && ($firstDay != CALENDAR_FIRST_DAY_OF_WEEK)) { - $msg = 'CALENDAR_FIRST_DAY_OF_WEEK constant already defined.' - .' The $firstDay parameter will be ignored.'; - trigger_error($msg, E_USER_WARNING); - } - - return CALENDAR_FIRST_DAY_OF_WEEK; - } - if (is_null($firstDay)) { - $firstDay = $this->cE->getFirstDayOfWeek( - $this->thisYear(), - $this->thisMonth(), - $this->thisDay() - ); - } - define('CALENDAR_FIRST_DAY_OF_WEEK', $firstDay); - - return CALENDAR_FIRST_DAY_OF_WEEK; - } - - /** - * Returns the value for the previous year - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 2002 or timestamp - */ - public function prevYear($format = 'int') - { - $ts = $this->cE->dateToStamp($this->year - 1, 1, 1, 0, 0, 0); - - return $this->returnValue('Year', $format, $ts, $this->year - 1); - } - - /** - * Returns the value for this year - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 2003 or timestamp - */ - public function thisYear($format = 'int') - { - $ts = $this->cE->dateToStamp($this->year, 1, 1, 0, 0, 0); - - return $this->returnValue('Year', $format, $ts, $this->year); - } - - /** - * Returns the value for next year - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 2004 or timestamp - */ - public function nextYear($format = 'int') - { - $ts = $this->cE->dateToStamp($this->year + 1, 1, 1, 0, 0, 0); - - return $this->returnValue('Year', $format, $ts, $this->year + 1); - } - - /** - * Returns the value for the previous month - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 4 or Unix timestamp - */ - public function prevMonth($format = 'int') - { - $ts = $this->cE->dateToStamp($this->year, $this->month - 1, 1, 0, 0, 0); - - return $this->returnValue('Month', $format, $ts, $this->cE->stampToMonth($ts)); - } - - /** - * Returns the value for this month - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 5 or timestamp - */ - public function thisMonth($format = 'int') - { - $ts = $this->cE->dateToStamp($this->year, $this->month, 1, 0, 0, 0); - - return $this->returnValue('Month', $format, $ts, $this->month); - } - - /** - * Returns the value for next month - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 6 or timestamp - */ - public function nextMonth($format = 'int') - { - $ts = $this->cE->dateToStamp($this->year, $this->month + 1, 1, 0, 0, 0); - - return $this->returnValue('Month', $format, $ts, $this->cE->stampToMonth($ts)); - } - - /** - * Returns the value for the previous day - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 10 or timestamp - */ - public function prevDay($format = 'int') - { - $ts = $this->cE->dateToStamp( - $this->year, $this->month, $this->day - 1, 0, 0, 0); - - return $this->returnValue('Day', $format, $ts, $this->cE->stampToDay($ts)); - } - - /** - * Returns the value for this day - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 11 or timestamp - */ - public function thisDay($format = 'int') - { - $ts = $this->cE->dateToStamp( - $this->year, $this->month, $this->day, 0, 0, 0); - - return $this->returnValue('Day', $format, $ts, $this->day); - } - - /** - * Returns the value for the next day - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 12 or timestamp - */ - public function nextDay($format = 'int') - { - $ts = $this->cE->dateToStamp( - $this->year, $this->month, $this->day + 1, 0, 0, 0); - - return $this->returnValue('Day', $format, $ts, $this->cE->stampToDay($ts)); - } - - /** - * Returns the value for the previous hour - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 13 or timestamp - */ - public function prevHour($format = 'int') - { - $ts = $this->cE->dateToStamp( - $this->year, $this->month, $this->day, $this->hour - 1, 0, 0); - - return $this->returnValue('Hour', $format, $ts, $this->cE->stampToHour($ts)); - } - - /** - * Returns the value for this hour - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 14 or timestamp - */ - public function thisHour($format = 'int') - { - $ts = $this->cE->dateToStamp( - $this->year, $this->month, $this->day, $this->hour, 0, 0); - - return $this->returnValue('Hour', $format, $ts, $this->hour); - } - - /** - * Returns the value for the next hour - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 14 or timestamp - */ - public function nextHour($format = 'int') - { - $ts = $this->cE->dateToStamp( - $this->year, $this->month, $this->day, $this->hour + 1, 0, 0); - - return $this->returnValue('Hour', $format, $ts, $this->cE->stampToHour($ts)); - } - - /** - * Returns the value for the previous minute - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 23 or timestamp - */ - public function prevMinute($format = 'int') - { - $ts = $this->cE->dateToStamp( - $this->year, $this->month, $this->day, - $this->hour, $this->minute - 1, 0); - - return $this->returnValue('Minute', $format, $ts, $this->cE->stampToMinute($ts)); - } - - /** - * Returns the value for this minute - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 24 or timestamp - */ - public function thisMinute($format = 'int') - { - $ts = $this->cE->dateToStamp( - $this->year, $this->month, $this->day, - $this->hour, $this->minute, 0); - - return $this->returnValue('Minute', $format, $ts, $this->minute); - } - - /** - * Returns the value for the next minute - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 25 or timestamp - */ - public function nextMinute($format = 'int') - { - $ts = $this->cE->dateToStamp( - $this->year, $this->month, $this->day, - $this->hour, $this->minute + 1, 0); - - return $this->returnValue('Minute', $format, $ts, $this->cE->stampToMinute($ts)); - } - - /** - * Returns the value for the previous second - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 43 or timestamp - */ - public function prevSecond($format = 'int') - { - $ts = $this->cE->dateToStamp( - $this->year, $this->month, $this->day, - $this->hour, $this->minute, $this->second - 1); - - return $this->returnValue('Second', $format, $ts, $this->cE->stampToSecond($ts)); - } - - /** - * Returns the value for this second - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 44 or timestamp - */ - public function thisSecond($format = 'int') - { - $ts = $this->cE->dateToStamp( - $this->year, $this->month, $this->day, - $this->hour, $this->minute, $this->second); - - return $this->returnValue('Second', $format, $ts, $this->second); - } - - /** - * Returns the value for the next second - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 45 or timestamp - */ - public function nextSecond($format = 'int') - { - $ts = $this->cE->dateToStamp( - $this->year, $this->month, $this->day, - $this->hour, $this->minute, $this->second + 1); - - return $this->returnValue('Second', $format, $ts, $this->cE->stampToSecond($ts)); - } -} diff --git a/data/module/Calendar/Day.php b/data/module/Calendar/Day.php deleted file mode 100644 index 909edd6e7b..0000000000 --- a/data/module/Calendar/Day.php +++ /dev/null @@ -1,199 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id: Day.php,v 1.1 2004/05/24 22:25:42 quipo Exp $ -// -/* - * @package Calendar - * @version $Id$ - */ - -/* - * Allows Calendar include path to be redefined - * @ignore - */ -if (!defined('CALENDAR_ROOT')) { - define('CALENDAR_ROOT', 'Calendar'.DIRECTORY_SEPARATOR); -} - -/** - * Load Calendar base class - */ -require_once CALENDAR_ROOT.'Calendar.php'; - -/** - * Represents a Day and builds Hours. - * - * require_once 'Calendar'.DIRECTORY_SEPARATOR.'Day.php'; - * $Day = & new Calendar_Day(2003, 10, 21); // Oct 21st 2003 - * while ($Hour = & $Day->fetch()) { - * echo $Hour->thisHour().'
'; - * } - *
- */ -class Calendar_Day extends Calendar -{ - /** - * Marks the Day at the beginning of a week - * - * @var bool - */ - public $first = false; - - /** - * Marks the Day at the end of a week - * - * @var bool - */ - public $last = false; - - /** - * Used for tabular calendars - * - * @var bool - */ - public $empty = false; - - /** - * Constructs Calendar_Day - * - * @param int year e.g. 2003 - * @param int month e.g. 8 - * @param int day e.g. 15 - */ - public function __construct($y, $m, $d) - { - parent::__construct($y, $m, $d); - } - - /** - * Builds the Hours of the Day - * - * @param array (optional) Caledar_Hour objects representing selected dates - * - * @return bool - */ - public function build($sDates = []) - { - require_once CALENDAR_ROOT.'Hour.php'; - - $hID = $this->cE->getHoursInDay($this->year, $this->month, $this->day); - for ($i = 0; $i < $hID; $i++) { - $this->children[$i] = - new Calendar_Hour($this->year, $this->month, $this->day, $i); - } - if (count($sDates) > 0) { - $this->setSelection($sDates); - } - - return true; - } - - /** - * Called from build() - * - * @param array - * - * @return void - */ - public function setSelection($sDates) - { - foreach ($sDates as $sDate) { - if ($this->year == $sDate->thisYear() - && $this->month == $sDate->thisMonth() - && $this->day == $sDate->thisDay()) { - $key = (int) $sDate->thisHour(); - if (isset($this->children[$key])) { - $sDate->setSelected(); - $this->children[$key] = $sDate; - } - } - } - } - - /** - * Defines Day object as first in a week - * Only used by Calendar_Month_Weekdays::build() - * - * @param bool state - * - * @return void - */ - public function setFirst($state = true) - { - $this->first = $state; - } - - /** - * Defines Day object as last in a week - * Used only following Calendar_Month_Weekdays::build() - * - * @param bool state - * - * @return void - */ - public function setLast($state = true) - { - $this->last = $state; - } - - /** - * Returns true if Day object is first in a Week - * Only relevant when Day is created by Calendar_Month_Weekdays::build() - * - * @return bool - */ - public function isFirst() - { - return $this->first; - } - - /** - * Returns true if Day object is last in a Week - * Only relevant when Day is created by Calendar_Month_Weekdays::build() - * - * @return bool - */ - public function isLast() - { - return $this->last; - } - - /** - * Defines Day object as empty - * Only used by Calendar_Month_Weekdays::build() - * - * @param bool state - * - * @return void - */ - public function setEmpty($state = true) - { - $this->empty = $state; - } - - /** - * @return bool - */ - public function isEmpty() - { - return $this->empty; - } -} diff --git a/data/module/Calendar/Decorator.php b/data/module/Calendar/Decorator.php deleted file mode 100644 index a826e85c43..0000000000 --- a/data/module/Calendar/Decorator.php +++ /dev/null @@ -1,598 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id: Decorator.php,v 1.3 2005/10/22 10:29:46 quipo Exp $ -// -/** - * @version $Id$ - */ -/** - * Decorates any calendar class. - * Create a subclass of this class for your own "decoration". - * Used for "selections" - * - * class DayDecorator extends Calendar_Decorator - * { - * function thisDay($format = 'int') - * { -.* $day = parent::thisDay('timestamp'); -.* return date('D', $day); - * } - * } - * $Day = & new Calendar_Day(2003, 10, 25); - * $DayDecorator = & new DayDecorator($Day); - * echo $DayDecorator->thisDay(); // Outputs "Sat" - * - * - * @abstract - */ -class Calendar_Decorator -{ - /** - * Subclass of Calendar being decorated - * - * @var object - */ - public $calendar; - - /** - * Constructs the Calendar_Decorator - * - * @param object subclass to Calendar to decorate - */ - public function __construct(&$calendar) - { - $this->calendar = &$calendar; - } - - /** - * Defines the calendar by a Unix timestamp, replacing values - * passed to the constructor - * - * @param int Unix timestamp - * - * @return void - */ - public function setTimestamp($ts) - { - $this->calendar->setTimestamp($ts); - } - - /** - * Returns a timestamp from the current date / time values. Format of - * timestamp depends on Calendar_Engine implementation being used - * - * @return int timestamp - */ - public function getTimestamp() - { - return $this->calendar->getTimeStamp(); - } - - /** - * Defines calendar object as selected (e.g. for today) - * - * @param bool state whether Calendar subclass - * - * @return void - */ - public function setSelected($state = true) - { - $this->calendar->setSelected($state = true); - } - - /** - * True if the calendar subclass object is selected (e.g. today) - * - * @return bool - */ - public function isSelected() - { - return $this->calendar->isSelected(); - } - - /** - * Adjusts the date (helper method) - * - * @return void - */ - public function adjust() - { - $this->calendar->adjust(); - } - - /** - * Returns the date as an associative array (helper method) - * - * @param mixed timestamp (leave empty for current timestamp) - * - * @return array - */ - public function toArray($stamp = null) - { - return $this->calendar->toArray($stamp); - } - - /** - * Returns the value as an associative array (helper method) - * - * @param string type of date object that return value represents - * @param string $format ['int' | 'array' | 'timestamp' | 'object'] - * @param mixed timestamp (depending on Calendar engine being used) - * @param int integer default value (i.e. give me the answer quick) - * - * @return mixed - */ - public function returnValue($returnType, $format, $stamp, $default) - { - return $this->calendar->returnValue($returnType, $format, $stamp, $default); - } - - /** - * Defines Day object as first in a week - * Only used by Calendar_Month_Weekdays::build() - * - * @param bool state - * - * @return void - */ - public function setFirst($state = true) - { - if (method_exists($this->calendar, 'setFirst')) { - $this->calendar->setFirst($state); - } - } - - /** - * Defines Day object as last in a week - * Used only following Calendar_Month_Weekdays::build() - * - * @param bool state - * - * @return void - */ - public function setLast($state = true) - { - if (method_exists($this->calendar, 'setLast')) { - $this->calendar->setLast($state); - } - } - - /** - * Returns true if Day object is first in a Week - * Only relevant when Day is created by Calendar_Month_Weekdays::build() - * - * @return bool - */ - public function isFirst() - { - if (method_exists($this->calendar, 'isFirst')) { - return $this->calendar->isFirst(); - } - - return false; - } - - /** - * Returns true if Day object is last in a Week - * Only relevant when Day is created by Calendar_Month_Weekdays::build() - * - * @return bool - */ - public function isLast() - { - if (method_exists($this->calendar, 'isLast')) { - return $this->calendar->isLast(); - } - - return false; - } - - /** - * Defines Day object as empty - * Only used by Calendar_Month_Weekdays::build() - * - * @param bool state - * - * @return void - */ - public function setEmpty($state = true) - { - if (method_exists($this->calendar, 'setEmpty')) { - $this->calendar->setEmpty($state); - } - } - - /** - * @return bool - */ - public function isEmpty() - { - if (method_exists($this->calendar, 'isEmpty')) { - return $this->calendar->isEmpty(); - } - - return false; - } - - /** - * Build the children - * - * @param array containing Calendar objects to select (optional) - * - * @return bool - * @abstract - */ - public function build($sDates = []) - { - return $this->calendar->build($sDates); - } - - /** - * Iterator method for fetching child Calendar subclass objects - * (e.g. a minute from an hour object). On reaching the end of - * the collection, returns false and resets the collection for - * further iteratations. - * - * @return mixed either an object subclass of Calendar or false - */ - public function fetch($decorator = null) - { - return $this->calendar->fetch(); - } - - /** - * Fetches all child from the current collection of children - * - * @return array - */ - public function fetchAll($decorator = null) - { - return $this->calendar->fetchAll(); - } - - /** - * Get the number Calendar subclass objects stored in the internal - * collection. - * - * @return int - */ - public function size() - { - return $this->calendar->size(); - } - - /** - * Determine whether this date is valid, with the bounds determined by - * the Calendar_Engine. The call is passed on to - * Calendar_Validator::isValid - * - * @return bool - */ - public function isValid() - { - return $this->calendar->isValid(); - } - - /** - * Returns an instance of Calendar_Validator - * - * @return Calendar_Validator - */ - public function &getValidator() - { - $validator = $this->calendar->getValidator(); - - return $validator; - } - - /** - * Returns a reference to the current Calendar_Engine being used. Useful - * for Calendar_Table_Helper and Calendar_Validator - * - * @return object implementing Calendar_Engine_Inteface - */ - public function &getEngine() - { - return $this->calendar->getEngine(); - } - - /** - * Returns the value for the previous year - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 2002 or timestamp - */ - public function prevYear($format = 'int') - { - return $this->calendar->prevYear($format); - } - - /** - * Returns the value for this year - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 2003 or timestamp - */ - public function thisYear($format = 'int') - { - return $this->calendar->thisYear($format); - } - - /** - * Returns the value for next year - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 2004 or timestamp - */ - public function nextYear($format = 'int') - { - return $this->calendar->nextYear($format); - } - - /** - * Returns the value for the previous month - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 4 or Unix timestamp - */ - public function prevMonth($format = 'int') - { - return $this->calendar->prevMonth($format); - } - - /** - * Returns the value for this month - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 5 or timestamp - */ - public function thisMonth($format = 'int') - { - return $this->calendar->thisMonth($format); - } - - /** - * Returns the value for next month - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 6 or timestamp - */ - public function nextMonth($format = 'int') - { - return $this->calendar->nextMonth($format); - } - - /** - * Returns the value for the previous week - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 4 or Unix timestamp - */ - public function prevWeek($format = 'n_in_month') - { - if (method_exists($this->calendar, 'prevWeek')) { - return $this->calendar->prevWeek($format); - } else { - require_once 'PEAR.php'; - PEAR::raiseError( - 'Cannot call prevWeek on Calendar object of type: '. - get_class($this->calendar), 133, PEAR_ERROR_TRIGGER, - E_USER_NOTICE, 'Calendar_Decorator::prevWeek()'); - - return false; - } - } - - /** - * Returns the value for this week - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 5 or timestamp - */ - public function thisWeek($format = 'n_in_month') - { - if (method_exists($this->calendar, 'thisWeek')) { - return $this->calendar->thisWeek($format); - } else { - require_once 'PEAR.php'; - PEAR::raiseError( - 'Cannot call thisWeek on Calendar object of type: '. - get_class($this->calendar), 133, PEAR_ERROR_TRIGGER, - E_USER_NOTICE, 'Calendar_Decorator::thisWeek()'); - - return false; - } - } - - /** - * Returns the value for next week - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 6 or timestamp - */ - public function nextWeek($format = 'n_in_month') - { - if (method_exists($this->calendar, 'nextWeek')) { - return $this->calendar->nextWeek($format); - } else { - require_once 'PEAR.php'; - PEAR::raiseError( - 'Cannot call thisWeek on Calendar object of type: '. - get_class($this->calendar), 133, PEAR_ERROR_TRIGGER, - E_USER_NOTICE, 'Calendar_Decorator::nextWeek()'); - - return false; - } - } - - /** - * Returns the value for the previous day - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 10 or timestamp - */ - public function prevDay($format = 'int') - { - return $this->calendar->prevDay($format); - } - - /** - * Returns the value for this day - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 11 or timestamp - */ - public function thisDay($format = 'int') - { - return $this->calendar->thisDay($format); - } - - /** - * Returns the value for the next day - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 12 or timestamp - */ - public function nextDay($format = 'int') - { - return $this->calendar->nextDay($format); - } - - /** - * Returns the value for the previous hour - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 13 or timestamp - */ - public function prevHour($format = 'int') - { - return $this->calendar->prevHour($format); - } - - /** - * Returns the value for this hour - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 14 or timestamp - */ - public function thisHour($format = 'int') - { - return $this->calendar->thisHour($format); - } - - /** - * Returns the value for the next hour - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 14 or timestamp - */ - public function nextHour($format = 'int') - { - return $this->calendar->nextHour($format); - } - - /** - * Returns the value for the previous minute - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 23 or timestamp - */ - public function prevMinute($format = 'int') - { - return $this->calendar->prevMinute($format); - } - - /** - * Returns the value for this minute - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 24 or timestamp - */ - public function thisMinute($format = 'int') - { - return $this->calendar->thisMinute($format); - } - - /** - * Returns the value for the next minute - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 25 or timestamp - */ - public function nextMinute($format = 'int') - { - return $this->calendar->nextMinute($format); - } - - /** - * Returns the value for the previous second - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 43 or timestamp - */ - public function prevSecond($format = 'int') - { - return $this->calendar->prevSecond($format); - } - - /** - * Returns the value for this second - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 44 or timestamp - */ - public function thisSecond($format = 'int') - { - return $this->calendar->thisSecond($format); - } - - /** - * Returns the value for the next second - * - * @param string return value format ['int' | 'timestamp' | 'object' | 'array'] - * - * @return int e.g. 45 or timestamp - */ - public function nextSecond($format = 'int') - { - return $this->calendar->nextSecond($format); - } -} diff --git a/data/module/Calendar/Decorator/Textual.php b/data/module/Calendar/Decorator/Textual.php deleted file mode 100644 index 1fffc79b0d..0000000000 --- a/data/module/Calendar/Decorator/Textual.php +++ /dev/null @@ -1,176 +0,0 @@ - | -// | Lorenzo Alberton | -// +----------------------------------------------------------------------+ -// -// $Id: Textual.php,v 1.3 2004/08/16 13:02:44 hfuecks Exp $ -// -/* - * @package Calendar - * @version $Id$ - */ - -/* - * Allows Calendar include path to be redefined - * @ignore - */ -if (!defined('CALENDAR_ROOT')) { - define('CALENDAR_ROOT', 'Calendar'.DIRECTORY_SEPARATOR); -} - -/** - * Load Calendar decorator base class - */ -require_once CALENDAR_ROOT.'Decorator.php'; - -/** - * Load the Uri utility - */ -require_once CALENDAR_ROOT.'Util'.DIRECTORY_SEPARATOR.'Textual.php'; - -/** - * Decorator to help with fetching textual representations of months and - * days of the week. - * Note: for performance you should prefer Calendar_Util_Textual unless you - * have a specific need to use a decorator - */ -class Calendar_Decorator_Textual extends Calendar_Decorator -{ - /** - * Constructs Calendar_Decorator_Textual - * - * @param object subclass of Calendar - */ - public function __construct(&$Calendar) - { - parent::__construct($Calendar); - } - - /** - * Returns an array of 12 month names (first index = 1) - * - * @param string (optional) format of returned months (one,two,short or long) - * - * @return array - * @static - */ - public function monthNames($format = 'long') - { - return Calendar_Util_Textual::monthNames($format); - } - - /** - * Returns an array of 7 week day names (first index = 0) - * - * @param string (optional) format of returned days (one,two,short or long) - * - * @return array - * @static - */ - public function weekdayNames($format = 'long') - { - return Calendar_Util_Textual::weekdayNames($format); - } - - /** - * Returns textual representation of the previous month of the decorated calendar object - * - * @param string (optional) format of returned months (one,two,short or long) - * - * @return string - */ - public function prevMonthName($format = 'long') - { - return Calendar_Util_Textual::prevMonthName($this->calendar, $format); - } - - /** - * Returns textual representation of the month of the decorated calendar object - * - * @param string (optional) format of returned months (one,two,short or long) - * - * @return string - */ - public function thisMonthName($format = 'long') - { - return Calendar_Util_Textual::thisMonthName($this->calendar, $format); - } - - /** - * Returns textual representation of the next month of the decorated calendar object - * - * @param string (optional) format of returned months (one,two,short or long) - * - * @return string - */ - public function nextMonthName($format = 'long') - { - return Calendar_Util_Textual::nextMonthName($this->calendar, $format); - } - - /** - * Returns textual representation of the previous day of week of the decorated calendar object - * - * @param string (optional) format of returned months (one,two,short or long) - * - * @return string - */ - public function prevDayName($format = 'long') - { - return Calendar_Util_Textual::prevDayName($this->calendar, $format); - } - - /** - * Returns textual representation of the day of week of the decorated calendar object - * - * @param string (optional) format of returned months (one,two,short or long) - * - * @return string - */ - public function thisDayName($format = 'long') - { - return Calendar_Util_Textual::thisDayName($this->calendar, $format); - } - - /** - * Returns textual representation of the next day of week of the decorated calendar object - * - * @param string (optional) format of returned months (one,two,short or long) - * - * @return string - */ - public function nextDayName($format = 'long') - { - return Calendar_Util_Textual::nextDayName($this->calendar, $format); - } - - /** - * Returns the days of the week using the order defined in the decorated - * calendar object. Only useful for Calendar_Month_Weekdays, Calendar_Month_Weeks - * and Calendar_Week. Otherwise the returned array will begin on Sunday - * - * @param string (optional) format of returned months (one,two,short or long) - * - * @return array ordered array of week day names - */ - public function orderedWeekdays($format = 'long') - { - return Calendar_Util_Textual::orderedWeekdays($this->calendar, $format); - } -} diff --git a/data/module/Calendar/Decorator/Uri.php b/data/module/Calendar/Decorator/Uri.php deleted file mode 100644 index 0fd7a6b54f..0000000000 --- a/data/module/Calendar/Decorator/Uri.php +++ /dev/null @@ -1,154 +0,0 @@ - | -// | Lorenzo Alberton | -// +----------------------------------------------------------------------+ -// -// $Id: Uri.php,v 1.3 2004/08/16 09:04:20 hfuecks Exp $ -// -/* - * @package Calendar - * @version $Id$ - */ - -/* - * Allows Calendar include path to be redefined - * @ignore - */ -if (!defined('CALENDAR_ROOT')) { - define('CALENDAR_ROOT', 'Calendar'.DIRECTORY_SEPARATOR); -} - -/** - * Load Calendar decorator base class - */ -require_once CALENDAR_ROOT.'Decorator.php'; - -/** - * Load the Uri utility - */ -require_once CALENDAR_ROOT.'Util'.DIRECTORY_SEPARATOR.'Uri.php'; - -/** - * Decorator to help with building HTML links for navigating the calendar
- * Note: for performance you should prefer Calendar_Util_Uri unless you - * have a specific need to use a decorator - * - * $Day = new Calendar_Day(2003, 10, 23); - * $Uri = & new Calendar_Decorator_Uri($Day); - * $Uri->setFragments('year', 'month', 'day'); - * echo $Uri->getPrev(); // Displays year=2003&month=10&day=22 - * - * - * @see Calendar_Util_Uri - */ -class Calendar_Decorator_Uri extends Calendar_Decorator -{ - /** - * @var Calendar_Util_Uri - */ - public $Uri; - - /** - * Constructs Calendar_Decorator_Uri - * - * @param object subclass of Calendar - */ - public function __construct(&$Calendar) - { - parent::__construct($Calendar); - } - - /** - * Sets the URI fragment names - * - * @param string URI fragment for year - * @param string (optional) URI fragment for month - * @param string (optional) URI fragment for day - * @param string (optional) URI fragment for hour - * @param string (optional) URI fragment for minute - * @param string (optional) URI fragment for second - * - * @return void - */ - public function setFragments($y, $m = null, $d = null, $h = null, $i = null, $s = null) - { - $this->Uri = new Calendar_Util_Uri($y, $m, $d, $h, $i, $s); - } - - /** - * Sets the separator string between fragments - * - * @param string separator e.g. / - * - * @return void - */ - public function setSeparator($separator) - { - $this->Uri->separator = $separator; - } - - /** - * Puts Uri decorator into "scalar mode" - URI variable names are not - * returned - * - * @param bool (optional) - * - * @return void - */ - public function setScalar($state = true) - { - $this->Uri->scalar = $state; - } - - /** - * Gets the URI string for the previous calendar unit - * - * @param string calendar unit to fetch uri for (year,month,week or day etc) - * - * @return string - */ - public function prev($method) - { - return $this->Uri->prev($this, $method); - } - - /** - * Gets the URI string for the current calendar unit - * - * @param string calendar unit to fetch uri for (year,month,week or day etc) - * - * @return string - */ - public function this($method) - { - return $this->Uri->this($this, $method); - } - - /** - * Gets the URI string for the next calendar unit - * - * @param string calendar unit to fetch uri for (year,month,week or day etc) - * - * @return string - */ - public function next($method) - { - return $this->Uri->next($this, $method); - } -} diff --git a/data/module/Calendar/Decorator/Weekday.php b/data/module/Calendar/Decorator/Weekday.php deleted file mode 100644 index 9506b5fdbe..0000000000 --- a/data/module/Calendar/Decorator/Weekday.php +++ /dev/null @@ -1,156 +0,0 @@ - | -// | Lorenzo Alberton | -// +----------------------------------------------------------------------+ -// -// $Id: Weekday.php,v 1.3 2004/08/16 12:25:15 hfuecks Exp $ -// -/* - * @package Calendar - * @version $Id$ - */ - -/* - * Allows Calendar include path to be redefined - * @ignore - */ -if (!defined('CALENDAR_ROOT')) { - define('CALENDAR_ROOT', 'Calendar'.DIRECTORY_SEPARATOR); -} - -/** - * Load Calendar decorator base class - */ -require_once CALENDAR_ROOT.'Decorator.php'; - -/** - * Load a Calendar_Day - */ -require_once CALENDAR_ROOT.'Day.php'; -/** - * Decorator for fetching the day of the week - * - * $Day = new Calendar_Day(2003, 10, 23); - * $Weekday = & new Calendar_Decorator_Weekday($Day); - * $Weekday->setFirstDay(0); // Set first day of week to Sunday (default Mon) - * echo $Weekday->thisWeekDay(); // Displays 5 - fifth day of week relative to Sun - * - */ -class Calendar_Decorator_Weekday extends Calendar_Decorator -{ - /** - * First day of week - * - * @var int (default = 1 for Monday) - */ - public $firstDay = 1; - - /** - * Constructs Calendar_Decorator_Weekday - * - * @param object subclass of Calendar - */ - public function __construct(&$Calendar) - { - parent::__construct($Calendar); - } - - /** - * Sets the first day of the week (0 = Sunday, 1 = Monday (default) etc) - * - * @param int first day of week - * - * @return void - */ - public function setFirstDay($firstDay) - { - $this->firstDay = (int) $firstDay; - } - - /** - * Returns the previous weekday - * - * @param string (default = 'int') return value format - * - * @return int numeric day of week or timestamp - */ - public function prevWeekDay($format = 'int') - { - $ts = $this->calendar->prevDay('timestamp'); - $Day = new Calendar_Day(2000, 1, 1); - $Day->setTimeStamp($ts); - $day = $this->calendar->cE->getDayOfWeek($Day->thisYear(), $Day->thisMonth(), $Day->thisDay()); - $day = $this->adjustWeekScale($day); - - return $this->returnValue('Day', $format, $ts, $day); - } - - /** - * Returns the current weekday - * - * @param string (default = 'int') return value format - * - * @return int numeric day of week or timestamp - */ - public function thisWeekDay($format = 'int') - { - $ts = $this->calendar->thisDay('timestamp'); - $day = $this->calendar->cE->getDayOfWeek($this->calendar->year, $this->calendar->month, $this->calendar->day); - $day = $this->adjustWeekScale($day); - - return $this->returnValue('Day', $format, $ts, $day); - } - - /** - * Returns the next weekday - * - * @param string (default = 'int') return value format - * - * @return int numeric day of week or timestamp - */ - public function nextWeekDay($format = 'int') - { - $ts = $this->calendar->nextDay('timestamp'); - $Day = new Calendar_Day(2000, 1, 1); - $Day->setTimeStamp($ts); - $day = $this->calendar->cE->getDayOfWeek($Day->thisYear(), $Day->thisMonth(), $Day->thisDay()); - $day = $this->adjustWeekScale($day); - - return $this->returnValue('Day', $format, $ts, $day); - } - - /** - * Adjusts the day of the week relative to the first day of the week - * - * @param int day of week calendar from Calendar_Engine - * - * @return int day of week adjusted to first day - */ - public function adjustWeekScale($dayOfWeek) - { - $dayOfWeek = $dayOfWeek - $this->firstDay; - if ($dayOfWeek >= 0) { - return $dayOfWeek; - } else { - return $this->calendar->cE->getDaysInWeek( - $this->calendar->year, $this->calendar->month, $this->calendar->day - ) + $dayOfWeek; - } - } -} diff --git a/data/module/Calendar/Decorator/Wrapper.php b/data/module/Calendar/Decorator/Wrapper.php deleted file mode 100644 index ba6c816775..0000000000 --- a/data/module/Calendar/Decorator/Wrapper.php +++ /dev/null @@ -1,92 +0,0 @@ - | -// | Lorenzo Alberton | -// +----------------------------------------------------------------------+ -// -// $Id: Wrapper.php,v 1.2 2005/11/03 20:35:03 quipo Exp $ -// -/* - * @package Calendar - * @version $Id$ - */ - -/* - * Allows Calendar include path to be redefined - * @ignore - */ -if (!defined('CALENDAR_ROOT')) { - define('CALENDAR_ROOT', 'Calendar'.DIRECTORY_SEPARATOR); -} - -/** - * Load Calendar decorator base class - */ -require_once CALENDAR_ROOT.'Decorator.php'; - -/** - * Decorator to help with wrapping built children in another decorator - */ -class Calendar_Decorator_Wrapper extends Calendar_Decorator -{ - /** - * Constructs Calendar_Decorator_Wrapper - * - * @param object subclass of Calendar - */ - public function __construct(&$Calendar) - { - parent::__construct($Calendar); - } - - /** - * Wraps objects returned from fetch in the named Decorator class - * - * @param string name of Decorator class to wrap with - * - * @return object instance of named decorator - */ - public function &fetch($decorator = null) - { - $Calendar = parent::fetch(); - if ($Calendar) { - $ret = new $decorator($Calendar); - } else { - $ret = false; - } - - return $ret; - } - - /** - * Wraps the returned calendar objects from fetchAll in the named decorator - * - * @param string name of Decorator class to wrap with - * - * @return array - */ - public function fetchAll($decorator = null) - { - $children = parent::fetchAll(); - foreach ($children as $key => $Calendar) { - $children[$key] = new $decorator($Calendar); - } - - return $children; - } -} diff --git a/data/module/Calendar/Engine/Interface.php b/data/module/Calendar/Engine/Interface.php deleted file mode 100644 index 7e0e19582f..0000000000 --- a/data/module/Calendar/Engine/Interface.php +++ /dev/null @@ -1,335 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id: Interface.php,v 1.5 2004/08/16 12:29:18 hfuecks Exp $ -// -/** - * @version $Id$ - */ -/** - * The methods the classes implementing the Calendar_Engine must implement. - * Note this class is not used but simply to help development - */ -class Calendar_Engine_Interface -{ - /** - * Provides a mechansim to make sure parsing of timestamps - * into human dates is only performed once per timestamp. - * Typically called "internally" by methods like stampToYear. - * Return value can vary, depending on the specific implementation - * - * @param int timestamp (depending on implementation) - * - * @return mixed - */ - public function stampCollection($stamp) - { - return 0; - } - - /** - * Returns a numeric year given a timestamp - * - * @param int timestamp (depending on implementation) - * - * @return int year (e.g. 2003) - */ - public function stampToYear($stamp) - { - return 0; - } - - /** - * Returns a numeric month given a timestamp - * - * @param int timestamp (depending on implementation) - * - * @return int month (e.g. 9) - */ - public function stampToMonth($stamp) - { - return 0; - } - - /** - * Returns a numeric day given a timestamp - * - * @param int timestamp (depending on implementation) - * - * @return int day (e.g. 15) - */ - public function stampToDay($stamp) - { - return 0; - } - - /** - * Returns a numeric hour given a timestamp - * - * @param int timestamp (depending on implementation) - * - * @return int hour (e.g. 13) - */ - public function stampToHour($stamp) - { - return 0; - } - - /** - * Returns a numeric minute given a timestamp - * - * @param int timestamp (depending on implementation) - * - * @return int minute (e.g. 34) - */ - public function stampToMinute($stamp) - { - return 0; - } - - /** - * Returns a numeric second given a timestamp - * - * @param int timestamp (depending on implementation) - * - * @return int second (e.g. 51) - */ - public function stampToSecond($stamp) - { - return 0; - } - - /** - * Returns a timestamp. Can be worth "caching" generated - * timestamps in a static variable, identified by the - * params this method accepts, to timestamp will only - * be calculated once. - * - * @param int year (e.g. 2003) - * @param int month (e.g. 9) - * @param int day (e.g. 13) - * @param int hour (e.g. 13) - * @param int minute (e.g. 34) - * @param int second (e.g. 53) - * - * @return int (depends on implementation) - */ - public function dateToStamp($y, $m, $d, $h, $i, $s) - { - return 0; - } - - /** - * The upper limit on years that the Calendar Engine can work with - * - * @return int (e.g. 2037) - */ - public function getMaxYears() - { - return 0; - } - - /** - * The lower limit on years that the Calendar Engine can work with - * - * @return int (e.g 1902) - */ - public function getMinYears() - { - return 0; - } - - /** - * Returns the number of months in a year - * - * @param int (optional) year to get months for - * - * @return int (e.g. 12) - */ - public function getMonthsInYear($y = null) - { - return 0; - } - - /** - * Returns the number of days in a month, given year and month - * - * @param int year (e.g. 2003) - * @param int month (e.g. 9) - * - * @return int days in month - */ - public function getDaysInMonth($y, $m) - { - return 0; - } - - /** - * Returns numeric representation of the day of the week in a month, - * given year and month - * - * @param int year (e.g. 2003) - * @param int month (e.g. 9) - * - * @return int - */ - public function getFirstDayInMonth($y, $m) - { - return 0; - } - - /** - * Returns the number of days in a week - * - * @param int year (2003) - * @param int month (9) - * @param int day (4) - * - * @return int (e.g. 7) - */ - public function getDaysInWeek($y = null, $m = null, $d = null) - { - return 0; - } - - /** - * Returns the number of the week in the year (ISO-8601), given a date - * - * @param int year (2003) - * @param int month (9) - * @param int day (4) - * - * @return int week number - */ - public function getWeekNInYear($y, $m, $d) - { - return 0; - } - - /** - * Returns the number of the week in the month, given a date - * - * @param int year (2003) - * @param int month (9) - * @param int day (4) - * @param int first day of the week (default: 1 - monday) - * - * @return int week number - */ - public function getWeekNInMonth($y, $m, $d, $firstDay = 1) - { - return 0; - } - - /** - * Returns the number of weeks in the month - * - * @param int year (2003) - * @param int month (9) - * @param int first day of the week (default: 1 - monday) - * - * @return int weeks number - */ - public function getWeeksInMonth($y, $m) - { - return 0; - } - - /** - * Returns the number of the day of the week (0=sunday, 1=monday...) - * - * @param int year (2003) - * @param int month (9) - * @param int day (4) - * - * @return int weekday number - */ - public function getDayOfWeek($y, $m, $d) - { - return 0; - } - - /** - * Returns the numeric values of the days of the week. - * - * @param int year (2003) - * @param int month (9) - * @param int day (4) - * - * @return array list of numeric values of days in week, beginning 0 - */ - public function getWeekDays($y = null, $m = null, $d = null) - { - return 0; - } - - /** - * Returns the default first day of the week as an integer. Must be a - * member of the array returned from getWeekDays - * - * @param int year (2003) - * @param int month (9) - * @param int day (4) - * - * @return int (e.g. 1 for Monday) - * - * @see getWeekDays - */ - public function getFirstDayOfWeek($y = null, $m = null, $d = null) - { - return 0; - } - - /** - * Returns the number of hours in a day
- * - * @param int (optional) day to get hours for - * - * @return int (e.g. 24) - */ - public function getHoursInDay($y = null, $m = null, $d = null) - { - return 0; - } - - /** - * Returns the number of minutes in an hour - * - * @param int (optional) hour to get minutes for - * - * @return int - */ - public function getMinutesInHour($y = null, $m = null, $d = null, $h = null) - { - return 0; - } - - /** - * Returns the number of seconds in a minutes - * - * @param int (optional) minute to get seconds for - * - * @return int - */ - public function getSecondsInMinute($y = null, $m = null, $d = null, $h = null, $i = null) - { - return 0; - } -} diff --git a/data/module/Calendar/Engine/PearDate.php b/data/module/Calendar/Engine/PearDate.php deleted file mode 100644 index d9d8357d4e..0000000000 --- a/data/module/Calendar/Engine/PearDate.php +++ /dev/null @@ -1,435 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id: PearDate.php,v 1.8 2004/08/20 20:00:55 quipo Exp $ -// -/** - * @version $Id$ - * - * @deprecated 本体で使用されていないため非推奨 - */ -/** - * Load PEAR::Date class - */ -// require_once 'Date.php'; - -/** - * Performs calendar calculations based on the PEAR::Date class - * Timestamps are in the ISO-8601 format (YYYY-MM-DD HH:MM:SS) - */ -class Calendar_Engine_PearDate /* implements Calendar_Engine_Interface */ -{ - /** - * Makes sure a given timestamp is only ever parsed once - * Uses a static variable to prevent date() being used twice - * for a date which is already known - * - * @param mixed Any timestamp format recognized by Pear::Date - * - * @return object Pear::Date object - */ - public function stampCollection($stamp) - { - static $stamps = []; - if (!isset($stamps[$stamp])) { - $stamps[$stamp] = new Date($stamp); - } - - return $stamps[$stamp]; - } - - /** - * Returns a numeric year given a iso-8601 datetime - * - * @param string iso-8601 datetime (YYYY-MM-DD HH:MM:SS) - * - * @return int year (e.g. 2003) - */ - public function stampToYear($stamp) - { - $date = self::stampCollection($stamp); - - return (int) $date->year; - } - - /** - * Returns a numeric month given a iso-8601 datetime - * - * @param string iso-8601 datetime (YYYY-MM-DD HH:MM:SS) - * - * @return int month (e.g. 9) - */ - public function stampToMonth($stamp) - { - $date = self::stampCollection($stamp); - - return (int) $date->month; - } - - /** - * Returns a numeric day given a iso-8601 datetime - * - * @param string iso-8601 datetime (YYYY-MM-DD HH:MM:SS) - * - * @return int day (e.g. 15) - */ - public function stampToDay($stamp) - { - $date = self::stampCollection($stamp); - - return (int) $date->day; - } - - /** - * Returns a numeric hour given a iso-8601 datetime - * - * @param string iso-8601 datetime (YYYY-MM-DD HH:MM:SS) - * - * @return int hour (e.g. 13) - */ - public function stampToHour($stamp) - { - $date = self::stampCollection($stamp); - - return (int) $date->hour; - } - - /** - * Returns a numeric minute given a iso-8601 datetime - * - * @param string iso-8601 datetime (YYYY-MM-DD HH:MM:SS) - * - * @return int minute (e.g. 34) - */ - public function stampToMinute($stamp) - { - $date = self::stampCollection($stamp); - - return (int) $date->minute; - } - - /** - * Returns a numeric second given a iso-8601 datetime - * - * @param string iso-8601 datetime (YYYY-MM-DD HH:MM:SS) - * - * @return int second (e.g. 51) - */ - public function stampToSecond($stamp) - { - $date = self::stampCollection($stamp); - - return (int) $date->second; - } - - /** - * Returns a iso-8601 datetime - * - * @param int year (2003) - * @param int month (9) - * @param int day (13) - * @param int hour (13) - * @param int minute (34) - * @param int second (53) - * - * @return string iso-8601 datetime - */ - public function dateToStamp($y, $m, $d, $h = 0, $i = 0, $s = 0) - { - $r = []; - self::adjustDate($y, $m, $d, $h, $i, $s); - $key = $y.$m.$d.$h.$i.$s; - if (!isset($r[$key])) { - $r[$key] = sprintf('%04d-%02d-%02d %02d:%02d:%02d', - $y, $m, $d, $h, $i, $s); - } - - return $r[$key]; - } - - /** - * Set the correct date values (useful for math operations on dates) - * - * @param int year (2003) - * @param int month (9) - * @param int day (13) - * @param int hour (13) - * @param int minute (34) - * @param int second (53) - */ - public function adjustDate(&$y, &$m, &$d, &$h, &$i, &$s) - { - if ($s < 0) { - $m -= floor($s / 60); - $s = -$s % 60; - } - if ($s > 60) { - $m += floor($s / 60); - $s %= 60; - } - if ($i < 0) { - $h -= floor($i / 60); - $i = -$i % 60; - } - if ($i > 60) { - $h += floor($i / 60); - $i %= 60; - } - if ($h < 0) { - $d -= floor($h / 24); - $h = -$h % 24; - } - if ($h > 24) { - $d += floor($h / 24); - $h %= 24; - } - for (; $m < 1; $y--, $m += 12) { - } - for (; $m > 12; $y++, $m -= 12) { - } - - while ($d < 1) { - if ($m > 1) { - $m--; - } else { - $m = 12; - $y--; - } - $d += Date_Calc::daysInMonth($m, $y); - } - for ($max_days = Date_Calc::daysInMonth($m, $y); $d > $max_days;) { - $d -= $max_days; - if ($m < 12) { - $m++; - } else { - $m = 1; - $y++; - } - } - } - - /** - * The upper limit on years that the Calendar Engine can work with - * - * @return int 9999 - */ - public function getMaxYears() - { - return 9999; - } - - /** - * The lower limit on years that the Calendar Engine can work with - * - * @return int 0 - */ - public function getMinYears() - { - return 0; - } - - /** - * Returns the number of months in a year - * - * @return int (12) - */ - public function getMonthsInYear($y = null) - { - return 12; - } - - /** - * Returns the number of days in a month, given year and month - * - * @param int year (2003) - * @param int month (9) - * - * @return int days in month - */ - public function getDaysInMonth($y, $m) - { - return (int) Date_Calc::daysInMonth($m, $y); - } - - /** - * Returns numeric representation of the day of the week in a month, - * given year and month - * - * @param int year (2003) - * @param int month (9) - * - * @return int from 0 to 7 - */ - public function getFirstDayInMonth($y, $m) - { - return (int) Date_Calc::dayOfWeek(1, $m, $y); - } - - /** - * Returns the number of days in a week - * - * @param int year (2003) - * @param int month (9) - * @param int day (4) - * - * @return int (7) - */ - public function getDaysInWeek($y = null, $m = null, $d = null) - { - return 7; - } - - /** - * Returns the number of the week in the year (ISO-8601), given a date - * - * @param int year (2003) - * @param int month (9) - * @param int day (4) - * - * @return int week number - */ - public function getWeekNInYear($y, $m, $d) - { - return Date_Calc::weekOfYear($d, $m, $y); // beware, Date_Calc doesn't follow ISO-8601 standard! - } - - /** - * Returns the number of the week in the month, given a date - * - * @param int year (2003) - * @param int month (9) - * @param int day (4) - * @param int first day of the week (default: monday) - * - * @return int week number - */ - public function getWeekNInMonth($y, $m, $d, $firstDay = 1) - { - $weekEnd = ($firstDay == 0) ? $this->getDaysInWeek() - 1 : $firstDay - 1; - $end_of_week = (int) Date_Calc::nextDayOfWeek($weekEnd, 1, $m, $y, '%e', true); - $w = 1; - while ($d > $end_of_week) { - ++$w; - $end_of_week += $this->getDaysInWeek(); - } - - return $w; - } - - /** - * Returns the number of weeks in the month - * - * @param int year (2003) - * @param int month (9) - * @param int first day of the week (default: monday) - * - * @return int weeks number - */ - public function getWeeksInMonth($y, $m, $firstDay = 1) - { - $FDOM = Date_Calc::firstOfMonthWeekday($m, $y); - if ($FDOM == 0) { - $FDOM = $this->getDaysInWeek(); - } - if ($FDOM > $firstDay) { - $daysInTheFirstWeek = $this->getDaysInWeek() - $FDOM + $firstDay; - $weeks = 1; - } else { - $daysInTheFirstWeek = $firstDay - $FDOM; - $weeks = 0; - } - $daysInTheFirstWeek %= $this->getDaysInWeek(); - - return (int) (ceil(($this->getDaysInMonth($y, $m) - $daysInTheFirstWeek) / - $this->getDaysInWeek()) + $weeks); - } - - /** - * Returns the number of the day of the week (0=sunday, 1=monday...) - * - * @param int year (2003) - * @param int month (9) - * @param int day (4) - * - * @return int weekday number - */ - public function getDayOfWeek($y, $m, $d) - { - return Date_Calc::dayOfWeek($d, $m, $y); - } - - /** - * Returns a list of integer days of the week beginning 0 - * - * @param int year (2003) - * @param int month (9) - * @param int day (4) - * - * @return array (0, 1, 2, 3, 4, 5, 6) 1 = Monday - */ - public function getWeekDays($y = null, $m = null, $d = null) - { - return [0, 1, 2, 3, 4, 5, 6]; - } - - /** - * Returns the default first day of the week - * - * @param int year (2003) - * @param int month (9) - * @param int day (4) - * - * @return int (default 1 = Monday) - */ - public function getFirstDayOfWeek($y = null, $m = null, $d = null) - { - return 1; - } - - /** - * Returns the number of hours in a day - * - * @return int (24) - */ - public function getHoursInDay($y = null, $m = null, $d = null) - { - return 24; - } - - /** - * Returns the number of minutes in an hour - * - * @return int (60) - */ - public function getMinutesInHour($y = null, $m = null, $d = null, $h = null) - { - return 60; - } - - /** - * Returns the number of seconds in a minutes - * - * @return int (60) - */ - public function getSecondsInMinute($y = null, $m = null, $d = null, $h = null, $i = null) - { - return 60; - } -} diff --git a/data/module/Calendar/Engine/UnixTS.php b/data/module/Calendar/Engine/UnixTS.php deleted file mode 100644 index a85a5fd19e..0000000000 --- a/data/module/Calendar/Engine/UnixTS.php +++ /dev/null @@ -1,393 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id: UnixTS.php,v 1.9 2004/08/20 20:00:55 quipo Exp $ -// -/** - * @version $Id$ - */ -/** - * Performs calendar calculations based on the PHP date() function and - * Unix timestamps (using PHP's mktime() function). - */ -class Calendar_Engine_UnixTS /* implements Calendar_Engine_Interface */ -{ - /** - * Makes sure a given timestamp is only ever parsed once - *
-     * array (
-     *  [0] => year (e.g 2003),
-     *  [1] => month (e.g 9),
-     *  [2] => day (e.g 6),
-     *  [3] => hour (e.g 14),
-     *  [4] => minute (e.g 34),
-     *  [5] => second (e.g 45),
-     *  [6] => num days in month (e.g. 31),
-     *  [7] => week in year (e.g. 50),
-     *  [8] => day in week (e.g. 0 for Sunday)
-     * )
-     * 
- * Uses a static variable to prevent date() being used twice - * for a date which is already known - * - * @param int Unix timestamp - * - * @return array - */ - public function stampCollection($stamp) - { - static $stamps = []; - if (!isset($stamps[$stamp])) { - $date = @date('Y n j H i s t W w', $stamp); - $stamps[$stamp] = sscanf($date, '%d %d %d %d %d %d %d %d %d'); - } - - return $stamps[$stamp]; - } - - /** - * Returns a numeric year given a timestamp - * - * @param int Unix timestamp - * - * @return int year (e.g. 2003) - */ - public function stampToYear($stamp) - { - $date = self::stampCollection($stamp); - - return (int) $date[0]; - } - - /** - * Returns a numeric month given a timestamp - * - * @param int Unix timestamp - * - * @return int month (e.g. 9) - */ - public function stampToMonth($stamp) - { - $date = self::stampCollection($stamp); - - return (int) $date[1]; - } - - /** - * Returns a numeric day given a timestamp - * - * @param int Unix timestamp - * - * @return int day (e.g. 15) - */ - public function stampToDay($stamp) - { - $date = self::stampCollection($stamp); - - return (int) $date[2]; - } - - /** - * Returns a numeric hour given a timestamp - * - * @param int Unix timestamp - * - * @return int hour (e.g. 13) - */ - public function stampToHour($stamp) - { - $date = self::stampCollection($stamp); - - return (int) $date[3]; - } - - /** - * Returns a numeric minute given a timestamp - * - * @param int Unix timestamp - * - * @return int minute (e.g. 34) - */ - public function stampToMinute($stamp) - { - $date = self::stampCollection($stamp); - - return (int) $date[4]; - } - - /** - * Returns a numeric second given a timestamp - * - * @param int Unix timestamp - * - * @return int second (e.g. 51) - */ - public function stampToSecond($stamp) - { - $date = self::stampCollection($stamp); - - return (int) $date[5]; - } - - /** - * Returns a timestamp - * - * @param int year (2003) - * @param int month (9) - * @param int day (13) - * @param int hour (13) - * @param int minute (34) - * @param int second (53) - * - * @return int Unix timestamp - */ - public function dateToStamp($y, $m, $d, $h = 0, $i = 0, $s = 0) - { - static $dates = []; - if (!isset($dates[$y][$m][$d][$h][$i][$s])) { - $dates[$y][$m][$d][$h][$i][$s] = @mktime($h, $i, $s, $m, $d, $y); - } - - return $dates[$y][$m][$d][$h][$i][$s]; - } - - /** - * The upper limit on years that the Calendar Engine can work with - * - * @return int (2037) - */ - public function getMaxYears() - { - return 2037; - } - - /** - * The lower limit on years that the Calendar Engine can work with - * - * @return int (1970 if it's Windows and 1902 for all other OSs) - */ - public function getMinYears() - { - return $min = strpos(PHP_OS, 'WIN') === false ? 1902 : 1970; - } - - /** - * Returns the number of months in a year - * - * @return int (12) - */ - public function getMonthsInYear($y = null) - { - return 12; - } - - /** - * Returns the number of days in a month, given year and month - * - * @param int year (2003) - * @param int month (9) - * - * @return int days in month - */ - public function getDaysInMonth($y, $m) - { - $stamp = self::dateToStamp($y, $m, 1); - $date = self::stampCollection($stamp); - - return $date[6]; - } - - /** - * Returns numeric representation of the day of the week in a month, - * given year and month - * - * @param int year (2003) - * @param int month (9) - * - * @return int from 0 to 6 - */ - public function getFirstDayInMonth($y, $m) - { - $stamp = self::dateToStamp($y, $m, 1); - $date = self::stampCollection($stamp); - - return $date[8]; - } - - /** - * Returns the number of days in a week - * - * @param int year (2003) - * @param int month (9) - * @param int day (4) - * - * @return int (7) - */ - public function getDaysInWeek($y = null, $m = null, $d = null) - { - return 7; - } - - /** - * Returns the number of the week in the year (ISO-8601), given a date - * - * @param int year (2003) - * @param int month (9) - * @param int day (4) - * - * @return int week number - */ - public function getWeekNInYear($y, $m, $d) - { - $stamp = self::dateToStamp($y, $m, $d); - $date = self::stampCollection($stamp); - - return $date[7]; - } - - /** - * Returns the number of the week in the month, given a date - * - * @param int year (2003) - * @param int month (9) - * @param int day (4) - * @param int first day of the week (default: monday) - * - * @return int week number - */ - public function getWeekNInMonth($y, $m, $d, $firstDay = 1) - { - $weekEnd = ($firstDay == 0) ? $this->getDaysInWeek() - 1 : $firstDay - 1; - $end_of_week = 1; - while (@date('w', @mktime(0, 0, 0, $m, $end_of_week, $y)) != $weekEnd) { - ++$end_of_week; // find first weekend of the month - } - $w = 1; - while ($d > $end_of_week) { - ++$w; - $end_of_week += $this->getDaysInWeek(); - } - - return $w; - } - - /** - * Returns the number of weeks in the month - * - * @param int year (2003) - * @param int month (9) - * @param int first day of the week (default: monday) - * - * @return int weeks number - */ - public function getWeeksInMonth($y, $m, $firstDay = 1) - { - $FDOM = $this->getFirstDayInMonth($y, $m); - if ($FDOM == 0) { - $FDOM = $this->getDaysInWeek(); - } - if ($FDOM > $firstDay) { - $daysInTheFirstWeek = $this->getDaysInWeek() - $FDOM + $firstDay; - $weeks = 1; - } else { - $daysInTheFirstWeek = $firstDay - $FDOM; - $weeks = 0; - } - $daysInTheFirstWeek %= $this->getDaysInWeek(); - - return (int) (ceil(($this->getDaysInMonth($y, $m) - $daysInTheFirstWeek) / - $this->getDaysInWeek()) + $weeks); - } - - /** - * Returns the number of the day of the week (0=sunday, 1=monday...) - * - * @param int year (2003) - * @param int month (9) - * @param int day (4) - * - * @return int weekday number - */ - public function getDayOfWeek($y, $m, $d) - { - $stamp = self::dateToStamp($y, $m, $d); - $date = self::stampCollection($stamp); - - return $date[8]; - } - - /** - * Returns a list of integer days of the week beginning 0 - * - * @param int year (2003) - * @param int month (9) - * @param int day (4) - * - * @return array (0,1,2,3,4,5,6) 1 = Monday - */ - public function getWeekDays($y = null, $m = null, $d = null) - { - return [0, 1, 2, 3, 4, 5, 6]; - } - - /** - * Returns the default first day of the week - * - * @param int year (2003) - * @param int month (9) - * @param int day (4) - * - * @return int (default 1 = Monday) - */ - public function getFirstDayOfWeek($y = null, $m = null, $d = null) - { - return 1; - } - - /** - * Returns the number of hours in a day - * - * @return int (24) - */ - public function getHoursInDay($y = null, $m = null, $d = null) - { - return 24; - } - - /** - * Returns the number of minutes in an hour - * - * @return int (60) - */ - public function getMinutesInHour($y = null, $m = null, $d = null, $h = null) - { - return 60; - } - - /** - * Returns the number of seconds in a minutes - * - * @return int (60) - */ - public function getSecondsInMinute($y = null, $m = null, $d = null, $h = null, $i = null) - { - return 60; - } -} diff --git a/data/module/Calendar/Factory.php b/data/module/Calendar/Factory.php deleted file mode 100644 index 0a07635fb5..0000000000 --- a/data/module/Calendar/Factory.php +++ /dev/null @@ -1,155 +0,0 @@ - | -// | Lorenzo Alberton | -// +----------------------------------------------------------------------+ -// -// $Id: Factory.php,v 1.3 2005/10/22 10:08:47 quipo Exp $ -// -/* - * @package Calendar - * @version $Id$ - */ - -/* - * Allows Calendar include path to be redefined - * @ignore - */ -if (!defined('CALENDAR_ROOT')) { - define('CALENDAR_ROOT', 'Calendar'.DIRECTORY_SEPARATOR); -} - -/** - * Load Calendar base class - */ -require_once CALENDAR_ROOT.'Calendar.php'; - -/** - * Contains a factory method to return a Singleton instance of a class - * implementing the Calendar_Engine_Interface.
- * For Month objects, to control type of month returned, use CALENDAR_MONTH_STATE - * constact e.g.; - * - * require_once 'Calendar/Factory.php'; - * define ('CALENDAR_MONTH_STATE',CALENDAR_USE_MONTH_WEEKDAYS); // Use Calendar_Month_Weekdays - * // define ('CALENDAR_MONTH_STATE',CALENDAR_USE_MONTH_WEEKS); // Use Calendar_Month_Weeks - * // define ('CALENDAR_MONTH_STATE',CALENDAR_USE_MONTH); // Use Calendar_Month - * - * It defaults to building Calendar_Month objects.
- * Use the constract CALENDAR_FIRST_DAY_OF_WEEK to control the first day of the week - * for Month or Week objects (e.g. 0 = Sunday, 6 = Saturday) - */ -class Calendar_Factory -{ - /** - * Creates a calendar object given the type and units - * - * @param string class of calendar object to create - * @param int year - * @param int month - * @param int day - * @param int hour - * @param int minute - * @param int second - * - * @return object subclass of Calendar - * @static - */ - public static function create($type, $y = 2000, $m = 1, $d = 1, $h = 0, $i = 0, $s = 0) - { - $firstDay = defined('CALENDAR_FIRST_DAY_OF_WEEK') ? CALENDAR_FIRST_DAY_OF_WEEK : 1; - switch ($type) { - case 'Day': - require_once CALENDAR_ROOT.'Day.php'; - - return new Calendar_Day($y, $m, $d); - case 'Month': - // Set default state for which month type to build - if (!defined('CALENDAR_MONTH_STATE')) { - define('CALENDAR_MONTH_STATE', CALENDAR_USE_MONTH); - } - switch (CALENDAR_MONTH_STATE) { - case CALENDAR_USE_MONTH_WEEKDAYS: - require_once CALENDAR_ROOT.'Month/Weekdays.php'; - $class = 'Calendar_Month_Weekdays'; - break; - case CALENDAR_USE_MONTH_WEEKS: - require_once CALENDAR_ROOT.'Month/Weeks.php'; - $class = 'Calendar_Month_Weeks'; - break; - case CALENDAR_USE_MONTH: - default: - require_once CALENDAR_ROOT.'Month.php'; - $class = 'Calendar_Month'; - break; - } - - return new $class($y, $m, $firstDay); - case 'Week': - require_once CALENDAR_ROOT.'Week.php'; - - return new Calendar_Week($y, $m, $d, $firstDay); - case 'Hour': - require_once CALENDAR_ROOT.'Hour.php'; - - return new Calendar_Hour($y, $m, $d, $h); - case 'Minute': - require_once CALENDAR_ROOT.'Minute.php'; - - return new Calendar_Minute($y, $m, $d, $h, $i); - case 'Second': - require_once CALENDAR_ROOT.'Second.php'; - - return new Calendar_Second($y, $m, $d, $h, $i, $s); - case 'Year': - require_once CALENDAR_ROOT.'Year.php'; - - return new Calendar_Year($y); - default: - require_once 'PEAR.php'; - PEAR::raiseError( - 'Calendar_Factory::create() unrecognised type: '.$type, null, PEAR_ERROR_TRIGGER, - E_USER_NOTICE, 'Calendar_Factory::create()'); - - return false; - } - } - - /** - * Creates an instance of a calendar object, given a type and timestamp - * - * @param string type of object to create - * @param mixed timestamp (depending on Calendar engine being used) - * - * @return object subclass of Calendar - * @static - */ - public static function &createByTimestamp($type, $stamp) - { - $cE = &Calendar_Engine_Factory::getEngine(); - $y = $cE->stampToYear($stamp); - $m = $cE->stampToMonth($stamp); - $d = $cE->stampToDay($stamp); - $h = $cE->stampToHour($stamp); - $i = $cE->stampToMinute($stamp); - $s = $cE->stampToSecond($stamp); - $cal = self::create($type, $y, $m, $d, $h, $i, $s); - - return $cal; - } -} diff --git a/data/module/Calendar/Hour.php b/data/module/Calendar/Hour.php deleted file mode 100644 index 09e01918ae..0000000000 --- a/data/module/Calendar/Hour.php +++ /dev/null @@ -1,113 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id: Hour.php,v 1.1 2004/05/24 22:25:42 quipo Exp $ -// -/* - * @package Calendar - * @version $Id$ - */ - -/* - * Allows Calendar include path to be redefined - * @ignore - */ -if (!defined('CALENDAR_ROOT')) { - define('CALENDAR_ROOT', 'Calendar'.DIRECTORY_SEPARATOR); -} - -/** - * Load Calendar base class - */ -require_once CALENDAR_ROOT.'Calendar.php'; - -/** - * Represents an Hour and builds Minutes - * - * require_once 'Calendar'.DIRECTORY_SEPARATOR.'Hour.php'; - * $Hour = & new Calendar_Hour(2003, 10, 21, 15); // Oct 21st 2003, 3pm - * $Hour->build(); // Build Calendar_Minute objects - * while ($Minute = & $Hour->fetch()) { - * echo $Minute->thisMinute().'
'; - * } - *
- */ -class Calendar_Hour extends Calendar -{ - /** - * Constructs Calendar_Hour - * - * @param int year e.g. 2003 - * @param int month e.g. 5 - * @param int day e.g. 11 - * @param int hour e.g. 13 - */ - public function __construct($y, $m, $d, $h) - { - parent::__construct($y, $m, $d, $h); - } - - /** - * Builds the Minutes in the Hour - * - * @param array (optional) Calendar_Minute objects representing selected dates - * - * @return bool - */ - public function build($sDates = []) - { - require_once CALENDAR_ROOT.'Minute.php'; - $mIH = $this->cE->getMinutesInHour($this->year, $this->month, $this->day, - $this->hour); - for ($i = 0; $i < $mIH; $i++) { - $this->children[$i] = - new Calendar_Minute($this->year, $this->month, $this->day, - $this->hour, $i); - } - if (count($sDates) > 0) { - $this->setSelection($sDates); - } - - return true; - } - - /** - * Called from build() - * - * @param array - * - * @return void - */ - public function setSelection($sDates) - { - foreach ($sDates as $sDate) { - if ($this->year == $sDate->thisYear() - && $this->month == $sDate->thisMonth() - && $this->day == $sDate->thisDay() - && $this->hour == $sDate->thisHour()) { - $key = (int) $sDate->thisMinute(); - if (isset($this->children[$key])) { - $sDate->setSelected(); - $this->children[$key] = $sDate; - } - } - } - } -} diff --git a/data/module/Calendar/Minute.php b/data/module/Calendar/Minute.php deleted file mode 100644 index a02f046843..0000000000 --- a/data/module/Calendar/Minute.php +++ /dev/null @@ -1,114 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id: Minute.php,v 1.1 2004/05/24 22:25:42 quipo Exp $ -// -/* - * @package Calendar - * @version $Id$ - */ - -/* - * Allows Calendar include path to be redefined - * @ignore - */ -if (!defined('CALENDAR_ROOT')) { - define('CALENDAR_ROOT', 'Calendar'.DIRECTORY_SEPARATOR); -} - -/** - * Load Calendar base class - */ -require_once CALENDAR_ROOT.'Calendar.php'; - -/** - * Represents a Minute and builds Seconds - * - * require_once 'Calendar'.DIRECTORY_SEPARATOR.'Minute.php'; - * $Minute = & new Calendar_Minute(2003, 10, 21, 15, 31); // Oct 21st 2003, 3:31pm - * $Minute->build(); // Build Calendar_Second objects - * while ($Second = & $Minute->fetch()) { - * echo $Second->thisSecond().'
'; - * } - *
- */ -class Calendar_Minute extends Calendar -{ - /** - * Constructs Minute - * - * @param int year e.g. 2003 - * @param int month e.g. 5 - * @param int day e.g. 11 - * @param int hour e.g. 13 - * @param int minute e.g. 31 - */ - public function __construct($y, $m, $d, $h, $i) - { - parent::__construct($y, $m, $d, $h, $i); - } - - /** - * Builds the Calendar_Second objects - * - * @param array (optional) Calendar_Second objects representing selected dates - * - * @return bool - */ - public function build($sDates = []) - { - require_once CALENDAR_ROOT.'Second.php'; - $sIM = $this->cE->getSecondsInMinute($this->year, $this->month, - $this->day, $this->hour, $this->minute); - for ($i = 0; $i < $sIM; $i++) { - $this->children[$i] = new Calendar_Second($this->year, $this->month, - $this->day, $this->hour, $this->minute, $i); - } - if (count($sDates) > 0) { - $this->setSelection($sDates); - } - - return true; - } - - /** - * Called from build() - * - * @param array - * - * @return void - */ - public function setSelection($sDates) - { - foreach ($sDates as $sDate) { - if ($this->year == $sDate->thisYear() - && $this->month == $sDate->thisMonth() - && $this->day == $sDate->thisDay() - && $this->hour == $sDate->thisHour() - && $this->minute == $sDate->thisMinute()) { - $key = (int) $sDate->thisSecond(); - if (isset($this->children[$key])) { - $sDate->setSelected(); - $this->children[$key] = $sDate; - } - } - } - } -} diff --git a/data/module/Calendar/Month.php b/data/module/Calendar/Month.php deleted file mode 100644 index 1bcd398d46..0000000000 --- a/data/module/Calendar/Month.php +++ /dev/null @@ -1,118 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id: Month.php,v 1.3 2005/10/22 10:10:26 quipo Exp $ -// -/* - * @package Calendar - * @version $Id$ - */ - -/* - * Allows Calendar include path to be redefined - * @ignore - */ -if (!defined('CALENDAR_ROOT')) { - define('CALENDAR_ROOT', 'Calendar'.DIRECTORY_SEPARATOR); -} - -/** - * Load Calendar base class - */ -require_once CALENDAR_ROOT.'Calendar.php'; - -/** - * Represents a Month and builds Days - * - * require_once 'Calendar/Month.php'; - * $Month = & new Calendar_Month(2003, 10); // Oct 2003 - * $Month->build(); // Build Calendar_Day objects - * while ($Day = & $Month->fetch()) { - * echo $Day->thisDay().'
'; - * } - *
- */ -class Calendar_Month extends Calendar -{ - /** @var int */ - public $firstDay; - - /** - * Constructs Calendar_Month - * - * @param int $y year e.g. 2003 - * @param int $m month e.g. 5 - * @param int $firstDay first day of the week [optional] - */ - public function __construct($y, $m, $firstDay = null) - { - parent::__construct($y, $m); - $this->firstDay = $this->defineFirstDayOfWeek($firstDay); - } - - /** - * Builds Day objects for this Month. Creates as many Calendar_Day objects - * as there are days in the month - * - * @param array (optional) Calendar_Day objects representing selected dates - * - * @return bool - */ - public function build($sDates = []) - { - require_once CALENDAR_ROOT.'Day.php'; - $daysInMonth = $this->cE->getDaysInMonth($this->year, $this->month); - for ($i = 1; $i <= $daysInMonth; $i++) { - $this->children[$i] = new Calendar_Day($this->year, $this->month, $i); - } - if (count($sDates) > 0) { - $this->setSelection($sDates); - } - - return true; - } - - /** - * Called from build() - * - * @param array - * - * @return void - */ - public function setSelection($sDates) - { - foreach ($sDates as $sDate) { - if ($this->year == $sDate->thisYear() - && $this->month == $sDate->thisMonth() - ) { - $key = $sDate->thisDay(); - if (isset($this->children[$key])) { - $sDate->setSelected(); - $class = strtolower(get_class($sDate)); - if ($class == 'calendar_day' || $class == 'calendar_decorator') { - $sDate->setFirst($this->children[$key]->isFirst()); - $sDate->setLast($this->children[$key]->isLast()); - } - $this->children[$key] = $sDate; - } - } - } - } -} diff --git a/data/module/Calendar/Month/Weekdays.php b/data/module/Calendar/Month/Weekdays.php deleted file mode 100644 index 98e2d34576..0000000000 --- a/data/module/Calendar/Month/Weekdays.php +++ /dev/null @@ -1,190 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id: Weekdays.php,v 1.4 2005/10/22 10:28:49 quipo Exp $ -// -/* - * @package Calendar - * @version $Id$ - */ - -/* - * Allows Calendar include path to be redefined - * @ignore - */ -if (!defined('CALENDAR_ROOT')) { - define('CALENDAR_ROOT', 'Calendar'.DIRECTORY_SEPARATOR); -} - -/** - * Load Calendar base class - */ -require_once CALENDAR_ROOT.'Calendar.php'; - -/** - * Load base month - */ -require_once CALENDAR_ROOT.'Month.php'; - -/** - * Represents a Month and builds Days in tabular form
- * - * require_once 'Calendar/Month/Weekdays.php'; - * $Month = & new Calendar_Month_Weekdays(2003, 10); // Oct 2003 - * $Month->build(); // Build Calendar_Day objects - * while ($Day = & $Month->fetch()) { - * if ($Day->isFirst()) { - * echo ''; - * } - * if ($Day->isEmpty()) { - * echo ' '; - * } else { - * echo ''.$Day->thisDay().''; - * } - * if ($Day->isLast()) { - * echo ''; - * } - * } - * - */ -class Calendar_Month_Weekdays extends Calendar_Month -{ - /** - * Instance of Calendar_Table_Helper - * - * @var Calendar_Table_Helper - */ - public $tableHelper; - - /** - * First day of the week - * - * @var string - */ - public $firstDay; - - /** - * Constructs Calendar_Month_Weekdays - * - * @param int year e.g. 2003 - * @param int month e.g. 5 - * @param int (optional) first day of week (e.g. 0 for Sunday, 2 for Tuesday etc.) - */ - public function __construct($y, $m, $firstDay = null) - { - parent::__construct($y, $m, $firstDay); - } - - /** - * Builds Day objects in tabular form, to allow display of calendar month - * with empty cells if the first day of the week does not fall on the first - * day of the month. - * - * @see Calendar_Day::isEmpty() - * @see Calendar_Day_Base::isFirst() - * @see Calendar_Day_Base::isLast() - * - * @param array (optional) Calendar_Day objects representing selected dates - * - * @return bool - */ - public function build($sDates = []) - { - require_once CALENDAR_ROOT.'Table/Helper.php'; - $this->tableHelper = new Calendar_Table_Helper($this, $this->firstDay); - Calendar_Month::build($sDates); - $this->buildEmptyDaysBefore(); - $this->shiftDays(); - $this->buildEmptyDaysAfter(); - $this->setWeekMarkers(); - - return true; - } - - /** - * Prepends empty days before the real days in the month - * - * @return void - */ - public function buildEmptyDaysBefore() - { - $eBefore = $this->tableHelper->getEmptyDaysBefore(); - for ($i = 0; $i < $eBefore; $i++) { - $stamp = $this->cE->dateToStamp($this->year, $this->month, -$i); - $Day = new Calendar_Day( - $this->cE->stampToYear($stamp), - $this->cE->stampToMonth($stamp), - $this->cE->stampToDay($stamp)); - $Day->setEmpty(); - $Day->adjust(); - array_unshift($this->children, $Day); - } - } - - /** - * Shifts the array of children forward, if necessary - * - * @return void - */ - public function shiftDays() - { - if (isset($this->children[0])) { - array_unshift($this->children, null); - unset($this->children[0]); - } - } - - /** - * Appends empty days after the real days in the month - * - * @return void - */ - public function buildEmptyDaysAfter() - { - $eAfter = $this->tableHelper->getEmptyDaysAfter(); - $sDOM = $this->tableHelper->getNumTableDaysInMonth(); - for ($i = 1; $i <= $sDOM - $eAfter; $i++) { - $Day = new Calendar_Day($this->year, $this->month + 1, $i); - $Day->setEmpty(); - $Day->adjust(); - $this->children[] = $Day; - } - } - - /** - * Sets the "markers" for the beginning and of a of week, in the - * built Calendar_Day children - * - * @return void - */ - public function setWeekMarkers() - { - $dIW = $this->cE->getDaysInWeek( - $this->thisYear(), - $this->thisMonth(), - $this->thisDay() - ); - $sDOM = $this->tableHelper->getNumTableDaysInMonth(); - for ($i = 1; $i <= $sDOM; $i += $dIW) { - $this->children[$i]->setFirst(); - $this->children[$i + ($dIW - 1)]->setLast(); - } - } -} diff --git a/data/module/Calendar/Month/Weeks.php b/data/module/Calendar/Month/Weeks.php deleted file mode 100644 index ded5db1536..0000000000 --- a/data/module/Calendar/Month/Weeks.php +++ /dev/null @@ -1,139 +0,0 @@ - | -// | Lorenzo Alberton | -// +----------------------------------------------------------------------+ -// -// $Id: Weeks.php,v 1.3 2005/10/22 10:28:49 quipo Exp $ -// -/* - * @package Calendar - * @version $Id$ - */ - -/* - * Allows Calendar include path to be redefined - * @ignore - */ -if (!defined('CALENDAR_ROOT')) { - define('CALENDAR_ROOT', 'Calendar'.DIRECTORY_SEPARATOR); -} - -/** - * Load Calendar base class - */ -require_once CALENDAR_ROOT.'Calendar.php'; - -/** - * Load base month - */ -require_once CALENDAR_ROOT.'Month.php'; - -/** - * Represents a Month and builds Weeks - * - * require_once 'Calendar'.DIRECTORY_SEPARATOR.'Month'.DIRECTORY_SEPARATOR.'Weeks.php'; - * $Month = & new Calendar_Month_Weeks(2003, 10); // Oct 2003 - * $Month->build(); // Build Calendar_Day objects - * while ($Week = & $Month->fetch()) { - * echo $Week->thisWeek().'
'; - * } - *
- */ -class Calendar_Month_Weeks extends Calendar_Month -{ - /** - * Instance of Calendar_Table_Helper - * - * @var Calendar_Table_Helper - */ - public $tableHelper; - - /** - * First day of the week - * - * @var string - */ - public $firstDay; - - /** - * Constructs Calendar_Month_Weeks - * - * @param int year e.g. 2003 - * @param int month e.g. 5 - * @param int (optional) first day of week (e.g. 0 for Sunday, 2 for Tuesday etc.) - */ - public function __construct($y, $m, $firstDay = null) - { - parent::__construct($y, $m, $firstDay); - } - - /** - * Builds Calendar_Week objects for the Month. Note that Calendar_Week - * builds Calendar_Day object in tabular form (with Calendar_Day->empty) - * - * @param array (optional) Calendar_Week objects representing selected dates - * - * @return bool - */ - public function build($sDates = []) - { - require_once CALENDAR_ROOT.'Table/Helper.php'; - $this->tableHelper = new Calendar_Table_Helper($this, $this->firstDay); - require_once CALENDAR_ROOT.'Week.php'; - $numWeeks = $this->tableHelper->getNumWeeks(); - for ($i = 1, $d = 1; $i <= $numWeeks; $i++, - $d += $this->cE->getDaysInWeek( - $this->thisYear(), - $this->thisMonth(), - $this->thisDay())) { - $this->children[$i] = new Calendar_Week( - $this->year, $this->month, $d, $this->tableHelper->getFirstDay()); - } - // used to set empty days - $this->children[1]->setFirst(true); - $this->children[$numWeeks]->setLast(true); - - // Handle selected weeks here - if (count($sDates) > 0) { - $this->setSelection($sDates); - } - - return true; - } - - /** - * Called from build() - * - * @param array - * - * @return void - */ - public function setSelection($sDates) - { - foreach ($sDates as $sDate) { - if ($this->year == $sDate->thisYear() - && $this->month == $sDate->thisMonth()) { - $key = $sDate->thisWeek('n_in_month'); - if (isset($this->children[$key])) { - $this->children[$key]->setSelected(); - } - } - } - } -} diff --git a/data/module/Calendar/Second.php b/data/module/Calendar/Second.php deleted file mode 100644 index ae86eb8acf..0000000000 --- a/data/module/Calendar/Second.php +++ /dev/null @@ -1,102 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id: Second.php,v 1.1 2004/05/24 22:25:42 quipo Exp $ -// -/* - * @package Calendar - * @version $Id$ - */ - -/* - * Allows Calendar include path to be redefined - * @ignore - */ -if (!defined('CALENDAR_ROOT')) { - define('CALENDAR_ROOT', 'Calendar'.DIRECTORY_SEPARATOR); -} - -/** - * Load Calendar base class - */ -require_once CALENDAR_ROOT.'Calendar.php'; - -/** - * Represents a Second
- * Note: Seconds do not build other objects - * so related methods are overridden to return NULL - */ -class Calendar_Second extends Calendar -{ - /** - * Constructs Second - * - * @param int year e.g. 2003 - * @param int month e.g. 5 - * @param int day e.g. 11 - * @param int hour e.g. 13 - * @param int minute e.g. 31 - * @param int second e.g. 45 - */ - public function __construct($y, $m, $d, $h, $i, $s) - { - parent::__construct($y, $m, $d, $h, $i, $s); - } - - /** - * Overwrite build - * - * @return null - */ - public function build($sDates = []) - { - return null; - } - - /** - * Overwrite fetch - * - * @return null - */ - public function fetch($decorator = null) - { - return null; - } - - /** - * Overwrite fetchAll - * - * @return null - */ - public function fetchAll($decorator = null) - { - return null; - } - - /** - * Overwrite size - * - * @return null - */ - public function size() - { - return null; - } -} diff --git a/data/module/Calendar/Table/Helper.php b/data/module/Calendar/Table/Helper.php deleted file mode 100644 index 68f9c1ba15..0000000000 --- a/data/module/Calendar/Table/Helper.php +++ /dev/null @@ -1,281 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id: Helper.php,v 1.5 2005/10/22 09:51:53 quipo Exp $ -// -/** - * @version $Id$ - */ - -/** - * Used by Calendar_Month_Weekdays, Calendar_Month_Weeks and Calendar_Week to - * help with building the calendar in tabular form - */ -class Calendar_Table_Helper -{ - /** - * Instance of the Calendar object being helped. - * - * @var object - */ - public $calendar; - - /** - * Instance of the Calendar_Engine - * - * @var object - */ - public $cE; - - /** - * First day of the week - * - * @var string - */ - public $firstDay; - - /** - * The seven days of the week named - * - * @var array - */ - public $weekDays; - - /** - * Days of the week ordered with $firstDay at the beginning - * - * @var array - */ - public $daysOfWeek = []; - - /** - * Days of the month built from days of the week - * - * @var array - */ - public $daysOfMonth = []; - - /** - * Number of weeks in month - * - * @var int - */ - public $numWeeks = null; - - /** - * Number of emtpy days before real days begin in month - * - * @var int - */ - public $emptyBefore = 0; - - /** - * Constructs Calendar_Table_Helper - * - * @param object Calendar_Month_Weekdays, Calendar_Month_Weeks, Calendar_Week - * @param int (optional) first day of the week e.g. 1 for Monday - */ - public function __construct(&$calendar, $firstDay = null) - { - $this->calendar = &$calendar; - $this->cE = &$calendar->getEngine(); - if (is_null($firstDay)) { - $firstDay = $this->cE->getFirstDayOfWeek( - $this->calendar->thisYear(), - $this->calendar->thisMonth(), - $this->calendar->thisDay() - ); - } - $this->firstDay = $firstDay; - $this->setFirstDay(); - $this->setDaysOfMonth(); - } - - /** - * Constructs $this->daysOfWeek based on $this->firstDay - * - * @return void - */ - public function setFirstDay() - { - $weekDays = $this->cE->getWeekDays( - $this->calendar->thisYear(), - $this->calendar->thisMonth(), - $this->calendar->thisDay() - ); - $endDays = []; - $tmpDays = []; - $begin = false; - foreach ($weekDays as $day) { - if ($begin) { - $endDays[] = $day; - } elseif ($day === $this->firstDay) { - $begin = true; - $endDays[] = $day; - } else { - $tmpDays[] = $day; - } - } - $this->daysOfWeek = array_merge($endDays, $tmpDays); - } - - /** - * Constructs $this->daysOfMonth - * - * @return void - */ - public function setDaysOfMonth() - { - $this->daysOfMonth = $this->daysOfWeek; - $daysInMonth = $this->cE->getDaysInMonth( - $this->calendar->thisYear(), $this->calendar->thisMonth()); - $firstDayInMonth = $this->cE->getFirstDayInMonth( - $this->calendar->thisYear(), $this->calendar->thisMonth()); - $this->emptyBefore = 0; - foreach ($this->daysOfMonth as $dayOfWeek) { - if ($firstDayInMonth == $dayOfWeek) { - break; - } - $this->emptyBefore++; - } - $this->numWeeks = ceil( - ($daysInMonth + $this->emptyBefore) - / - $this->cE->getDaysInWeek( - $this->calendar->thisYear(), - $this->calendar->thisMonth(), - $this->calendar->thisDay() - ) - ); - for ($i = 1; $i < $this->numWeeks; $i++) { - $this->daysOfMonth = - array_merge($this->daysOfMonth, $this->daysOfWeek); - } - } - - /** - * Returns the first day of the month - * - * @see Calendar_Engine_Interface::getFirstDayOfWeek() - * - * @return int - */ - public function getFirstDay() - { - return $this->firstDay; - } - - /** - * Returns the order array of days in a week - * - * @return int - */ - public function getDaysOfWeek() - { - return $this->daysOfWeek; - } - - /** - * Returns the number of tabular weeks in a month - * - * @return int - */ - public function getNumWeeks() - { - return $this->numWeeks; - } - - /** - * Returns the number of real days + empty days - * - * @return int - */ - public function getNumTableDaysInMonth() - { - return count($this->daysOfMonth); - } - - /** - * Returns the number of empty days before the real days begin - * - * @return int - */ - public function getEmptyDaysBefore() - { - return $this->emptyBefore; - } - - /** - * Returns the index of the last real day in the month - * - * @todo Potential performance optimization with static - * - * @return int - */ - public function getEmptyDaysAfter() - { - // Causes bug when displaying more than one month -// static $index; -// if (!isset($index)) { - $index = $this->getEmptyDaysBefore() + $this->cE->getDaysInMonth( - $this->calendar->thisYear(), $this->calendar->thisMonth()); -// } - return $index; - } - - /** - * Returns the index of the last real day in the month, relative to the - * beginning of the tabular week it is part of - * - * @return int - */ - public function getEmptyDaysAfterOffset() - { - $eAfter = $this->getEmptyDaysAfter(); - - return $eAfter - ( - $this->cE->getDaysInWeek( - $this->calendar->thisYear(), - $this->calendar->thisMonth(), - $this->calendar->thisDay() - ) * ($this->numWeeks - 1)); - } - - /** - * Returns the timestamp of the first day of the current week - */ - public function getWeekStart($y, $m, $d, $firstDay = 1) - { - $dow = $this->cE->getDayOfWeek($y, $m, $d); - if ($dow > $firstDay) { - $d -= ($dow - $firstDay); - } - if ($dow < $firstDay) { - $d -= ( - $this->cE->getDaysInWeek( - $this->calendar->thisYear(), - $this->calendar->thisMonth(), - $this->calendar->thisDay() - ) - $firstDay + $dow); - } - - return $this->cE->dateToStamp($y, $m, $d); - } -} diff --git a/data/module/Calendar/Util/Textual.php b/data/module/Calendar/Util/Textual.php deleted file mode 100644 index 1d93aaf009..0000000000 --- a/data/module/Calendar/Util/Textual.php +++ /dev/null @@ -1,254 +0,0 @@ - | -// | Lorenzo Alberton | -// +----------------------------------------------------------------------+ -// -// $Id: Textual.php,v 1.2 2004/08/16 13:13:09 hfuecks Exp $ -// -/* - * @package Calendar - * @version $Id$ - */ - -/* - * Allows Calendar include path to be redefined - * @ignore - */ -if (!defined('CALENDAR_ROOT')) { - define('CALENDAR_ROOT', 'Calendar'.DIRECTORY_SEPARATOR); -} - -/** - * Load Calendar decorator base class - */ -require_once CALENDAR_ROOT.'Decorator.php'; - -/** - * Static utlities to help with fetching textual representations of months and - * days of the week. - */ -class Calendar_Util_Textual -{ - /** - * Returns an array of 12 month names (first index = 1) - * - * @param string (optional) format of returned months (one,two,short or long) - * - * @return array - * @static - */ - public static function monthNames($format = 'long') - { - $formats = ['one' => '%b', 'two' => '%b', 'short' => '%b', 'long' => '%B']; - if (!array_key_exists($format, $formats)) { - $format = 'long'; - } - $months = []; - for ($i = 1; $i <= 12; $i++) { - $stamp = mktime(0, 0, 0, $i, 1, 2003); - $month = strftime($formats[$format], $stamp); - switch ($format) { - case 'one': - $month = substr($month, 0, 1); - break; - case 'two': - $month = substr($month, 0, 2); - break; - } - $months[$i] = $month; - } - - return $months; - } - - /** - * Returns an array of 7 week day names (first index = 0) - * - * @param string (optional) format of returned days (one,two,short or long) - * - * @return array - * @static - */ - public static function weekdayNames($format = 'long') - { - $formats = ['one' => '%a', 'two' => '%a', 'short' => '%a', 'long' => '%A']; - if (!array_key_exists($format, $formats)) { - $format = 'long'; - } - $days = []; - for ($i = 0; $i <= 6; $i++) { - $stamp = mktime(0, 0, 0, 11, $i + 2, 2003); - $day = strftime($formats[$format], $stamp); - switch ($format) { - case 'one': - $day = substr($day, 0, 1); - break; - case 'two': - $day = substr($day, 0, 2); - break; - } - $days[$i] = $day; - } - - return $days; - } - - /** - * Returns textual representation of the previous month of the decorated calendar object - * - * @param object subclass of Calendar e.g. Calendar_Month - * @param string (optional) format of returned months (one,two,short or long) - * - * @return string - * @static - */ - public static function prevMonthName($Calendar, $format = 'long') - { - $months = self::monthNames($format); - - return $months[$Calendar->prevMonth()]; - } - - /** - * Returns textual representation of the month of the decorated calendar object - * - * @param object subclass of Calendar e.g. Calendar_Month - * @param string (optional) format of returned months (one,two,short or long) - * - * @return string - * @static - */ - public static function thisMonthName($Calendar, $format = 'long') - { - $months = self::monthNames($format); - - return $months[$Calendar->thisMonth()]; - } - - /** - * Returns textual representation of the next month of the decorated calendar object - * - * @param object subclass of Calendar e.g. Calendar_Month - * @param string (optional) format of returned months (one,two,short or long) - * - * @return string - * @static - */ - public static function nextMonthName($Calendar, $format = 'long') - { - $months = self::monthNames($format); - - return $months[$Calendar->nextMonth()]; - } - - /** - * Returns textual representation of the previous day of week of the decorated calendar object - * Note: Requires PEAR::Date - * - * @param object subclass of Calendar e.g. Calendar_Month - * @param string (optional) format of returned months (one,two,short or long) - * - * @return string - * @static - */ - public static function prevDayName($Calendar, $format = 'long') - { - $days = self::weekdayNames($format); - $stamp = $Calendar->prevDay('timestamp'); - $cE = $Calendar->getEngine(); - require_once 'Date/Calc.php'; - $day = Date_Calc::dayOfWeek($cE->stampToDay($stamp), - $cE->stampToMonth($stamp), $cE->stampToYear($stamp)); - - return $days[$day]; - } - - /** - * Returns textual representation of the day of week of the decorated calendar object - * Note: Requires PEAR::Date - * - * @param object subclass of Calendar e.g. Calendar_Month - * @param string (optional) format of returned months (one,two,short or long) - * - * @return string - * @static - */ - public static function thisDayName($Calendar, $format = 'long') - { - $days = self::weekdayNames($format); - require_once 'Date/Calc.php'; - $day = Date_Calc::dayOfWeek($Calendar->thisDay(), $Calendar->thisMonth(), $Calendar->thisYear()); - - return $days[$day]; - } - - /** - * Returns textual representation of the next day of week of the decorated calendar object - * - * @param object subclass of Calendar e.g. Calendar_Month - * @param string (optional) format of returned months (one,two,short or long) - * - * @return string - * @static - */ - public static function nextDayName($Calendar, $format = 'long') - { - $days = self::weekdayNames($format); - $stamp = $Calendar->nextDay('timestamp'); - $cE = $Calendar->getEngine(); - require_once 'Date/Calc.php'; - $day = Date_Calc::dayOfWeek($cE->stampToDay($stamp), - $cE->stampToMonth($stamp), $cE->stampToYear($stamp)); - - return $days[$day]; - } - - /** - * Returns the days of the week using the order defined in the decorated - * calendar object. Only useful for Calendar_Month_Weekdays, Calendar_Month_Weeks - * and Calendar_Week. Otherwise the returned array will begin on Sunday - * - * @param object subclass of Calendar e.g. Calendar_Month - * @param string (optional) format of returned months (one,two,short or long) - * - * @return array ordered array of week day names - * @static - */ - public static function orderedWeekdays($Calendar, $format = 'long') - { - $days = self::weekdayNames($format); - - // Not so good - need methods to access this information perhaps... - if (isset($Calendar->tableHelper)) { - $ordereddays = $Calendar->tableHelper->daysOfWeek; - } else { - $ordereddays = [0, 1, 2, 3, 4, 5, 6]; - } - - $ordereddays = array_flip($ordereddays); - $i = 0; - $returndays = []; - foreach ($ordereddays as $key => $value) { - $returndays[$i] = $days[$key]; - $i++; - } - - return $returndays; - } -} diff --git a/data/module/Calendar/Util/Uri.php b/data/module/Calendar/Util/Uri.php deleted file mode 100644 index de31513aca..0000000000 --- a/data/module/Calendar/Util/Uri.php +++ /dev/null @@ -1,190 +0,0 @@ - | -// | Lorenzo Alberton | -// +----------------------------------------------------------------------+ -// -// $Id: Uri.php,v 1.1 2004/08/16 09:03:55 hfuecks Exp $ -// -/** - * @version $Id$ - */ - -/** - * Utility to help building HTML links for navigating the calendar
- * - * $Day = new Calendar_Day(2003, 10, 23); - * $Uri = & new Calendar_Util_Uri('year', 'month', 'day'); - * echo $Uri->prev($Day,'month'); // Displays year=2003&month=10 - * echo $Uri->prev($Day,'day'); // Displays year=2003&month=10&day=22 - * $Uri->seperator = '/'; - * $Uri->scalar = true; - * echo $Uri->prev($Day,'month'); // Displays 2003/10 - * echo $Uri->prev($Day,'day'); // Displays 2003/10/22 - * - */ -class Calendar_Util_Uri -{ - /** - * Uri fragments for year, month, day etc. - * - * @var array - */ - public $uris = []; - - /** - * String to separate fragments with. - * Set to just & for HTML. - * For a scalar URL you might use / as the seperator - * - * @var string (default XHTML &) - */ - public $separator = '&'; - - /** - * To output a "scalar" string - variable names omitted. - * Used for urls like index.php/2004/8/12 - * - * @var bool (default false) - */ - public $scalar = false; - - /** - * Constructs Calendar_Decorator_Uri - * The term "fragment" means name of a calendar GET variables in the URL - * - * @param string URI fragment for year - * @param string (optional) URI fragment for month - * @param string (optional) URI fragment for day - * @param string (optional) URI fragment for hour - * @param string (optional) URI fragment for minute - * @param string (optional) URI fragment for second - */ - public function __construct($y, $m = null, $d = null, $h = null, $i = null, $s = null) - { - $this->setFragments($y, $m, $d, $h, $i, $s); - } - - /** - * Sets the URI fragment names - * - * @param string URI fragment for year - * @param string (optional) URI fragment for month - * @param string (optional) URI fragment for day - * @param string (optional) URI fragment for hour - * @param string (optional) URI fragment for minute - * @param string (optional) URI fragment for second - * - * @return void - */ - public function setFragments($y, $m = null, $d = null, $h = null, $i = null, $s = null) - { - if (!is_null($y)) { - $this->uris['Year'] = $y; - } - if (!is_null($m)) { - $this->uris['Month'] = $m; - } - if (!is_null($d)) { - $this->uris['Day'] = $d; - } - if (!is_null($h)) { - $this->uris['Hour'] = $h; - } - if (!is_null($i)) { - $this->uris['Minute'] = $i; - } - if (!is_null($s)) { - $this->uris['Second'] = $s; - } - } - - /** - * Gets the URI string for the previous calendar unit - * - * @param object subclassed from Calendar e.g. Calendar_Month - * @param string calendar unit ( must be year, month, week, day, hour, minute or second) - * - * @return string - */ - public function prev($Calendar, $unit) - { - $method = 'prev'.$unit; - $stamp = $Calendar->{$method}('timestamp'); - - return $this->buildUriString($Calendar, $method, $stamp); - } - - /** - * Gets the URI string for the current calendar unit - * - * @param object subclassed from Calendar e.g. Calendar_Month - * @param string calendar unit ( must be year, month, week, day, hour, minute or second) - * - * @return string - */ - public function this($Calendar, $unit) - { - $method = 'this'.$unit; - $stamp = $Calendar->{$method}('timestamp'); - - return $this->buildUriString($Calendar, $method, $stamp); - } - - /** - * Gets the URI string for the next calendar unit - * - * @param object subclassed from Calendar e.g. Calendar_Month - * @param string calendar unit ( must be year, month, week, day, hour, minute or second) - * - * @return string - */ - public function next($Calendar, $unit) - { - $method = 'next'.$unit; - $stamp = $Calendar->{$method}('timestamp'); - - return $this->buildUriString($Calendar, $method, $stamp); - } - - /** - * Build the URI string - * - * @param string method substring - * @param int timestamp - * - * @return string build uri string - */ - public function buildUriString($Calendar, $method, $stamp) - { - $uriString = ''; - $cE = &$Calendar->getEngine(); - $separator = ''; - foreach ($this->uris as $unit => $uri) { - $call = 'stampTo'.$unit; - $uriString .= $separator; - if (!$this->scalar) { - $uriString .= $uri.'='; - } - $uriString .= $cE->{$call}($stamp); - $separator = $this->separator; - } - - return $uriString; - } -} diff --git a/data/module/Calendar/Validator.php b/data/module/Calendar/Validator.php deleted file mode 100644 index bbb561d2ec..0000000000 --- a/data/module/Calendar/Validator.php +++ /dev/null @@ -1,354 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id: Validator.php,v 1.1 2004/05/24 22:25:42 quipo Exp $ -// -/* - * @package Calendar - * @version $Id$ - */ - -/* - * Validation Error Messages - */ -if (!defined('CALENDAR_VALUE_TOOSMALL')) { - define('CALENDAR_VALUE_TOOSMALL', 'Too small: min = '); -} -if (!defined('CALENDAR_VALUE_TOOLARGE')) { - define('CALENDAR_VALUE_TOOLARGE', 'Too large: max = '); -} - -/** - * Used to validate any given Calendar date object. Instances of this class - * can be obtained from any data object using the getValidator method - * - * @see Calendar::getValidator() - */ -class Calendar_Validator -{ - /** - * Instance of the Calendar date object to validate - * - * @var object - */ - public $calendar; - - /** - * Instance of the Calendar_Engine - * - * @var object - */ - public $cE; - - /** - * Array of errors for validation failures - * - * @var array - */ - public $errors = []; - - /** - * Constructs Calendar_Validator - * - * @param object subclass of Calendar - */ - public function __construct(&$calendar) - { - $this->calendar = &$calendar; - $this->cE = &$calendar->getEngine(); - } - - /** - * Calls all the other isValidXXX() methods in the validator - * - * @return bool - */ - public function isValid() - { - $checks = ['isValidYear', 'isValidMonth', 'isValidDay', - 'isValidHour', 'isValidMinute', 'isValidSecond', ]; - $valid = true; - foreach ($checks as $check) { - if (!$this->{$check}()) { - $valid = false; - } - } - - return $valid; - } - - /** - * Check whether this is a valid year - * - * @return bool - */ - public function isValidYear() - { - $y = $this->calendar->thisYear(); - $min = $this->cE->getMinYears(); - if ($min > $y) { - $this->errors[] = new Calendar_Validation_Error( - 'Year', $y, CALENDAR_VALUE_TOOSMALL.$min); - - return false; - } - $max = $this->cE->getMaxYears(); - if ($y > $max) { - $this->errors[] = new Calendar_Validation_Error( - 'Year', $y, CALENDAR_VALUE_TOOLARGE.$max); - - return false; - } - - return true; - } - - /** - * Check whether this is a valid month - * - * @return bool - */ - public function isValidMonth() - { - $m = $this->calendar->thisMonth(); - $min = 1; - if ($min > $m) { - $this->errors[] = new Calendar_Validation_Error( - 'Month', $m, CALENDAR_VALUE_TOOSMALL.$min); - - return false; - } - $max = $this->cE->getMonthsInYear($this->calendar->thisYear()); - if ($m > $max) { - $this->errors[] = new Calendar_Validation_Error( - 'Month', $m, CALENDAR_VALUE_TOOLARGE.$max); - - return false; - } - - return true; - } - - /** - * Check whether this is a valid day - * - * @return bool - */ - public function isValidDay() - { - $d = $this->calendar->thisDay(); - $min = 1; - if ($min > $d) { - $this->errors[] = new Calendar_Validation_Error( - 'Day', $d, CALENDAR_VALUE_TOOSMALL.$min); - - return false; - } - $max = $this->cE->getDaysInMonth( - $this->calendar->thisYear(), $this->calendar->thisMonth()); - if ($d > $max) { - $this->errors[] = new Calendar_Validation_Error( - 'Day', $d, CALENDAR_VALUE_TOOLARGE.$max); - - return false; - } - - return true; - } - - /** - * Check whether this is a valid hour - * - * @return bool - */ - public function isValidHour() - { - $h = $this->calendar->thisHour(); - $min = 0; - if ($min > $h) { - $this->errors[] = new Calendar_Validation_Error( - 'Hour', $h, CALENDAR_VALUE_TOOSMALL.$min); - - return false; - } - $max = ($this->cE->getHoursInDay($this->calendar->thisDay()) - 1); - if ($h > $max) { - $this->errors[] = new Calendar_Validation_Error( - 'Hour', $h, CALENDAR_VALUE_TOOLARGE.$max); - - return false; - } - - return true; - } - - /** - * Check whether this is a valid minute - * - * @return bool - */ - public function isValidMinute() - { - $i = $this->calendar->thisMinute(); - $min = 0; - if ($min > $i) { - $this->errors[] = new Calendar_Validation_Error( - 'Minute', $i, CALENDAR_VALUE_TOOSMALL.$min); - - return false; - } - $max = ($this->cE->getMinutesInHour($this->calendar->thisHour()) - 1); - if ($i > $max) { - $this->errors[] = new Calendar_Validation_Error( - 'Minute', $i, CALENDAR_VALUE_TOOLARGE.$max); - - return false; - } - - return true; - } - - /** - * Check whether this is a valid second - * - * @return bool - */ - public function isValidSecond() - { - $s = $this->calendar->thisSecond(); - $min = 0; - if ($min > $s) { - $this->errors[] = new Calendar_Validation_Error( - 'Second', $s, CALENDAR_VALUE_TOOSMALL.$min); - - return false; - } - $max = ($this->cE->getSecondsInMinute($this->calendar->thisMinute()) - 1); - if ($s > $max) { - $this->errors[] = new Calendar_Validation_Error( - 'Second', $s, CALENDAR_VALUE_TOOLARGE.$max); - - return false; - } - - return true; - } - - /** - * Iterates over any validation errors - * - * @return mixed either Calendar_Validation_Error or false - */ - public function fetch() - { - $error = current($this->errors); - next($this->errors); - if ($error) { - return $error['value']; - } else { - reset($this->errors); - - return false; - } - } -} - -/** - * For Validation Error messages - * - * @see Calendar::fetch() - */ -class Calendar_Validation_Error -{ - /** - * Date unit (e.g. month,hour,second) which failed test - * - * @var string - */ - public $unit; - - /** - * Value of unit which failed test - * - * @var int - */ - public $value; - - /** - * Validation error message - * - * @var string - */ - public $message; - - /** - * Constructs Calendar_Validation_Error - * - * @param string Date unit (e.g. month,hour,second) - * @param int Value of unit which failed test - * @param string Validation error message - */ - public function __construct($unit, $value, $message) - { - $this->unit = $unit; - $this->value = $value; - $this->message = $message; - } - - /** - * Returns the Date unit - * - * @return string - */ - public function getUnit() - { - return $this->unit; - } - - /** - * Returns the value of the unit - * - * @return int - */ - public function getValue() - { - return $this->value; - } - - /** - * Returns the validation error message - * - * @return string - */ - public function getMessage() - { - return $this->message; - } - - /** - * Returns a string containing the unit, value and error message - * - * @return string - */ - public function toString() - { - return $this->unit.' = '.$this->value.' ['.$this->message.']'; - } -} diff --git a/data/module/Calendar/Week.php b/data/module/Calendar/Week.php deleted file mode 100644 index aa48fcc812..0000000000 --- a/data/module/Calendar/Week.php +++ /dev/null @@ -1,400 +0,0 @@ - | -// | Lorenzo Alberton | -// +----------------------------------------------------------------------+ -// -// $Id: Week.php,v 1.7 2005/10/22 10:26:49 quipo Exp $ -// -/* - * @package Calendar - * @version $Id$ - */ - -/* - * Allows Calendar include path to be redefined - * @ignore - */ -if (!defined('CALENDAR_ROOT')) { - define('CALENDAR_ROOT', 'Calendar'.DIRECTORY_SEPARATOR); -} - -/** - * Load Calendar base class - */ -require_once CALENDAR_ROOT.'Calendar.php'; - -/** - * Represents a Week and builds Days in tabular format
- * - * require_once 'Calendar'.DIRECTORY_SEPARATOR.'Week.php'; - * $Week = & new Calendar_Week(2003, 10, 1); Oct 2003, 1st tabular week - * echo ''; - * while ($Day = & $Week->fetch()) { - * if ($Day->isEmpty()) { - * echo ' '; - * } else { - * echo ''.$Day->thisDay().''; - * } - * } - * echo ''; - * - */ -class Calendar_Week extends Calendar -{ - /** - * Instance of Calendar_Table_Helper - * - * @var Calendar_Table_Helper - */ - public $tableHelper; - - /** - * Stores the timestamp of the first day of this week - * - * @var object - */ - public $thisWeek; - - /** - * Stores the timestamp of first day of previous week - * - * @var object - */ - public $prevWeek; - - /** - * Stores the timestamp of first day of next week - * - * @var object - */ - public $nextWeek; - - /** - * Used by build() to set empty days - * - * @var bool - */ - public $firstWeek = false; - - /** - * Used by build() to set empty days - * - * @var bool - */ - public $lastWeek = false; - - /** - * First day of the week (0=sunday, 1=monday...) - * - * @var bool - */ - public $firstDay = 1; - - /** - * Constructs Week - * - * @param int year e.g. 2003 - * @param int month e.g. 5 - * @param int a day of the desired week - * @param int (optional) first day of week (e.g. 0 for Sunday, 2 for Tuesday etc.) - */ - public function __construct($y, $m, $d, $firstDay = null) - { - require_once CALENDAR_ROOT.'Table/Helper.php'; - parent::__construct($y, $m, $d); - $this->firstDay = $this->defineFirstDayOfWeek($firstDay); - $this->tableHelper = new Calendar_Table_Helper($this, $this->firstDay); - $this->thisWeek = $this->tableHelper->getWeekStart($y, $m, $d, $this->firstDay); - $this->prevWeek = $this->tableHelper->getWeekStart($y, $m, $d - $this->cE->getDaysInWeek( - $this->thisYear(), - $this->thisMonth(), - $this->thisDay()), $this->firstDay); - $this->nextWeek = $this->tableHelper->getWeekStart($y, $m, $d + $this->cE->getDaysInWeek( - $this->thisYear(), - $this->thisMonth(), - $this->thisDay()), $this->firstDay); - } - - /** - * Defines the calendar by a timestamp (Unix or ISO-8601), replacing values - * passed to the constructor - * - * @param int|string Unix or ISO-8601 timestamp - * - * @return void - */ - public function setTimestamp($ts) - { - parent::setTimestamp($ts); - $this->thisWeek = $this->tableHelper->getWeekStart( - $this->year, $this->month, $this->day, $this->firstDay - ); - $this->prevWeek = $this->tableHelper->getWeekStart( - $this->year, $this->month, $this->day - $this->cE->getDaysInWeek( - $this->thisYear(), - $this->thisMonth(), - $this->thisDay()), $this->firstDay - ); - $this->nextWeek = $this->tableHelper->getWeekStart( - $this->year, $this->month, $this->day + $this->cE->getDaysInWeek( - $this->thisYear(), - $this->thisMonth(), - $this->thisDay()), $this->firstDay - ); - } - - /** - * Builds Calendar_Day objects for this Week - * - * @param array (optional) Calendar_Day objects representing selected dates - * - * @return bool - */ - public function build($sDates = []) - { - require_once CALENDAR_ROOT.'Day.php'; - $year = $this->cE->stampToYear($this->thisWeek); - $month = $this->cE->stampToMonth($this->thisWeek); - $day = $this->cE->stampToDay($this->thisWeek); - $end = $this->cE->getDaysInWeek( - $this->thisYear(), - $this->thisMonth(), - $this->thisDay() - ); - - for ($i = 1; $i <= $end; $i++) { - $stamp = $this->cE->dateToStamp($year, $month, $day++); - $this->children[$i] = new Calendar_Day( - $this->cE->stampToYear($stamp), - $this->cE->stampToMonth($stamp), - $this->cE->stampToDay($stamp)); - } - - // set empty days (@see Calendar_Month_Weeks::build()) - if ($this->firstWeek) { - $eBefore = $this->tableHelper->getEmptyDaysBefore(); - for ($i = 1; $i <= $eBefore; $i++) { - $this->children[$i]->setEmpty(); - } - } - if ($this->lastWeek) { - $eAfter = $this->tableHelper->getEmptyDaysAfterOffset(); - for ($i = $eAfter + 1; $i <= $end; $i++) { - $this->children[$i]->setEmpty(); - } - } - - if (count($sDates) > 0) { - $this->setSelection($sDates); - } - - return true; - } - - /** - * @param bool - * - * @return void - */ - public function setFirst($state = true) - { - $this->firstWeek = $state; - } - - /** - * @param bool - * - * @return void - */ - public function setLast($state = true) - { - $this->lastWeek = $state; - } - - /** - * Called from build() - * - * @param array - * - * @return void - */ - public function setSelection($sDates) - { - foreach ($sDates as $sDate) { - foreach ($this->children as $key => $child) { - if ($child->thisDay() == $sDate->thisDay() && - $child->thisMonth() == $sDate->thisMonth() && - $child->thisYear() == $sDate->thisYear() - ) { - $this->children[$key] = $sDate; - $this->children[$key]->setSelected(); - } - } - } - reset($this->children); - } - - /** - * Gets the value of the previous week, according to the requested format - * - * @param string $format ['timestamp' | 'n_in_month' | 'n_in_year' | 'array'] - * - * @return mixed - */ - public function prevWeek($format = 'n_in_month') - { - switch (strtolower($format)) { - case 'int': - case 'n_in_month': - return ($this->firstWeek) ? null : $this->thisWeek('n_in_month') - 1; - break; - case 'n_in_year': - return $this->cE->getWeekNInYear( - $this->cE->stampToYear($this->prevWeek), - $this->cE->stampToMonth($this->prevWeek), - $this->cE->stampToDay($this->prevWeek)); - break; - case 'array': - return $this->toArray($this->prevWeek); - break; - case 'object': - require_once CALENDAR_ROOT.'Factory.php'; - - return Calendar_Factory::createByTimestamp('Week', $this->prevWeek); - break; - case 'timestamp': - default: - return $this->prevWeek; - break; - } - } - - /** - * Gets the value of the current week, according to the requested format - * - * @param string $format ['timestamp' | 'n_in_month' | 'n_in_year' | 'array'] - * - * @return mixed - */ - public function thisWeek($format = 'n_in_month') - { - switch (strtolower($format)) { - case 'int': - case 'n_in_month': - if ($this->firstWeek) { - return 1; - } - if ($this->lastWeek) { - return $this->cE->getWeeksInMonth( - $this->thisYear(), - $this->thisMonth(), - $this->firstDay); - } - - return $this->cE->getWeekNInMonth( - $this->thisYear(), - $this->thisMonth(), - $this->thisDay(), - $this->firstDay); - break; - case 'n_in_year': - return $this->cE->getWeekNInYear( - $this->cE->stampToYear($this->thisWeek), - $this->cE->stampToMonth($this->thisWeek), - $this->cE->stampToDay($this->thisWeek)); - break; - case 'array': - return $this->toArray($this->thisWeek); - break; - case 'object': - require_once CALENDAR_ROOT.'Factory.php'; - - return Calendar_Factory::createByTimestamp('Week', $this->thisWeek); - break; - case 'timestamp': - default: - return $this->thisWeek; - break; - } - } - - /** - * Gets the value of the following week, according to the requested format - * - * @param string $format ['timestamp' | 'n_in_month' | 'n_in_year' | 'array'] - * - * @return mixed - */ - public function nextWeek($format = 'n_in_month') - { - switch (strtolower($format)) { - case 'int': - case 'n_in_month': - return ($this->lastWeek) ? null : $this->thisWeek('n_in_month') + 1; - break; - case 'n_in_year': - return $this->cE->getWeekNInYear( - $this->cE->stampToYear($this->nextWeek), - $this->cE->stampToMonth($this->nextWeek), - $this->cE->stampToDay($this->nextWeek)); - break; - case 'array': - return $this->toArray($this->nextWeek); - break; - case 'object': - require_once CALENDAR_ROOT.'Factory.php'; - - return Calendar_Factory::createByTimestamp('Week', $this->nextWeek); - break; - case 'timestamp': - default: - return $this->nextWeek; - break; - } - } - - /** - * Returns the instance of Calendar_Table_Helper. - * Called from Calendar_Validator::isValidWeek - * - * @return Calendar_Table_Helper - */ - public function &getHelper() - { - return $this->tableHelper; - } - - /** - * Makes sure theres a value for $this->day - * - * @return void - */ - public function findFirstDay() - { - if (!count($this->children) > 0) { - $this->build(); - foreach ($this->children as $Day) { - if (!$Day->isEmpty()) { - $this->day = $Day->thisDay(); - break; - } - } - } - } -} diff --git a/data/module/Calendar/Year.php b/data/module/Calendar/Year.php deleted file mode 100644 index 77a55f4188..0000000000 --- a/data/module/Calendar/Year.php +++ /dev/null @@ -1,118 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id: Year.php,v 1.4 2005/10/22 10:25:39 quipo Exp $ -// -/* - * @package Calendar - * @version $Id$ - */ - -/* - * Allows Calendar include path to be redefined - * @ignore - */ -if (!defined('CALENDAR_ROOT')) { - define('CALENDAR_ROOT', 'Calendar'.DIRECTORY_SEPARATOR); -} - -/** - * Load Calendar base class - */ -require_once CALENDAR_ROOT.'Calendar.php'; - -/** - * Represents a Year and builds Months
- * - * require_once 'Calendar'.DIRECTORY_SEPARATOR.'Year.php'; - * $Year = & new Calendar_Year(2003, 10, 21); // 21st Oct 2003 - * $Year->build(); // Build Calendar_Month objects - * while ($Month = & $Year->fetch()) { - * echo $Month->thisMonth().'
'; - * } - *
- */ -class Calendar_Year extends Calendar -{ - /** @var string */ - public $firstDay; - - /** - * Constructs Calendar_Year - * - * @param int year e.g. 2003 - */ - public function __construct($y) - { - parent::__construct($y); - } - - /** - * Builds the Months of the Year.
- * Note: by defining the constant CALENDAR_MONTH_STATE you can - * control what class of Calendar_Month is built e.g.; - * - * require_once 'Calendar/Calendar_Year.php'; - * define ('CALENDAR_MONTH_STATE',CALENDAR_USE_MONTH_WEEKDAYS); // Use Calendar_Month_Weekdays - * // define ('CALENDAR_MONTH_STATE',CALENDAR_USE_MONTH_WEEKS); // Use Calendar_Month_Weeks - * // define ('CALENDAR_MONTH_STATE',CALENDAR_USE_MONTH); // Use Calendar_Month - * - * It defaults to building Calendar_Month objects. - * - * @param array (optional) array of Calendar_Month objects representing selected dates - * @param int (optional) first day of week (e.g. 0 for Sunday, 2 for Tuesday etc.) - * - * @return bool - */ - public function build($sDates = [], $firstDay = null) - { - require_once CALENDAR_ROOT.'Factory.php'; - $this->firstDay = $this->defineFirstDayOfWeek($firstDay); - $monthsInYear = $this->cE->getMonthsInYear($this->thisYear()); - for ($i = 1; $i <= $monthsInYear; $i++) { - $this->children[$i] = Calendar_Factory::create('Month', $this->year, $i); - } - if (count($sDates) > 0) { - $this->setSelection($sDates); - } - - return true; - } - - /** - * Called from build() - * - * @param array - * - * @return void - */ - public function setSelection($sDates) - { - foreach ($sDates as $sDate) { - if ($this->year == $sDate->thisYear()) { - $key = $sDate->thisMonth(); - if (isset($this->children[$key])) { - $sDate->setSelected(); - $this->children[$key] = $sDate; - } - } - } - } -} diff --git a/phpstan.neon.dist b/phpstan.neon.dist index b3f856b60f..c5be551971 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -7,7 +7,6 @@ parameters: - data/module/SOAP/* - data/vendor/* - data/downloads/* - - data/module/Calendar/Engine/PearDate.php - data/class/helper/SC_Helper_Mobile.php - data/class/SC_MobileEmoji.php - data/class/SC_MobileImage.php @@ -15,38 +14,14 @@ parameters: analyseAndScan: - *.tpl.php ignoreErrors: + # - + # message: "#^Constant SMARTY_PLUGINS_DIR not found\\.$#" + # path: data/smarty_extends/* - message: "#^Call to an undefined static method PEAR\\:\\:raiseError\\(\\)\\.$#" paths: - data/module/HTTP/Request.php - - data/module/Calendar/Calendar.php - - data/module/Calendar/Decorator.php - - data/module/Calendar/Factory.php - - - message: "#^Call to static method dayOfWeek\\(\\) on an unknown class Date_Calc\\.#" - path: data/module/Calendar/Util/Textual.php - # - - # message: "#^Constant SMARTY_PLUGINS_DIR not found\\.$#" - # path: data/smarty_extends/* + - message: "#^Variable \\$SJIS_widths might not be defined\\.$#" path: data/class/helper/SC_Helper_FPDI.php - - - message: '#^Path in require_once\(\) ".*\.php" is not a file or it does not exist\.$#' - paths: - - data/module/Calendar/Calendar.php - - data/module/Calendar/Day.php - - data/module/Calendar/Decorator/Textual.php - - data/module/Calendar/Decorator/Uri.php - - data/module/Calendar/Decorator/Weekday.php - - data/module/Calendar/Decorator/Wrapper.php - - data/module/Calendar/Factory.php - - data/module/Calendar/Hour.php - - data/module/Calendar/Minute.php - - data/module/Calendar/Month.php - - data/module/Calendar/Month/Weekdays.php - - data/module/Calendar/Month/Weeks.php - - data/module/Calendar/Second.php - - data/module/Calendar/Util/Textual.php - - data/module/Calendar/Week.php - - data/module/Calendar/Year.php