forked from StartupAPI/users
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPaymentSchedule.php
More file actions
60 lines (49 loc) · 1.5 KB
/
PaymentSchedule.php
File metadata and controls
60 lines (49 loc) · 1.5 KB
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
<?php
/**
* @package StartupAPI
* @subpackage Subscriptions
*/
/**
* Every account is associated with existing Plan using Plan ID and PaymentSchedule using PaymentScheduleID.
*/
class PaymentSchedule {
private $id;
private $name;
private $description;
private $charge_amount;
private $charge_period;
public function __construct($id,$a) {
# Known parameters and their default values listed here:
$parameters = array(
'id' => NULL,
'name' => NULL,
'description' => '',
'charge_amount' => NULL,
'charge_period' => NULL,
'is_default' => 0,
);
if($id === NULL)
throw new Exception("id required");
if(!is_array($a))
throw new Exception("configuration array required");
$a['id'] = $id;
# Mandatory parameters are those whose default value is NULL
$mandatory = array();
foreach($parameters as $p => $v) {
if($v === NULL) $mandatory[] = $p;
}
$missing = array_diff($mandatory,array_keys($a));
if(count($missing))
throw new Exception("Following mandatory parameters were not found in init array: ".implode(',',$missing));
# Set attributes according to init array
foreach($parameters as $p => $v)
if(isset($a[$p])) $this->$p = $a[$p];
}
# Making private variables visible, but read-only
public function __get($v) {
return (!in_array($v,array('instance')) && isset($this->$v)) ? $this->$v : false;
}
public function setAsDefault() {
$this->is_default = 1;
}
}