]> git.mxchange.org Git - friendica.git/blob - include/dbm.php
34cbcad3a237f18e0eb69affd7a77f47a97eb553
[friendica.git] / include / dbm.php
1 <?php
2 /**
3  * @brief This class contain functions for the database management
4  *
5  */
6 class dbm {
7         /**
8          * @brief Return a list of database processes
9          *
10          * @return array
11          *      'list' => List of processes, separated in their different states
12          *      'amount' => Number of concurrent database processes
13          */
14         public static function processlist() {
15                 $r = q("SHOW PROCESSLIST");
16                 $s = array();
17
18                 $processes = 0;
19                 $states = array();
20                 foreach ($r AS $process) {
21                         $state = trim($process["State"]);
22
23                         // Filter out all non blocking processes
24                         if (!in_array($state, array("", "init", "statistics", "updating"))) {
25                                 ++$states[$state];
26                                 ++$processes;
27                         }
28                 }
29
30                 $statelist = "";
31                 foreach ($states AS $state => $usage) {
32                         if ($statelist != "")
33                                 $statelist .= ", ";
34                         $statelist .= $state.": ".$usage;
35                 }
36                 return(array("list" => $statelist, "amount" => $processes));
37         }
38
39         /**
40          * Checks if $array is a filled array with at least one entry.
41          *
42          * @param       $array  mixed   A filled array with at least one entry
43          * @return      Whether $array is a filled array
44          */
45         public static function is_result($array) {
46                 // It could be a return value from an update statement
47                 if (is_bool($array)) {
48                         return $array;
49                 }
50
51                 if (is_object($array)) {
52                         return true;
53                 }
54
55                 return (is_array($array) && count($array) > 0);
56         }
57
58         /**
59          * @brief Callback function for "esc_array"
60          *
61          * @param mixed $value Array value
62          * @param string $key Array key
63          * @param boolean $add_quotation add quotation marks for string values
64          */
65         private static function esc_array_callback(&$value, $key, $add_quotation) {
66
67                 if (!$add_quotation) {
68                         if (is_bool($value)) {
69                                 $value = ($value ? '1' : '0');
70                         } else {
71                                 $value = dbesc($value);
72                         }
73                         return;
74                 }
75
76                 if (is_bool($value)) {
77                         $value = ($value ? 'true' : 'false');
78                 } elseif (is_float($value) OR is_integer($value)) {
79                         $value = (string)$value;
80                 } else {
81                          $value = "'".dbesc($value)."'";
82                 }
83         }
84
85         /**
86          * @brief Escapes a whole array
87          *
88          * @param mixed $arr Array with values to be escaped
89          * @param boolean $add_quotation add quotation marks for string values
90          */
91         public static function esc_array(&$arr, $add_quotation = false) {
92                 array_walk($arr, 'self::esc_array_callback', $add_quotation);
93         }
94
95         /**
96          * Checks Converts any date string into a SQL compatible date string
97          *
98          * @param string $date a date string in any format
99          * @return string SQL style date string
100          */
101         public static function date($date = 'now') {
102                 $timestamp = strtotime($date);
103
104                 // Don't allow lower date strings as '0001-01-01 00:00:00'
105                 if ($timestamp < -62135596800) {
106                         $timestamp = -62135596800;
107                 }
108
109                 return date('Y-m-d H:i:s', $timestamp);
110         }
111 }
112 ?>