-
Notifications
You must be signed in to change notification settings - Fork 0
/
Chronofix.class.php
119 lines (97 loc) · 2.76 KB
/
Chronofix.class.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<?php
namespace dc\chronofix;
interface iChronofix
{
function get_settings(); // Get current settings object.
function get_time(); // Get date/time value.
function is_valid($value); // Evaluates current date time string against current format. True of valid, false otherwise.
function sanitize(); // Validate current date/time and replace it with string in current format.
function set_settings(Config $value); // Set the settings object.
function set_time($value); // Set the date/time value.
}
class Chronofix implements iChronofix
{
protected
$time = NULL, // Time/date value to manipulate.
$settings = NULL; // Settings object.
public function __construct(Config $settings = NULL)
{
// Set settings object. Before doing so, make
// sure settings argument is populated. If not
// we need to establish a new settings object.
if(!$settings)
{
$settings = new Config();
}
$this->set_settings($settings);
}
// Accessors
public function get_settings()
{
return $this->settings;
}
public function get_time()
{
return $this->time;
}
// Mutators
public function set_settings(Config $value)
{
$this->settings = $value;
}
public function set_time($value)
{
$this->time = $value;
}
// Remove special chars and validate
// a date. Returns NULL on fail.
public function sanitize()
{
$result = NULL; // End result.
$timestamp = NULL; // Unix timestamp.
$time_str = NULL; // Time string.
$time = NULL; // Time value.
$time = $this->time;
// Was an argument passed?
if($time)
{
// Convert string date to
// Unix timestamp.
$timestamp = strtotime($time);
// Convert timestamp to specfic date format.
$time_str = date($this->settings->get_format(), $timestamp);
// Now validate the resulting date format. If
// it is a valid date, pass on as a result.
if($this->is_valid($time_str))
{
$obj_date = new \DateTime($time_str);
$result = $obj_date->format($this->settings->get_format());
}
}
// Set current time value to result.
$this->time = $result;
return $result;
}
// Return TRUE if time string argument is a valid
// time of preset format.
public function is_valid($value)
{
$result = FALSE;
// Create a date object from date
// string based on format.
$date = \DateTime::createFromFormat($this->settings->get_format(), $value);
// Date object valid?
if($date)
{
// Object date output matches
// date argument?
if($date->format($this->settings->get_format()) == $value)
{
$result = TRUE;
}
}
// Return final result.
return $result;
}
}
?>