DiaryEvent   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 10
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
eloc 5
dl 0
loc 10
rs 10
c 1
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A DiaryEvent() 0 2 1
A getEntry() 0 2 1
A setEntry() 0 2 1
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
Bug introduced by
The type Calendar_Decorator 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. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
15
    var $entry;
16
    function DiaryEvent($calendar) {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
17
        Calendar_Decorator::Calendar_Decorator($calendar);
18
    }
19
    function setEntry($entry) {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
20
        $this->entry = $entry;
21
    }
22
    function getEntry() {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
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
Bug introduced by
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. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

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
Bug introduced by
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. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

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>&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>