use Friendica\Core\System;
use Friendica\Util\DateTimeFormat;
use mysqli;
+use mysqli_result;
+use mysqli_stmt;
use PDO;
use PDOException;
use PDOStatement;
+require_once 'include/dba.php';
+
/**
* @class MySQL database class
*
return $ret;
}
+
+ /**
+ * @brief Return a list of database processes
+ *
+ * @return array
+ * 'list' => List of processes, separated in their different states
+ * 'amount' => Number of concurrent database processes
+ */
+ public static function processlist()
+ {
+ $ret = self::p("SHOW PROCESSLIST");
+ $data = self::toArray($ret);
+
+ $s = [];
+
+ $processes = 0;
+ $states = [];
+ foreach ($data as $process) {
+ $state = trim($process["State"]);
+
+ // Filter out all non blocking processes
+ if (!in_array($state, ["", "init", "statistics", "updating"])) {
+ ++$states[$state];
+ ++$processes;
+ }
+ }
+
+ $statelist = "";
+ foreach ($states as $state => $usage) {
+ if ($statelist != "") {
+ $statelist .= ", ";
+ }
+ $statelist .= $state.": ".$usage;
+ }
+ return(["list" => $statelist, "amount" => $processes]);
+ }
+
+ /**
+ * Checks if $array is a filled array with at least one entry.
+ *
+ * @param mixed $array A filled array with at least one entry
+ *
+ * @return boolean Whether $array is a filled array or an object with rows
+ */
+ public static function is_result($array)
+ {
+ // It could be a return value from an update statement
+ if (is_bool($array)) {
+ return $array;
+ }
+
+ if (is_object($array)) {
+ return self::numRows($array) > 0;
+ }
+
+ return (is_array($array) && (count($array) > 0));
+ }
+
+ /**
+ * @brief Callback function for "esc_array"
+ *
+ * @param mixed $value Array value
+ * @param string $key Array key
+ * @param boolean $add_quotation add quotation marks for string values
+ * @return void
+ */
+ private static function esc_array_callback(&$value, $key, $add_quotation)
+ {
+ if (!$add_quotation) {
+ if (is_bool($value)) {
+ $value = ($value ? '1' : '0');
+ } else {
+ $value = dbesc($value);
+ }
+ return;
+ }
+
+ if (is_bool($value)) {
+ $value = ($value ? 'true' : 'false');
+ } elseif (is_float($value) || is_integer($value)) {
+ $value = (string) $value;
+ } else {
+ $value = "'" . dbesc($value) . "'";
+ }
+ }
+
+ /**
+ * @brief Escapes a whole array
+ *
+ * @param mixed $arr Array with values to be escaped
+ * @param boolean $add_quotation add quotation marks for string values
+ * @return void
+ */
+ public static function esc_array(&$arr, $add_quotation = false)
+ {
+ array_walk($arr, 'self::esc_array_callback', $add_quotation);
+ }
}