Calendar
[ class tree: Calendar ] [ index: Calendar ] [ all elements ]

Source for file 11.php

Documentation is available at 11.php

  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 {
  15.     var $entry;
  16.     function DiaryEvent($calendar{
  17.         Calendar_Decorator::Calendar_Decorator($calendar);
  18.     }
  19.     function setEntry($entry{
  20.         $this->entry = $entry;
  21.     }
  22.     function getEntry({
  23.         return $this->entry;
  24.     }
  25. }
  26.  
  27. // Create a day to view the hours for
  28. $Day new Calendar_Day(2003,10,24);
  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
  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>&nbsp;</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>

Documentation generated on Mon, 11 Mar 2019 15:37:47 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.