FriendsOfPear /
Calendar
| 1 | <?php |
||
| 2 | /** |
||
| 3 | * Description: demonstrates a decorator used to "attach a payload" to a selection |
||
| 4 | * to make it available when iterating over calendar children |
||
| 5 | */ |
||
| 6 | if ( !@include 'Calendar/Calendar.php' ) { |
||
| 7 | define('CALENDAR_ROOT','../../'); |
||
| 8 | } |
||
| 9 | require_once CALENDAR_ROOT.'Day.php'; |
||
| 10 | require_once CALENDAR_ROOT.'Hour.php'; |
||
| 11 | require_once CALENDAR_ROOT.'Decorator.php'; |
||
| 12 | |||
| 13 | // Decorator to "attach" functionality to selected hours |
||
| 14 | class DiaryEvent extends Calendar_Decorator { |
||
|
0 ignored issues
–
show
|
|||
| 15 | var $entry; |
||
| 16 | function DiaryEvent($calendar) { |
||
|
0 ignored issues
–
show
|
|||
| 17 | Calendar_Decorator::Calendar_Decorator($calendar); |
||
| 18 | } |
||
| 19 | function setEntry($entry) { |
||
|
0 ignored issues
–
show
|
|||
| 20 | $this->entry = $entry; |
||
| 21 | } |
||
| 22 | function getEntry() { |
||
|
0 ignored issues
–
show
|
|||
| 23 | return $this->entry; |
||
| 24 | } |
||
| 25 | } |
||
| 26 | |||
| 27 | // Create a day to view the hours for |
||
| 28 | $Day = & new Calendar_Day(2003,10,24); |
||
|
0 ignored issues
–
show
The type
Calendar_Day was not found. Maybe you did not declare it correctly or list all dependencies?
The issue could also be caused by a filter entry in the build configuration.
If the path has been excluded in your configuration, e.g. filter:
dependency_paths: ["lib/*"]
For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths Loading history...
|
|||
| 29 | |||
| 30 | // A sample query to get the data for today (NOT ACTUALLY USED HERE) |
||
| 31 | $sql = " |
||
| 32 | SELECT |
||
| 33 | * |
||
| 34 | FROM |
||
| 35 | diary |
||
| 36 | WHERE |
||
| 37 | eventtime >= '".$Day->thisDay(TRUE)."' |
||
| 38 | AND |
||
| 39 | eventtime < '".$Day->nextDay(TRUE)."';"; |
||
| 40 | |||
| 41 | // An array simulating data from a database |
||
| 42 | $result = array ( |
||
| 43 | array('eventtime'=>mktime(9,0,0,10,24,2003),'entry'=>'Meeting with sales team'), |
||
| 44 | array('eventtime'=>mktime(11,0,0,10,24,2003),'entry'=>'Conference call with Widget Inc.'), |
||
| 45 | array('eventtime'=>mktime(15,0,0,10,24,2003),'entry'=>'Presentation to board of directors') |
||
| 46 | ); |
||
| 47 | |||
| 48 | // An array to place selected hours in |
||
| 49 | $selection = array(); |
||
| 50 | |||
| 51 | // Loop through the "database result" |
||
| 52 | foreach ( $result as $row ) { |
||
| 53 | $Hour = new Calendar_Hour(2000,1,1,1); // Create Hour with dummy values |
||
|
0 ignored issues
–
show
The type
Calendar_Hour was not found. Maybe you did not declare it correctly or list all dependencies?
The issue could also be caused by a filter entry in the build configuration.
If the path has been excluded in your configuration, e.g. filter:
dependency_paths: ["lib/*"]
For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths Loading history...
|
|||
| 54 | $Hour->setTimeStamp($row['eventtime']); // Set the real time with setTimeStamp |
||
| 55 | |||
| 56 | // Create the decorator, passing it the Hour |
||
| 57 | $DiaryEvent = new DiaryEvent($Hour); |
||
| 58 | |||
| 59 | // Attach the payload |
||
| 60 | $DiaryEvent->setEntry($row['entry']); |
||
| 61 | |||
| 62 | // Add the decorator to the selection |
||
| 63 | $selection[] = $DiaryEvent; |
||
| 64 | } |
||
| 65 | |||
| 66 | // Build the hours in that day, passing the selection |
||
| 67 | $Day->build($selection); |
||
| 68 | ?> |
||
| 69 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
||
| 70 | <html> |
||
| 71 | <head> |
||
| 72 | <title> Passing a Selection Payload with a Decorator </title> |
||
| 73 | </head> |
||
| 74 | <body> |
||
| 75 | <h1>Passing a Selection "Payload" using a Decorator</h1> |
||
| 76 | <table> |
||
| 77 | <caption><b>Your Schedule for <?php echo ( date('D nS F Y',$Day->thisDay(TRUE)) ); ?></b></caption> |
||
| 78 | <tr> |
||
| 79 | <th width="5%">Time</th> |
||
| 80 | <th>Entry</th> |
||
| 81 | </tr> |
||
| 82 | <?php |
||
| 83 | while ( $Hour = & $Day->fetch() ) { |
||
| 84 | |||
| 85 | $hour = $Hour->thisHour(); |
||
| 86 | $minute = $Hour->thisMinute(); |
||
| 87 | |||
| 88 | // Office hours only... |
||
| 89 | if ( $hour >= 8 && $hour <= 18 ) { |
||
| 90 | echo ( "<tr>\n" ); |
||
| 91 | echo ( "<td>$hour:$minute</td>\n" ); |
||
| 92 | |||
| 93 | // If the hour is selected, call the decorator method... |
||
| 94 | if ( $Hour->isSelected() ) { |
||
| 95 | echo ( "<td bgcolor=\"silver\">".$Hour->getEntry()."</td>\n" ); |
||
| 96 | } else { |
||
| 97 | echo ( "<td> </td>\n" ); |
||
| 98 | } |
||
| 99 | echo ( "</tr>\n" ); |
||
| 100 | } |
||
| 101 | } |
||
| 102 | ?> |
||
| 103 | </table> |
||
| 104 | <p>The query to fetch this data, with help from PEAR::Calendar, might be;</p> |
||
| 105 | <pre> |
||
| 106 | <?php echo ( $sql ); ?> |
||
| 107 | </pre> |
||
| 108 | </body> |
||
| 109 | </html> |
The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g.
excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths