summaryrefslogtreecommitdiff
path: root/public/includes/functions.php
diff options
context:
space:
mode:
authorGeo Halkiadakis <gchalkiadakis@sklavenitis.co.gr>2026-07-12 15:51:52 +0300
committerGeo Halkiadakis <gchalkiadakis@sklavenitis.co.gr>2026-07-12 15:51:52 +0300
commit02608271bb2a9f3a65ed536984d306ee14b48e34 (patch)
tree3f23ec48a694ec014e845c4f70d9b5f1c065403c /public/includes/functions.php
downloadkalassa-master.tar.gz
kalassa-master.tar.bz2
kalassa-master.zip
initialize repository; add docker config; migrate configuration to new specsHEADmaster
Diffstat (limited to 'public/includes/functions.php')
-rw-r--r--public/includes/functions.php135
1 files changed, 135 insertions, 0 deletions
diff --git a/public/includes/functions.php b/public/includes/functions.php
new file mode 100644
index 0000000..5e83994
--- /dev/null
+++ b/public/includes/functions.php
@@ -0,0 +1,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;
+ }