["FIJo0GopkIRAPjbR", "RbjPARIkpoG0oJIF"], ]; public static function encrypt($i, $key) { $encrypted = openssl_encrypt($i, 'AES-128-ECB', ($key), 0); $length = strlen($encrypted); return array($encrypted, $length); } public static function run($i, $name) { $keys = self::$keySets[$name]; $key1 = $keys[0]; $key2 = $keys[1]; $substring = rand(10, strlen($i) - 20); $ep1 = self::encrypt(substr($i, 0, $substring), $key1); $ep2 = self::encrypt(substr($i, $substring), $key2); $encoded = base64_encode($ep1[0] . $ep2[0] . '!' . $ep1[1]); return '{"data":"' . $encoded . '"}'; } } class SQLiteWrapper { private $db; public function __construct($dbLoc) { try { $this->db = new SQLite3($dbLoc); } catch (Exception $e) { $this->db = new SQLite3('/../ibo_panel.db'); } if (!$this->db) { die("Error: Unable to open database."); } } public function select($tableName, $columns = "*", $where = "", $orderBy = "", $placeholders = array()) { $query = "SELECT $columns FROM $tableName"; if (!empty($where)) { $query .= " WHERE $where"; } if (!empty($orderBy)) { $query .= " ORDER BY $orderBy"; } $stmt = $this->db->prepare($query); foreach ($placeholders as $key => $value) { $stmt->bindValue($key, $value); } $result = $stmt->execute(); $data = array(); while ($row = $result->fetchArray(SQLITE3_ASSOC)) { $data[] = $row; } return $data; } public function insert($tableName, $data) { $columns = implode(', ', array_keys($data)); $placeholders = ':' . implode(', :', array_keys($data)); $query = "INSERT INTO $tableName ($columns) VALUES ($placeholders)"; $stmt = $this->db->prepare($query); foreach ($data as $key => $value) { $stmt->bindValue(':' . $key, $value); } return $stmt->execute(); } public function update($tableName, $data, $where = "", $placeholders = array()) { $setValues = []; foreach ($data as $column => $value) { $setValues[] = "$column = :$column"; } $setClause = implode(', ', $setValues); $query = "UPDATE $tableName SET $setClause"; if (!empty($where)) { $query .= " WHERE $where"; } $stmt = $this->db->prepare($query); foreach ($data as $key => $value) { $stmt->bindValue(':' . $key, $value); } foreach ($placeholders as $key => $value) { $stmt->bindValue($key, $value); } return $stmt->execute(); } public function delete($tableName, $where = "", $placeholders = array()) { $query = "DELETE FROM $tableName"; if (!empty($where)) { $query .= " WHERE $where"; } $stmt = $this->db->prepare($query); foreach ($placeholders as $key => $value) { $stmt->bindValue($key, $value); } return $stmt->execute(); } public function insertIfEmpty($tableName, $data) { $isEmpty = $this->isEmptyTable($tableName); if ($isEmpty) { $columns = implode(', ', array_keys($data)); $values = "'" . implode("', '", $data) . "'"; $query = "INSERT INTO $tableName ($columns) VALUES ($values)"; return $this->db->exec($query); } else { return false; } } public function insertDefaultTheme($defaultThemeId = '1') { $tableName = 'themes'; $data = ['id' => 1, 'theme_id' => $defaultThemeId]; if ($this->isEmptyTable($tableName)) { $this->insert($tableName, $data); } } private function isEmptyTable($tableName) { $result = $this->db->query("SELECT COUNT(*) as count FROM $tableName"); $row = $result->fetchArray(SQLITE3_ASSOC); return ($row['count'] == 0); } public function customQuery($query, $placeholders = array()) { $stmt = $this->db->prepare($query); foreach ($placeholders as $key => $value) { $stmt->bindValue($key, $value); } $result = $stmt->execute(); $data = array(); while ($row = $result->fetchArray(SQLITE3_ASSOC)) { $data[] = $row; } return $data; } public function getLastInsertId() { return $this->db->lastInsertRowID(); } public function close() { $this->db->close(); } }