+ $conn->query("CREATE TABLE IF NOT EXISTS " . SQL_PREFIX . "auth_settings (
+ id int AUTO_INCREMENT NOT NULL,
+ setting_key VARCHAR(255) NOT NULL,
+ setting_value VARCHAR(255),
+ PRIMARY KEY (id)
+ )");
+ $conn->query("CREATE TABLE IF NOT EXISTS " . SQL_PREFIX . "fail2ban (
+ id int AUTO_INCREMENT NOT NULL,
+ ip VARCHAR(255) NOT NULL,
+ count VARCHAR(255),
+ PRIMARY KEY (id)
+ )");
+ new AuthSettings();
+ }
+
+ /* We convert $u with a full user as an object ;D*/
+ public static function get_user(&$u)
+ {
+ $id = $u['id'];
+ $name = $u['name'];
+ $conn = sqlnew();
+
+ if ($id)
+ {
+ $prep = $conn->prepare("SELECT * FROM " . SQL_PREFIX . "users WHERE user_id = :id LIMIT 1");
+ $prep->execute(["id" => strtolower($id)]);
+ }
+ elseif ($name)
+ {
+ $prep = $conn->prepare("SELECT * FROM " . SQL_PREFIX . "users WHERE LOWER(user_name) = :name LIMIT 1");
+ $prep->execute(["name" => strtolower($name)]);
+ }
+ $data = NULL;
+ $obj = (object) [];
+ if ($prep)
+ $data = $prep->fetchAll();
+ if (isset($data[0]) && $data = $data[0])
+ {
+ $obj->id = $data['user_id'];
+ $obj->username = $data['user_name'];
+ $obj->passhash = $data['user_pass'];
+ $obj->first_name = $data['user_fname'] ?? NULL;
+ $obj->last_name = $data['user_lname'] ?? NULL;
+ $obj->created = $data['created'];
+ $obj->bio = $data['user_bio'];
+ $obj->user_meta = (new PanelUser_Meta($obj->id))->list;
+ }
+ $u['object'] = $obj;
+ }
+
+ public static function get_usermeta(&$u)
+ {
+ //do_log($u);
+ $list = &$u['meta'];
+ $id = $u['id'];
+ $conn = sqlnew();
+ if (isset($id))
+ {
+ $prep = $conn->prepare("SELECT * FROM " . SQL_PREFIX . "user_meta WHERE user_id = :id");
+ $prep->execute(["id" => $id]);
+ }
+ foreach ($prep->fetchAll() as $row)
+ {
+ $list[$row['meta_key']] = $row['meta_value'];
+ }
+ }
+
+ public static function add_usermeta(&$meta)
+ {
+ $meta = $meta['meta'];
+ $conn = sqlnew();
+ /* check if it exists first, update it if it does */
+ $query = "SELECT * FROM " . SQL_PREFIX . "user_meta WHERE user_id = :id AND meta_key = :key";
+ $stmt = $conn->prepare($query);
+ $stmt->execute(["id" => $meta['id'], "key" => $meta['key']]);
+ if ($stmt->rowCount()) // it exists, update instead of insert
+ {
+ $query = "UPDATE " . SQL_PREFIX . "user_meta SET meta_value = :value WHERE user_id = :id AND meta_key = :key";
+ $stmt = $conn->prepare($query);
+ $stmt->execute($meta);
+ if ($stmt->rowCount())
+ return true;
+ return false;
+ }
+
+ else
+ {
+ $query = "INSERT INTO " . SQL_PREFIX . "user_meta (user_id, meta_key, meta_value) VALUES (:id, :key, :value)";
+ $stmt = $conn->prepare($query);
+ $stmt->execute($meta);
+ if ($stmt->rowCount())
+ return true;
+ return false;
+ }