summaryrefslogtreecommitdiff
path: root/public/includes/functions.php
blob: 5e8399422c1b5506b016ed1ace164746d701de20 (plain)
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;
  }