-
Notifications
You must be signed in to change notification settings - Fork 0
/
budgetsys.api.inc
164 lines (153 loc) · 4.97 KB
/
budgetsys.api.inc
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
<?php
/**
* @file
* Holds the classes for the budget system.
*/
/**
* The main Budget System API class. Contains
* properties for all the other API classes.
*/
class BudgetSystemAPI {
public $settingsAPI;
public $formattingAPI;
public function __construct()
{
$this->settingsAPI = new BudgetSystemSettingsAPI();
$this->formattingAPI = new BudgetSystemFormattingAPI();
}
}
/**
* The class for settings for The Budget System API
*/
class BudgetSystemSettingsAPI {
/**
* Creates an array of budget_categories from the variable 'budgetsys_allowed_fiscal_years'.
* Can return either an array containing the years as values or and array keyed off of the
* fiscal years that contains the years as values.
* In list mode both the keys and values are run through the t() function.
*
* @param $list_mode
* If true, returns an array keyed by the fiscal year.
*
* @return $fiscal_years
* Returns an array of years or an array of years keyed by the years
* if list_mode is true.
*/
public function loadYears($list_mode = FALSE) {
$fiscal_years_strings = variable_get('budgetsys_allowed_fiscal_years');
$fiscal_years = explode(', ', $fiscal_years_strings);
if($list_mode == TRUE) {
$list = array();
foreach($fiscal_years as $fiscal_year) {
$list[t('@fiscal_year', array('@fiscal_year' => $fiscal_year))] = t('@fiscal_year', array('@fiscal_year' => $fiscal_year));
}
return $list;
}
return $fiscal_years;
}
/**
* Generates an array of fiscal years.
*
* @param $current_year
* The current year, formatted as either a 2 year 9 digit definition or a 1 year 4 digit definition
*
* @param $num_years
* The number of years to return
*
* @return
* An array consisting of the number of years specified starting from, but not including,
* $current_year
*/
public function generatePriorYears($current_year = NULL, $num_years = NULL, $reversed = NULL) {
if(!$current_year) {
$current_year = variable_get('budgetsys_current_fiscal_year');
}
if(!$num_years) {
$num_years = variable_get('budgetsys_line_num_prior_years', '3');
}
$multiyear_mode = variable_get('budgetsys_multiyear_fiscal_year');
if($multiyear_mode) {
if(strlen($current_year) != 9 || strpos($current_year, '-') != 4) { return drupal_set_message(t('The multiyear value is in an incorrect format. Ensure it is 9 digits formated as follows: 20XX-20XX<br>The current value for $current_year is: @current_year', array('@current_year' => $current_year)), 'error'); }
$first_yr = substr($current_year, 0, 4);
$second_yr = substr($current_year, 5, 4);
$years = array();
for($y=0;$y<=$num_years;$y++) {
$temp_first_yr = $first_yr - $y;
$temp_second_yr = $second_yr - $y;
$years[$y] = $temp_first_yr . '-' . $temp_second_yr;
}
if($reversed) {
return array_reverse($years);
}
return $years;
}
return drupal_set_message(t('You currently do not have MultiYear Fiscal Year mode enabled. The single year functionality has not been built yet.'), 'error');
}
public function getYears() {
$num_prior_years = variable_get('budgetsys_line_num_prior_years', '');
$current_year = variable_get('budgetsys_current_fiscal_year_taxonomy', '');
$years = array();
$years['current year'] = taxonomy_term_load($current_year);
$years['prior years'] = array();
for($i=$num_prior_years;$i>0;$i--) {
$years['prior years'][] = variable_get('budgetsys_prior_year_' . $i);
}
return($years);
}
public function fiscalYearTaxonomyTree() {
$vocabulary = variable_get('budgetsys_fiscal_years_vid', '');
$vid = $vocabulary->vid;
return taxonomy_get_tree($vid, 0, NULL, TRUE);
}
public function currentFiscalYear() {
$terms = budgetsys_fiscal_year_taxonomy_tree();
$tids = array_map('budgetsys_taxonomy_get_tid', $terms);
$names = array_map('budgetsys_taxonomy_get_name', $terms);
$options = array_combine($tids, $names);
return $options;
}
public function taxonomyGetTID($term) {
return $term->tid;
}
public function taxonomyGetName($term) {
return $term->name;
}
}
class BudgetSystemFormattingAPI {
/**
* A simple function to properly format currency.
*
* @param $value
* The value to be formatted as currency.
*
* @return
* The formatted currency.
*/
public function formatCurrency($value) {
return variable_get('budgetsys_budget_value_currency_symbol', '$') . number_format($value, 2, '.', ',');
}
/**
* function to create a link render item. Returns the render array.
*
* @param $text
* The text of the link
*
* @param $path
* The path the link leads to
*
* @return
* see above
*/
public function createLink($text, $path) {
$link = array(
'#theme' => 'link',
'#text' => $text,
'#path' => $path,
'#options' => array(
'attributes' => array(),
'html' => FALSE,
),
);
return $link;
}
}