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
|
<?php
## Help Constants and Functions ------------------------------------------------
////////////////////////////////////////////////////////////////////////////////
// Cache fields options (json format) ////////////////////////////////////////
// ---------------------------------------------------------------------------
$formJSON = file_get_contents('config/kallassa.json');
define("FORMJSON", $formJSON);
// Cache CCODE attributes (json format) //////////////////////////////////////
// ---------------------------------------------------------------------------
$codeJSON = file_get_contents('config/ccode.json');
define("CODEJSON", $codeJSON);
// Parse anythig from a field ////////////////////////////////////////////////
// ARGS:
// $fkey = keyname (as in json fields oprions)
// $inp = input value (string)
// RETURN: array(
// 'label' = field label,
// 'multi' = (true|false) is multiple choice (select|radio|check) or not,
// 'value' = human readable value (or array of values if multi)
// ) -------------------------------------------------------------------------
function parse_any($fkey, $inp ="") {
$formARRAY = json_decode(FORMJSON);
foreach ($formARRAY as $key => $section) {
foreach ($section->childs as $kk => $field) {
// find the field
if ($field->nam == $fkey) {
$values = array(); // human readble values if select (comma separated)
if ($field->typ == 'select') {
$multi = true;
if ($inp !='') {
$codes = explode(",", $inp); // split coded values
foreach ($field->opt as $kkk => $v) {
if (in_array($v->id, $codes)) { // check if option is in array
$values[] = ($field->nam == 'ccode') ? ($v->id.": ".$v->tag) : $v->tag;
}
}
}
}
else $multi = false;
// return everything in an array
return array(
'label' => $field->lab,
'multi' => $multi,
'value' => ($multi ? $values : $inp)
);
}
}
}
// if not escaped already, then name return same
return array('label' => $fkey, 'multi' => false, 'value' => $inp );
}
// Parse anythig from ccode
function parse_ccode($ckey) {
$ccARRAY = json_decode(CODEJSON);
foreach ($ccARRAY as $key => $val) {
// find the field
if ($val->id == $ckey) {
// return everything in an array
return $val;
}
}
}
// Get totals of alla categories /////////////////////////////////////////////
// RETURN array of items (value) per category (array key)
// ---------------------------------------------------------------------------
function get_totals() {
$result = array();
$sum = 0;
$dbc = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_DBMS);
if ($dbc->connect_errno) {
echo "Database connection failed; Please try in a few minutes. ";
if (TESTING) echo $dbc->connect_error;
$dbc->close(); die();
}
$dbc->set_charset("utf8");
// prepare statemet
$stm = $dbc->prepare("SELECT ccode, count(id) total FROM `items` GROUP BY ccode");
$stm->execute(); // execute query
$stm->store_result(); // store result
$stm->bind_result($c, $tot);
while ($stm->fetch()) {
// using md5() you can have any unicode string as key ;)
// credit: https://stackoverflow.com/questions/10696067/characters-allowed-in-php-array-keys -> Rob's answer
// but newer versions of php (v7+) seem to handle unicide keys nicely
$result[$c] = $tot;
$sum += $tot;
}
$result['all'] = $sum;
return $result;
}
// Preview Local Datetime ////////////////////////////////////////////////////
// (in Greek format and names )
// ---------------------------------------------------------------------------
function local_dt($t) {
$day = array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
$dayL = array("Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ");
$mon = array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
$monL = array("Ιαν", "Φεβ", "Μαρ", "Απρ", "Μαϊ", "Ιουν", "Ιουλ", "Αυγ", "Σεπ", "Οκτ", "Νοε", "Δεκ");
$tm = array("am", "pm");
$tmL = array("πμ", "μμ");
$r = date("D. j M. Y, h:i:sa", $t);
$r = str_replace($day, $dayL, $r);
$r = str_replace($mon, $monL, $r);
$r = str_replace($tm, $tmL, $r);
return $r;
}
// Part of string
// UTF-8 SAFE
function str_part($str, $len) {
return (mb_strlen($str) > $len) ? mb_substr($str, 0, $len-1) ."…" : $str;
}
|