- Timestamp:
- 2013/08/28 13:26:44 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_13-dev/data/module/Calendar/Engine/UnixTS.php
r23125 r23141 1 1 <?php 2 2 /* vim: set expandtab tabstop=4 shiftwidth=4: */ 3 3 // 4 // +----------------------------------------------------------------------+ 5 // | PHP Version 4 | 6 // +----------------------------------------------------------------------+ 7 // | Copyright (c) 1997-2002 The PHP Group | 8 // +----------------------------------------------------------------------+ 9 // | This source file is subject to version 2.02 of the PHP license, | 10 // | that is bundled with this package in the file LICENSE, and is | 11 // | available at through the world-wide-web at | 12 // | http://www.php.net/license/3_0.txt. | 13 // | If you did not receive a copy of the PHP license and are unable to | 14 // | obtain it through the world-wide-web, please send a note to | 15 // | license@php.net so we can mail you a copy immediately. | 16 // +----------------------------------------------------------------------+ 17 // | Authors: Harry Fuecks <hfuecks@phppatterns.com> | 18 // +----------------------------------------------------------------------+ 19 // 20 // $Id: UnixTS.php,v 1.9 2004/08/20 20:00:55 quipo Exp $ 21 // 4 22 /** 5 * Contains the Calendar_Engine_UnixTS class 6 * 7 * PHP versions 4 and 5 8 * 9 * LICENSE: Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions are met: 11 * 1. Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 3. The name of the author may not be used to endorse or promote products 17 * derived from this software without specific prior written permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED 20 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 22 * IN NO EVENT SHALL THE FREEBSD PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY 23 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 26 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 28 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 * 30 * @category Date and Time 31 * @package Calendar 32 * @author Harry Fuecks <hfuecks@phppatterns.com> 33 * @copyright 2003-2007 Harry Fuecks 34 * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause) 35 * @version CVS: $Id: UnixTS.php 269074 2008-11-15 21:21:42Z quipo $ 36 * @link http://pear.php.net/package/Calendar 23 * @package Calendar 24 * @version $Id: UnixTS.php,v 1.9 2004/08/20 20:00:55 quipo Exp $ 37 25 */ 38 39 26 /** 40 27 * Performs calendar calculations based on the PHP date() function and 41 28 * Unix timestamps (using PHP's mktime() function). 42 * 43 * @category Date and Time 44 * @package Calendar 45 * @author Harry Fuecks <hfuecks@phppatterns.com> 46 * @copyright 2003-2007 Harry Fuecks 47 * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause) 48 * @link http://pear.php.net/package/Calendar 49 * @access protected 29 * @package Calendar 30 * @access protected 50 31 */ 51 32 class Calendar_Engine_UnixTS /* implements Calendar_Engine_Interface */ … … 68 49 * Uses a static variable to prevent date() being used twice 69 50 * for a date which is already known 70 * 71 * @param int $stamp Unix timestamp 72 * 51 * @param int Unix timestamp 73 52 * @return array 74 53 * @access protected … … 78 57 static $stamps = array(); 79 58 if ( !isset($stamps[$stamp]) ) { 80 $date = @date('Y n j H i s t W w', 59 $date = @date('Y n j H i s t W w',$stamp); 81 60 $stamps[$stamp] = sscanf($date, "%d %d %d %d %d %d %d %d %d"); 82 61 } … … 86 65 /** 87 66 * Returns a numeric year given a timestamp 88 * 89 * @param int $stamp Unix timestamp 90 * 67 * @param int Unix timestamp 91 68 * @return int year (e.g. 2003) 92 69 * @access protected … … 100 77 /** 101 78 * Returns a numeric month given a timestamp 102 * 103 * @param int $stamp Unix timestamp 104 * 79 * @param int Unix timestamp 105 80 * @return int month (e.g. 9) 106 81 * @access protected … … 114 89 /** 115 90 * Returns a numeric day given a timestamp 116 * 117 * @param int $stamp Unix timestamp 118 * 91 * @param int Unix timestamp 119 92 * @return int day (e.g. 15) 120 93 * @access protected … … 128 101 /** 129 102 * Returns a numeric hour given a timestamp 130 * 131 * @param int $stamp Unix timestamp 132 * 103 * @param int Unix timestamp 133 104 * @return int hour (e.g. 13) 134 105 * @access protected … … 142 113 /** 143 114 * Returns a numeric minute given a timestamp 144 * 145 * @param int $stamp Unix timestamp 146 * 115 * @param int Unix timestamp 147 116 * @return int minute (e.g. 34) 148 117 * @access protected … … 156 125 /** 157 126 * Returns a numeric second given a timestamp 158 * 159 * @param int $stamp Unix timestamp 160 * 127 * @param int Unix timestamp 161 128 * @return int second (e.g. 51) 162 129 * @access protected … … 170 137 /** 171 138 * Returns a timestamp 172 * 173 * @param int $y year (2003) 174 * @param int $m month (9) 175 * @param int $d day (13) 176 * @param int $h hour (13) 177 * @param int $i minute (34) 178 * @param int $s second (53) 179 * 139 * @param int year (2003) 140 * @param int month (9) 141 * @param int day (13) 142 * @param int hour (13) 143 * @param int minute (34) 144 * @param int second (53) 180 145 * @return int Unix timestamp 181 146 * @access protected … … 184 149 { 185 150 static $dates = array(); 186 if ( !isset($dates[$y][$m][$d][$h][$i][$s])) {151 if ( !isset($dates[$y][$m][$d][$h][$i][$s]) ) { 187 152 $dates[$y][$m][$d][$h][$i][$s] = @mktime($h, $i, $s, $m, $d, $y); 188 153 } … … 192 157 /** 193 158 * The upper limit on years that the Calendar Engine can work with 194 *195 159 * @return int (2037) 196 160 * @access protected … … 203 167 /** 204 168 * The lower limit on years that the Calendar Engine can work with 205 *206 169 * @return int (1970 if it's Windows and 1902 for all other OSs) 207 170 * @access protected … … 214 177 /** 215 178 * Returns the number of months in a year 216 *217 * @param int $y year218 *219 179 * @return int (12) 220 180 * @access protected 221 181 */ 222 182 function getMonthsInYear($y=null) … … 227 187 /** 228 188 * Returns the number of days in a month, given year and month 229 * 230 * @param int $y year (2003) 231 * @param int $m month (9) 232 * 189 * @param int year (2003) 190 * @param int month (9) 233 191 * @return int days in month 234 192 * @access protected … … 236 194 function getDaysInMonth($y, $m) 237 195 { 238 $stamp = Calendar_Engine_UnixTS::dateToStamp($y, $m,1);239 $date 196 $stamp = Calendar_Engine_UnixTS::dateToStamp($y,$m,1); 197 $date = Calendar_Engine_UnixTS::stampCollection($stamp); 240 198 return $date[6]; 241 199 } … … 244 202 * Returns numeric representation of the day of the week in a month, 245 203 * given year and month 246 * 247 * @param int $y year (2003) 248 * @param int $m month (9) 249 * 204 * @param int year (2003) 205 * @param int month (9) 250 206 * @return int from 0 to 6 251 207 * @access protected … … 253 209 function getFirstDayInMonth($y, $m) 254 210 { 255 $stamp = Calendar_Engine_UnixTS::dateToStamp($y, $m,1);256 $date 211 $stamp = Calendar_Engine_UnixTS::dateToStamp($y,$m,1); 212 $date = Calendar_Engine_UnixTS::stampCollection($stamp); 257 213 return $date[8]; 258 214 } … … 260 216 /** 261 217 * Returns the number of days in a week 262 * 263 * @param int $y year (2003) 264 * @param int $m month (9) 265 * @param int $d day (4) 266 * 218 * @param int year (2003) 219 * @param int month (9) 220 * @param int day (4) 267 221 * @return int (7) 268 222 * @access protected 269 223 */ 270 function getDaysInWeek($y= null, $m=null, $d=null)224 function getDaysInWeek($y=NULL, $m=NULL, $d=NULL) 271 225 { 272 226 return 7; … … 275 229 /** 276 230 * Returns the number of the week in the year (ISO-8601), given a date 277 * 278 * @param int $y year (2003) 279 * @param int $m month (9) 280 * @param int $d day (4) 281 * 231 * @param int year (2003) 232 * @param int month (9) 233 * @param int day (4) 282 234 * @return int week number 283 235 * @access protected … … 285 237 function getWeekNInYear($y, $m, $d) 286 238 { 287 $stamp = Calendar_Engine_UnixTS::dateToStamp($y, $m,$d);288 $date 239 $stamp = Calendar_Engine_UnixTS::dateToStamp($y,$m,$d); 240 $date = Calendar_Engine_UnixTS::stampCollection($stamp); 289 241 return $date[7]; 290 242 } … … 292 244 /** 293 245 * Returns the number of the week in the month, given a date 294 * 295 * @param int $y year (2003) 296 * @param int $m month (9) 297 * @param int $d day (4) 298 * @param int $firstDay first day of the week (default: monday) 299 * 246 * @param int year (2003) 247 * @param int month (9) 248 * @param int day (4) 249 * @param int first day of the week (default: monday) 300 250 * @return int week number 301 251 * @access protected … … 303 253 function getWeekNInMonth($y, $m, $d, $firstDay=1) 304 254 { 305 $weekEnd = ( 0 == $firstDay) ? $this->getDaysInWeek()-1 : $firstDay-1;255 $weekEnd = ($firstDay == 0) ? $this->getDaysInWeek()-1 : $firstDay-1; 306 256 $end_of_week = 1; 307 257 while (@date('w', @mktime(0, 0, 0, $m, $end_of_week, $y)) != $weekEnd) { … … 318 268 /** 319 269 * Returns the number of weeks in the month 320 * 321 * @param int $y year (2003) 322 * @param int $m month (9) 323 * @param int $firstDay first day of the week (default: monday) 324 * 270 * @param int year (2003) 271 * @param int month (9) 272 * @param int first day of the week (default: monday) 325 273 * @return int weeks number 326 274 * @access protected 327 275 */ 328 function getWeeksInMonth($y, $m, $firstDay =1)276 function getWeeksInMonth($y, $m, $firstDay=1) 329 277 { 330 278 $FDOM = $this->getFirstDayInMonth($y, $m); … … 346 294 /** 347 295 * Returns the number of the day of the week (0=sunday, 1=monday...) 348 * 349 * @param int $y year (2003) 350 * @param int $m month (9) 351 * @param int $d day (4) 352 * 296 * @param int year (2003) 297 * @param int month (9) 298 * @param int day (4) 353 299 * @return int weekday number 354 300 * @access protected … … 356 302 function getDayOfWeek($y, $m, $d) 357 303 { 358 $stamp = Calendar_Engine_UnixTS::dateToStamp($y, $m,$d);304 $stamp = Calendar_Engine_UnixTS::dateToStamp($y,$m,$d); 359 305 $date = Calendar_Engine_UnixTS::stampCollection($stamp); 360 306 return $date[8]; … … 363 309 /** 364 310 * Returns a list of integer days of the week beginning 0 365 * 366 * @param int $y year (2003) 367 * @param int $m month (9) 368 * @param int $d day (4) 369 * 311 * @param int year (2003) 312 * @param int month (9) 313 * @param int day (4) 370 314 * @return array (0,1,2,3,4,5,6) 1 = Monday 371 315 * @access protected 372 316 */ 373 function getWeekDays($y= null, $m=null, $d=null)317 function getWeekDays($y=NULL, $m=NULL, $d=NULL) 374 318 { 375 319 return array(0, 1, 2, 3, 4, 5, 6); … … 378 322 /** 379 323 * Returns the default first day of the week 380 * 381 * @param int $y year (2003) 382 * @param int $m month (9) 383 * @param int $d day (4) 384 * 324 * @param int year (2003) 325 * @param int month (9) 326 * @param int day (4) 385 327 * @return int (default 1 = Monday) 386 328 * @access protected 387 329 */ 388 function getFirstDayOfWeek($y= null, $m=null, $d=null)330 function getFirstDayOfWeek($y=NULL, $m=NULL, $d=NULL) 389 331 { 390 332 return 1; … … 393 335 /** 394 336 * Returns the number of hours in a day 395 *396 * @param int $y year (2003)397 * @param int $m month (9)398 * @param int $d day (4)399 *400 337 * @return int (24) 401 338 * @access protected 402 339 */ 403 function getHoursInDay($y=null, $m=null,$d=null)340 function getHoursInDay($y=null,$m=null,$d=null) 404 341 { 405 342 return 24; … … 408 345 /** 409 346 * Returns the number of minutes in an hour 410 *411 * @param int $y year (2003)412 * @param int $m month (9)413 * @param int $d day (4)414 * @param int $h hour415 *416 347 * @return int (60) 417 348 * @access protected 418 349 */ 419 function getMinutesInHour($y=null, $m=null, $d=null,$h=null)350 function getMinutesInHour($y=null,$m=null,$d=null,$h=null) 420 351 { 421 352 return 60; … … 424 355 /** 425 356 * Returns the number of seconds in a minutes 426 *427 * @param int $y year (2003)428 * @param int $m month (9)429 * @param int $d day (4)430 * @param int $h hour431 * @param int $i minute432 *433 357 * @return int (60) 434 358 * @access protected 435 359 */ 436 function getSecondsInMinute($y=null, $m=null, $d=null, $h=null,$i=null)360 function getSecondsInMinute($y=null,$m=null,$d=null,$h=null,$i=null) 437 361 { 438 362 return 60; 439 }440 441 /**442 * Checks if the given day is the current day443 *444 * @param mixed $stamp Any timestamp format recognized by Pear::Date445 *446 * @return boolean447 * @access protected448 */449 function isToday($stamp)450 {451 static $today = null;452 if (is_null($today)) {453 $today_date = @date('Y n j');454 $today = sscanf($today_date, '%d %d %d');455 }456 $date = Calendar_Engine_UnixTS::stampCollection($stamp);457 return ( $date[2] == $today[2]458 && $date[1] == $today[1]459 && $date[0] == $today[0]460 );461 363 } 462 364 }
Note: See TracChangeset
for help on using the changeset viewer.