From 442aad9449f0b098ab5c9e34d71b639f42128cdf Mon Sep 17 00:00:00 2001 From: MatMasIt <34745996+MatMasIt@users.noreply.github.com> Date: Fri, 13 Aug 2021 16:38:27 +0200 Subject: [PATCH] Add files via upload --- 07abd9b090f514cbce89b2a932b2ec9f/db.db | Bin 0 -> 45056 bytes ajax.php | 23 + email.template | 24 + images/food.jpg | Bin 0 -> 214845 bytes images/logout.png | Bin 0 -> 1051 bytes images/menu.gif | Bin 0 -> 32985 bytes images/personal.png | Bin 0 -> 23057 bytes images/stopwatch.png | Bin 0 -> 169214 bytes index.php | 215 + lib.php | 648 +++ phpliteadmin.php | 6181 ++++++++++++++++++++++++ timeframes.csv | 3 + ui.php | 1299 +++++ 13 files changed, 8393 insertions(+) create mode 100644 07abd9b090f514cbce89b2a932b2ec9f/db.db create mode 100644 ajax.php create mode 100644 email.template create mode 100644 images/food.jpg create mode 100644 images/logout.png create mode 100644 images/menu.gif create mode 100644 images/personal.png create mode 100644 images/stopwatch.png create mode 100644 index.php create mode 100644 lib.php create mode 100644 phpliteadmin.php create mode 100644 timeframes.csv create mode 100644 ui.php diff --git a/07abd9b090f514cbce89b2a932b2ec9f/db.db b/07abd9b090f514cbce89b2a932b2ec9f/db.db new file mode 100644 index 0000000000000000000000000000000000000000..a00376a7723a4893524ac9520aeaf1e1823e77f0 GIT binary patch literal 45056 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 literal 0 HcmV?d00001 diff --git a/ajax.php b/ajax.php new file mode 100644 index 0000000..09d4347 --- /dev/null +++ b/ajax.php @@ -0,0 +1,23 @@ + false, "data" => []])); +$data = wrapperStaffOrders(); +switch ($_POST["action"]) { + case "delete": + if (!deleteOrder($_POST["sessionToken"], $_POST["id"])) die(json_encode(["ok" => false, "data" => $data])); + $data = wrapperStaffOrders(); + die(json_encode(["ok" => true, "data" => $data])); + break; + case "pay": + setPayed($_POST["sessionToken"], $_POST["id"], true); + $data = wrapperStaffOrders(); + die(json_encode(["ok" => true, "data" => $data])); + break; + case "unpay": + setPayed($_POST["sessionToken"], $_POST["id"], false); + $data = wrapperStaffOrders(); + die(json_encode(["ok" => true, "data" => $data])); + break; +} diff --git a/email.template b/email.template new file mode 100644 index 0000000..dc3ea45 --- /dev/null +++ b/email.template @@ -0,0 +1,24 @@ + + +TITLE + + + + + + + + +
+

TITLE

+
+ +
+CONTENT +
+
+

DATE

+
+ + + diff --git a/images/food.jpg b/images/food.jpg new file mode 100644 index 0000000000000000000000000000000000000000..de59c450d708a2bbc9fec92754c3fffbd30563ed GIT binary patch literal 214845 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 VdfxgkFX{JsnC6jBFq(Z2|Jeq%CcFRu literal 0 HcmV?d00001 diff --git a/images/logout.png b/images/logout.png new file mode 100644 index 0000000000000000000000000000000000000000..fab9bc4826c5ac9cee128a008e528e486e76d0b5 GIT binary patch literal 1051 zcmV+$1mydPP)N zE-o%xASE~e00U=9L_t(|obBCUn?X4UHoU>t7R~TW*c2%7q zz!jTS5AtoZVXNvv-lkVg62>e>MZYwhtjP3CEv=<4?lzC*k;$aQsO)K*i$jZVS0Y^BQ0H=ia#zbB6Cg zSY5_|tgZ2dUuvUch-BfuF?_@o(rpGOy4n*3A(DlM3{E5qAKweJ&(=ebg*RtH^I0Sd zkLN<`S!5p%7cE5FS!4@aA9!Foi*(_;B}DsKs&C}8&u zwmpSyS9D_uV+p^`0J&h z^(Q~V@aq=g*Pg0{4(k;6C69+{=wl!tp2J_>*w_NjUx_9DfpyKM%rU zv)SWboiE(KKDGRWdWmvXgk5%Jd_;{Sq&ga%0nZfZh(mv&0Oe+VxAZ&*rbkc8kQG|1K2Q$%5N*Vh~| zgoNNEG)O{l5*j2SI0+4s5ZwLH!b6%3+u(CZPC^MKzjSQc5YMlv3(qKLD?4 VKo8R`Ye@hA002ovPDHLkV1j}t^LYRO literal 0 HcmV?d00001 diff --git a/images/menu.gif b/images/menu.gif new file mode 100644 index 0000000000000000000000000000000000000000..8507597fd40c5e7629d44cc60a1ba39dc7e60f03 GIT binary patch literal 32985 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 Jrz0SU{vWdvC;|Wg literal 0 HcmV?d00001 diff --git a/images/personal.png b/images/personal.png new file mode 100644 index 0000000000000000000000000000000000000000..4007e53472ed154f8af049fc27495aa791a67fda GIT binary patch literal 23057 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

E7bnH9no|dF`2??m~xXwcmWd@7X9-W(PB< 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 I*Kr8{KQzf3bpQYW literal 0 HcmV?d00001 diff --git a/images/stopwatch.png b/images/stopwatch.png new file mode 100644 index 0000000000000000000000000000000000000000..5e226fb3e5c1b6affac947c299928b07040a4049 GIT binary patch literal 169214 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%0DI6{cGu@8k&U<1gGE#*ZRIr1)>gj3 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 AQUCw| literal 0 HcmV?d00001 diff --git a/index.php b/index.php new file mode 100644 index 0000000..56d70d6 --- /dev/null +++ b/index.php @@ -0,0 +1,215 @@ + + + +Mordapp + + + + + + + + + + + + + + + + + + + + + + + + +

Verifica effettuata

+ + Account verificato e pronto all\'accesso
Ok'; + break; + case "signIn": + $token = login($_POST["email"], $_POST["password"]); + if ($res == "NOT_FOUND" || $res == "INCORRECT_PASSWORD") { + UIauth("

Credenziali errate

"); + break; + } + if ($res == "UNVERIFIED") { + UIauth("

Account non verificato

Reinviare la mail di verifica?"); + break; + } + mainMenu($token); + + break; + case "showOrders": + showOrders($_POST["sessionToken"]); + break; + case "editOrder": + editOrder($_POST["sessionToken"], $_POST["orderId"]); + break; + case "mainMenu": + mainMenu($_POST["sessionToken"]); + break; + case "saveOrder": + if(!$newView){ + showOrders($_POST["sessionToken"]); + break; + } + $res = processOrder($_POST); + if ($res === true) { + showOrders($_POST["sessionToken"], '

Salvato

'); + break; + } + if ($res === false) { + showOrders($_POST["sessionToken"], '

Errore

'); + break; + } + if ($res === "INVALID_DATETIME_NO_DAY") { + showOrders($_POST["sessionToken"], '

Giorno errato

'); + break; + } + if ($res === "INVALID_DATETIME_NO_TF") { + showOrders($_POST["sessionToken"], '

Ora errata

'); + break; + } + if ($res === "WRONG_DOMAIN") { + showOrders($_POST["sessionToken"], '

L\'email deve essere @liceococito.it

'); + break; + } + if ($res === "NO_CLASS") { + showOrders($_POST["sessionToken"], '

Classe errata

'); + break; + } + break; + case "deleteOrder": + $res = deleteOrder($_POST["sessionToken"], $_POST["orderId"]); + if ($res === true) { + showOrders($_POST["sessionToken"], '

Cancellato

'); + break; + } + if ($res === false) { + showOrders($_POST["sessionToken"], '

Errore

'); + break; + } + break; + case "manageAccount": + manageAccount($_POST["sessionToken"]); + break; + case "manageSave": + if(!$newView){ + mainMenu($_POST["sessionToken"]); + break; + } + $res = manageSave($_POST["sessionToken"], $_POST); + if ($res === false) { + mainMenu($_POST["sessionToken"], '

Errore

'); + break; + } + if ($res === "INVALID_EMAIL") { + mainMenu($_POST["sessionToken"], '

Email non valida

'); + break; + } + if ($res === "WRONG_DOMAIN") { + mainMenu($_POST["sessionToken"], '

L\'email deve essere @liceococito.it

'); + break; + } + if ($res === "NO_CLASS") { + mainMenu($_POST["sessionToken"], '

Classe errata

'); + break; + } + mainMenu($_POST["sessionToken"]); + break; + case "showOrdersSTAFF": + showOrdersSTAFF($_POST["sessionToken"]); + break; + case "timeframesSTAFF": + timeframesView($_POST["sessionToken"]); + break; + case "saveTimefs": + if(!$newView){ + mainMenu($_POST["sessionToken"]); + break; + } + $res = saveTimefs($_POST["sessionToken"], $_POST["data"]); + if ($res === false) { + mainMenu($_POST["sessionToken"], '

Errore

'); + break; + } + mainMenu($_POST["sessionToken"]); + break; + case "menuSTAFF": + dishesStaff($_POST["sessionToken"]); + break; + case "processDishes": + if(!$newView){ + mainMenu($_POST["sessionToken"]); + break; + } + $res = processDishes($_POST); + if ($res === false) { + mainMenu($_POST["sessionToken"], '

Errore

'); + break; + } + mainMenu($_POST["sessionToken"]); + break; + } + ?> +
+

Mattia Mascarello,

+ Privacy Policy +- Personalizza tracciamento +
+ + + + \ No newline at end of file diff --git a/lib.php b/lib.php new file mode 100644 index 0000000..c0c1286 --- /dev/null +++ b/lib.php @@ -0,0 +1,648 @@ + 0 ? substr($haystack, -$length) === $needle : true; +} +function new_account($email, $name, $password, $classe) +{ + $email = trim(mb_strtolower($email)); + if (!in_array($classe, $GLOBALS["classesWhitelist"])) return "NO_CLASS"; + $p = pdomake(); + $q = $p->prepare("SELECT * FROM Users WHERE email=:email"); + $q->execute([":email" => $email]); + if ($q->fetch() != null) return "ALREADY_EXISTS"; + if (!filter_var($email, FILTER_VALIDATE_EMAIL)) return "INVALID_EMAIL"; + if (!endsWith($email, "@liceococito.it")) return "WRONG_DOMAIN"; + $st = bin2hex(random_bytes(16)); + $q = $p->prepare("INSERT INTO Users(name,email,passwordHash,classe,verified,isStaff,createdAt,emailToken) VALUES (:name,:email,:passwordHash,:classe,:verified,:isStaff,:createdAt,:emailToken)"); + $q->execute([ + ":name" => $name, + ":email" => $email, + ":passwordHash" => password_hash($password, PASSWORD_DEFAULT), + ":classe" => $classe, + ":verified" => 0, + ":createdAt" => time(), + ":isStaff" => 0, + ":emailToken" => $st + ]); + return $st; +} +function login($email, $password) +{ + $email=mb_strtolower(trim($email)); + $p = pdomake(); + $q = $p->prepare("SELECT * FROM Users WHERE email=:email"); + $q->execute([":email" => $email]); + $u = $q->fetch(); + if ($u == null) return "NOT_FOUND"; + if (!password_verify($password, $u["passwordHash"])) return "INCORRECT_PASSWORD"; + if (!$u["verified"]) return "UNVERIFIED"; + $q = $p->prepare("UPDATE Users SET token=:token, lastLogin=:lastLogin WHERE id=:id"); + $st = bin2hex(random_bytes(16)); + $q->execute([ + ":id" => $u["id"], + ":token" => $st, + ":lastLogin" => time() + ]); + return $st; +} + +function firstVerify($token) +{ + $p = pdomake(); + $q = $p->prepare("SELECT * FROM Users WHERE emailToken=:et"); + $q->execute([":et" => $token]); + $u = $q->fetch(); + if (!$u) return false; + $q = $p->prepare("UPDATE Users SET emailToken=:etN, verified=:verified WHERE emailToken=:et"); + $q->execute([":et" => $token, ":etN" => bin2hex(random_bytes(16)), ":verified" => time()]); + return true; +} + + +function setPayed($token, $orderId, $payedHow = true) +{ + $p = pdomake(); + $u = use_token($token); + if ($u == null || !$u["isStaff"]) return false; + $q = $p->prepare("UPDATE Orders SET payed=:payed WHERE id=:id"); + $q->execute([ + ":id" => $orderId, + ":payed" => (int)$payedHow + ]); +} +function use_token($token) +{ + $p = pdomake(); + $q = $p->prepare("SELECT * FROM Users WHERE token=:token"); + $q->execute([":token" => $token]); + $u = $q->fetch(); + return $u; +} + +function userById($id) +{ + $p = pdomake(); + $q = $p->prepare("SELECT * FROM Users WHERE id=:id"); + $q->execute([":id" => $id]); + $u = $q->fetch(); + return $u; +} +function invalidate_token($token) +{ + $p = pdomake(); + $q = $p->prepare("UPDATE Users SET token=:token WHERE token=:oldToken"); + $st = bin2hex(random_bytes(16)); + $q->execute([ + ":token" => $st, + ":oldToken" => $token + ]); +} +function listMyOrders($token) +{ // only for users, there will be a function for staff + $p = pdomake(); + $u = use_token($token); + if ($u == null) return false; + $q = $p->prepare("SELECT * FROM Orders WHERE userId=:id AND payed=0"); + $q->execute([ + ":id" => $u["id"] + ]); + $list = $q->fetchAll(PDO::FETCH_ASSOC); + $final = []; + foreach ($list as $e) { + $e["dishes"] = []; + $q = $p->prepare("SELECT * FROM OrderDishes WHERE orderId=:id"); + $q->execute([ + ":id" => $e["id"] + ]); + $dList = $q->fetchAll(PDO::FETCH_ASSOC); + foreach ($dList as $d) { + $qI = $p->prepare("SELECT * FROM Dishes WHERE id=:id"); + $qI->execute([ + ":id" => $d["dishId"] + ]); + $dI = $qI->fetch(PDO::FETCH_ASSOC); + if (!$dI) continue; + unset($d["dishId"]); + $e["dishes"][] = array_merge($d, $dI); + } + + $final[] = $e; + } + return $final; +} + + +function listStaffOrders($token, $data) +{ // only for users, there will be a function for staff + $p = pdomake(); + $u = use_token($token); + if ($u == null || !$u["isStaff"]) return false; + if (!empty($data["datetime"])) $addition = " AND datetime > " . ((int)$data["datetime"]) . " AND datetime < " . strtotime($data["day"] . " 23:59") . " "; + if (isset($data["payed"]) && $data["payed"] != 2) { + $addition .= " AND payed=" . ((int)$data["payed"]) . " "; + } + $sql = "SELECT * FROM Orders WHERE 1=1 " . $addition; + $q = $p->prepare($sql); + $q->execute(); + $list = $q->fetchAll(PDO::FETCH_ASSOC); + $final = []; + foreach ($list as $e) { + $e["dishes"] = []; + $addition = ""; + $q = $p->prepare("SELECT * FROM OrderDishes WHERE orderId=:id "); + $q->execute([ + ":id" => $e["id"] + ]); + $dList = $q->fetchAll(PDO::FETCH_ASSOC); + foreach ($dList as $d) { + $qI = $p->prepare("SELECT * FROM Dishes WHERE id=:id"); + $qI->execute([ + ":id" => $d["dishId"] + ]); + $dI = $qI->fetch(PDO::FETCH_ASSOC); + if (!$dI) continue; + unset($d["dishId"]); + $e["dishes"][] = array_merge($d, $dI); + } + + $final[] = $e; + } + return $final; +} + +function getOrder($token, $Oid) +{ + $p = pdomake(); + $u = use_token($token); + if ($u == null) return false; + $q = $p->prepare("SELECT * FROM Orders WHERE id=:Oid "); + $q->execute([ + ":Oid" => $Oid + ]); + $list = $q->fetchAll(PDO::FETCH_ASSOC); + $final = []; + foreach ($list as $e) { + $e["dishes"] = []; + $q = $p->prepare("SELECT * FROM OrderDishes WHERE orderId=:id"); + $q->execute([ + ":id" => $e["id"] + ]); + $dList = $q->fetchAll(PDO::FETCH_ASSOC); + foreach ($dList as $d) { + $qI = $p->prepare("SELECT * FROM Dishes WHERE id=:id"); + $qI->execute([ + ":id" => $d["dishId"] + ]); + $dI = $qI->fetch(PDO::FETCH_ASSOC); + if (!$dI) continue; + unset($d["dishId"]); + $e["dishes"][] = array_merge($d, $dI); + } + + $final[] = $e; + } + $r = $final[0]; + if (!$u["isStaff"] && $r["payed"]) return false; + return $r; +} +function listDishes($orderId) +{ + $p = pdomake(); + $q = $p->prepare("SELECT * FROM OrderDishes WHERE orderId=:Oid"); + $st = bin2hex(random_bytes(16)); + $q->execute([ + ":Oid" => $orderId + ]); + return $q->fetchAll(); +} + +function email($title, $body, $email, $name) +{ + + // Subject + + $message = file_get_contents("email.template"); + $message = str_replace("TITLE", $title, $message); + $message = str_replace("CONTENT", $body, $message); + $message = str_replace("DATE", date("d/m/Y"), $message); + + // To send HTML mail, the Content-type header must be set + $headers[] = 'MIME-Version: 1.0'; + $headers[] = 'Content-type: text/html; charset=UTF-8'; + + // Additional headers + $headers[] = 'To: ' . $name . ' <' . $email . '>'; + $headers[] = 'From: Mordapp '; + + //file_put_contents("email/" . time() . ".html", $message); + // Mail it + @mail($email, $title, $message, implode("\r\n", $headers)); +} + +function timeFhours($d) +{ + $d *= 60; + $hour = floor($d / 3600); + $min = floor(($d / 60) % 60); + $hour = str_pad($hour, 2, "0", STR_PAD_LEFT); + $min = str_pad($min, 2, "0", STR_PAD_LEFT); + return "$hour:$min"; +} +function computeTimeframes() +{ + $f = file("timeframes.csv"); + $days = ["Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venrdì", "Sabato", "Domenica"]; + $months = ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"]; + $daysEng = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]; + $whatDays = []; + $perDay = []; + $all = []; + $i = 0; + foreach ($f as $l) { + if ($i == 0) { + $i++; + continue; + } + $ld = explode(",", $l); + $whatDays[] = $daysEng[$ld[0]]; + $perDay[$daysEng[$ld[0]]][] = ["begin" => ["value" => (int)$ld[1], "label" => timeFhours((int)$ld[1])], "end" => ["value" => (int)$ld[2], "label" => timeFhours((int)$ld[2])], "block" => ["value" => (int)$ld[3], "label" => timeFhours((int)$ld[3])]]; + $i++; + } + $startDate = strtotime("today"); + $endDate = strtotime((date("Y") + 1) . "-01-01"); + for ($i = $startDate; $i <= $endDate; $i = strtotime('+1 day', $i)) { + if (in_array(strtolower(date("l", $i)), $whatDays) && count($perDay[strtolower(date("l", $i))])) { + if (date("d-m-Y") == date("d-m-Y", $i)) { + $min = -100000; + //is there at least one TimeFrame for today left? + foreach ($perDay[strtolower(date("l", $i))] as $ed) { + $q = min($ed["begin"]["value"], $ed["end"]["value"]); + $min = max($min, $q); + } + $now = date("H") * 60 + date("m"); + if ($min > $now) continue; + } + $all[] = ["value" => $i, "label" => $days[date("N", $i) - 1] . " " . date("d", $i) . " " . $months[date("m", $i) - 1] . " " . date("Y", $i)]; + } + } + return ["all" => $all, "times" => $perDay]; +} + +function validateDatetimeBegin($dt) +{ + $all = computeTimeframes(); + $begin = strtotime("midnight", $dt); + $found = false; + foreach ($all["all"] as $a) { + if ($a["value"] == $begin) { + $found = true; + break; + } + } + if (!$found) return "NO_DAY"; + + $found = false; + foreach ($all["times"][strtolower(date("l", $dt))] as $tf) { + if ($tf["begin"]["value"] * 60 == ($dt - $begin)) { + $found = true; + break; + } + } + + if (!$found) return "NO_TF"; + return "OK"; +} +function processOrder($data) +{ + $all = computeTimeframes(); + $data["datetime"] = $data["day"] + $all["times"][strtolower(date("l", $data["day"]))][(int)$data["timeFrames"]]["begin"]["value"] * 60; + $p = pdomake(); + $u = use_token($data["sessionToken"]); + if ($u == null) return false; + $vr = validateDatetimeBegin($data["datetime"]); + if ($vr != "OK") return "INVALID_DATETIME_" . $vr; + $dishes = []; + $dishsesKeys = []; + foreach ($data as $key => $val) { + $n = explode("OF", $key)[1]; + if (!str_contains($key, "OF") || $data["qtyOF" . $n] < 1) continue; + $dishsesKeys[] = $n; + } + $dishsesKeys = array_unique($dishsesKeys); + foreach ($dishsesKeys as $d) { + $q = $p->prepare("SELECT * FROM Dishes WHERE id=:id"); + $q->execute([ + ":id" => $d + ]); + if (!count($q->fetchAll(PDO::FETCH_ASSOC))) return "ID_MISMATCH"; + $dishes[] = ["id" => $d, "qty" => $data["qtyOF" . $d] ?: 0, "notes" => $data["notesOF" . $d] ?: ""]; + } + if (count($dishes) == 0) { + deleteOrder($data["sessionToken"], $data["orderId"]); + return true; + } + if ($data["orderId"] == "NEW") { + $q = $p->prepare("INSERT INTO Orders(datetime,userId,notes,payed,createdAt) VALUES (:datetime,:userId,:notes,:payed,:createdAt)"); + $q->execute([ + ":datetime" => $data["datetime"], + ":userId" => $u["id"], + ":notes" => $data["orderNotes"], + ":payed" => 0, + ":createdAt" => time() + ]); + $lId = $p->lastInsertId(); + if (!$lId) return "ERROR_INSERT"; + foreach ($dishes as $d) { + $q = $p->prepare("INSERT INTO OrderDishes(orderId,dishId,dishQty,dishNotes) VALUES (:orderId,:dishId,:dishQty,:dishNotes)"); + $q->execute([ + ":orderId" => $lId, + ":dishId" => $d["id"], + ":dishQty" => $d["qty"], + ":dishNotes" => $d["notes"] + ]); + } + } else { + $o = getOrder($data["sessionToken"], $data["orderId"]); + if (!$o) return "NO_ID"; + $q = $p->prepare("UPDATE Orders SET datetime=:datetime, userId=:userId, notes=:notes, payed=:payed, createdAt=:createdAt WHERE id=:Oid"); + $q->execute([ + ":datetime" => $data["datetime"], + ":userId" => $u["id"], + ":notes" => $data["orderNotes"], + ":payed" => 0, + ":createdAt" => time(), + ":Oid" => $data["orderId"] + ]); + $q = $p->prepare("DELETE FROM OrderDishes WHERE orderId=:Oid"); + $q->execute([ + ":Oid" => $data["orderId"] + ]); + foreach ($dishes as $d) { + $q = $p->prepare("INSERT INTO OrderDishes(orderId,dishId,dishQty,dishNotes) VALUES (:orderId,:dishId,:dishQty,:dishNotes)"); + $q->execute([ + ":orderId" => $data["orderId"], + ":dishId" => $d["id"], + ":dishQty" => $d["qty"], + ":dishNotes" => $d["notes"] + ]); + } + } + return true; +} +function deleteOrder($token, $id) +{ + $p = pdomake(); + $u = use_token($token); + if ($u == null) return false; + $o = getOrder($token, $id); + if ($o["userId"] != $u["id"] && !$u["isStaff"]) return false; + $q = $p->prepare("DELETE FROM OrderDishes WHERE orderId=:Oid"); + $q->execute([ + ":Oid" => $id + ]); + $q = $p->prepare("DELETE FROM Orders WHERE id=:Oid"); + $q->execute([ + ":Oid" => $id + ]); + return true; +} +function manageSave($token, $data) +{ + $p = pdomake(); + $u = use_token($token); + if ($u == null) return false; + if (!filter_var($data["email"], FILTER_VALIDATE_EMAIL)) return "INVALID_EMAIL"; + if (!endsWith($data["email"], "@liceococito.it") && endsWith($u["email"], "@liceococito.it")) return "WRONG_DOMAIN"; + if (!in_array($data["classe"], $GLOBALS["classesWhitelist"])) return "NO_CLASS"; + $q = $p->prepare("UPDATE Users SET name=:name, email=:email, classe=:classe WHERE id=:id"); + $q->execute([ + ":id" => $u["id"], + ":name" => $data["name"] ?: $u["name"], + ":email" => $data["email"] ?: $u["email"], + ":classe" => $data["classe"] ?: $u["classe"] + + ]); + return true; +} +function toNormalized($hhmm) +{ + $ar = explode(":", $hhmm); + return $ar[0] * 60 + $ar[1]; +} +function saveTimefs($st, $data) +{ + $u = use_token($st); + if ($u == null || !$u["isStaff"]) return false; + $a = json_decode($data, true); + if (!$a) return false; + $s = "Giorno,Inizio,Fine,Blocco\n"; + foreach ($a as $el) { + $s .= (array_search($el["day"], ["Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato", "Domenica"]) ?: 0) . "," . toNormalized($el["begTime"]) . "," . toNormalized($el["endTime"]) . "," . toNormalized($el["blockTime"]) . "\n"; + } + file_put_contents("timeframes.csv", $s); + return true; +} + +function wrapperStaffOrders() +{ + $lst = []; + $_POST["datetime"] = strtotime($_POST["day"] . " " . $_POST["hour"]); + $list = listStaffOrders($_POST["sessionToken"], $_POST); + foreach ($list as $el) { + $u = userById($el["userId"]); + if ($u["classe"] != $_POST["classe"] && $_POST["classe"] != 0) continue; + + $dishes = []; + $total = 0; + foreach ($el["dishes"] as $d) { + $d["total"] = $d["dishQty"] * $d["price"]; + if($d["deleted"]) $d["name"].=" (cancellato dal menù il ".date("d/m/Y H:i:s",$d["deleted"]).")"; + $dishes[] = $d; + $total += $d["total"]; + } + + + $lst[] = [ + "name" => htmlentities($u["name"]), + "class" => htmlentities($u["classe"]), + "datetime" => date("d/m/Y H:i:s", $el["datetime"]), + "createdAt" => date("d/m/Y H:i:s", $el["createdAt"]), + "dishes" => $dishes, + "notes" => htmlentities($el["notes"]), + "summary" => [[ + "payed" => (bool)$el["payed"], + "total" => $total, + "id" => $el["id"] + ]] + ]; + } + return $lst; +} +function processDishes($data) +{ + $u = use_token($data["sessionToken"]); + if (!$u || !$u["isStaff"]) return UIauth("

Sessione invalida

"); + $a = json_decode($data["data"], true); + if (!$a) return false; + $p = pdomake(); + $q = $p->prepare("SELECT * FROM Dishes WHERE deleted=0"); + $q->execute(); + $r = $q->fetchAll(PDO::FETCH_ASSOC); + $ids = []; + foreach ($a as $el) { + if (empty($el["id"])) { + $q = $p->prepare("INSERT INTO Dishes(name,price,deleted) VALUES(:name,:price,0)"); + $q->execute([":name" => $el["name"], ":price" => $el["price"]]); + } else { + $q = $p->prepare("UPDATE Dishes SET name=:name, price=:price, deleted=0 WHERE id=:id"); + $q->execute([":name" => $el["name"], ":price" => $el["price"], ":id"=>$el["id"]]); + $ids[]=(int)$el["id"]; + } + } + foreach($r as $el){ + if(!in_array((int)$el["id"],$ids)){ + $q = $p->prepare("UPDATE Dishes SET deleted=:d WHERE id=:id"); + $q->execute([":id"=>$el["id"],":d"=>time()]); + } + } + return true; +} + +function newViewCheck($token,$view){ + if(empty($token) || empty($view)) return "EMPTY"; + $p = pdomake(); + $q = $p->prepare("SELECT * FROM Users WHERE token=:token"); + $q->execute([ + ":token" => $token + ]); + $r = $q->fetchAll(PDO::FETCH_ASSOC)[0]; + if(!$r) return true; + if($view == $r["lastView"]) return "SAME"; + $q = $p->prepare("UPDATE Users SET lastView=:lastView WHERE token=:token"); + $q->execute([ + ":token" => $token, + ":lastView" => $view + ]); + return true; +} diff --git a/phpliteadmin.php b/phpliteadmin.php new file mode 100644 index 0000000..d834f5b --- /dev/null +++ b/phpliteadmin.php @@ -0,0 +1,6181 @@ +. +// +// //////////////////////////////////////////////////////////////////////// +// +// Please report any bugs you may encounter to our issue tracker here: +// https://bitbucket.org/phpliteadmin/public/issues?status=new&status=open + +// +// This is sample configuration file +// +// You can configure phpliteadmin in one of 2 ways: +// 1. Rename phpliteadmin.config.sample.php to phpliteadmin.config.php and change parameters in there. +// You can set only your custom settings in phpliteadmin.config.php. All other settings will be set to defaults. +// 2. Change parameters directly in main phpliteadmin.php file +// +// Please see https://bitbucket.org/phpliteadmin/public/wiki/Configuration for more details + +//password to gain access +$password = 'nockrackmysql'; + +//directory relative to this file to search for databases (if false, manually list databases in the $databases variable) +$directory = '9559fd66d55152147f09a2d8e6030670d99936d83ac0290fecbc25f6edb698ec'; + +//whether or not to scan the subdirectories of the above directory infinitely deep +$subdirectories = false; + +//if the above $directory variable is set to false, you must specify the databases manually in an array as the next variable +//if any of the databases do not exist as they are referenced by their path, they will be created automatically +$databases = array( + array( + 'path'=> 'database1.sqlite', + 'name'=> 'Database 1' + ), + array( + 'path'=> 'database2.sqlite', + 'name'=> 'Database 2' + ), +); + + +/* ---- Interface settings ---- */ + +// Theme! If you want to change theme, save the CSS file in same folder of phpliteadmin or in folder "themes" +$theme = 'phpliteadmin.css'; + +// the default language! If you want to change it, save the language file in same folder of phpliteadmin or in folder "languages" +// More about localizations (downloads, how to translate etc.): https://bitbucket.org/phpliteadmin/public/wiki/Localization +$language = 'en'; + +// set default number of rows. You need to relog after changing the number +$rowsNum = 30; + +// reduce string characters by a number bigger than 10 +$charsNum = 300; + +// maximum number of SQL queries to save in the history +$maxSavedQueries = 10; + +/* ---- Custom functions ---- */ + +//a list of custom functions that can be applied to columns in the databases +//make sure to define every function below if it is not a core PHP function +$custom_functions = array( + 'md5', 'sha1', 'time', 'strtotime', + // add the names of your custom functions to this array + /* 'leet_text', */ +); + +// define your custom functions here +/* +function leet_text($value) +{ + return strtr($value, 'eaAsSOl', '344zZ01'); +} +*/ + + +/* ---- Advanced options ---- */ + +//changing the following variable allows multiple phpLiteAdmin installs to work under the same domain. +$cookie_name = 'pla3412'; + +//whether or not to put the app in debug mode where errors are outputted +$debug = false; + +// the user is allowed to create databases with only these extensions +$allowed_extensions = array('db','db3','sqlite','sqlite3'); + + +// English language-texts. +// Read our wiki on how to translate: https://bitbucket.org/phpliteadmin/public/wiki/Localization +$lang = array( + "direction" => "LTR", + "date_format" => 'g:ia \o\n F j, Y (T)', // see http://php.net/manual/en/function.date.php for what the letters stand for + "ver" => "version", + "for" => "for", + "to" => "to", + "go" => "Go", + "yes" => "Yes", + "no" => "No", + "sql" => "SQL", + "csv" => "CSV", + "csv_tbl" => "Table that CSV pertains to", + "srch" => "Search", + "srch_again" => "Do Another Search", + "login" => "Log In", + "logout" => "Logout", + "view" => "View", // here, the noun SQL view is meant, not the verb "to view" + "confirm" => "Confirm", + "cancel" => "Cancel", + "save_as" => "Save As", + "options" => "Options", + "no_opt" => "No options", + "help" => "Help", + "installed" => "installed", + "not_installed" => "not installed", + "done" => "done", + "insert" => "Insert", + "export" => "Export", + "import" => "Import", + "rename" => "Rename", + "empty" => "Empty", + "drop" => "Drop", + "tbl" => "Table", + "chart" => "Chart", + "err" => "ERROR", + "act" => "Action", + "rec" => "Records", + "col" => "Column", + "cols" => "Columns", + "rows" => "row(s)", + "edit" => "Edit", + "del" => "Delete", + "add" => "Add", + "backup" => "Backup database file", + "before" => "Before", + "after" => "After", + "passwd" => "Password", + "passwd_incorrect" => "Incorrect password.", + "chk_ext" => "Checking supported SQLite PHP extensions", + "autoincrement" => "Autoincrement", + "not_null" => "Not NULL", + "attention" => "Attention", + "none" => "None", + "as_defined" => "As defined", + "expression" => "Expression", + "download" => "Download", + "open_in_browser" => "Open in browser", + + "sqlite_ext" => "SQLite extension", + "sqlite_ext_support" => "It appears that none of the supported SQLite library extensions are available in your installation of PHP. You may not use %s until you install at least one of them.", + "sqlite_v" => "SQLite version", + "sqlite_v_error" => "It appears that your database is of SQLite version %s but your installation of PHP does not contain the necessary extensions to handle this version. To fix the problem, either delete the database and allow %s to create it automatically or recreate it manually as SQLite version %s.", + "report_issue" => "The problem cannot be diagnosed properly. Please file an issue report at", + "sqlite_limit" => "Due to the limitations of SQLite, only the field name and data type can be modified.", + + "php_v" => "PHP version", + "new_version" => "There is a new version!", + + "db_dump" => "database dump", + "db_f" => "database file", + "db_ch" => "Change Database", + "db_event" => "Database Event", + "db_name" => "Database name", + "db_rename" => "Rename Database", + "db_renamed" => "Database '%s' has been renamed to", + "db_del" => "Delete Database", + "db_path" => "Path to database", + "db_size" => "Size of database", + "db_mod" => "Database last modified", + "db_create" => "Create New Database", + "db_vac" => "The database, '%s', has been VACUUMed.", + "db_not_writeable" => "The database, '%s', does not exist and cannot be created because the containing directory, '%s', is not writable. The application is unusable until you make it writable.", + "db_setup" => "There was a problem setting up your database, %s. An attempt will be made to find out what's going on so you can fix the problem more easily", + "db_exists" => "A database, other file or directory of the name '%s' already exists.", + "db_blank" => "The database name cannot be blank.", + + "exported" => "Exported", + "struct" => "Structure", + "struct_for" => "structure for", + "on_tbl" => "on table", + "data_dump" => "Data dump for", + "backup_hint" => "Hint: To backup your database, the easiest way is to %s.", + "backup_hint_linktext" => "download the database-file", + "total_rows" => "a total of %s rows", + "total" => "Total", + "not_dir" => "The directory you specified to scan for databases does not exist or is not a directory.", + "bad_php_directive" => "It appears that the PHP directive, 'register_globals' is enabled. This is bad. You need to disable it before continuing.", + "page_gen" => "Page generated in %s seconds.", + "powered" => "Powered by", + "free_software" => "This is free software.", + "please_donate" => "Please donate.", + "remember" => "Remember me", + "no_db" => "Welcome to %s. It appears that you have selected to scan a directory for databases to manage. However, %s could not find any valid SQLite databases. You may use the form below to create your first database.", + "no_db2" => "The directory you specified does not contain any existing databases to manage, and the directory is not writable. This means you can't create any new databases using %s. Either make the directory writable or manually upload databases to the directory.", + "dir_not_executable" => "The directory you specified cannot be scanned for databases as %s has no execute permissions on it. On Linux, use 'chmod +x %s' to fix this.", + + "create" => "Create", + "created" => "has been created", + "create_tbl" => "Create new table", + "create_tbl_db" => "Create new table on database", + "create_trigger" => "Creating new trigger on table", + "create_index" => "Creating new index on table", + "create_index1" => "Create Index", + "create_view" => "Create new view on database", + + "trigger" => "Trigger", + "triggers" => "Triggers", + "trigger_name" => "Trigger name", + "trigger_act" => "Trigger Action", + "trigger_step" => "Trigger Steps (semicolon terminated)", + "when_exp" => "WHEN expression (type expression without 'WHEN')", + "index" => "Index", + "indexes" => "Indexes", + "index_name" => "Index name", + "name" => "Name", + "unique" => "Unique", + "seq_no" => "Seq. No.", + "emptied" => "has been emptied", + "dropped" => "has been dropped", + "renamed" => "has been renamed to", + "altered" => "has been altered successfully", + "inserted" => "inserted", + "deleted" => "deleted", + "affected" => "affected", + "blank_index" => "Index name must not be blank.", + "one_index" => "You must specify at least one index column.", + "docu" => "Documentation", + "license" => "License", + "proj_site" => "Project Site", + "bug_report" => "This may be a bug that needs to be reported at", + "return" => "Return", + "browse" => "Browse", + "fld" => "Field", + "fld_num" => "Number of Fields", + "fields" => "Fields", + "type" => "Type", + "operator" => "Operator", + "val" => "Value", + "update" => "Update", + "comments" => "Comments", + + "specify_fields" => "You must specify the number of table fields.", + "specify_tbl" => "You must specify a table name.", + "specify_col" => "You must specify a column.", + + "tbl_exists" => "Table of the same name already exists.", + "show" => "Show", + "show_rows" => "Showing %s row(s). ", + "showing" => "Showing", + "showing_rows" => "Showing rows", + "query_time" => "(Query took %s sec)", + "syntax_err" => "There is a problem with the syntax of your query (Query was not executed)", + "run_sql" => "Run SQL query/queries on database '%s'", + "recent_queries" => "Recent Queries", + "full_texts" => "Show full texts", + "no_full_texts" => "Shorten long texts", + + "ques_empty" => "Are you sure you want to empty the table '%s'?", + "ques_drop" => "Are you sure you want to drop the table '%s'?", + "ques_drop_view" => "Are you sure you want to drop the view '%s'?", + "ques_del_rows" => "Are you sure you want to delete row(s) %s from table '%s'?", + "ques_del_db" => "Are you sure you want to delete the database '%s'?", + "ques_column_delete" => "Are you sure you want to delete column(s) %s from table '%s'?", + "ques_del_index" => "Are you sure you want to delete index '%s'?", + "ques_del_trigger" => "Are you sure you want to delete trigger '%s'?", + "ques_primarykey_add" => "Are you sure you want to add a primary key for the column(s) %s in table '%s'?", + + "export_struct" => "Export with structure", + "export_data" => "Export with data", + "add_drop" => "Add DROP TABLE", + "add_transact" => "Add TRANSACTION", + "fld_terminated" => "Fields terminated by", + "fld_enclosed" => "Fields enclosed by", + "fld_escaped" => "Fields escaped by", + "fld_names" => "Field names in first row", + "rep_null" => "Replace NULL by", + "rem_crlf" => "Remove CRLF characters within fields", + "put_fld" => "Put field names in first row", + "null_represent" => "NULL represented by", + "import_suc" => "Import was successful.", + "import_into" => "Import into", + "import_f" => "File to import", + "max_file_size" => "Maximum file size", + "rename_tbl" => "Rename table '%s' to", + + "rows_records" => "row(s) starting from record # ", + "rows_aff" => "row(s) affected. ", + + "as_a" => "as a", + "readonly_tbl" => "'%s' is a view, which means it is a SELECT statement treated as a read-only table. You may not edit or insert records.", + "chk_all" => "Check All", + "unchk_all" => "Uncheck All", + "with_sel" => "With Selected", + + "no_tbl" => "No table in database.", + "no_chart" => "If you can read this, it means the chart could not be generated. The data you are trying to view may not be appropriate for a chart.", + "no_rows" => "There are no rows in the table for the range you selected.", + "no_sel" => "You did not select anything.", + + "chart_type" => "Chart Type", + "chart_bar" => "Bar Chart", + "chart_pie" => "Pie Chart", + "chart_line" => "Line Chart", + "lbl" => "Labels", + "empty_tbl" => "This table is empty.", + "click" => "Click here", + "insert_rows" => "to insert rows.", + "restart_insert" => "Restart insertion with ", + "ignore" => "Ignore", + "func" => "Function", + "new_insert" => "Insert As New Row", + "save_ch" => "Save Changes", + "def_val" => "Default Value", + "prim_key" => "Primary Key", + "tbl_end" => "field(s) at end of table", + "query_used_table" => "Query used to create this table", + "query_used_view" => "Query used to create this view", + "create_index2" => "Create an index on", + "create_trigger2" => "Create a new trigger", + "new_fld" => "Adding new field(s) to table '%s'", + "add_flds" => "Add Fields", + "edit_col" => "Editing column '%s'", + "vac" => "Vacuum", + "vac_desc" => "Large databases sometimes need to be VACUUMed to reduce their footprint on the server. Click the button below to VACUUM the database '%s'.", + "vac_on_empty"=>"Rebuild database file to recover unused space (Vacuum)", + "event" => "Event", + "each_row" => "For Each Row", + "define_index" => "Define index properties", + "dup_val" => "Duplicate values", + "allow" => "Allowed", + "not_allow" => "Not Allowed", + "asc" => "Ascending", + "desc" => "Descending", + "warn0" => "You have been warned.", + "warn_passwd" => "You are using the default password, which can be dangerous. You can change it easily at the top of %s.", + "counting_skipped" => "Counting of records has been skipped for some tables because your database is comparably big and some tables don't have primary keys assigned to them so counting might be slow. Add a primary key to these tables or %sforce counting%s.", + "sel_state" => "Select Statement", + "delimit" => "Delimiter", + "back_top" => "Back to Top", + "choose_f" => "Choose File", + "instead" => "Instead of", + "define_in_col" => "Define index column(s)", + + "delete_only_managed" => "You can only delete databases managed by this tool!", + "rename_only_managed" => "You can only rename databases managed by this tool!", + "db_moved_outside" => "You either tried to move the database into a directory where it cannot be managed anylonger, or the check if you did this failed because of missing rights.", + "extension_not_allowed" => "The extension you provided is not within the list of allowed extensions. Please use one of the following extensions", + "add_allowed_extension" => "You can add extensions to this list by adding your extension to \$allowed_extensions in the configuration.", + "database_not_writable" => "The database-file is not writable, so its content cannot be changed in any way.", + "directory_not_writable" => "The database-file itself is writable, but to write into it, the containing directory needs to be writable as well. This is because SQLite puts temporary files in there for locking.", + "tbl_inexistent" => "Table %s does not exist", + "col_inexistent" => "Column %s does not exist", + + // errors that can happen when ALTER TABLE fails. You don't necessarily have to translate these. + "alter_failed" => "Altering of Table %s failed", + "alter_tbl_name_not_replacable" => "could not replace the table name with the temporary one", + "alter_no_def" => "no ALTER definition", + "alter_parse_failed" =>"failed to parse ALTER definition", + "alter_action_not_recognized" => "ALTER action could not be recognized", + "alter_no_add_col" => "no column to add detected in ALTER statement", + "alter_pattern_mismatch"=>"Pattern did not match on your original CREATE TABLE statement", + "alter_col_not_recognized" => "could not recognize new or old column name", + "alter_unknown_operation" => "Unknown ALTER operation!", + + /* Help documentation */ + "help_doc" => "Help Documentation", + "help1" => "SQLite Library Extensions", + "help1_x" => "%s uses PHP library extensions that allow interaction with SQLite databases. Currently, %s supports PDO, SQLite3, and SQLiteDatabase. Both PDO and SQLite3 deal with version 3 of SQLite, while SQLiteDatabase deals with version 2. So, if your PHP installation includes more than one SQLite library extension, PDO and SQLite3 will take precedence to make use of the better technology. However, if you have existing databases that are of version 2 of SQLite, %s will be forced to use SQLiteDatabase for only those databases. Not all databases need to be of the same version. During the database creation, however, the most advanced extension will be used.", + "help2" => "Creating a New Database", + "help2_x" => "When you create a new database, the name you entered will be appended with the appropriate file extension (.db, .db3, .sqlite, etc.) if you do not include it yourself. The database will be created in the directory you specified as the \$directory variable.", + "help3" => "Tables vs. Views", + "help3_x" => "On the main database page, there is a list of tables and views. Since views are read-only, certain operations will be disabled. These disabled operations will be apparent by their omission in the location where they should appear on the row for a view. If you want to change the data for a view, you need to drop that view and create a new view with the appropriate SELECT statement that queries other existing tables. For more information, see http://en.wikipedia.org/wiki/View_(database)", + "help4" => "Writing a Select Statement for a New View", + "help4_x" => "When you create a new view, you must write an SQL SELECT statement that it will use as its data. A view is simply a read-only table that can be accessed and queried like a regular table, except it cannot be modified through insertion, column editing, or row editing. It is only used for conveniently fetching data.", + "help5" => "Export Structure to SQL File", + "help5_x" => "During the process for exporting to an SQL file, you may choose to include the queries that create the table and columns.", + "help6" => "Export Data to SQL File", + "help6_x" => "During the process for exporting to an SQL file, you may choose to include the queries that populate the table(s) with the current records of the table(s).", + "help7" => "Add Drop Table to Exported SQL File", + "help7_x" => "During the process for exporting to an SQL file, you may choose to include queries to DROP the existing tables before adding them so that problems do not occur when trying to create tables that already exist.", + "help8" => "Add Transaction to Exported SQL File", + "help8_x" => "During the process for exporting to an SQL file, you may choose to wrap the queries around a TRANSACTION so that if an error occurs at any time during the importation process using the exported file, the database can be reverted to its previous state, preventing partially updated data from populating the database.", + "help9" => "Add Comments to Exported SQL File", + "help9_x" => "During the process for exporting to an SQL file, you may choose to include comments that explain each step of the process so that a human can better understand what is happening.", + "help10" => "Partial Indexes", + "help10_x" => "Partial indexes are indexes over a subset of the rows of a table specified by a WHERE clause. Note this requires at least SQLite 3.8.0 and database files with partial indexes won't be readable or writable by older versions. See the SQLite documentation.", + "help11" => "Maximum size of file uploads", + "help11_x" => "The maximum size of file uploads is determined by three PHP settings: upload_max_filesize, post_max_size and memory_limit. The smallest of these three limits the maximum size for file uploads. To upload larger files, adjust these values in your php.ini file." + +); + +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +//there is no reason for the average user to edit anything below this comment +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +//- Initialization + +// load optional configuration file +$config_filename = './phpliteadmin.config.php'; +if (is_readable($config_filename)) +{ + include_once $config_filename; +} + +//constants 1 +define("PROJECT", "phpLiteAdmin"); +define("VERSION", "1.9.8.2"); +define("FORCETYPE", false); //force the extension that will be used (set to false in almost all circumstances except debugging) +define("SYSTEMPASSWORD", $password); // Makes things easier. +define('PROJECT_URL','https://www.phpliteadmin.org/'); +define('DONATE_URL','https://www.phpliteadmin.org/donate/'); +define('VERSION_CHECK_URL','https://www.phpliteadmin.org/current_version.php'); +define('PROJECT_BUGTRACKER_LINK','https://bitbucket.org/phpliteadmin/public/issues?status=new&status=open'); +define('PROJECT_INSTALL_LINK','https://bitbucket.org/phpliteadmin/public/wiki/Installation'); + +// up here, we don't output anything. debug output might appear here which is catched by ob and thrown later +ob_start(); + +// Resource output (css and javascript files) +// we get out of the main code as soon as possible, without inizializing the session +if (isset($_GET['resource'])) +{ + Resources::output($_GET['resource']); + exit(); +} + +// don't mess with this - required for the login session +ini_set('session.cookie_httponly', '1'); +session_start(); + +// version-number added so after updating, old session-data is not used anylonger +// cookies names cannot contain symbols, except underscores +define("COOKIENAME", preg_replace('/[^a-zA-Z0-9_]/', '_', $cookie_name . '_' . VERSION) ); + +$params = new GetParameters(); + +if($debug==true) +{ + ini_set("display_errors", 1); + error_reporting(E_STRICT | E_ALL); +} else +{ + @ini_set("display_errors", 0); +} + +// start the timer to record page load time +$pageTimer = new MicroTimer(); + +// load language file +if($language != 'en') { + $temp_lang=$lang; + if(is_file('languages/lang_'.$language.'.php')) + include('languages/lang_'.$language.'.php'); + elseif(is_file('lang_'.$language.'.php')) + include('lang_'.$language.'.php'); + $lang = array_merge($temp_lang, $lang); + unset($temp_lang); +} + +// stripslashes if MAGIC QUOTES is turned on +// This is only a workaround. Please better turn off magic quotes! +// This code is from http://php.net/manual/en/security.magicquotes.disabling.php +if (get_magic_quotes_gpc()) { + $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST); + while (list($key, $val) = each($process)) { + foreach ($val as $k => $v) { + unset($process[$key][$k]); + if (is_array($v)) { + $process[$key][stripslashes($k)] = $v; + $process[] = &$process[$key][stripslashes($k)]; + } else { + $process[$key][stripslashes($k)] = stripslashes($v); + } + } + } + unset($process); +} + + +//data types array +$sqlite_datatypes = array("INTEGER", "REAL", "TEXT", "BLOB","NUMERIC","BOOLEAN","DATETIME"); + +//available SQLite functions array (don't add anything here or there will be problems) +$sqlite_functions = array("abs", "hex", "length", "lower", "ltrim", "random", "round", "rtrim", "trim", "typeof", "upper"); + +//- Support functions + +// for php < 5.6.0 +if(!function_exists('hash_equals')) +{ + function hash_equals($str1, $str2) + { + if(strlen($str1) != strlen($str2)) + return false; + else { + $res = $str1 ^ $str2; + $ret = 0; + for($i = strlen($res) - 1; $i >= 0; $i--) + $ret |= ord($res[$i]); + return !$ret; + } + } +} + +//function that allows SQL delimiter to be ignored inside comments or strings +function explode_sql($delimiter, $sql) +{ + $ign = array('"' => '"', "'" => "'", "/*" => "*/", "--" => "\n"); // Ignore sequences. + $out = array(); + $last = 0; + $slen = strlen($sql); + $dlen = strlen($delimiter); + $i = 0; + while($i < $slen) + { + // Split on delimiter + if($slen - $i >= $dlen && substr($sql, $i, $dlen) == $delimiter) + { + array_push($out, substr($sql, $last, $i - $last)); + $last = $i + $dlen; + $i += $dlen; + continue; + } + // Eat comments and string literals + foreach($ign as $start => $end) + { + $ilen = strlen($start); + if($slen - $i >= $ilen && substr($sql, $i, $ilen) == $start) + { + $i+=strlen($start); + $elen = strlen($end); + while($i < $slen) + { + if($slen - $i >= $elen && substr($sql, $i, $elen) == $end) + { + // SQL comment characters can be escaped by doubling the character. This recognizes and skips those. + if($start == $end && $slen - $i >= $elen*2 && substr($sql, $i, $elen*2) == $end.$end) + { + $i += $elen * 2; + continue; + } + else + { + $i += $elen; + continue 3; + } + } + $i++; + } + continue 2; + } + } + $i++; + } + if($last < $slen) + array_push($out, substr($sql, $last, $slen - $last)); + return $out; +} + +//function to scan entire directory tree and subdirectories +function dir_tree($dir) +{ + $path = array(); + $stack = array($dir); + while($stack) + { + $thisdir = array_pop($stack); + if($dircont = scandir($thisdir)) + { + $i=0; + while(isset($dircont[$i])) + { + if($dircont[$i] !== '.' && $dircont[$i] !== '..') + { + $current_file = $thisdir.DIRECTORY_SEPARATOR.$dircont[$i]; + if(is_file($current_file)) + { + $path[] = $thisdir.DIRECTORY_SEPARATOR.$dircont[$i]; + } + elseif (is_dir($current_file)) + { + $path[] = $thisdir.DIRECTORY_SEPARATOR.$dircont[$i]; + $stack[] = $current_file; + } + } + $i++; + } + } + } + return $path; +} + +//the function echo the help [?] links to the documentation +function helpLink($name) +{ + global $lang; + return "[?]"; +} + +// function to encode value into HTML just like htmlentities, but with adjusted default settings +function htmlencode($value, $flags=ENT_QUOTES, $encoding ="UTF-8") +{ + return htmlentities($value, $flags, $encoding); +} + +// reduce string chars +function subString($str) +{ + global $charsNum, $params; + if($charsNum > 10 && (!isset($params->fulltexts) || !$params->fulltexts) && mb_strlen($str)>$charsNum) + { + $str = mb_substr($str, 0, $charsNum).'...'; + } + return $str; +} + +// marks searchwords and htmlencodes correctly +function markSearchWords($input, $field, $search) +{ + $output = htmlencode($input); + if(isset($search['values'][$field]) && is_array($search['values'][$field])) + { + // build one regex that matches (all) search words + $regex = '/'; + $vali=0; + foreach($search['values'][$field] as $searchValue) + { + if($search['operators'][$field] =='LIKE' || $search['operators'][$field] == 'LIKE%') + $regex .= '(?:'.($searchValue[0]=='%'?'':'^'); // does the searchvalue have to occur at the start? + $regex .= preg_quote(trim($searchValue,'%'),'/'); // the search value + if($search['operators'][$field] =='LIKE' || $search['operators'][$field] == 'LIKE%') + $regex .= (substr($searchValue,-1)=='%'?'':'$').')'; // does the searchvalue have to occur at the end? + if($vali++ $betweenPart) + { + $output .= htmlencode($betweenPart); // part that does not match (might be empty) + if(isset($fldFoundParts[0][$index])) + $output .= ''.htmlencode($fldFoundParts[0][$index]).''; // the part that matched + } + } + return $output; +} + +// checks the (new) name of a database file +function checkDbName($name) +{ + global $allowed_extensions; + $info = pathinfo($name); + if(isset($info['extension']) && !in_array($info['extension'], $allowed_extensions)) + { + return false; + } else + { + return (!is_file($name) && !is_dir($name)); + } + +} + +// check whether a path is a db managed by this tool +// requires that $databases is already filled! +// returns the key of the db if managed, false otherwise. +function isManagedDB($path) +{ + global $databases; + foreach($databases as $db_key => $database) + { + if($path === $database['path']) + { + // a db we manage. Thats okay. + // return the key. + return $db_key; + } + } + // not a db we manage! + return false; +} + +// from a typename of a colun, get the type of the column's affinty +// see https://www.sqlite.org/datatype3.html section 2.1 for rules +function get_type_affinity($type) +{ + if (preg_match("/INT/i", $type)) + return "INTEGER"; + else if (preg_match("/(?:CHAR|CLOB|TEXT)/i", $type)) + return "TEXT"; + else if (preg_match("/BLOB/i", $type) || $type=="") + return "NONE"; + else if (preg_match("/(?:REAL|FLOA|DOUB)/i", $type)) + return "REAL"; + else + return "NUMERIC"; +} + + +// Returns a file size limit in bytes based on the PHP upload_max_filesize +// post_max_size and memory_limit. Returns -1 in case of no limit. +function fileUploadMaxSize() +{ + $max1 = parseSize(ini_get('post_max_size')); + $max2 = parseSize(ini_get('upload_max_filesize')); + $max3 = parseSize(ini_get('memory_limit')); + if($max1>0 && ($max1<=$max2 || $max2==0) && ($max1<=$max3 || $max3==-1)) + return $max1; + elseif($max2>0 && ($max2<=$max1 || $max1==0) && ($max2<=$max3 || $max3==-1)) + return $max2; + elseif($max3>-1 && ($max3<=$max1 || $max1==0) && ($max3<=$max2 || $max2==0)) + return $max3; + else + return -1; // no limit +} + +// Parses given size string like "12M" into number of bytes +// based on https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Component%21Utility%21Bytes.php/function/Bytes%3A%3AtoInt/8.2.x +function parseSize($size) +{ + // Remove the non-unit characters from the size. + $unit = preg_replace('/[^bkmgtpezy]/i', '', $size); + // Remove the non-numeric characters from the size. + $size = preg_replace('/[^0-9\.]/', '', $size); + if ($unit) + { + // Find the position of the unit in the ordered string which is the power + // of magnitude to multiply a kilobyte by. + return round($size * pow(1024, stripos('bkmgtpezy', $unit[0]))); + } + else { + return round($size); + } +} + + +//- Check user authentication, login and logout +$auth = new Authorization(); //create authorization object + +// check if user has attempted to log out +if (isset($_GET['logout'])) + $auth->revoke(); +// check if user has attempted to log in +else if (isset($_POST['login']) && isset($_POST['password'])) +{ + $attempt = $auth->attemptGrant($_POST['password'], isset($_POST['remember'])); + $params->redirect( $attempt ? array():array('failed'=>'1') ); +} + +//- Actions on database files and bulk data +if ($auth->isAuthorized()) +{ + + //- Create a new database + if(isset($_POST['new_dbname'])) + { + if($_POST['new_dbname']=='') + $params->redirect(array('table'=>null), $lang['err'].': '.$lang['db_blank']); + else + { + $str = preg_replace('@[^\w\-.]@u','', $_POST['new_dbname']); + $dbname = $str; + $dbpath = $str; + if(checkDbName($dbname)) + { + $tdata = array(); + $tdata['name'] = $dbname; + $tdata['path'] = $directory.DIRECTORY_SEPARATOR.$dbpath; + if(isset($_POST['new_dbtype'])) + $tdata['type'] = $_POST['new_dbtype']; + else + $tdata['type'] = 3; + $td = new Database($tdata); + $td->query("VACUUM"); + } else + { + if(is_file($dbname) || is_dir($dbname)) + $params->redirect(array('view'=>'structure'),$lang['err'].': '.sprintf($lang['db_exists'], htmlencode($dbname))); + else + $params->redirect(array('view'=>'structure'),$lang['extension_not_allowed'].': '.implode(', ', array_map('htmlencode', $allowed_extensions)).'
'.$lang['add_allowed_extension']); + } + } + } + + //- Scan a directory for databases + if($directory!==false) + { + if($directory[strlen($directory)-1]==DIRECTORY_SEPARATOR) //if user has a trailing slash in the directory, remove it + $directory = substr($directory, 0, strlen($directory)-1); + + if(is_dir($directory)) //make sure the directory is valid + { + if($subdirectories===true) + $arr = dir_tree($directory); + else + $arr = scandir($directory); + $databases = array(); + $j = 0; + for($i=0; $i $database) + { + if($database['path'] === $tdata['path']) + { + $currentDB = $database; + $params->database = $database['path']; + break; + } + } + } + } + else //the directory is not valid - display error and exit + { + echo "
".$lang['not_dir']."
"; + exit(); + } + } + else + { + for($i=0; $idatabase = $databases[$db_key]['path']; + } + } + + //- Delete an existing database + if(isset($_GET['database_delete'])) + { + $dbpath = $_POST['database_delete']; + // check whether $dbpath really is a db we manage + $checkDB = isManagedDB($dbpath); + if($checkDB !== false) + { + unlink($dbpath); + unset($params->database); + unset($currentDB); + unset($databases[$checkDB]); + } else die($lang['err'].': '.$lang['delete_only_managed']); + } + + //- Rename an existing database + if(isset($_GET['database_rename'])) + { + $oldpath = $_POST['oldname']; + $newpath = $_POST['newname']; + $oldpath_parts = pathinfo($oldpath); + $newpath_parts = pathinfo($newpath); + // only rename? + $newpath = $oldpath_parts['dirname'].DIRECTORY_SEPARATOR.basename($_POST['newname']); + if($newpath != $_POST['newname'] && $subdirectories) + { + // it seems that the file should not only be renamed but additionally moved. + // we need to make sure it stays within $directory... + $new_realpath = realpath($newpath_parts['dirname']).DIRECTORY_SEPARATOR; + $directory_realpath = realpath($directory).DIRECTORY_SEPARATOR; + if(strpos($new_realpath, $directory_realpath)===0) + { + // its okay, the new directory is within $directory + $newpath = $_POST['newname']; + } + else $params->redirect(array('view'=>'rename'), $lang['err'].': '.$lang['db_moved_outside']); + } + + if(checkDbName($newpath)) + { + $checkDB = isManagedDB($oldpath); + if($checkDB !==false ) + { + rename($oldpath, $newpath); + $databases[$checkDB]['path'] = $newpath; + $databases[$checkDB]['name'] = basename($newpath); + $currentDB = $databases[$checkDB]; + $params->database = $databases[$checkDB]['path']; + $params->redirect(array('view'=>'rename'), sprintf($lang['db_renamed'], htmlencode($oldpath))." '".htmlencode($newpath)."'."); + } + else $params->redirect(array('view'=>'rename'), $lang['err'].': '.$lang['rename_only_managed']); + } + else + { + if(is_file($newpath) || is_dir($newpath)) + $params->redirect(array('view'=>'rename'), $lang['err'].": " . sprintf($lang['db_exists'], htmlencode($newpath))); + else + $params->redirect(array('view'=>'rename'), $lang['err'].": " . $lang['extension_not_allowed'].': '.implode(', ', array_map('htmlencode', $allowed_extensions)).'
'.$lang['add_allowed_extension']); + } + } + + + //- Export (download a dump) an existing database + if(isset($_POST['export'])) + { + ob_end_clean(); + $export_filename = str_replace(array("\r", "\n"), '',$_POST['filename']); // against http header injection (php < 5.1.2 only) + if($_POST['export_type']=="sql") + { + header('Content-Type: text/sql'); + header('Content-Disposition: attachment; filename="'.$export_filename.'.'.$_POST['export_type'].'";'); + if(isset($_POST['tables'])) + $tables = $_POST['tables']; + else + { + $tables = array(); + $tables[0] = $_POST['single_table']; + } + $drop = isset($_POST['drop']); + $structure = isset($_POST['structure']); + $data = isset($_POST['data']); + $transaction = isset($_POST['transaction']); + $comments = isset($_POST['comments']); + $db = new Database($currentDB); + echo $db->export_sql($tables, $drop, $structure, $data, $transaction, $comments); + } + else if($_POST['export_type']=="csv") + { + header("Content-type: application/csv"); + header('Content-Disposition: attachment; filename="'.$export_filename.'.'.$_POST['export_type'].'";'); + header("Pragma: no-cache"); + header("Expires: 0"); + if(isset($_POST['tables'])) + $tables = $_POST['tables']; + else + { + $tables = array(); + $tables[0] = $_POST['single_table']; + } + $field_terminate = $_POST['export_csv_fieldsterminated']; + $field_enclosed = $_POST['export_csv_fieldsenclosed']; + $field_escaped = $_POST['export_csv_fieldsescaped']; + $null = $_POST['export_csv_replacenull']; + $crlf = isset($_POST['export_csv_crlf']); + $fields_in_first_row = isset($_POST['export_csv_fieldnames']); + $db = new Database($currentDB); + echo $db->export_csv($tables, $field_terminate, $field_enclosed, $field_escaped, $null, $crlf, $fields_in_first_row); + } + exit(); + } + + //- Import a file into an existing database + if(isset($_POST['import'])) + { + $db = new Database($currentDB); + $db->registerUserFunction($custom_functions); + if($_POST['import_type']=="sql") + { + $data = file_get_contents($_FILES["file"]["tmp_name"]); + $importSuccess = $db->import_sql($data); + } + else + { + $field_terminate = $_POST['import_csv_fieldsterminated']; + $field_enclosed = $_POST['import_csv_fieldsenclosed']; + $field_escaped = $_POST['import_csv_fieldsescaped']; + $null = $_POST['import_csv_replacenull']; + $fields_in_first_row = isset($_POST['import_csv_fieldnames']); + if(isset($_POST['single_table']) && $_POST['single_table']!='') + $table = $_POST['single_table']; + else + { + $table = basename($_FILES["file"]["name"],".csv"); + $i=""; + while($db->getTypeOfTable($table.$i)!="") + { + if($i=="") + $i=2; + else + $i++; + } + $table = $table.$i; + } + $importSuccess = $db->import_csv($_FILES["file"]["tmp_name"], $table, $field_terminate, $field_enclosed, $field_escaped, $null, $fields_in_first_row); + } + } + //- Download (backup) a database file (as SQLite file, not as dump) + if(isset($_GET['download']) && isManagedDB($_GET['download'])!==false) + { + ob_end_clean(); + header("Content-type: application/octet-stream"); + header('Content-Disposition: attachment; filename="'.basename($_GET['download']).'";'); + header("Pragma: no-cache"); + header("Expires: 0"); + readfile($_GET['download']); + exit; + } + + //- Select database (from session or first available) + if(!isset($currentDB) && count($databases)>0) + { + //set the current database to the first existing one in the array (default) + $currentDB = reset($databases); + $params->database = $currentDB['path']; + } + + if(isset($currentDB)) + { + //- Open database (creates a Database object) + $db = new Database($currentDB); //create the Database object + $db->registerUserFunction($custom_functions); + } + + // collect parameters early, just once + $target_table = isset($_GET['table']) ? $_GET['table'] : null; + // are we working on a view? let's check once here + $target_table_type = !is_null($target_table) ? $db->getTypeOfTable($target_table) : null; + if(is_null($target_table_type) && !is_null($target_table)) + $params->redirect(array('table'=>null), $lang['err'].': '.sprintf($lang['tbl_inexistent'], htmlencode($target_table))); + $params->table = $target_table; + + // initialize / change fulltexts and numrows parameter + if(isset($_GET['fulltexts'])) + $params->fulltexts = ($_GET['fulltexts'] ? 1 : 0); + else + $params->fulltexts = 0; + + if(isset($_GET['numRows']) && intval($_GET['numRows'])>0) + $params->numRows = intval($_GET['numRows']); + else + $params->numRows = $rowsNum; + + //- Switch on $_GET['action'] for operations without output + if(isset($_GET['action']) && isset($_GET['confirm'])) + { + switch($_GET['action']) + { + //- Table actions + + //- Create table (=table_create) + case "table_create": + $num = intval($_POST['rows']); + $name = $_POST['tablename']; + $primary_keys = array(); + for($i=0; $i<$num; $i++) + { + if($_POST[$i.'_field']!="" && isset($_POST[$i.'_primarykey'])) + { + $primary_keys[] = $_POST[$i.'_field']; + } + } + $query = "CREATE TABLE ".$db->quote($name)." ("; + for($i=0; $i<$num; $i++) + { + if($_POST[$i.'_field']!="") + { + $query .= $db->quote($_POST[$i.'_field'])." "; + $query .= $_POST[$i.'_type']." "; + if(isset($_POST[$i.'_primarykey'])) + { + if(count($primary_keys)==1) + { + $query .= "PRIMARY KEY "; + if(isset($_POST[$i.'_autoincrement']) && $db->getType() != "SQLiteDatabase") + $query .= "AUTOINCREMENT "; + } + $query .= "NOT NULL "; + } + if(!isset($_POST[$i.'_primarykey']) && isset($_POST[$i.'_notnull'])) + $query .= "NOT NULL "; + if($_POST[$i.'_defaultoption']!='defined' && $_POST[$i.'_defaultoption']!='none' && $_POST[$i.'_defaultoption']!='expr') + $query .= "DEFAULT ".$_POST[$i.'_defaultoption']." "; + elseif($_POST[$i.'_defaultoption']=='expr') + $query .= "DEFAULT (".$_POST[$i.'_defaultvalue'].") "; + elseif(isset($_POST[$i.'_defaultvalue']) && $_POST[$i.'_defaultoption']=='defined') + { + $typeAffinity = get_type_affinity($_POST[$i.'_type']); + if(($typeAffinity=="INTEGER" || $typeAffinity=="REAL" || $typeAffinity=="NUMERIC") && is_numeric($_POST[$i.'_defaultvalue'])) + $query .= "DEFAULT ".$_POST[$i.'_defaultvalue']." "; + else + $query .= "DEFAULT ".$db->quote($_POST[$i.'_defaultvalue'])." "; + } + $query = substr($query, 0, -1); + $query .= ", "; + } + } + if (count($primary_keys)>1) + { + $compound_key = ""; + foreach ($primary_keys as $primary_key) + { + $compound_key .= ($compound_key=="" ? "" : ", ") . $db->quote($primary_key); + } + $query .= "PRIMARY KEY (".$compound_key."), "; + } + $query = substr($query, 0, -2); + $query .= ")"; + $result = $db->query($query); + if($result === false) + $completed = $db->getError(true); + else + $completed = $lang['tbl']." '".htmlencode($_POST['tablename'])."' ".$lang['created'].".
".htmlencode($query).""; + $params->redirect(($result===false ? array() : array('action'=>'column_view', 'table'=>$name) ), $completed); + break; + + //- Empty table (=table_empty) + case "table_empty": + $query1 = "DELETE FROM ".$db->quote_id($_GET['table']).";"; + $result1 = $db->query($query1); + if($result1 === false) + $completed = $db->getError(true); + if(isset($_POST['vacuum']) && $_POST['vacuum']) + { + $query2 = "VACUUM;"; + $result2 = $db->query($query2); + } + else + $query2 = ""; + if($result1 !== false) + $completed = $lang['tbl']." '".htmlencode($_GET['table'])."' ".$lang['emptied'].".
".htmlencode($query1)."
".htmlencode($query2)."
"; + $params->redirect(($result1===false ? array() : array('action'=>'row_view') ), $completed); + break; + + //- Create view (=view_create) + case "view_create": + $query = "CREATE VIEW ".$db->quote($_POST['viewname'])." AS ".$_POST['select']; + $result = $db->query($query); + if($result === false) + $completed = $db->getError(true); + else + $completed = $lang['view']." '".htmlencode($_POST['viewname'])."' ".$lang['created'].".
".htmlencode($query).""; + $params->redirect(($result===false ? array() : array('action'=>'column_view', 'table'=>$_POST['viewname']) ), $completed); + break; + + //- Drop table (=table_drop) + case "table_drop": + $query1 = "DROP TABLE ".$db->quote_id($_GET['table']).";"; + $result1=$db->query($query1); + if($result1 === false) + $completed = $db->getError(true); + if(isset($_POST['vacuum']) && $_POST['vacuum']) + { + $query2 = "VACUUM;"; + $result2 = $db->query($query2); + } + else + $query2 = ""; + if($result1 !== false) + { + $target_table = null; + $completed = $lang['tbl']." '".htmlencode($_GET['table'])."' ".$lang['dropped'].".
".htmlencode($query1)."
".htmlencode($query2)."
";; + } + $params->redirect(array('table'=>null), $completed); + break; + + //- Drop view (=view_drop) + case "view_drop": + $query = "DROP VIEW ".$db->quote_id($_POST['viewname']); + $result=$db->query($query); + if($result === false) + $completed = $db->getError(true); + else + $completed = $lang['view']." '".htmlencode($_POST['viewname'])."' ".$lang['dropped'].".
".htmlencode($query).""; + $params->redirect(array('table'=>null), $completed); + break; + + //- Rename table (=table_rename) + case "table_rename": + $query = "ALTER TABLE ".$db->quote_id($_GET['table'])." RENAME TO ".$db->quote($_POST['newname']); + $type = $db->getTypeOfTable($_GET['table']); + if($db->getVersion()==3 && $type=='table' // SQLite 3 can rename tables, not views + // In SQL(ite) table names are case-insensitve, so changing is not supported by SQLite. + // But table names are stored and displayed case sensitive, so we use the workaround for case sensitive renaming. + && !($_GET['table'] !== $_POST['newname'] && strtolower($_GET['table']) === strtolower($_POST['newname'])) + ) + $result = $db->query($query, true); + else + // Workaround can rename tables of sqlite2 and views of both sqlite versions. Can also do case sensitive renames. + $result = $db->query($query, false); + if($result === false) + $completed = $db->getError(true); + else + { + $completed = $lang['tbl']." '".htmlencode($_GET['table'])."' ".$lang['renamed']." '".htmlencode($_POST['newname'])."'.
".htmlencode($query).""; + $target_table = $_POST['newname']; + } + $params->redirect(array('action'=>'row_view', 'table'=>$_POST['newname']), $completed); + break; + + //- Search table (=table_search) + case "table_search": + $searchValues = array(); + $searchOperators = array(); + + $tableInfo = $db->getTableInfo($target_table); + $j = 0; + $whereExpr = array(); + for($i=0; $iquote_id($field)." ".$operator; + else{ + if($operator == "LIKE%"){ + $operator = "LIKE"; + if(!preg_match('/(^%)|(%$)/', $value)) $value = '%'.$value.'%'; + $searchValues[$field] = array($value); + $valueQuoted = $db->quote($value); + } + elseif($operator == 'IN' || $operator == 'NOT IN') + { + $value = trim($value, '() '); + $values = explode(',',$value); + $values = array_map('trim', $values, array_fill(0,count($values),' \'"')); + if($operator == 'IN') + $searchValues[$field] = $values; + $values = array_map(array($db, 'quote'), $values); + $valueQuoted = '(' .implode(', ', $values) . ')'; + } + else + { + $searchValues[$field] = array($value); + $valueQuoted = $db->quote($value); + } + $whereExpr[$j] = $db->quote_id($field)." ".$operator." ".$valueQuoted; + } + $j++; + } + } + $searchWhere = ''; + if(sizeof($whereExpr)>0) + { + $searchWhere .= " WHERE ".$whereExpr[0]; + for($i=1; $i $searchWhere, + 'values' => $searchValues, + 'operators' => $searchOperators + ); + $params->redirect(array('action'=>'table_search','search'=>$searchID)); + break; + + //- Row actions + + //- Create row (=row_create) + case "row_create": + $completed = ""; + $num = $_POST['newRows']; + $z = 0; + $error = false; + + $tableInfo = $db->getTableInfo($target_table); + + for($i=0; $i<$num; $i++) + { + if(!isset($_POST[$i.":ignore"])) + { + $query_cols = ""; + $query_vals = ""; + $all_default = true; + for($j=0; $jquote_id($tableInfo[$j]['name']).","; + + $function = $_POST["function_".$j][$i]; + if($function!="") + $query_vals .= $function."("; + if(preg_match('/^BLOB/', $type)) + $query_vals .= ':blobval'.$j; + elseif(($typeAffinity=="TEXT" || $typeAffinity=="NONE") && !$null) + $query_vals .= $db->quote($value); + elseif(($typeAffinity=="INTEGER" || $typeAffinity=="REAL"|| $typeAffinity=="NUMERIC") && $value=="") + $query_vals .= "NULL"; + elseif($null) + $query_vals .= "NULL"; + else + $query_vals .= $db->quote($value); + if($function!="") + $query_vals .= ")"; + $query_vals .= ","; + } + $query = "INSERT INTO ".$db->quote_id($target_table); + if(!$all_default) + { + $query_cols = substr($query_cols, 0, strlen($query_cols)-1); + $query_vals = substr($query_vals, 0, strlen($query_vals)-1); + + $query.=" (". $query_cols . ") VALUES (". $query_vals. ")"; + } else { + $query .= " DEFAULT VALUES"; + } + if(isset($blobFiles)) + { + // blob files need to be done using a prepared statement because the query size would be too large + $handle = $db->prepareQuery($query); + foreach($blobFiles as $j=>$filename) + $db->bindValue($handle, ':blobval'.$j, file_get_contents($filename), 'blob'); + + $result1 = $db->executePrepared($handle, false); + } + else + $result1 = $db->query($query); + if($result1===false) + $error = true; + $completed .= "".htmlencode($query)."
"; + $z++; + } + } + if($error) + $completed = $db->getError(true); + else + $completed = $z." ".$lang['rows']." ".$lang['inserted'].".

".$completed; + $params->redirect(array('action'=>'row_view'), $completed); + break; + + //- Delete row (=row_delete) + case "row_delete": + $pks = json_decode($_GET['pk']); + + $query = "DELETE FROM ".$db->quote_id($target_table)." WHERE (".$db->wherePK($target_table,json_decode($pks[0])).")"; + for($i=1; $iwherePK($target_table,json_decode($pks[$i])).")"; + } + $result = $db->query($query); + if($result === false) + $completed = $db->getError(true); + else + $completed = sizeof($pks)." ".$lang['rows']." ".$lang['deleted'].".
".htmlencode($query).""; + $params->redirect(array('action'=>'row_view'), $completed); + break; + + //- Edit row (=row_edit) + case "row_edit": + $pks = json_decode($_GET['pk']); + $z = 0; + + $tableInfo = $db->getTableInfo($target_table); + + if(isset($_POST['new_row'])) + $completed = ""; + else + $completed = sizeof($pks)." ".$lang['rows']." ".$lang['affected'].".

"; + + for($i=0; $iquote_id($tableInfo[$j]['name']).' AS \'blob\' FROM '.$db->quote_id($target_table).' WHERE '.$db->wherePK($target_table, json_decode($pks[$i])); + $bl = $db->select($select); + $blobFiles[$j] = $bl['blob']; + unset($bl); + } + else + { + if($_FILES[$i.":".$j]["error"] == UPLOAD_ERR_OK && is_file($_FILES[$i.":".$j]["tmp_name"])) + $blobFiles[$j] = file_get_contents($_FILES[$i.":".$j]["tmp_name"]); + else + $blobFiles[$j] = null; + } + } + else + $value = $_POST[$j][$i]; + } + else + $value = ""; + if(!preg_match('/^BLOB/', $type) && $value===$tableInfo[$j]['dflt_value']) + { + // if the value is the default value, skip it + continue; + } + $all_default = false; + $query_cols .= $db->quote_id($tableInfo[$j]['name']).","; + + $function = $_POST["function_".$j][$i]; + if($function!="") + $query_vals .= $function."("; + + if(preg_match('/^BLOB/', $type)) + $query_vals .= ':blobval'.$j; + elseif(($typeAffinity=="TEXT" || $typeAffinity=="NONE") && !$null) + $query_vals .= $db->quote($value); + elseif(($typeAffinity=="INTEGER" || $typeAffinity=="REAL"|| $typeAffinity=="NUMERIC") && $value=="") + $query_vals .= "NULL"; + elseif($null) + $query_vals .= "NULL"; + else + $query_vals .= $db->quote($value); + if($function!="") + $query_vals .= ")"; + $query_vals .= ","; + } + $query = "INSERT INTO ".$db->quote_id($target_table); + if(!$all_default) + { + $query_cols = substr($query_cols, 0, strlen($query_cols)-1); + $query_vals = substr($query_vals, 0, strlen($query_vals)-1); + + $query.=" (". $query_cols . ") VALUES (". $query_vals. ")"; + } else { + $query .= " DEFAULT VALUES"; + } + + if(isset($blobFiles)) + { + // blob files need to be done using a prepared statement because the query size would be too large + $handle = $db->prepareQuery($query); + foreach($blobFiles as $j=>$blobval) + $db->bindValue($handle, ':blobval'.$j, $blobval, 'blob'); + + $result1 = $db->executePrepared($handle, false); + } + else + $result1 = $db->query($query); + if($result1===false) + $error = true; + $z++; + } + else + { + $query = "UPDATE ".$db->quote_id($target_table)." SET "; + for($j=0; $jquote_id($tableInfo[$j]['name'])."="; + if($function!="") + $query .= $function."("; + if($null) + $query .= "NULL"; + else + { + if(preg_match('/^BLOB/', $type)) + $query .= ':blobval'.$j; + else + $query .= $db->quote($_POST[$j][$i]); + } + if($function!="") + $query .= ")"; + $query .= ", "; + } + $query = substr($query, 0, -2); + $query .= " WHERE ".$db->wherePK($target_table, json_decode($pks[$i])); + if(isset($blobFiles)) + { + // blob files need to be done using a prepared statement because the query size would be too large + $handle = $db->prepareQuery($query); + foreach($blobFiles as $j=>$filename) + $db->bindValue($handle, ':blobval'.$j, file_get_contents($filename), 'blob'); + + $result1 = $db->executePrepared($handle, false); + } + else + $result1 = $db->query($query); + if($result1===false) + { + $error = true; + } + } + $completed .= "".htmlencode($query)."
"; + } + if($error) + $completed = $db->getError(true); + elseif(isset($_POST['new_row'])) + $completed = $z." ".$lang['rows']." ".$lang['inserted'].".

".$completed; + $params->redirect(array('action'=>'row_view'), $completed); + break; + + + case "row_get_blob": + $blobVal = $db->select("SELECT ".$db->quote_id($_GET['column'])." AS 'blob' FROM ".$db->quote_id($target_table)." WHERE ".$db->wherePK($target_table, json_decode($_GET['pk']))); + $filename = 'download'; + if(function_exists('getimagesizefromstring')) // introduced in PHP 5.4.0 + $imagesize = getimagesizefromstring($blobVal['blob']); + if(isset($imagesize) && $imagesize!==false && isset($imagesize['mime'])) + $mimetype = $imagesize['mime']; + elseif(class_exists('finfo')) // included since php 5.3.0, but might be disabled on Windows + { + $finfo = new finfo(FILEINFO_MIME); + $mimetype = $finfo->buffer($blobVal['blob']); + } + else + $mimetype = "application/octet-stream"; + + if(isset($imagesize) && $imagesize!==false && isset($imagesize[2])) + $extension = image_type_to_extension($imagesize[2]); + else + $extension = '.blob'; + ob_end_clean(); + header('Content-Length: '.strlen($blobVal['blob'])); + header("Content-type: ".$mimetype); + if(isset($_GET['download_blob']) && $_GET['download_blob']) + header('Content-Disposition: attachment; filename="'.$filename.$extension.'";'); + header("Pragma: no-cache"); + header("Expires: 0"); + echo $blobVal['blob']; + exit; + break; + + + //- Column actions + + //- Create column (=column_create) + case "column_create": + $num = intval($_POST['rows']); + for($i=0; $i<$num; $i++) + { + if($_POST[$i.'_field']!="") + { + $query = "ALTER TABLE ".$db->quote_id($target_table)." ADD ".$db->quote($_POST[$i.'_field'])." "; + $query .= $_POST[$i.'_type']." "; + if(isset($_POST[$i.'_primarykey'])) + $query .= "PRIMARY KEY "; + if(isset($_POST[$i.'_notnull'])) + $query .= "NOT NULL "; + if($_POST[$i.'_defaultoption']!='defined' && $_POST[$i.'_defaultoption']!='none' && $_POST[$i.'_defaultoption']!='expr') + $query .= "DEFAULT ".$_POST[$i.'_defaultoption']." "; + elseif($_POST[$i.'_defaultoption']=='expr') + $query .= "DEFAULT (".$_POST[$i.'_defaultvalue'].") "; + elseif(isset($_POST[$i.'_defaultvalue']) && $_POST[$i.'_defaultoption']=='defined') + { + $typeAffinity = get_type_affinity($_POST[$i.'_type']); + if(($typeAffinity=="INTEGER" || $typeAffinity=="REAL" || $typeAffinity=="NUMERIC") && is_numeric($_POST[$i.'_defaultvalue'])) + $query .= "DEFAULT ".$_POST[$i.'_defaultvalue']." "; + else + $query .= "DEFAULT ".$db->quote($_POST[$i.'_defaultvalue'])." "; + } + if($db->getVersion()==3 && + ($_POST[$i.'_defaultoption']=='defined' || $_POST[$i.'_defaultoption']=='none' || $_POST[$i.'_defaultoption']=='NULL') + // Sqlite3 cannot add columns with default values that are not constant + && !isset($_POST[$i.'_primarykey']) + // sqlite3 cannot add primary key columns + && (!isset($_POST[$i.'_notnull']) || $_POST[$i.'_defaultoption']!='none') + // SQLite3 cannot add NOT NULL columns without DEFAULT even if the table is empty + ) + // use SQLITE3 ALTER TABLE ADD COLUMN + $result = $db->query($query, true); + else + // use ALTER TABLE workaround + $result = $db->query($query, false); + if($result===false) + $error = true; + } + } + if($error) + $completed = $db->getError(true); + else + $completed = $lang['tbl']." '".htmlencode($target_table)."' ".$lang['altered']."."; + $params->redirect(array('action'=>'column_view'), $completed); + break; + + //- Delete column (=column_delete) + case "column_delete": + $pks = explode(":", $_GET['pk']); + $query = "ALTER TABLE ".$db->quote_id($target_table).' DROP '.$db->quote_id($pks[0]); + for($i=1; $iquote_id($pks[$i]); + } + $result = $db->query($query); + if($result === false) + $completed = $db->getError(true); + else + $completed = $lang['tbl']." '".htmlencode($target_table)."' ".$lang['altered']."."; + $params->redirect(array('action'=>'column_view'), $completed); + break; + + //- Add a primary key (=primarykey_add) + case "primarykey_add": + $pks = explode(":", $_GET['pk']); + $query = "ALTER TABLE ".$db->quote_id($target_table).' ADD PRIMARY KEY ('.$db->quote_id($pks[0]); + for($i=1; $iquote_id($pks[$i]); + } + $query .= ")"; + $result = $db->query($query); + if($result === false) + $completed = $db->getError(true); + else + $completed = $lang['tbl']." '".htmlencode($target_table)."' ".$lang['altered']."."; + $params->redirect(array('action'=>'column_view'), $completed); + break; + + //- Edit column (=column_edit) + case "column_edit": + $query = "ALTER TABLE ".$db->quote_id($target_table).' CHANGE '.$db->quote_id($_POST['oldvalue'])." ".$db->quote($_POST['0_field'])." ".$_POST['0_type']; + $result = $db->query($query); + if($result === false) + $completed = $db->getError(true); + else + $completed = $lang['tbl']." '".htmlencode($target_table)."' ".$lang['altered']."."; + $params->redirect(array('action'=>'column_view'), $completed); + break; + + //- Delete trigger (=trigger_delete) + case "trigger_delete": + $query = "DROP TRIGGER ".$db->quote_id($_GET['pk']); + $result = $db->query($query); + if($result === false) + $completed = $db->getError(true); + else + $completed = $lang['trigger']." '".htmlencode($_GET['pk'])."' ".$lang['deleted'].".
".htmlencode($query).""; + $params->redirect(array('action'=>'column_view'), $completed); + break; + + //- Delete index (=index_delete) + case "index_delete": + $query = "DROP INDEX ".$db->quote_id($_GET['pk']); + $result = $db->query($query); + if($result === false) + $completed = $db->getError(true); + else + $completed = $lang['index']." '".htmlencode($_GET['pk'])."' ".$lang['deleted'].".
".htmlencode($query).""; + $params->redirect(array('action'=>'column_view'), $completed); + break; + + //- Create trigger (=trigger_create) + case "trigger_create": + $str = "CREATE TRIGGER ".$db->quote($_POST['trigger_name']); + if($_POST['beforeafter']!="") + $str .= " ".$_POST['beforeafter']; + $str .= " ".$_POST['event']." ON ".$db->quote_id($target_table); + if(isset($_POST['foreachrow'])) + $str .= " FOR EACH ROW"; + if($_POST['whenexpression']!="") + $str .= " WHEN ".$_POST['whenexpression']; + $str .= " BEGIN"; + $str .= " ".$_POST['triggersteps']; + $str .= " END"; + $query = $str; + $result = $db->query($query); + if($result === false) + $completed = $db->getError(true); + else + $completed = $lang['trigger']." ".$lang['created'].".
".htmlencode($query).""; + $params->redirect(array('action'=>'column_view'), $completed); + break; + + //- Create index (=index_create) + case "index_create": + $num = $_POST['num']; + if($_POST['name']=="") + { + $completed = $lang['blank_index']; + } + else if($_POST['0_field']=="") + { + $completed = $lang['one_index']; + } + else + { + $str = "CREATE "; + if($_POST['duplicate']=="no") + $str .= "UNIQUE "; + $str .= "INDEX ".$db->quote($_POST['name'])." ON ".$db->quote_id($target_table)." ("; + $str .= $db->quote_id($_POST['0_field']).$_POST['0_order']; + for($i=1; $i<$num; $i++) + { + if($_POST[$i.'_field']!="") + $str .= ", ".$db->quote_id($_POST[$i.'_field']).$_POST[$i.'_order']; + } + $str .= ")"; + if(isset($_POST['where']) && $_POST['where']!='') + $str.=" WHERE ".$_POST['where']; + $query = $str; + $result = $db->query($query); + if($result === false) + $completed = $db->getError(true); + else + $completed = $lang['index']." ".$lang['created'].".
".htmlencode($query).""; + } + $params->redirect(array('action'=>'column_view'), $completed); + break; + } + } +} + +// if not in debug mode, destroy all output until here +if($debug) + $bufferedOutput = ob_get_contents(); +ob_end_clean(); + +//- HTML: output starts here +header('Content-Type: text/html; charset=utf-8'); +?> + + + + + + +<?php echo PROJECT ?> + +", PHP_EOL; +else + // only use the default stylesheet if an external one does not exist + echo "", PHP_EOL; + +// HTML: output help text, then exit +if(isset($_GET['help'])) +{ + //help section array + $help = array($lang['help1'] => sprintf($lang['help1_x'], PROJECT, PROJECT, PROJECT)); + for($i=2; isset($lang['help'.$i]); $i++) + $help[$lang['help'.$i]]=$lang['help'.$i.'_x']; + ?> + + +
+ "; + echo "".PROJECT." v".VERSION." ".$lang['help_doc']."

"; + foreach((array)$help as $key => $val) + { + echo "".$key."
"; + } + echo "
"; + echo "

"; + foreach((array)$help as $key => $val) + { + echo "
"; + echo "".$key.""; + echo "
"; + echo $val; + echo "
"; + echo "".$lang['back_top'].""; + echo "
"; + } + ?> + + + + isAuthorized()) +{ + //- Javascript include + ?> + + + + + + + + + + + + + + +".$lang['bad_php_directive'].""; + echo ""; + exit(); +} + +//- HTML: login screen if not authorized, exit +if(!$auth->isAuthorized()) +{ + echo "
"; + echo "

v".VERSION."

"; + echo "
"; + if (isset($_GET['failed'])) + echo "".$lang['passwd_incorrect']."

"; + echo $params->getForm(); + echo $lang['passwd'].":
"; + echo "

"; + echo ""; + echo ""; + echo ""; + echo "
"; + echo "
"; + echo "
"; + echo "
"; + echo "".$lang['powered']." ".PROJECT." | "; + printf($lang['page_gen'], $pageTimer); + echo "
"; + echo ""; + exit(); +} + +//- User is authorized, display the main application + +if(count($databases)==0) // the database array is empty, offer to create a new database +{ + //- HTML: form to create a new database, exit + if($directory!==false && is_writable($directory)) + { + echo "
"; + printf($lang['no_db'], PROJECT, PROJECT); + echo "
"; + //if the user has performed some action, show the resulting message + if(isset($_GET['message']) && isset($_SESSION[COOKIENAME.'messages'][$_GET['message']])) + { + echo "
"; + echo $_SESSION[COOKIENAME.'messages'][$_GET['message']]; + echo "

"; + unset($_SESSION[COOKIENAME.'messages'][$_GET['message']]); + } + echo "
".$lang['db_create'].""; + echo $params->getForm(array('table'=>null), 'post', false, 'create_database'); + echo " "; + if(class_exists('SQLiteDatabase') && (class_exists('SQLite3') || class_exists('PDO'))) + { + echo ""; + } + echo ""; + echo ""; + echo "
"; + } + elseif(($directory!==false && !is_executable($directory))) + { + echo "
"; + echo $lang['err'].": ".sprintf($lang['dir_not_executable'], PROJECT, $directory); + echo "

"; + } + else + { + echo "
"; + echo $lang['err'].": ".sprintf($lang['no_db2'], PROJECT); + echo "

"; + } + exit(); +} + +//- HTML: sidebar +echo '
'; +echo "
"; +echo "

"; +echo " v".VERSION.""; +echo "

"; +echo ""; + +//- HTML: database list +$db->print_db_list(); +echo "
"; +echo "null))."'"; +if (!$target_table) + echo " class='active_table'"; +$name = $currentDB['name']; +if(strlen($name)>25) + $name = "...".substr($name, strlen($name)-22, 22); +echo ">".htmlencode($name).""; +echo ""; + +//- HTML: table list +$tables = $db->getTables(true, false); +foreach($tables as $tableName => $tableType) +{ + echo ""; + echo $params->getLink(array('action'=>'column_view', 'table'=>$tableName), "[".$lang[$tableType=='table'?'tbl':'view']."]"); + echo " "; + echo $params->getLink(array('action'=>'row_view', 'table'=>$tableName), htmlencode($tableName), + ($target_table == $tableName ? 'active_table' : '') ); + echo "
"; +} +if(count($tables)==0) + echo $lang['no_tbl']; +echo "
"; + +//- HTML: form to create a new database +if($directory!==false && is_writable($directory)) +{ + echo "
".$lang['db_create']." ".helpLink($lang['help2']).""; + echo $params->getForm(array('table'=>null), 'post', false, 'create_database'); + echo ""; + if(class_exists('SQLiteDatabase') && (class_exists('SQLite3') || class_exists('PDO'))) + { + echo ""; + } + echo ""; + echo ""; + echo "
"; +} + +echo "
"; +echo $params->getForm(array(),'get'); +echo ""; +echo ""; +echo "
"; +echo "
"; +echo '
'; + +//- HTML: breadcrumb navigation +echo $params->getLink(array('table'=>null), htmlencode($currentDB['name'])); +if ($target_table) + echo " → ".$params->getLink(array('action'=>'row_view'), htmlencode($target_table)); +echo "

"; + +//- Show the various tab views for a table +if($target_table) +{ + //- HTML: tabs + echo $params->getLink(array('action'=>'row_view'), $lang['browse'], + (in_array($_GET['action'], array('row_view', 'row_editordelete') ) ? 'tab_pressed' : 'tab')); + + echo $params->getLink(array('action'=>'column_view'), $lang['struct'], + (in_array($_GET['action'], array('column_view', 'column_edit', 'column_confirm', 'primarykey_add', 'column_create', 'index_create', 'index_delete', 'trigger_create', 'trigger_delete') ) ? 'tab_pressed' : 'tab')); + + echo $params->getLink(array('action'=>'table_sql'), $lang['sql'], + ($_GET['action']=="table_sql" ? 'tab_pressed' : 'tab')); + + echo $params->getLink(array( + 'action' => 'table_search', + 'oldSearch' => (isset($_GET['search'])?$_GET['search']:null) + ), $lang['srch'], ($_GET['action']=="table_search" ? 'tab_pressed' : 'tab')); + + if($target_table_type == 'table' && $db->isWritable() && $db->isDirWritable()) + echo $params->getLink(array('action'=>'row_create'), $lang['insert'], + ($_GET['action']=="row_create" ? 'tab_pressed' : 'tab')); + + echo $params->getLink(array('action'=>'table_export'), $lang['export'], + ($_GET['action']=="table_export" ? 'tab_pressed' : 'tab')); + + if($target_table_type == 'table' && $db->isWritable() && $db->isDirWritable()) + echo $params->getLink(array('action'=>'table_import'), $lang['import'], + ($_GET['action']=="table_import" ? 'tab_pressed' : 'tab')); + + if($db->isWritable() && $db->isDirWritable()) + echo $params->getLink(array('action'=>'table_rename'), $lang['rename'], + ($_GET['action']=="table_rename" ? 'tab_pressed' : 'tab')); + + if($target_table_type == 'table' && $db->isWritable() && $db->isDirWritable()) + { + echo $params->getLink(array('action'=>'table_empty'), $lang['empty'], + ($_GET['action']=="table_empty" ? 'tab_pressed empty' : 'tab empty')); + + echo $params->getLink(array('action'=>'table_drop'), $lang['drop'], + ($_GET['action']=="table_drop" ? 'tab_pressed drop' : 'tab drop')); + } elseif($db->isWritable() && $db->isDirWritable()) { + echo $params->getLink(array('action'=>'view_drop'), $lang['drop'], + ($_GET['action']=="view_drop" ? 'tab_pressed drop' : 'tab drop')); + } +} +else +//- Show the various tab views for a database +{ + $view = isset($_GET['view']) ? $_GET['view'] : 'structure'; + + echo $params->getLink(array('view'=>'structure'), $lang['struct'], ($view=="structure" ? 'tab_pressed': 'tab') ); + + echo $params->getLink(array('view'=>'sql'), $lang['sql'], ($view=="sql" ? 'tab_pressed': 'tab') ); + + echo $params->getLink(array('view'=>'export'), $lang['export'], ($view=="export" ? 'tab_pressed': 'tab') ); + + if($db->isWritable() && $db->isDirWritable()) + echo $params->getLink(array('view'=>'import'), $lang['import'], ($view=="import" ? 'tab_pressed': 'tab') ); + + if($db->isWritable() && $db->isDirWritable()) + echo $params->getLink(array('view'=>'vacuum'), $lang['vac'], ($view=="vacuum" ? 'tab_pressed': 'tab') ); + + if($directory!==false && is_writable($directory)) + { + + echo $params->getLink(array('view'=>'rename'), $lang['db_rename'], ($view=="rename" ? 'tab_pressed': 'tab') ); + + echo $params->getLink(array('view'=>'delete'), "".$lang['db_del']."", ($view=="delete" ? 'tab_pressed delete_db': 'tab delete_db') ); + } +} + +echo "
"; +echo "
"; + +//- HTML: confirmation panel +//if the user has performed some action, show the resulting message +if(isset($_GET['message']) && isset($_SESSION[COOKIENAME.'messages'][$_GET['message']])) +{ + echo "
"; + echo $_SESSION[COOKIENAME.'messages'][$_GET['message']]; + echo "

"; + unset($_SESSION[COOKIENAME.'messages'][$_GET['message']]); +} + + +//- Switch on $_GET['action'] for operations with output +if(isset($_GET['action']) && !isset($_GET['confirm'])) +{ + switch($_GET['action']) + { + //- Table actions + + //- Create table (=table_create) + case "table_create": + $query = "SELECT name FROM sqlite_master WHERE type='table' AND name=".$db->quote($_GET['tablename']); + $results = $db->selectArray($query); + if(sizeof($results)>0) + $exists = true; + else + $exists = false; + echo "

".$lang['create_tbl'].": '".htmlencode($_GET['tablename'])."'

"; + if($_GET['tablefields']=="" || intval($_GET['tablefields'])<=0) + echo $lang['specify_fields']; + else if($_GET['tablename']=="") + echo $lang['specify_tbl']; + else if($exists) + echo $lang['tbl_exists']; + else + { + $num = intval($_GET['tablefields']); + $name = $_GET['tablename']; + echo $params->getForm(array('action'=>'table_create', 'confirm'=>'1')); + echo ""; + echo ""; + echo ""; + echo ""; + $headings = array($lang['fld'], $lang['type'], $lang['prim_key']); + if($db->getType() != "SQLiteDatabase") $headings[] = $lang['autoincrement']; + $headings[] = $lang['not_null']; + $headings[] = $lang['def_val']; + for($k=0; $k" . $headings[$k] . ""; + echo ""; + + for($i=0; $i<$num; $i++) + { + $tdWithClass = ""; + echo $tdWithClass; + echo ""; + echo ""; + echo $tdWithClass; + echo ""; + echo ""; + echo $tdWithClass; + echo ""; + echo ""; + if($db->getType() != "SQLiteDatabase") + { + echo $tdWithClass; + echo ""; + echo ""; + } + echo $tdWithClass; + echo ""; + echo ""; + echo $tdWithClass; + echo ""; + echo ""; + echo ""; + echo ""; + } + echo ""; + echo ""; + echo ""; + echo "
"; + echo "
"; + echo " "; + echo $params->getLink(array(), $lang['cancel']); + echo "
"; + echo ""; + if($db->getType() != "SQLiteDatabase") echo ""; + } + break; + + //- Perform SQL query on table (=table_sql) + case "table_sql": + if(isset($_POST['query']) && $_POST['query']!="") + { + $delimiter = $_POST['delimiter']; + $queryStr = $_POST['queryval']; + //save the queries in history if necessary + if($maxSavedQueries!=0 && $maxSavedQueries!=false) + { + if(!isset($_SESSION[COOKIENAME.'query_history'])) + $_SESSION[COOKIENAME.'query_history'] = array(); + $_SESSION[COOKIENAME.'query_history'][md5(strtolower($queryStr))] = $queryStr; + if(sizeof($_SESSION[COOKIENAME.'query_history']) > $maxSavedQueries) + array_shift($_SESSION[COOKIENAME.'query_history']); + } + $query = explode_sql($delimiter, $queryStr); //explode the query string into individual queries based on the delimiter + + for($i=0; $iquery($query[$i]); + + echo "
"; + echo "".htmlencode($query[$i]).""; + if($table_result === NULL || $table_result === false) + { + echo "
".$lang['err'].": ".htmlencode($db->getError())."
"; + } + echo "

"; + if($row = $db->fetch($table_result, 'num')) + { + for($j=0; $jgetColumnName($table_result,$j); + echo ""; + echo ""; + for($j=0; $j"; + echo htmlencode($headers[$j]); + echo ""; + } + echo ""; + $rowCount = 0; + for(; $rowCount==0 || $row = $db->fetch($table_result, 'num'); $rowCount++) + { + $tdWithClass = ""; + for($z=0; $zNULL"; + else + echo htmlencode(subString($row[$z])); + echo ""; + } + echo ""; + } + $queryTimer->stop(); + echo "
"; + echo "


"; + + + if($table_result !== NULL && $table_result !== false) + { + echo "
"; + if($rowCount>0 || $db->getAffectedRows()==0) + { + printf($lang['show_rows'], $rowCount); + } + if($db->getAffectedRows()>0 || $rowCount==0) + { + echo $db->getAffectedRows()." ".$lang['rows_aff']." "; + } + printf($lang['query_time'], $queryTimer); + echo "
"; + } + + + } + } + } + } + else + { + $delimiter = ";"; + $queryStr = "SELECT * FROM ".$db->quote_id($target_table)." WHERE 1"; + } + + echo "
"; + echo "".sprintf($lang['run_sql'],htmlencode($db->getName())).""; + echo $params->getForm(array('action'=>'table_sql')); + if(isset($_SESSION[COOKIENAME.'query_history']) && sizeof($_SESSION[COOKIENAME.'query_history'])>0) + { + echo "".$lang['recent_queries']."
    "; + foreach($_SESSION[COOKIENAME.'query_history'] as $key => $value) + echo "
  • ".htmlencode($value)."
  • "; + echo "


"; + } + echo "
"; + echo ""; + echo ""; + echo "
"; + echo "
"; + echo $lang['fields']."
"; + echo ""; + echo ""; + echo "
"; + echo "
"; + echo $lang['delimit']." "; + echo ""; + echo ""; + echo "
"; + break; + + //- Empty table (=table_empty) + case "table_empty": + echo $params->getForm(array('action'=>'table_empty','confirm'=>'1')); + echo "
"; + echo sprintf($lang['ques_empty'], htmlencode($target_table))."

"; + echo " ".$lang['vac_on_empty']."

"; + echo " "; + echo $params->getLink(array('table'=>null), $lang['cancel']); + echo "
"; + break; + + //- Drop table (=table_drop) + case "table_drop": + echo $params->getForm(array('action'=>'table_drop','confirm'=>'1')); + echo "
"; + echo sprintf($lang['ques_drop'], htmlencode($target_table))."

"; + echo " ".$lang['vac_on_empty']."

"; + echo " "; + echo $params->getLink(array('table'=>null), $lang['cancel']); + echo "
"; + break; + + //- Drop view (=view_drop) + case "view_drop": + echo $params->getForm(array('action'=>'view_drop','confirm'=>'1')); + echo ""; + echo "
"; + echo sprintf($lang['ques_drop_view'], htmlencode($target_table))."

"; + echo " "; + echo $params->getLink(array('table'=>null), $lang['cancel']); + echo "
"; + break; + + //- Export table (=table_export) + case "table_export": + echo $params->getForm(); + echo "
".$lang['export'].""; + echo ""; + echo ""; + echo "
"; + echo "
"; + + echo "
".$lang['options'].""; + echo " ".helpLink($lang['help5'])."
"; + echo " ".helpLink($lang['help6'])."
"; + echo " ".helpLink($lang['help7'])."
"; + echo " ".helpLink($lang['help8'])."
"; + echo " ".helpLink($lang['help9'])."
"; + echo "
"; + + echo ""; + + echo "
"; + echo "

"; + echo "
".$lang['save_as'].""; + $file = pathinfo($db->getPath()); + $name = $file['filename']; + echo " "; + echo "
"; + echo ""; + echo "
".sprintf($lang['backup_hint'], + $params->getLink(array('download' => $currentDB['path'], 'token' => $_SESSION[COOKIENAME.'token']), $lang["backup_hint_linktext"], '', $lang['backup']))."
"; + break; + + //- Import table (=table_import) + case "table_import": + if(isset($_POST['import'])) + { + echo "
"; + if($importSuccess===true) + echo $lang['import_suc']; + else + echo $lang['err'].': '.htmlencode($importSuccess); + echo "

"; + } + echo $params->getForm(array('action' => 'table_import'), 'post', true); + echo "
".$lang['import_into']." ".htmlencode($target_table).""; + echo ""; + echo "
"; + echo "
"; + + echo "
".$lang['options'].""; + echo $lang['no_opt']; + echo "
"; + + echo ""; + + echo "
"; + echo "

"; + + echo "
".$lang['import_f'].""; + echo "".$lang['max_file_size'].": ".number_format(fileUploadMaxSize()/1024/1024)." MiB ".helpLink($lang['help11'])."
"; + echo ""; + echo ""; + echo "
"; + break; + + //- Rename table (=table_rename) + case "table_rename": + echo $params->getForm(array('action'=>'table_rename', 'confirm'=>'1')); + printf($lang['rename_tbl'], htmlencode($target_table)); + echo " "; + echo ""; + break; + + //- Search table (=table_search) + case "table_search": + if(!isset($_GET['search'])) + { + $tableInfo = $db->getTableInfo($target_table); + + echo $params->getForm(array('action'=>'table_search', 'confirm'=>'1')); + + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + + for($i=0; $i"; + $tdWithClassLeft = ""; + echo $tdWithClassLeft; + echo htmlencode($field); + echo ""; + echo $tdWithClassLeft; + echo htmlencode($type); + echo ""; + echo $tdWithClassLeft; + echo ""; + echo ""; + echo $tdWithClassLeft; + if($typeAffinity=="INTEGER" || $typeAffinity=="REAL" || $typeAffinity=="NUMERIC") + echo ""; + else + echo ""; + echo ""; + echo ""; + } + echo ""; + echo ""; + echo ""; + echo "
".$lang['fld']."".$lang['type']."".$lang['operator']."".$lang['val']."
"; + if(isset($_GET['oldSearch']) && isset($_SESSION[COOKIENAME.'search'][$_GET['oldSearch']]['values'][$field])) + $value = implode($_SESSION[COOKIENAME.'search'][$_GET['oldSearch']]['values'][$field], ","); + else + $value = ''; + if(isset($_GET['oldSearch']) && isset($_SESSION[COOKIENAME.'search'][$_GET['oldSearch']]['operators'][$field])) + $operator = $_SESSION[COOKIENAME.'search'][$_GET['oldSearch']]['operators'][$field]; + elseif($typeAffinity=="TEXT" || $typeAffinity=="NONE") + $operator = 'LIKE'; + else + $operator = '='; + + echo "
"; + echo ""; + echo "
"; + echo ""; + + break; + } + elseif(isset($_SESSION[COOKIENAME.'search'][$_GET['search']])) + { + $params->search = $_GET['search']; + $search = $_SESSION[COOKIENAME.'search'][$_GET['search']]; + // NOTICE: we do not break here!! we just do the same now like row_view-action does + } + + //- Row actions + + //- View row (=row_view) + case "row_view": + if(!isset($_GET['startRow'])) + $_GET['startRow'] = 0; + + if(isset($_SESSION[COOKIENAME.'currentTable']) && $_SESSION[COOKIENAME.'currentTable']!=$target_table) + { + unset($_SESSION[COOKIENAME.'sortRows']); + unset($_SESSION[COOKIENAME.'orderRows']); + } + if(isset($_GET['viewtype'])) + { + $_SESSION[COOKIENAME.'viewtype'] = $_GET['viewtype']; + } + + //- Query execution + if(!isset($_GET['sort'])) + $_GET['sort'] = NULL; + if(!isset($_GET['order'])) + $_GET['order'] = NULL; + + $numRows = $params->numRows; + $startRow = $_GET['startRow']; + if(isset($_GET['sort'])) + { + $_SESSION[COOKIENAME.'sortRows'] = $_GET['sort']; + $_SESSION[COOKIENAME.'currentTable'] = $target_table; + } + if(isset($_GET['order'])) + { + $_SESSION[COOKIENAME.'orderRows'] = $_GET['order']; + $_SESSION[COOKIENAME.'currentTable'] = $target_table; + } + $query = "SELECT * "; + // select the primary key column(s) last (ROWID if there is no PK). + // this will be used to identify rows, e.g. when editing/deleting rows + $primary_key = $db->getPrimaryKey($target_table); + foreach($primary_key as $pk) + { + $query.= ', '.$db->quote_id($pk); + $query.= ', typeof('.$db->quote_id($pk).')'; + } + $query .= " FROM ".$db->quote_id($target_table); + $queryDisp = "SELECT * FROM ".$db->quote_id($target_table); + $queryCount = "SELECT COUNT(*) AS count FROM ".$db->quote_id($target_table); + $queryAdd = ""; + if(isset($search) && isset($search['where'])) + { + $queryAdd = $search['where']; + $queryCount .= $search['where']; + } + if(isset($_SESSION[COOKIENAME.'sortRows'])) + $queryAdd .= " ORDER BY ".$db->quote_id($_SESSION[COOKIENAME.'sortRows']); + if(isset($_SESSION[COOKIENAME.'orderRows'])) + $queryAdd .= " ".$_SESSION[COOKIENAME.'orderRows']; + $queryAdd .= " LIMIT ".$startRow.", ".$numRows; + $query .= $queryAdd; + $queryDisp .= $queryAdd; + + $resultRows = $db->select($queryCount); + $totalRows = $resultRows['count']; + $shownRows = min($resultRows['count']-$startRow, $numRows); + + //- HTML: pagination buttons + $lastPage = intval($totalRows / $params->numRows); + $remainder = intval($totalRows % $params->numRows); + if($remainder==0) + $remainder = $params->numRows; + + echo "
"; + //previous button + if($_GET['startRow']>0) + { + echo "
"; + echo $params->getForm(array('action'=>$_GET['action']),'get'); + echo ""; + echo " "; + echo ""; + echo "
"; + echo "
"; + echo $params->getForm(array('action'=>$_GET['action']),'get'); + echo "numRows))."'/>"; + echo " "; + echo ""; + echo "
"; + } + + //show certain number buttons + echo "
"; + echo $params->getForm(array('action'=>$_GET['action'], 'numRows'=>null),'get'); + echo " "; + echo " "; + echo $lang['rows_records']; + + if(intval($_GET['startRow']+$params->numRows) < $totalRows) + echo "numRows)."'/>"; + else + echo " "; + echo $lang['as_a']; + echo " "; + echo ""; + echo "
"; + + //next button + if(intval($_GET['startRow']+$params->numRows)<$totalRows) + { + echo "
"; + echo $params->getForm(array('action'=>$_GET['action']),'get'); + echo "numRows)."'/>"; + echo " "; + echo ""; + echo "
"; + echo "
"; + echo $params->getForm(array('action'=>$_GET['action']),'get'); + echo ""; + echo " "; + echo ""; + echo "
"; + } + echo "
"; + echo "
"; + + + //- Show results + if($shownRows>0) + { + $queryTimer = new MicroTimer(); + $table_result = $db->query($query); + $queryTimer->stop(); + + + echo "
"; + echo "".$lang['showing_rows']." ".$startRow." - ".($startRow + $shownRows-1).", ".$lang['total'].": ".$totalRows." "; + printf($lang['query_time'], $queryTimer); + echo "
"; + echo "".htmlencode($queryDisp).""; + echo "

"; + + if($target_table_type == 'view') + { + echo sprintf($lang['readonly_tbl'], htmlencode($target_table))." https://en.wikipedia.org/wiki/View_(SQL)"; + echo "

"; + } + + $tableInfo = $db->getTableInfo($target_table); + $pkFirstCol = sizeof($tableInfo)+1; + //- Table view + if(!isset($_SESSION[COOKIENAME.'viewtype']) || $_SESSION[COOKIENAME.'viewtype']=="table") + { + echo $params->getForm(array('action'=>'row_editordelete'), 'post', false, 'checkForm'); + echo ""; + echo ""; + echo ""; + + for($i=0; $i"; + if(isset($_SESSION[COOKIENAME.'sortRows'])) + $orderTag = ($_SESSION[COOKIENAME.'sortRows']==$tableInfo[$i]['name'] && $_SESSION[COOKIENAME.'orderRows']=="ASC") ? "DESC" : "ASC"; + else + $orderTag = "ASC"; + echo $params->getLink(array('action'=>$_GET['action'], 'sort'=>$tableInfo[$i]['name'], 'order'=>$orderTag ), htmlencode($tableInfo[$i]['name'])); + if(isset($_SESSION[COOKIENAME.'sortRows']) && $_SESSION[COOKIENAME.'sortRows']==$tableInfo[$i]['name']) + echo (($_SESSION[COOKIENAME.'orderRows']=="ASC") ? " " : " "); + echo ""; + } + echo ""; + + for($i=0; $row = $db->fetch($table_result, 'num'); $i++) + { + // -g-> $pk will always be the last columns in each row of the array because we are doing "SELECT *, PK_1, typeof(PK_1), PK2, typeof(PK_2), ... FROM ..." + $pk_arr = array(); + for($col = $pkFirstCol; array_key_exists($col, $row); $col=$col+2) + { + // in $col we have the type and in $col-1 the value + if($row[$col]=='integer' || $row[$col]=='real') + // json encode as int or float, not string + $pk_arr[] = $row[$col-1]+0; + else + // encode as json string + $pk_arr[] = $row[$col-1]; + } + $pk = json_encode($pk_arr); + $tdWithClass = ""; + if($target_table_type == 'table' && $db->isWritable() && $db->isDirWritable()) + { + echo $tdWithClass; + echo ""; + echo ""; + echo $tdWithClass; + // -g-> Here, we need to put the PK in as the link for both the edit and delete. + echo $params->getLink(array('action'=>'row_editordelete', 'pk'=>$pk, 'type'=>'edit'),"".$lang['edit']."",'edit', $lang['edit']); + echo ""; + echo $tdWithClass; + echo $params->getLink(array('action'=>'row_editordelete', 'pk'=>$pk, 'type'=>'delete'),"".$lang['del']."",'delete', $lang['del']); + echo ""; + } else { + echo ""; + } + for($j=0; $jNULL"; + elseif(preg_match('/^BLOB/i', $tableInfo[$j]['type'])) + { + echo "
"; + echo $params->getLink(array('action'=>'row_get_blob', 'confirm'=>1, 'pk'=>$pk, 'column'=>$tableInfo[$j]['name'], 'download_blob'=>1),$lang["download"]).' | '; + echo $params->getLink(array('action'=>'row_get_blob', 'confirm'=>1, 'pk'=>$pk, 'column'=>$tableInfo[$j]['name'], 'download_blob'=>0),$lang["open_in_browser"],'','','_blank'); + echo "
"; + echo 'Size: '.number_format(strlen($row[$j])).' Bytes'; + echo "
"; + } + elseif(isset($search)) + echo markSearchWords(subString($row[$j]),$tableInfo[$j]['name'], $search); + else + echo htmlencode(subString($row[$j])); + echo ""; + } + echo "
"; + } + echo "
"; + echo "$_GET['action'], 'fulltexts'=>($params->fulltexts?0:1) ))."' title='".$lang[($params->fulltexts?'no_full_texts':'full_texts')]."'>"; + echo "&".($params->fulltexts?'r':'l')."arr; T &".($params->fulltexts?'l':'r')."arr;"; + echo "
"; + $tdWithClassLeft = ""; + echo "
"; + if($target_table_type == 'table' && $db->isWritable() && $db->isDirWritable()) + { + echo "".$lang['chk_all']." / ".$lang['unchk_all']." ".$lang['with_sel'].": "; + echo " "; + echo ""; + } + echo ""; + } + else + //- Chart view + { + if(!isset($_SESSION[COOKIENAME.$target_table.'chartlabels'])) + { + // No label-column set. Try to pick a text-column as label-column. + for($i=0; $i + + +
+ Chart Settings"; + echo $params->getForm(array('action'=>$_GET['action'])); + echo $lang['chart_type'].": "; + echo "

"; + echo $lang['lbl'].": "; + echo "

"; + echo $lang['val'].": "; + echo "

"; + echo ""; + echo ""; + echo ""; + echo "
"; + //end chart view + } + } + else //no rows - do nothing + { + echo "
"; + if(isset($search) || $totalRows>0) + echo $lang['no_rows']."

"; + elseif($target_table_type == 'table') + echo $lang['empty_tbl']." ".$params->getLink(array('action'=>'row_create'), $lang['click']) ." ".$lang['insert_rows'].'

'; + echo "".htmlencode($queryDisp).""; + echo "

"; + } + + if(isset($search)) + echo "

".$params->getLink(array('action'=>'table_search','search'=>null,'oldSearch' => (isset($_GET['search'])?$_GET['search']:null)), $lang['srch_again']); + + break; + + //- Create new row (=row_create) + case "row_create": + echo $params->getForm(array('action'=>'row_create'), 'get'); + echo $lang['restart_insert']; + echo " "; + echo $lang['rows']; + echo " "; + echo ""; + echo "
"; + echo $params->getForm(array('action'=>'row_create','confirm'=>'1'), 'post', true); + $tableInfo = $db->getTableInfo($target_table); + if(isset($_GET['newRows'])) + $num = $_GET['newRows']; + else + $num = 1; + echo ""; + for($j=0; $j<$num; $j++) + { + if($j>0) + echo "
"; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + + for($i=0; $i"; + echo ""; + echo $tdWithClassLeft; + echo htmlencode($field); + echo ""; + echo $tdWithClassLeft; + echo htmlencode($type); + echo ""; + echo $tdWithClassLeft; + echo ""; + echo ""; + echo $tdWithClassLeft; + if($tableInfo[$i]['notnull']==0) + { + if($value===NULL) + echo ""; + else + echo ""; + } + echo ""; + echo $tdWithClassLeft; + + if($typeAffinity=="INTEGER" || $typeAffinity=="REAL" || $typeAffinity=="NUMERIC") + echo ""; + elseif(preg_match('/^BLOB/', $type)) + echo ""; + else + echo ""; + echo ""; + echo ""; + } + echo ""; + echo ""; + echo ""; + echo "
".$lang['fld']."".$lang['type']."".$lang['func']."Null".$lang['val']."
"; + echo ""; + echo "

"; + } + echo ""; + break; + + //- Edit or delete row (=row_editordelete) + case "row_editordelete": + if(isset($_POST['check'])) + $pks = $_POST['check']; + else if(isset($_GET['pk'])) + $pks = array($_GET['pk']); + else $pks[0] = ""; + $str = implode(', ', $pks); + if($str=="") //nothing was selected so show an error + { + echo "
"; + echo $lang['err'].": ".$lang['no_sel']; + echo "
"; + echo "

".$params->getLink(array('action'=>'row_view'),$lang['return']); + } + else + { + if((isset($_POST['type']) && $_POST['type']=="edit") || (isset($_GET['type']) && $_GET['type']=="edit")) //edit + { + echo $params->getForm(array('action'=>'row_edit', 'confirm'=>'1', 'pk'=>json_encode($pks)),'post',true); + $tableInfo = $db->getTableInfo($target_table); + $primary_key = $db->getPrimaryKey($target_table); + + for($j=0; $jquote_id($target_table)." WHERE " . $db->wherePK($target_table, json_decode($pks[$j])); + $result1 = $db->select($query, 'num'); + + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + + for($i=0; $i"; + echo ""; + echo $tdWithClassLeft; + echo htmlencode($field); + echo ""; + echo $tdWithClassLeft; + echo htmlencode($type); + echo ""; + echo $tdWithClassLeft; + echo ""; + echo ""; + echo $tdWithClassLeft; + if($tableInfo[$i]['notnull']==0) + { + if($value===NULL) + echo ""; + else + echo ""; + } + echo ""; + echo $tdWithClassLeft; + if($typeAffinity=="INTEGER" || $typeAffinity=="REAL" || $typeAffinity=="NUMERIC") + echo ""; + elseif(preg_match('/^BLOB/', $type)) + { + if($value!==NULL) + { + echo ""; + echo $params->getLink(array('action'=>'row_get_blob', 'confirm'=>1, 'pk'=>$pks[$j], 'column'=>$field, 'download_blob'=>1),$lang["download"]).' | '; + echo $params->getLink(array('action'=>'row_get_blob', 'confirm'=>1, 'pk'=>$pks[$j], 'column'=>$field, 'download_blob'=>0),$lang["open_in_browser"],'','','_blank').'
'; + echo ""; + } + echo ""; + } + else + echo ""; + echo ""; + echo ""; + } + echo ""; + echo ""; + echo ""; + echo "
".$lang['fld']."".$lang['type']."".$lang['func']."Null".$lang['val']."
"; + // Note: the 'Save changes' button must be first in the code so it is the one used when submitting the form with the Enter key (issue #215) + echo " "; + echo " "; + echo $params->getLink(array('action'=>'row_view'), $lang['cancel']); + echo "
"; + echo "
"; + } + echo ""; + } + else //delete + { + echo $params->getForm(array('action'=>'row_delete', 'confirm'=>'1', 'pk'=>json_encode($pks))); + echo "
"; + printf($lang['ques_del_rows'], htmlencode($str), htmlencode($target_table)); + echo "

"; + echo " "; + echo $params->getLink(array('action'=>'row_view'), $lang['cancel']); + echo "
"; + } + } + break; + + //- Column actions + + //- View table structure (=column_view) + case "column_view": + $tableInfo = $db->getTableInfo($target_table); + + echo $params->getForm(array('action'=>'column_confirm'), 'get', false, 'checkForm'); + echo ""; + echo ""; + if($target_table_type == 'table' && $db->isWritable() && $db->isDirWritable()) + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + + $noPrimaryKey = true; + + for($i=0; $i"; + $tdWithClassLeft = ""; + if($target_table_type == 'table' && $db->isWritable() && $db->isDirWritable()) + { + echo $tdWithClass; + echo ""; + echo ""; + echo $tdWithClass; + echo $params->getLink(array('action'=>'column_edit', 'pk'=>$fieldVal),"".$lang['edit']."",'edit', $lang['edit']); + echo ""; + echo $tdWithClass; + echo $params->getLink(array('action'=>'column_confirm', 'action2'=>'column_delete', 'pk'=>$fieldVal),"".$lang['del']."",'delete', $lang['del']); + echo ""; + } + echo $tdWithClass; + echo htmlencode($colVal); + echo ""; + echo $tdWithClassLeft; + echo htmlencode($fieldVal); + echo ""; + echo $tdWithClassLeft; + echo htmlencode($typeVal); + echo ""; + echo $tdWithClassLeft; + echo htmlencode($notnullVal); + echo ""; + echo $tdWithClassLeft; + if($defaultVal===NULL) + echo "".$lang['none'].""; + elseif($defaultVal==="NULL") + echo "NULL"; + else + echo htmlencode($defaultVal); + echo ""; + echo $tdWithClassLeft; + echo htmlencode($primarykeyVal); + echo ""; + echo ""; + } + + echo "
".$lang['col']." #".$lang['fld']."".$lang['type']."".$lang['not_null']."".$lang['def_val']."".$lang['prim_key']."
"; + echo "
"; + if($target_table_type == 'table' && $db->isWritable() && $db->isDirWritable()) + { + echo "".$lang['chk_all']." / ".$lang['unchk_all']." ".$lang['with_sel'].": "; + echo " "; + echo ""; + } + echo ""; + if($target_table_type == 'table' && $db->isWritable() && $db->isDirWritable()) + { + echo "
"; + echo $params->getForm(array('action'=>'column_create'), 'get'); + echo $lang['add']." ".$lang['tbl_end']." "; + echo ""; + } + + $query = "SELECT sql FROM sqlite_master WHERE name=".$db->quote($target_table); + $master = $db->selectArray($query); + + echo "
"; + echo "
"; + echo "
"; + echo "".$lang['query_used_'.$target_table_type]."
"; + echo "".htmlencode($master[0]['sql']).""; + echo "
"; + echo "
"; + if($target_table_type != 'view') + { + echo "


"; + $query = "PRAGMA index_list(".$db->quote_id($target_table).")"; + $result = $db->selectArray($query); + if(sizeof($result)>0) + { + echo "

".$lang['indexes'].":

"; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + for($i=0; $iquote_id($result[$i]['name']).")"; + $info = $db->selectArray($query); + $span = sizeof($info); + + $tdWithClass = ""; + echo $tdWithClassSpan; + echo $params->getLink(array('action'=>'index_delete', 'pk'=>$result[$i]['name']), "".$lang['del']."", 'delete', $lang['del']); + echo ""; + echo $tdWithClassLeftSpan; + echo $result[$i]['name']; + echo ""; + echo $tdWithClassLeftSpan; + echo $unique; + echo ""; + for($j=0; $j<$span; $j++) + { + if($j!=0) + echo ""; + echo $tdWithClassLeft; + echo htmlencode($info[$j]['seqno']); + echo ""; + echo $tdWithClassLeft; + echo htmlencode($info[$j]['cid']); + echo ""; + echo $tdWithClassLeft; + echo htmlencode($info[$j]['name']); + echo ""; + echo ""; + } + } + echo "
"; + echo "".$lang['name']."".$lang['unique']."".$lang['seq_no']."".$lang['col']." #".$lang['fld']."
"; + $tdWithClassLeft = ""; + $tdWithClassSpan = ""; + $tdWithClassLeftSpan = ""; + echo "


"; + } + + $query = "SELECT * FROM sqlite_master WHERE type='trigger' AND tbl_name=".$db->quote($target_table)." ORDER BY name"; + $result = $db->selectArray($query); + //print_r($result); + if(sizeof($result)>0) + { + echo "

".$lang['triggers'].":

"; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + for($i=0; $i"; + echo ""; + echo $tdWithClass; + echo $params->getLink(array('action'=>'trigger_delete', 'pk'=>$result[$i]['name']), "".$lang['del']."", 'delete', $lang['del']); + echo ""; + echo $tdWithClass; + echo htmlencode($result[$i]['name']); + echo ""; + echo $tdWithClass; + echo htmlencode($result[$i]['sql']); + echo ""; + } + echo "
"; + echo "".$lang['name']."".$lang['sql']."


"; + } + + if($db->isWritable() && $db->isDirWritable()) + { + echo $params->getForm(array('action'=>'index_create'),'get'); + echo "
"; + echo $lang['create_index2']." ".$lang['cols']." "; + echo "
"; + echo ""; + + echo $params->getForm(array('action'=>'trigger_create'),'get'); + echo "
"; + echo $lang['create_trigger2']." "; + echo "
"; + echo ""; + } + } + break; + + //- Create column (=column_create) + case "column_create": + echo "

".sprintf($lang['new_fld'],htmlencode($_GET['table']))."

"; + if($_GET['tablefields']=="" || intval($_GET['tablefields'])<=0) + echo $lang['specify_fields']; + else if($_GET['table']=="") + echo $lang['specify_tbl']; + else + { + $num = intval($_GET['tablefields']); + $name = $_GET['table']; + echo $params->getForm(array('action'=>'column_create', 'confirm'=>'1')); + echo ""; + echo ""; + echo ""; + $headings = array($lang["fld"], $lang["type"], $lang["prim_key"]); + if($db->getType() != "SQLiteDatabase") $headings[] = $lang["autoincrement"]; + $headings[] = $lang["not_null"]; + $headings[] = $lang["def_val"]; + + for($k=0; $k" . $headings[$k] . ""; + echo ""; + + for($i=0; $i<$num; $i++) + { + $tdWithClass = ""; + echo $tdWithClass; + echo ""; + echo ""; + echo $tdWithClass; + echo ""; + echo ""; + echo $tdWithClass; + echo ""; + echo ""; + if($db->getType() != "SQLiteDatabase") + { + echo $tdWithClass; + echo ""; + echo ""; + } + echo $tdWithClass; + echo ""; + echo ""; + echo $tdWithClass; + echo ""; + echo ""; + echo ""; + echo ""; + } + echo ""; + echo ""; + echo ""; + echo "
"; + echo "
"; + echo " "; + echo $params->getLink(array('action'=>'column_view'), $lang['cancel']); + echo "
"; + echo ""; + } + break; + + //- Delete column (=column_confirm) + case "column_confirm": + if(isset($_GET['check'])) + $pks = $_GET['check']; + elseif(isset($_GET['pk'])) + $pks = array($_GET['pk']); + else $pks = array(); + + if(sizeof($pks)==0) //nothing was selected so show an error + { + echo "
"; + echo $lang['err'].": ".$lang['no_sel']; + echo "
"; + echo "

"; + echo $params->getLink(array('action'=>'column_view'), $lang['return']); + } + else + { + $str = $pks[0]; + $pkVal = $pks[0]; + for($i=1; $igetForm(array('action'=>$_GET['action2'], 'confirm'=>'1', 'pk'=>$pkVal)); + echo "
"; + printf($lang['ques_'.$_GET['action2']], htmlencode($str), htmlencode($target_table)); + echo "

"; + echo " "; + echo $params->getLink(array('action'=>'column_view'), $lang['cancel']); + echo "
"; + } + break; + + //- Edit column (=column_edit) + case "column_edit": + echo "

".sprintf($lang['edit_col'], htmlencode($_GET['pk']))." ".$lang['on_tbl']." '".htmlencode($target_table)."'

"; + echo $lang['sqlite_limit']."

"; + if(!isset($_GET['pk'])) + echo $lang['specify_col']; + else if (!$target_table) + echo $lang['specify_tbl']; + else + { + $tableInfo = $db->getTableInfo($target_table); + + for($i=0; $i".$lang['err'].": ".sprintf($lang['col_inexistent'], htmlencode($_GET['pk'])).""; + } + else + { + $name = $target_table; + echo $params->getForm(array('action'=>'column_edit', 'confirm'=>'1')); + echo ""; + echo ""; + echo ""; + //$headings = array("Field", "Type", "Primary Key", "Autoincrement", "Not NULL", "Default Value"); + $headings = array($lang["fld"], $lang["type"]); + for($k=0; $k".$headings[$k].""; + echo ""; + + $i = 0; + $tdWithClass = ""; + echo $tdWithClass; + echo ""; + echo ""; + echo $tdWithClass; + echo ""; + echo ""; + /* + echo $tdWithClass; + if($primarykeyVal) + echo " Yes"; + else + echo " Yes"; + echo ""; + echo $tdWithClass; + if(1==2) + echo " Yes"; + else + echo " Yes"; + echo ""; + echo $tdWithClass; + if($notnullVal) + echo " Yes"; + else + echo " Yes"; + echo ""; + echo $tdWithClass; + echo ""; + echo ""; + */ + echo ""; + + echo ""; + echo ""; + echo ""; + echo "
"; + echo "
"; + echo " "; + echo $params->getLink(array('action'=>'column_view'), $lang['cancel']); + echo "
"; + echo ""; + } + } + break; + + //- Delete index (=index_delete) + case "index_delete": + echo $params->getForm(array('action'=>'index_delete', 'pk'=>$_GET['pk'], 'confirm'=>'1')); + echo "
"; + echo sprintf($lang['ques_del_index'], htmlencode($_GET['pk']))."

"; + echo " "; + echo $params->getLink(array('action'=>'column_view'), $lang['cancel']); + echo "
"; + echo ""; + break; + + //- Delete trigger (=trigger_delete) + case "trigger_delete": + echo $params->getForm(array('action'=>'trigger_delete', 'pk'=>$_GET['pk'], 'confirm'=>'1')); + echo "
"; + echo sprintf($lang['ques_del_trigger'], htmlencode($_GET['pk']))."

"; + echo " "; + echo $params->getLink(array('action'=>'column_view'), $lang['cancel']); + echo "
"; + echo ""; + break; + + //- Create trigger (=trigger_create) + case "trigger_create": + echo "

".$lang['create_trigger']." '".htmlencode($_GET['table'])."'

"; + if($_GET['table']=="") + echo $lang['specify_tbl']; + else + { + echo $params->getForm(array('action'=>'trigger_create', 'confirm'=>'1')); + echo $lang['trigger_name'].":

"; + echo "
".$lang['db_event'].""; + echo $lang['before']."/".$lang['after'].": "; + echo ""; + echo "

"; + echo $lang['event'].": "; + echo ""; + echo "


"; + echo "
".$lang['trigger_act'].""; + echo "

"; + echo $lang['when_exp'].":
"; + echo ""; + echo "

"; + echo $lang['trigger_step'].":
"; + echo ""; + echo "


"; + echo " "; + echo $params->getLink(array('action'=>'column_view'), $lang['cancel']); + echo ""; + } + break; + + //- Create index (=index_create) + case "index_create": + echo "

".$lang['create_index']." '".htmlencode($_GET['table'])."'

"; + if($_GET['numcolumns']=="" || intval($_GET['numcolumns'])<=0) + echo $lang['specify_fields']; + else if($_GET['table']=="") + echo $lang['specify_tbl']; + else + { + echo $params->getForm(array('action'=>'index_create', 'confirm'=>'1')); + $num = intval($_GET['numcolumns']); + $tableInfo = $db->getTableInfo($_GET['table']); + echo "
".$lang['define_index'].""; + echo "
"; + echo ""; + echo "
"; + if(version_compare($db->getSQLiteVersion(),'3.8.0')>=0) + echo " ".helpLink($lang['help10']); + echo "
"; + echo "
"; + echo "
".$lang['define_in_col'].""; + for($i=0; $i<$num; $i++) + { + echo " "; + echo "
"; + } + echo "
"; + echo "

"; + echo ""; + echo " "; + echo $params->getLink(array('action'=>'column_view'), $lang['cancel']); + echo ""; + } + break; + } + echo ""; +} + +//- HMTL: views for databases +if(!$target_table && !isset($_GET['confirm']) && (!isset($_GET['action']) || (isset($_GET['action']) && $_GET['action']!="table_create"))) //the absence of these fields means we are viewing the database homepage +{ + //- Switch on $view (actually a series of if-else) + + if($view=="structure") + { + //- Database structure, shows all the tables (=structure) + + if($db->isWritable() && !$db->isDirWritable()) + { + echo "
"; + echo $lang['attention'].': '.$lang['directory_not_writable']; + echo "

"; + } + elseif(!$db->isWritable()) + { + echo "
"; + echo $lang['attention'].': '.$lang['database_not_writable']; + echo "

"; + } + + if ($auth->isPasswordDefault()) + { + echo "
"; + echo sprintf($lang['warn_passwd'],(is_readable('phpliteadmin.config.php')?'phpliteadmin.config.php':basename(__FILE__)))."
".$lang['warn0']; + echo "
"; + } + + echo "".$lang['db_name'].": ".htmlencode($db->getName())."
"; + echo "".$lang['db_path'].": ".htmlencode($db->getPath())."
"; + echo "".$lang['db_size'].": ".number_format($db->getSize())." KiB
"; + echo "".$lang['db_mod'].": ".$db->getDate()."
"; + echo "".$lang['sqlite_v'].": ".$db->getSQLiteVersion()."
"; + echo "".$lang['sqlite_ext']." ".helpLink($lang['help1']).": ".$db->getType()."
"; + echo "".$lang['php_v'].": ".phpversion()."
"; + echo "".PROJECT." ".$lang["ver"].": ".VERSION; + echo "

"; + echo ""; + + if(isset($_GET['sort']) && ($_GET['sort']=='type' || $_GET['sort']=='name')) + $_SESSION[COOKIENAME.'sortTables'] = $_GET['sort']; + if(isset($_GET['order']) && ($_GET['order']=='ASC' || $_GET['order']=='DESC')) + $_SESSION[COOKIENAME.'orderTables'] = $_GET['order']; + + if(!isset($_SESSION[COOKIENAME.'sortTables'])) + $_SESSION[COOKIENAME.'sortTables'] = 'name'; + + if(!isset($_SESSION[COOKIENAME.'orderTables'])) + $_SESSION[COOKIENAME.'orderTables'] = 'ASC'; + + $tables = $db->getTables(true, false, $_SESSION[COOKIENAME.'sortTables'], $_SESSION[COOKIENAME.'orderTables']); + + if(sizeof($tables)==0) + echo $lang['no_tbl']."

"; + else + { + echo ""; + echo ""; + + echo ""; + + echo ""; + + echo ""; + echo ""; + echo ""; + + $totalRecords = 0; + $skippedTables = false; + foreach($tables as $tableName => $tableType) + { + $records = $db->numRows($tableName, (!isset($_GET['forceCount']))); + if($records == '?') + { + $skippedTables = true; + $records = $params->getLink(array('forceCount'=>'1'), '?'); + } + else + $totalRecords += $records; + $tdWithClass = ""; + echo $tdWithClassLeft; + echo ($tableType=="table"? $lang['tbl'] : $lang['view']); + echo ""; + echo $tdWithClassLeft; + echo $params->getLink(array('table'=>$tableName, 'action'=>'row_view'), htmlencode($tableName)); + echo ""; + echo $tdWithClass; + echo $params->getLink(array('table'=>$tableName, 'action'=>'row_view'), $lang['browse']); + echo ""; + echo $tdWithClass; + echo $params->getLink(array('table'=>$tableName, 'action'=>'column_view'), $lang['struct']); + echo ""; + echo $tdWithClass; + echo $params->getLink(array('table'=>$tableName, 'action'=>'table_sql'), $lang['sql']); + echo ""; + echo $tdWithClass; + echo $params->getLink(array('table'=>$tableName, 'action'=>'table_search'), $lang['srch']); + echo ""; + echo $tdWithClass; + if($tableType=="table" && $db->isWritable() && $db->isDirWritable()) + echo $params->getLink(array('table'=>$tableName, 'action'=>'row_create'), $lang['insert']); + else + echo $lang['insert']; + echo ""; + echo $tdWithClass; + echo $params->getLink(array('table'=>$tableName, 'action'=>'table_export'), $lang['export']); + echo ""; + echo $tdWithClass; + if($tableType=="table" && $db->isWritable() && $db->isDirWritable()) + echo $params->getLink(array('table'=>$tableName, 'action'=>'table_import'), $lang['import']); + else + echo $lang['import']; + echo ""; + echo $tdWithClass; + if($db->isWritable() && $db->isDirWritable()) + echo $params->getLink(array('table'=>$tableName, 'action'=>'table_rename'), $lang['rename']); + else + echo $lang['rename']; + echo ""; + echo $tdWithClass; + if($tableType=="table" && $db->isWritable() && $db->isDirWritable()) + echo $params->getLink(array('table'=>$tableName, 'action'=>'table_empty'), $lang['empty'], 'empty'); + else + echo $lang['empty']; + echo ""; + echo $tdWithClass; + if($db->isWritable() && $db->isDirWritable()) + echo $params->getLink(array('table'=>$tableName, 'action'=>'table_drop'), $lang['drop'], 'drop'); + else + echo $lang['drop']; + echo ""; + echo $tdWithClass; + echo $records; + echo ""; + echo ""; + } + echo ""; + echo ""; + echo ""; + echo ""; + echo "
"; + if(isset($_SESSION[COOKIENAME.'sortTables'])) + $orderTag = ($_SESSION[COOKIENAME.'sortTables']=="type" && $_SESSION[COOKIENAME.'orderTables']=="ASC") ? "DESC" : "ASC"; + else + $orderTag = "ASC"; + echo $params->getLink(array('sort'=>'type', 'order'=>$orderTag), $lang['type']); + echo helpLink($lang['help3']); + if(isset($_SESSION[COOKIENAME.'sortTables']) && $_SESSION[COOKIENAME.'sortTables']=="type") + echo (($_SESSION[COOKIENAME.'orderTables']=="ASC") ? " " : " "); + echo ""; + if(isset($_SESSION[COOKIENAME.'sortTables'])) + $orderTag = ($_SESSION[COOKIENAME.'sortTables']=="name" && $_SESSION[COOKIENAME.'orderTables']=="ASC") ? "DESC" : "ASC"; + else + $orderTag = "ASC"; + echo $params->getLink(array('sort'=>'name', 'order'=>$orderTag), $lang['name']); + if(isset($_SESSION[COOKIENAME.'sortTables']) && $_SESSION[COOKIENAME.'sortTables']=="name") + echo (($_SESSION[COOKIENAME.'orderTables']=="ASC") ? " " : " "); + echo "".$lang['act']."".$lang['rec']."
"; + $tdWithClassLeft = ""; + + echo "
".sizeof($tables)." ".$lang['total']."".$totalRecords.($skippedTables?" ".$params->getLink(array('forceCount'=>'1'),'+ ?'):"")."
"; + echo "
"; + if($skippedTables) + echo "
".sprintf($lang["counting_skipped"],"'1'))."'>","")."
"; + } + if($db->isWritable() && $db->isDirWritable()) + { + echo "
"; + echo "".$lang['create_tbl_db']." '".htmlencode($db->getName())."'"; + echo $params->getForm(array('action'=>'table_create'), 'get'); + echo $lang['name'].": "; + echo $lang['fld_num'].": "; + echo ""; + echo ""; + echo "
"; + echo "
"; + echo "
"; + echo "".$lang['create_view']." '".htmlencode($db->getName())."'"; + echo $params->getForm(array('action'=>'view_create', 'confirm'=>'1')); + echo $lang['name'].": "; + echo $lang['sel_state']." ".helpLink($lang['help4']).": "; + echo ""; + echo ""; + echo "
"; + } + } + else if($view=="sql") + { + //- Database SQL editor (=sql) + if(isset($_POST['query']) && $_POST['query']!="") + { + $delimiter = $_POST['delimiter']; + $queryStr = $_POST['queryval']; + //save the queries in history if necessary + if($maxSavedQueries!=0 && $maxSavedQueries!=false) + { + if(!isset($_SESSION[COOKIENAME.'query_history'])) + $_SESSION[COOKIENAME.'query_history'] = array(); + $_SESSION[COOKIENAME.'query_history'][md5(strtolower($queryStr))] = $queryStr; + if(sizeof($_SESSION[COOKIENAME.'query_history']) > $maxSavedQueries) + array_shift($_SESSION[COOKIENAME.'query_history']); + } + $query = explode_sql($delimiter, $queryStr); //explode the query string into individual queries based on the delimiter + + for($i=0; $iquery($query[$i]); + + echo "
"; + echo "".htmlencode($query[$i]).""; + if($table_result === NULL || $table_result === false) + { + echo "
".$lang['err'].": ".htmlencode($db->getError())."
"; + } + echo "
"; + if($row = $db->fetch($table_result, 'num')) + { + for($j=0; $jgetColumnName($table_result,$j); + echo ""; + echo ""; + for($j=0; $j"; + echo htmlencode($headers[$j]); + echo ""; + } + echo ""; + $rowCount = 0; + for(; $rowCount==0 || $row = $db->fetch($table_result, 'num'); $rowCount++) + { + $tdWithClass = ""; + for($z=0; $zNULL"; + else + echo htmlencode(subString($row[$z])); + echo ""; + } + echo ""; + } + $queryTimer->stop(); + echo "
"; + echo "


"; + + + if($table_result !== NULL && $table_result !== false) + { + echo "
"; + if($rowCount>0 || $db->getAffectedRows()==0) + { + printf($lang['show_rows'], $rowCount); + } + if($db->getAffectedRows()>0 || $rowCount==0) + { + echo $db->getAffectedRows()." ".$lang['rows_aff']." "; + } + printf($lang['query_time'], $queryTimer); + echo "
"; + } + + + } + } + } + } + else + { + $delimiter = ";"; + $queryStr = ""; + } + + echo "
"; + echo "".sprintf($lang['run_sql'],htmlencode($db->getName())).""; + echo $params->getForm(array('view'=>'sql')); + if(isset($_SESSION[COOKIENAME.'query_history']) && sizeof($_SESSION[COOKIENAME.'query_history'])>0) + { + echo "".$lang['recent_queries']."
    "; + foreach($_SESSION[COOKIENAME.'query_history'] as $key => $value) + { + echo "
  • ".htmlencode($value)."
  • "; + } + echo "


"; + } + echo ""; + echo ""; + echo $lang['delimit']." "; + echo ""; + echo ""; + echo "
"; + } + else if($view=="vacuum") + { + //- Vacuum database confirmation (=vacuum) + if(isset($_POST['vacuum'])) + { + $query = "VACUUM"; + $db->query($query); + echo "
"; + printf($lang['db_vac'], htmlencode($db->getName())); + echo "

"; + } + echo $params->getForm(array('view'=>'vacuum')); + printf($lang['vac_desc'],htmlencode($db->getName())); + echo "

"; + echo ""; + echo ""; + } + else if($view=="export") + { + //- Export view (=export) + echo $params->getForm(array('view'=>'export')); + echo "
".$lang['export'].""; + echo ""; + echo "

"; + echo ""; + echo "
"; + echo "
"; + + echo "
".$lang['options'].""; + echo " ".helpLink($lang['help5'])."
"; + echo " ".helpLink($lang['help6'])."
"; + echo " ".helpLink($lang['help7'])."
"; + echo " ".helpLink($lang['help8'])."
"; + echo " ".helpLink($lang['help9'])."
"; + echo "
"; + + echo ""; + + echo "
"; + echo "

"; + echo "
".$lang['save_as'].""; + $file = pathinfo($db->getPath()); + $name = $file['filename']; + echo " "; + echo "
"; + echo ""; + echo "
".sprintf($lang['backup_hint'], + $params->getLink(array('download'=>$currentDB['path'], 'token'=>$_SESSION[COOKIENAME.'token']), $lang["backup_hint_linktext"], '', $lang['backup']) + )."
"; + } + else if($view=="import") + { + //- Import view (=import) + if(isset($_POST['import'])) + { + echo "
"; + if($importSuccess===true) + echo $lang['import_suc']; + else + echo $importSuccess; + echo "

"; + } + + echo $params->getForm(array('view'=>'import'), 'post', true); + echo "
".$lang['import'].""; + echo ""; + echo "
"; + echo "
"; + + echo "
".$lang['options'].""; + echo $lang['no_opt']; + echo "
"; + + echo ""; + + echo "
"; + echo "

"; + + echo "
".$lang['import_f'].""; + echo "".$lang['max_file_size'].": ".number_format(fileUploadMaxSize()/1024/1024)." MiB ".helpLink($lang['help11'])."
"; + echo ""; + echo ""; + echo "
"; + } + else if($view=="rename") + { + //- Rename database confirmation (=rename) + echo $params->getForm(array('view'=>'rename', 'database_rename'=>'1')); + echo ""; + echo $lang['db_rename']." '".htmlencode($db->getPath())."' ".$lang['to']." "; + echo ""; + } + else if($view=="delete") + { + //- Delete database confirmation (=delete) + echo $params->getForm(array('database_delete'=>'1')); + echo "
"; + echo sprintf($lang['ques_del_db'],htmlencode($db->getPath()))."

"; + echo ""; + echo " "; + echo $params->getLink(array(), $lang['cancel']); + echo "
"; + echo ""; + } + + echo ""; +} +echo ""; + +//- HTML: page footer +echo "
"; +echo "".$lang['powered']." ".PROJECT." | "; +echo $lang['free_software']." ".$lang['please_donate']." | "; +printf($lang['page_gen'], $pageTimer); +echo ""; +echo "
"; +$db->close(); //close the database +echo ""; +echo ""; + +//- End of main code + +// Authorization class +// Maintains user's logged-in state and security of application +// + +class Authorization +{ + private $authorized; + private $login_failed; + private $system_password_encrypted; + + public function __construct() + { + // first, make sure a CSRF token is generated + $this->generateToken(); + // second, check for possible CSRF attacks. to protect logins, this is done before checking login + $this->checkToken(); + + // the salt and password encrypting is probably unnecessary protection but is done just + // for the sake of being very secure + if(!isset($_SESSION[COOKIENAME.'_salt']) && !isset($_COOKIE[COOKIENAME.'_salt'])) + { + // create a random salt for this session if a cookie doesn't already exist for it + $_SESSION[COOKIENAME.'_salt'] = self::generateSalt(22); + } + else if(!isset($_SESSION[COOKIENAME.'_salt']) && isset($_COOKIE[COOKIENAME.'_salt'])) + { + // session doesn't exist, but cookie does so grab it + $_SESSION[COOKIENAME.'_salt'] = $_COOKIE[COOKIENAME.'_salt']; + } + + // salted and encrypted password used for checking + $this->system_password_encrypted = md5(SYSTEMPASSWORD."_".$_SESSION[COOKIENAME.'_salt']); + + $this->authorized = + // no password + SYSTEMPASSWORD == '' + // correct password stored in session + || isset($_SESSION[COOKIENAME.'password']) && hash_equals($_SESSION[COOKIENAME.'password'], $this->system_password_encrypted) + // correct password stored in cookie + || isset($_COOKIE[COOKIENAME]) && isset($_COOKIE[COOKIENAME.'_salt']) && hash_equals(md5(SYSTEMPASSWORD."_".$_COOKIE[COOKIENAME.'_salt']), $_COOKIE[COOKIENAME]); + } + + public function attemptGrant($password, $remember) + { + $hashed_password = crypt(SYSTEMPASSWORD, '$2a$07$'.self::generateSalt(22).'$'); + if (hash_equals($hashed_password, crypt($password, $hashed_password))) { + if ($remember) { + // user wants to be remembered, so set a cookie + $expire = time()+60*60*24*30; //set expiration to 1 month from now + setcookie(COOKIENAME, $this->system_password_encrypted, $expire, null, null, null, true); + setcookie(COOKIENAME."_salt", $_SESSION[COOKIENAME.'_salt'], $expire, null, null, null, true); + } else { + // user does not want to be remembered, so destroy any potential cookies + setcookie(COOKIENAME, "", time()-86400, null, null, null, true); + setcookie(COOKIENAME."_salt", "", time()-86400, null, null, null, true); + unset($_COOKIE[COOKIENAME]); + unset($_COOKIE[COOKIENAME.'_salt']); + } + + $_SESSION[COOKIENAME.'password'] = $this->system_password_encrypted; + $this->authorized = true; + return true; + } + + $this->login_failed = true; + return false; + } + + public function revoke() + { + //destroy everything - cookies and session vars + setcookie(COOKIENAME, "", time()-86400, null, null, null, true); + setcookie(COOKIENAME."_salt", "", time()-86400, null, null, null, true); + unset($_COOKIE[COOKIENAME]); + unset($_COOKIE[COOKIENAME.'_salt']); + session_unset(); + session_destroy(); + $this->authorized = false; + // start a new session and generate a new CSRF token for the login form + session_start(); + $this->generateToken(); + } + + public function isAuthorized() + { + return $this->authorized; + } + + public function isFailedLogin() + { + return $this->login_failed; + } + + public function isPasswordDefault() + { + return SYSTEMPASSWORD == 'admin'; + } + + private static function generateSalt($saltSize) + { + $set = 'ABCDEFGHiJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + $setLast = strlen($set) - 1; + $salt = ''; + while ($saltSize-- > 0) { + $salt .= $set[mt_rand(0, $setLast)]; + } + return $salt; + } + + private function generateToken() + { + // generate CSRF token + if (empty($_SESSION[COOKIENAME.'token'])) + { + if (function_exists('random_bytes')) // introduced in PHP 7.0 + { + $_SESSION[COOKIENAME.'token'] = bin2hex(random_bytes(32)); + } + elseif (function_exists('openssl_random_pseudo_bytes')) // introduced in PHP 5.3.0 + { + $_SESSION[COOKIENAME.'token'] = bin2hex(openssl_random_pseudo_bytes(32)); + } + else + { + // For PHP 5.2.x - This case can be removed once we drop support for 5.2.x + $_SESSION[COOKIENAME.'token'] = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM)); + } + } + } + + private function checkToken() + { + // checking CSRF token + if($_SERVER['REQUEST_METHOD'] === 'POST' || isset($_GET['download'])) // all POST forms need tokens! downloads are protected as well + { + if($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['token'])) + $check_token=$_POST['token']; + elseif($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['token'])) + $check_token=$_GET['token']; + + if (!isset($check_token)) + { + die("CSRF token missing"); + } + elseif(!hash_equals($_SESSION[COOKIENAME.'token'], $check_token)) + { + die("CSRF token is wrong - please try to login again"); + } + } + } + +} +// Database class +// Generic database abstraction class to manage interaction with database without worrying about SQLite vs. PHP versions +// +class Database +{ + protected $db; //reference to the DB object + protected $type; //the extension for PHP that handles SQLite + protected $data; + protected $lastResult; + protected $alterError; + protected $debugOutput =''; + + public function __construct($data) + { + global $lang, $params; + $this->data = $data; + try + { + if(!file_exists($this->data["path"]) && !is_writable(dirname($this->data["path"]))) //make sure the containing directory is writable if the database does not exist + { + echo "
"; + printf($lang['db_not_writeable'], htmlencode($this->data["path"]), htmlencode(dirname($this->data["path"]))); + echo $params->getForm(); + echo ""; + echo ""; + echo "

"; + exit(); + } + + $ver = $this->getVersion(); + + switch(true) + { + case ((!isset($data['type']) || $data['type']!=2) && (FORCETYPE=="PDO" || (FORCETYPE==false && class_exists("PDO") && in_array("sqlite", PDO::getAvailableDrivers()) && ($ver==-1 || $ver==3)))): + $this->db = new PDO("sqlite:".$this->data['path']); + if($this->db!=NULL) + { + $this->type = "PDO"; + break; + } + case ((!isset($data['type']) || $data['type']!=2) && (FORCETYPE=="SQLite3" || (FORCETYPE==false && class_exists("SQLite3") && ($ver==-1 || $ver==3)))): + $this->db = new SQLite3($this->data['path']); + if($this->db!=NULL) + { + $this->type = "SQLite3"; + break; + } + case (FORCETYPE=="SQLiteDatabase" || (FORCETYPE==false && class_exists("SQLiteDatabase") && ($ver==-1 || $ver==2))): + $this->db = new SQLiteDatabase($this->data['path']); + if($this->db!=NULL) + { + $this->type = "SQLiteDatabase"; + break; + } + default: + $this->showError(); + exit(); + } + $this->query("PRAGMA foreign_keys = ON"); + } + catch(Exception $e) + { + $this->showError(); + exit(); + } + } + + public function registerUserFunction($ids) + { + // in case a single function id was passed + if (is_string($ids)) + $ids = array($ids); + + if ($this->type == 'PDO') { + foreach ($ids as $id) { + $this->db->sqliteCreateFunction($id, $id, -1); + } + } else { // type is Sqlite3 or SQLiteDatabase + foreach ($ids as $id) { + $this->db->createFunction($id, $id, -1); + } + } + } + + public function getError($complete_msg = false) + { + global $lang, $debug; + $error = "unknown"; + + if($this->alterError!='') + { + $error = $this->alterError; + $this->alterError = ""; + } + else if($this->type=="PDO") + { + $e = $this->db->errorInfo(); + $error = $e[2]; + } + else if($this->type=="SQLite3") + { + $error = $this->db->lastErrorMsg(); + } + else + { + $error = sqlite_error_string($this->db->lastError()); + } + + if($complete_msg) + { + $error = $lang['err'].": ".htmlencode($error); + // do not suggest to report a bug when constraints fail + if(strpos($error, 'constraint failed')===false) + $error.="
".$lang['bug_report'].' '.PROJECT_BUGTRACKER_LINK; + } + + if($debug) + $error .= $this->getDebugOutput(); + + return $error; + } + + function getDebugOutput() + { + return ($this->debugOutput != "" ? "
DEBUG:
".$this->debugOutput : $this->debugOutput); + } + + public function showError() + { + global $lang; + $classPDO = class_exists("PDO"); + $classSQLite3 = class_exists("SQLite3"); + $classSQLiteDatabase = class_exists("SQLiteDatabase"); + if($classPDO) // PDO is there, check if the SQLite driver for PDO is missing + $PDOSqliteDriver = (in_array("sqlite", PDO::getAvailableDrivers() )); + else + $PDOSqliteDriver = false; + echo "
"; + printf($lang['db_setup'], $this->getPath()); + echo ".

".$lang['chk_ext']."...

"; + echo "PDO: ".($classPDO ? $lang['installed'] : $lang['not_installed'])."
"; + echo "PDO SQLite Driver: ".($PDOSqliteDriver ? $lang['installed'] : $lang['not_installed'])."
"; + echo "SQLite3: ".($classSQLite3 ? $lang['installed'] : $lang['not_installed'])."
"; + echo "SQLiteDatabase: ".($classSQLiteDatabase ? $lang['installed'] : $lang['not_installed'])."
"; + echo "
...".$lang['done'].".


"; + if(!$classPDO && !$classSQLite3 && !$classSQLiteDatabase) + printf($lang['sqlite_ext_support'], PROJECT); + else + { + if(!$PDOSqliteDriver && !$classSQLite3 && $this->getVersion()==3) + printf($lang['sqlite_v_error'], 3, PROJECT, 2); + else if(!$classSQLiteDatabase && $this->getVersion()==2) + printf($lang['sqlite_v_error'], 2, PROJECT, 3); + else + echo $lang['report_issue'].' '.PROJECT_BUGTRACKER_LINK.'.'; + } + echo "

See ".PROJECT_INSTALL_LINK." for help.

"; + + $this->print_db_list(); + + echo "
"; + } + + // print the list of databases + public function print_db_list() + { + global $databases, $lang, $params, $currentDB; + echo "
".$lang['db_ch'].""; + if(sizeof($databases)<10) //if there aren't a lot of databases, just show them as a list of links instead of drop down menu + { + $i=0; + foreach($databases as $database) + { + $i++; + $name = $database['name']; + if(mb_strlen($name)>25) + $name = "...".mb_substr($name, mb_strlen($name)-22, 22); + echo '[' . ($database['readable'] ? 'r':' ' ) . ($database['writable'] && $database['writable_dir'] ? 'w':' ' ) . '] '; + + echo $params->getLink(array('database'=>$database['path'], 'table'=>null), htmlencode($name), ($database == $currentDB? 'active_db': '') ); + echo "  "; + echo $params->getLink(array('download'=>$database['path'], 'table'=>null, 'token'=>$_SESSION[COOKIENAME.'token']), '[↓]', '', $lang['backup']); + + if($i"; + } + } + else //there are a lot of databases - show a drop down menu + { + echo $params->getForm(array('table'=>null), 'get'); + echo ""; + echo ""; + echo ""; + } + echo "
"; + } + + public function __destruct() + { + if($this->db) + $this->close(); + } + + //get the exact PHP extension being used for SQLite + public function getType() + { + return $this->type; + } + + // get the version of the SQLite library + public function getSQLiteVersion() + { + $queryVersion = $this->select("SELECT sqlite_version() AS sqlite_version"); + return $queryVersion['sqlite_version']; + } + + //get the name of the database + public function getName() + { + return $this->data["name"]; + } + + //get the filename of the database + public function getPath() + { + return $this->data["path"]; + } + + //is the db-file writable? + public function isWritable() + { + return $this->data["writable"]; + } + + //is the db-folder writable? + public function isDirWritable() + { + return $this->data["writable_dir"]; + } + + //get the version of the database + public function getVersion() + { + if(file_exists($this->data['path'])) //make sure file exists before getting its contents + { + $content = strtolower(file_get_contents($this->data['path'], NULL, NULL, 0, 40)); //get the first 40 characters of the database file + $p = strpos($content, "** this file contains an sqlite 2"); //this text is at the beginning of every SQLite2 database + if($p!==false) //the text is found - this is version 2 + return 2; + else + return 3; + } + else //return -1 to indicate that it does not exist and needs to be created + { + return -1; + } + } + + //get the size of the database (in KiB) + public function getSize() + { + return round(filesize($this->data["path"])*0.0009765625, 1); + } + + //get the last modified time of database + public function getDate() + { + global $lang; + return date($lang['date_format'], filemtime($this->data['path'])); + } + + //get number of affected rows from last query + public function getAffectedRows() + { + if($this->type=="PDO") + if(!is_object($this->lastResult)) + // in case it was an alter table statement, there is no lastResult object + return 0; + else + return $this->lastResult->rowCount(); + else if($this->type=="SQLite3") + return $this->db->changes(); + else if($this->type=="SQLiteDatabase") + return $this->db->changes(); + } + + public function getTypeOfTable($table) + { + $result = $this->select("SELECT `type` FROM `sqlite_master` WHERE `name`=" . $this->quote($table), 'assoc'); + return $result['type']; + } + + public function getTableInfo($table) + { + return $this->selectArray("PRAGMA table_info(".$this->quote_id($table).")"); + } + + // returns the list of tables (opt. incl. views) as + // array( Tablename => tableType ) with tableType being 'view' or 'table' + public function getTables($alsoViews=true, $alsoInternal=false, $orderBy='name', $orderDirection='ASC') + { + $query = "SELECT name, type FROM sqlite_master " + . "WHERE (type='table'".($alsoViews?" OR type='view'":"").") " + . "AND name!='' ".($alsoInternal? "":" AND name NOT LIKE 'sqlite_%' ") + . "ORDER BY ".$this->quote_id($orderBy)." ".$orderDirection; + $result = $this->selectArray($query); + $list = array(); + for($i=0; $i array(columName) ) + public function getTableDefinitions() + { + $tables = $this->getTables(true, true); + $result = array(); + foreach ($tables as $tableName => $tableType) + { + $tableInfo = $this->getTableInfo($tableName); + $columns = array(); + foreach($tableInfo as $column) + $columns[] = $column['name']; + $result[$tableName] = $columns; + } + return $result; + } + + public function close() + { + if($this->type=="PDO") + $this->db = NULL; + else if($this->type=="SQLite3") + $this->db->close(); + else if($this->type=="SQLiteDatabase") + $this->db = NULL; + } + + public function beginTransaction() + { + $this->query("BEGIN"); + } + + public function commitTransaction() + { + $this->query("COMMIT"); + } + + public function rollbackTransaction() + { + $this->query("ROLLBACK"); + } + + //generic query wrapper + //returns false on error and the query result on success + public function query($query, $ignoreAlterCase=false) + { + global $debug; + if(strtolower(substr(ltrim($query),0,5))=='alter' && $ignoreAlterCase==false) //this query is an ALTER query - call the necessary function + { + preg_match("/^\s*ALTER\s+TABLE\s+\"((?:[^\"]|\"\")+)\"\s+(.*)$/i",$query,$matches); + if(!isset($matches[1]) || !isset($matches[2])) + { + if($debug) echo "SQL?
"; + return false; + } + $tablename = str_replace('""','"',$matches[1]); + $alterdefs = $matches[2]; + if($debug) echo "ALTER TABLE QUERY=(".htmlencode($query)."), tablename=($tablename), alterdefs=($alterdefs)
"; + $result = $this->alterTable($tablename, $alterdefs); + } + else //this query is normal - proceed as normal + { + $result = $this->db->query($query); + if($debug) echo "SQL?
"; + } + if($result===false) + return false; + $this->lastResult = $result; + return $result; + } + + //wrapper for an INSERT and returns the ID of the inserted row + public function insert($query) + { + $result = $this->query($query); + if($this->type=="PDO") + return $this->db->lastInsertId(); + else if($this->type=="SQLite3") + return $this->db->lastInsertRowID(); + else if($this->type=="SQLiteDatabase") + return $this->db->lastInsertRowid(); + } + + //returns an array for SELECT + public function select($query, $mode="both") + { + $result = $this->query($query); + if(!$result) //make sure the result is valid + return NULL; + if($this->type=="PDO") + { + if($mode=="assoc") + $mode = PDO::FETCH_ASSOC; + else if($mode=="num") + $mode = PDO::FETCH_NUM; + else + $mode = PDO::FETCH_BOTH; + $ret = $result->fetch($mode); + $result->closeCursor(); + return $ret; + } + else if($this->type=="SQLite3") + { + if($mode=="assoc") + $mode = SQLITE3_ASSOC; + else if($mode=="num") + $mode = SQLITE3_NUM; + else + $mode = SQLITE3_BOTH; + $ret = $result->fetchArray($mode); + $result->finalize(); + return $ret; + } + else if($this->type=="SQLiteDatabase") + { + if($mode=="assoc") + $mode = SQLITE_ASSOC; + else if($mode=="num") + $mode = SQLITE_NUM; + else + $mode = SQLITE_BOTH; + return $result->fetch($mode); + } + } + + //returns an array of arrays after doing a SELECT + public function selectArray($query, $mode="both") + { + $result = $this->query($query); + //make sure the result is valid + if($result=== false || $result===NULL) + return NULL; // error + if(!is_object($result)) // no rows returned + return array(); + if($this->type=="PDO") + { + if($mode=="assoc") + $mode = PDO::FETCH_ASSOC; + else if($mode=="num") + $mode = PDO::FETCH_NUM; + else + $mode = PDO::FETCH_BOTH; + $ret = $result->fetchAll($mode); + $result->closeCursor(); + return $ret; + } + else if($this->type=="SQLite3") + { + if($mode=="assoc") + $mode = SQLITE3_ASSOC; + else if($mode=="num") + $mode = SQLITE3_NUM; + else + $mode = SQLITE3_BOTH; + $arr = array(); + $i = 0; + while($res = $result->fetchArray($mode)) + { + $arr[$i] = $res; + $i++; + } + $result->finalize(); + return $arr; + } + else if($this->type=="SQLiteDatabase") + { + if($mode=="assoc") + $mode = SQLITE_ASSOC; + else if($mode=="num") + $mode = SQLITE_NUM; + else + $mode = SQLITE_BOTH; + return $result->fetchAll($mode); + } + } + + //returns an array of the next row in $result + public function fetch($result, $mode="both") + { + //make sure the result is valid + if($result=== false || $result===NULL) + return NULL; // error + if(!is_object($result)) // no rows returned + return array(); + if($this->type=="PDO") + { + if($mode=="assoc") + $mode = PDO::FETCH_ASSOC; + else if($mode=="num") + $mode = PDO::FETCH_NUM; + else + $mode = PDO::FETCH_BOTH; + return $result->fetch($mode); + } + else if($this->type=="SQLite3") + { + if($mode=="assoc") + $mode = SQLITE3_ASSOC; + else if($mode=="num") + $mode = SQLITE3_NUM; + else + $mode = SQLITE3_BOTH; + return $result->fetchArray($mode); + } + else if($this->type=="SQLiteDatabase") + { + if($mode=="assoc") + $mode = SQLITE_ASSOC; + else if($mode=="num") + $mode = SQLITE_NUM; + else + $mode = SQLITE_BOTH; + return $result->fetch($mode); + } + } + + public function getColumnName($result, $colNum) + { + //make sure the result is valid + if($result=== false || $result===NULL || !is_object($result)) + return ""; // error or no rows returned + if($this->type=="PDO") + { + $meta = $result->getColumnMeta($colNum); + return $meta['name']; + } + else if($this->type=="SQLite3") + { + return $result->columnName($colNum); + } + else if($this->type=="SQLiteDatabase") + { + return $result->fieldName($colNum); + } + } + + + // SQlite supports multiple ways of surrounding names in quotes: + // single-quotes, double-quotes, backticks, square brackets. + // As sqlite does not keep this strict, we also need to be flexible here. + // This function generates a regex that matches any of the possibilities. + private function sqlite_surroundings_preg($name,$preg_quote=true,$notAllowedCharsIfNone="'\"",$notAllowedName=false) + { + if($name=="*" || $name=="+") + { + if($notAllowedName!==false && $preg_quote) + $notAllowedName = preg_quote($notAllowedName,"/"); + // use possesive quantifiers to save memory + // (There is a bug in PCRE starting in 8.13 and fixed in PCRE 8.36 + // why we can't use posesive quantifiers - See issue #310). + if(version_compare(strstr(constant('PCRE_VERSION'), ' ', true), '8.36', '>=') || + version_compare(strstr(constant('PCRE_VERSION'), ' ', true), '8.12', '<=')) + $posessive='+'; + else + $posessive=''; + + $nameSingle = ($notAllowedName!==false?"(?!".$notAllowedName."')":"")."(?:[^']$name+|'')$name".$posessive; + $nameDouble = ($notAllowedName!==false?"(?!".$notAllowedName."\")":"")."(?:[^\"]$name+|\"\")$name".$posessive; + $nameBacktick = ($notAllowedName!==false?"(?!".$notAllowedName."`)":"")."(?:[^`]$name+|``)$name".$posessive; + $nameSquare = ($notAllowedName!==false?"(?!".$notAllowedName."\])":"")."(?:[^\]]$name+|\]\])$name".$posessive; + $nameNo = ($notAllowedName!==false?"(?!".$notAllowedName."\s)":"")."[^".$notAllowedCharsIfNone."]$name"; + } + else + { + if($preg_quote) $name = preg_quote($name,"/"); + + $nameSingle = str_replace("'","''",$name); + $nameDouble = str_replace('"','""',$name); + $nameBacktick = str_replace('`','``',$name); + $nameSquare = str_replace(']',']]',$name); + $nameNo = $name; + } + + $preg = "(?:'".$nameSingle."'|". // single-quote surrounded or not in quotes (correct SQL for values/new names) + $nameNo."|". // not surrounded (correct SQL if not containing reserved words, spaces or some special chars) + "\"".$nameDouble."\"|". // double-quote surrounded (correct SQL for identifiers) + "`".$nameBacktick."`|". // backtick surrounded (MySQL-Style) + "\[".$nameSquare."\])"; // square-bracket surrounded (MS Access/SQL server-Style) + return $preg; + } + + // Returns the last PREG error as a string, '' if no error occured + private function getPregError() + { + $error = preg_last_error(); + switch ($error) + { + case PREG_NO_ERROR: return 'No error'; + case PREG_INTERNAL_ERROR: return 'There is an internal error!'; + case PREG_BACKTRACK_LIMIT_ERROR: return 'Backtrack limit was exhausted!'; + case PREG_RECURSION_LIMIT_ERROR: return 'Recursion limit was exhausted!'; + case PREG_BAD_UTF8_ERROR: return 'Bad UTF8 error!'; + // PREG_BAD_UTF8_OFFSET_ERROR is introduced in PHP 5.3.0, which is not yet required by PLA, so we use its value 5 instead so long + case 5: return 'Bad UTF8 offset error!'; + default: return 'Unknown Error'; + } + } + + // function that is called for an alter table statement in a query + // code borrowed with permission from http://code.jenseng.com/db/ + // this has been completely debugged / rewritten by Christopher Kramer + public function alterTable($table, $alterdefs) + { + global $debug, $lang; + $this->alterError=""; + $errormsg = sprintf($lang['alter_failed'],htmlencode($table)).' - '; + if($debug) $this->debugOutput .= "ALTER TABLE: table=($table), alterdefs=($alterdefs), PCRE version=(".PCRE_VERSION.")

"; + if($alterdefs != '') + { + $recreateQueries = array(); + $resultArr = $this->selectArray("SELECT sql,name,type FROM sqlite_master WHERE tbl_name = ".$this->quote($table)); + if(sizeof($resultArr)<1) + { + $this->alterError = $errormsg . sprintf($lang['tbl_inexistent'], htmlencode($table)); + if($debug) $this->debugOutput .= "ERROR: unknown table

"; + return false; + } + for($i=0; $idebugOutput .= "recreate=(".$row['sql'].";)
"; + } + } + elseif($row['type']=='view') // workaround to rename views + { + $origsql = $row['sql']; + $preg_remove_create_view = "/^\s*+CREATE\s++VIEW\s++".$this->sqlite_surroundings_preg($table)."\s*+(AS\s++SELECT\s++.*+)$/is"; + $origsql_no_create = preg_replace($preg_remove_create_view, '$1', $origsql, 1); + if($debug) $this->debugOutput .= "origsql=($origsql)
preg_remove_create_table=($preg_remove_create_view)
"; + preg_match("/RENAME\s++TO\s++(?:\"((?:[^\"]|\"\")+)\"|'((?:[^']|'')+)')/is", $alterdefs, $matches); + if(isset($matches[1]) && $matches[1]!='') + $newname = $matches[1]; + elseif(isset($matches[2]) && $matches[2]!='') + $newname = $matches[2]; + else + { + $this->alterError = $errormsg . ' could not detect new view name. It needs to be in single or double quotes.'; + if($debug) $this->debugOutput .= "ERROR: could not detect new view name
"; + return false; + } + $dropoldSQL = 'DROP VIEW '.$this->quote_id($table); + $createnewSQL = 'CREATE VIEW '.$this->quote_id($newname).' '.$origsql_no_create; + $alter_transaction = 'BEGIN; ' . $dropoldSQL .'; '. $createnewSQL . '; ' . 'COMMIT;'; + if($debug) $this->debugOutput .= $alter_transaction; + return $this->multiQuery($alter_transaction); + } + else + { + // ALTER the table + $tmpname = 't'.time(); + $origsql = $row['sql']; + $preg_remove_create_table = "/^\s*+CREATE\s++TABLE\s++".$this->sqlite_surroundings_preg($table)."\s*+(\(.*+)$/is"; + $origsql_no_create = preg_replace($preg_remove_create_table, '$1', $origsql, 1); + if($debug) $this->debugOutput .= "origsql=($origsql)
preg_remove_create_table=($preg_remove_create_table)
"; + if($origsql_no_create == $origsql) + { + $this->alterError = $errormsg . $lang['alter_tbl_name_not_replacable']; + if($debug) $this->debugOutput .= "ERROR: could not get rid of CREATE TABLE
"; + return false; + } + $createtemptableSQL = "CREATE TABLE ".$this->quote($tmpname)." ".$origsql_no_create; + if($debug) $this->debugOutput .= "createtemptableSQL=($createtemptableSQL)
"; + $createindexsql = array(); + $preg_alter_part = "/(?:DROP(?! PRIMARY KEY)|ADD(?! PRIMARY KEY)|CHANGE|RENAME TO|ADD PRIMARY KEY|DROP PRIMARY KEY)" // the ALTER command + ."(?:" + ."\s+\(".$this->sqlite_surroundings_preg("+",false,"\"'\[`)")."+\)" // stuff in brackets (in case of ADD PRIMARY KEY) + ."|" // or + ."\s+".$this->sqlite_surroundings_preg("+",false,",'\"\[`") // column names and stuff like this + .")*/i"; + if($debug) + $this->debugOutput .= "preg_alter_part=(".$preg_alter_part.")
"; + preg_match_all($preg_alter_part,$alterdefs,$matches); + $defs = $matches[0]; + + $result_oldcols = $this->getTableInfo($table); + $newcols = array(); + $coltypes = array(); + $primarykey = array(); + foreach($result_oldcols as $column_info) + { + $newcols[$column_info['name']] = $column_info['name']; + $coltypes[$column_info['name']] = $column_info['type']; + if($column_info['pk']) + $primarykey[] = $column_info['name']; + } + $newcolumns = ''; + $oldcolumns = ''; + reset($newcols); + while(list($key, $val) = each($newcols)) + { + $newcolumns .= ($newcolumns?', ':'').$this->quote_id($val); + $oldcolumns .= ($oldcolumns?', ':'').$this->quote_id($key); + } + $copytotempsql = 'INSERT INTO '.$this->quote_id($tmpname).'('.$newcolumns.') SELECT '.$oldcolumns.' FROM '.$this->quote_id($table); + $dropoldsql = 'DROP TABLE '.$this->quote_id($table); + $createtesttableSQL = $createtemptableSQL; + if(count($defs)<1) + { + $this->alterError = $errormsg . $lang['alter_no_def']; + if($debug) $this->debugOutput .= "ERROR: defs<1

"; + return false; + } + foreach($defs as $def) + { + if($debug) $this->debugOutput .= "
def=$def
"; + $preg_parse_def = + "/^(DROP(?! PRIMARY KEY)|ADD(?! PRIMARY KEY)|CHANGE|RENAME TO|ADD PRIMARY KEY|DROP PRIMARY KEY)" // $matches[1]: command + ."(?:" // this is either + ."(?:\s+\((.+)\)\s*$)" // anything in brackets (for ADD PRIMARY KEY) + // then $matches[2] is what there is in brackets + ."|" // OR: + ."(?:\s+\"((?:[^\"]|\"\")+)\"|\s+'((?:[^']|'')+)')"// (first) column name, either in single or double quotes + // in case of RENAME TO, it is the new a table name + // $matches[3] will be the column/table name without the quotes if double quoted + // $matches[4] will be the column/table name without the quotes if single quoted + ."(" // $matches[5]: anything after the column name + ."(?:\s+'((?:[^']|'')+)')?" // $matches[6] (optional): a second column name surrounded with single quotes + // (the match does not contain the quotes) + ."\s*" + ."((?:[A-Z]+\s*)+(?:\(\s*[+-]?\s*[0-9]+(?:\s*,\s*[+-]?\s*[0-9]+)?\s*\))?)?\s*" // $matches[7] (optional): a type name + .".*". + ")" + ."?\s*$" + .")?\s*$/i"; // in case of DROP PRIMARY KEY, there is nothing after the command + if($debug) $this->debugOutput .= "preg_parse_def=$preg_parse_def
"; + $parse_def = preg_match($preg_parse_def,$def,$matches); + if($parse_def===false) + { + $this->alterError = $errormsg . $lang['alter_parse_failed']; + if($debug) $this->debugOutput .= "ERROR: !parse_def

"; + return false; + } + if(!isset($matches[1])) + { + $this->alterError = $errormsg . $lang['alter_action_not_recognized']; + if($debug) $this->debugOutput .= "ERROR: !isset(matches[1])

"; + return false; + } + $action = strtolower($matches[1]); + if(($action == 'add' || $action == 'rename to') && isset($matches[4]) && $matches[4]!='') + $column = str_replace("''","'",$matches[4]); // enclosed in '' + elseif($action == 'add primary key' && isset($matches[2]) && $matches[2]!='') + $column = $matches[2]; + elseif($action == 'drop primary key') + $column = ''; // DROP PRIMARY KEY has no column definition + elseif(isset($matches[3]) && $matches[3]!='') + $column = str_replace('""','"',$matches[3]); // enclosed in "" + else + $column = ''; + + $column_escaped = str_replace("'","''",$column); + + if($debug) $this->debugOutput .= "action=($action), column=($column), column_escaped=($column_escaped)
"; + + /* we build a regex that devides the CREATE TABLE statement parts: + Part example Group Explanation + 1. CREATE TABLE t... ( $1 + 2. 'col1' ..., 'col2' ..., 'colN' ..., $3 (with col1-colN being columns that are not changed and listed before the col to change) + 3. 'colX' ..., (with colX being the column to change/drop) + 4. 'colX+1' ..., ..., 'colK') $5 (with colX+1-colK being columns after the column to change/drop) + */ + $preg_create_table = "\s*+(CREATE\s++TABLE\s++".preg_quote($this->quote($tmpname),"/")."\s*+\()"; // This is group $1 (keep unchanged) + $preg_column_definiton = "\s*+".$this->sqlite_surroundings_preg("+",true," '\"\[`,",$column)."(?:\s*+".$this->sqlite_surroundings_preg("*",false,"'\",`\[ ").")++"; // catches a complete column definition, even if it is + // 'column' TEXT NOT NULL DEFAULT 'we have a comma, here and a double ''quote!' + // this definition does NOT match columns with the column name $column + if($debug) $this->debugOutput .= "preg_column_definition=(".$preg_column_definiton.")
"; + $preg_columns_before = // columns before the one changed/dropped (keep) + "(?:". + "(". // group $2. Keep this one unchanged! + "(?:". + "$preg_column_definiton,\s*+". // column definition + comma + ")*". // there might be any number of such columns here + $preg_column_definiton. // last column definition + ")". // end of group $2 + ",\s*+" // the last comma of the last column before the column to change. Do not keep it! + .")?"; // there might be no columns before + if($debug) $this->debugOutput .= "preg_columns_before=(".$preg_columns_before.")
"; + $preg_columns_after = "(,\s*(.+))?"; // the columns after the column to drop. This is group $3 (drop) or $4(change) (keep!) + // we could remove the comma using $6 instead of $5, but then we might have no comma at all. + // Keeping it leaves a problem if we drop the first column, so we fix that case in another regex. + $table_new = $table; + + switch($action) + { + case 'add': + if($column=='') + { + $this->alterError = $errormsg . ' (add) - '. $lang['alter_no_add_col']; + return false; + } + $new_col_definition = "'$column_escaped' ".(isset($matches[5])?$matches[5]:''); + $preg_pattern_add = "/^".$preg_create_table. // the CREATE TABLE statement ($1) + "((?:(?!,\s*(?:PRIMARY\s+KEY\s*\(|CONSTRAINT\s|UNIQUE\s*\(|CHECK\s*\(|FOREIGN\s+KEY\s*\()).)*)". // column definitions ($2) + "(.*)\\)\s*$/si"; // table-constraints like PRIMARY KEY(a,b) ($3) and the closing bracket + // append the column definiton in the CREATE TABLE statement + $newSQL = preg_replace($preg_pattern_add, '$1$2, '.strtr($new_col_definition, array('\\' => '\\\\', '$' => '\$')).' $3', $createtesttableSQL).')'; + $preg_error = $this->getPregError(); + if($debug) + { + $this->debugOutput .= $createtesttableSQL."

"; + $this->debugOutput .= $newSQL."

"; + $this->debugOutput .= $preg_pattern_add."

"; + } + if($newSQL==$createtesttableSQL) // pattern did not match, so column adding did not succed + { + $this->alterError = $errormsg . ' (add) - '.$lang['alter_pattern_mismatch'].'. PREG ERROR: '.$preg_error; + return false; + } + $createtesttableSQL = $newSQL; + break; + case 'change': + var_dump($matches); + if(!isset($matches[6])) + { + $this->alterError = $errormsg . ' (change) - '.$lang['alter_col_not_recognized']; + return false; + } + $new_col_name = $matches[6]; + if(!isset($matches[7])) + $new_col_type = ''; + else + $new_col_type = $matches[7]; + $new_col_definition = "'$new_col_name' $new_col_type"; + $preg_column_to_change = "\s*".$this->sqlite_surroundings_preg($column)."(?:\s+".preg_quote($coltypes[$column]).")?(\s+(?:".$this->sqlite_surroundings_preg("*",false,",'\"`\[").")+)?"; + // replace this part (we want to change this column) + // group $3 contains the column constraints (keep!). the name & data type is replaced. + $preg_pattern_change = "/^".$preg_create_table.$preg_columns_before.$preg_column_to_change.$preg_columns_after."\s*\\)\s*$/s"; + + // replace the column definiton in the CREATE TABLE statement + $newSQL = preg_replace($preg_pattern_change, '$1$2,'.strtr($new_col_definition, array('\\' => '\\\\', '$' => '\$')).'$3$4)', $createtesttableSQL); + $preg_error = $this->getPregError(); + // remove comma at the beginning if the first column is changed + // probably somebody is able to put this into the first regex (using lookahead probably). + $newSQL = preg_replace("/^\s*(CREATE\s+TABLE\s+".preg_quote($this->quote($tmpname),"/")."\s+\(),\s*/",'$1',$newSQL); + if($debug) + { + $this->debugOutput .= "preg_column_to_change=(".$preg_column_to_change.")

"; + $this->debugOutput .= $createtesttableSQL."

"; + $this->debugOutput .= $newSQL."

"; + + $this->debugOutput .= $preg_pattern_change."

"; + } + if($newSQL==$createtesttableSQL || $newSQL=="") // pattern did not match, so column removal did not succed + { + $this->alterError = $errormsg . ' (change) - '.$lang['alter_pattern_mismatch'].'. PREG ERROR: '.$preg_error; + return false; + } + $createtesttableSQL = $newSQL; + $newcols[$column] = str_replace("''","'",$new_col_name); + break; + case 'drop': + $preg_column_to_drop = "\s*".$this->sqlite_surroundings_preg($column)."\s+(?:".$this->sqlite_surroundings_preg("*",false,",'\"\[`").")+"; // delete this part (we want to drop this column) + $preg_pattern_drop = "/^".$preg_create_table.$preg_columns_before.$preg_column_to_drop.$preg_columns_after."\s*\\)\s*$/s"; + + // remove the column out of the CREATE TABLE statement + $newSQL = preg_replace($preg_pattern_drop, '$1$2$3)', $createtesttableSQL); + $preg_error = $this->getPregError(); + // remove comma at the beginning if the first column is removed + // probably somebody is able to put this into the first regex (using lookahead probably). + $newSQL = preg_replace("/^\s*(CREATE\s+TABLE\s+".preg_quote($this->quote($tmpname),"/")."\s+\(),\s*/",'$1',$newSQL); + if($debug) + { + $this->debugOutput .= $createtesttableSQL."

"; + $this->debugOutput .= $newSQL."

"; + $this->debugOutput .= $preg_pattern_drop."

"; + } + if($newSQL==$createtesttableSQL || $newSQL=="") // pattern did not match, so column removal did not succed + { + $this->alterError = $errormsg . ' (drop) - '.$lang['alter_pattern_mismatch'].'. PREG ERROR: '.$preg_error; + return false; + } + $createtesttableSQL = $newSQL; + unset($newcols[$column]); + break; + case 'rename to': + // don't change column definition at all + $newSQL = $createtesttableSQL; + // only change the name of the table + $table_new = $column; + break; + case 'add primary key': + // we want to add a primary key for the column(s) stored in $column + $newSQL = preg_replace("/\)\s*$/", ", PRIMARY KEY (".$column.") )", $createtesttableSQL); + $createtesttableSQL = $newSQL; + break; + case 'drop primary key': + // we want to drop the primary key + if($debug) $this->debugOutput .= "DROP"; + if(sizeof($primarykey)==1) + { + // if not compound primary key, might be a column constraint -> try removal + $column = $primarykey[0]; + if($debug) $this->debugOutput .= "
Trying to drop column constraint for column $column
"; + /* + TODO: This does not work yet: + CREATE TABLE 't12' ('t1' INTEGER CONSTRAINT "bla" NOT NULL CONSTRAINT 'pk' PRIMARY KEY ); ALTER TABLE "t12" DROP PRIMARY KEY + This does: ! ! + CREATE TABLE 't12' ('t1' INTEGER CONSTRAINT bla NOT NULL CONSTRAINT 'pk' PRIMARY KEY ); ALTER TABLE "t12" DROP PRIMARY KEY + */ + $preg_column_to_change = "(\s*".$this->sqlite_surroundings_preg($column).")". // column ($3) + "(?:". // opt. type and column constraints + "(\s+(?:".$this->sqlite_surroundings_preg("(?:[^PC,'\"`\[]|P(?!RIMARY\s+KEY)|". + "C(?!ONSTRAINT\s+".$this->sqlite_surroundings_preg("+",false," ,'\"\[`")."\s+PRIMARY\s+KEY))",false,",'\"`\[").")*)". // column constraints before PRIMARY KEY ($3) + // primary key constraint (remove this!): + "(?:CONSTRAINT\s+".$this->sqlite_surroundings_preg("+",false," ,'\"\[`")."\s+)?". + "PRIMARY\s+KEY". + "(?:\s+(?:ASC|DESC))?". + "(?:\s+ON\s+CONFLICT\s+(?:ROLLBACK|ABORT|FAIL|IGNORE|REPLACE))?". + "(?:\s+AUTOINCREMENT)?". + "((?:".$this->sqlite_surroundings_preg("*",false,",'\"`\[").")*)". // column constraints after PRIMARY KEY ($4) + ")"; + // replace this part (we want to change this column) + // group $3 (column) $4 (constraints before) and $5 (constraints after) contain the part to keep + $preg_pattern_change = "/^".$preg_create_table.$preg_columns_before.$preg_column_to_change.$preg_columns_after."\s*\\)\s*$/si"; + + // replace the column definiton in the CREATE TABLE statement + $newSQL = preg_replace($preg_pattern_change, '$1$2,$3$4$5$6)', $createtesttableSQL); + // remove comma at the beginning if the first column is changed + // probably somebody is able to put this into the first regex (using lookahead probably). + $newSQL = preg_replace("/^\s*(CREATE\s+TABLE\s+".preg_quote($this->quote($tmpname),"/")."\s+\(),\s*/",'$1',$newSQL); + if($debug) + { + $this->debugOutput .= "preg_column_to_change=(".$preg_column_to_change.")

"; + $this->debugOutput .= $createtesttableSQL."

"; + $this->debugOutput .= $newSQL."

"; + + $this->debugOutput .= $preg_pattern_change."

"; + } + if($newSQL!=$createtesttableSQL && $newSQL!="") // pattern did match, so PRIMARY KEY constraint removed :) + { + $createtesttableSQL = $newSQL; + if($debug) $this->debugOutput .= "
SUCCEEDED
"; + } + else + { + if($debug) $this->debugOutput .= "NO LUCK"; + // TODO: try removing table constraint + return false; + } + $createtesttableSQL = $newSQL; + } else + // TODO: Try removing table constraint + return false; + + break; + default: + if($debug) $this->debugOutput .= 'ERROR: unknown alter operation!

'; + $this->alterError = $errormsg . $lang['alter_unknown_operation']; + return false; + } + } + $droptempsql = 'DROP TABLE '.$this->quote_id($tmpname); + + $createnewtableSQL = "CREATE TABLE ".$this->quote($table_new)." ".preg_replace("/^\s*CREATE\s+TABLE\s+'?".str_replace("'","''",preg_quote($tmpname,"/"))."'?\s+(.*)$/is", '$1', $createtesttableSQL, 1); + + $newcolumns = ''; + $oldcolumns = ''; + reset($newcols); + while(list($key,$val) = each($newcols)) + { + $newcolumns .= ($newcolumns?', ':'').$this->quote_id($val); + $oldcolumns .= ($oldcolumns?', ':'').$this->quote_id($key); + } + $copytonewsql = 'INSERT INTO '.$this->quote_id($table_new).'('.$newcolumns.') SELECT '.$oldcolumns.' FROM '.$this->quote_id($tmpname); + } + } + $alter_transaction = 'BEGIN; '; + $alter_transaction .= $createtemptableSQL.'; '; //create temp table + $alter_transaction .= $copytotempsql.'; '; //copy to table + $alter_transaction .= $dropoldsql.'; '; //drop old table + $alter_transaction .= $createnewtableSQL.'; '; //recreate original table + $alter_transaction .= $copytonewsql.'; '; //copy back to original table + $alter_transaction .= $droptempsql.'; '; //drop temp table + + $preg_index="/^\s*(CREATE\s+(?:UNIQUE\s+)?INDEX\s+(?:".$this->sqlite_surroundings_preg("+",false," '\"\[`")."\s*)*ON\s+)(".$this->sqlite_surroundings_preg($table).")(\s*\((?:".$this->sqlite_surroundings_preg("+",false," '\"\[`")."\s*)*\)\s*)\s*$/i"; + foreach($recreateQueries as $recreate_query) + { + if($recreate_query['type']=='index') + { + // this is an index. We need to make sure the index is not on a column that we drop. If it is, we drop the index as well. + $indexInfos = $this->selectArray('PRAGMA index_info('.$this->quote_id($recreate_query['name']).')'); + foreach($indexInfos as $indexInfo) + { + if(!isset($newcols[$indexInfo['name']])) + { + if($debug) $this->debugOutput .= 'Not recreating the following index:

'.htmlencode($recreate_query['sql']).'

'; + // Index on a column that was dropped. Skip recreation. + continue 2; + } + } + } + // TODO: In case we renamed a column on which there is an index, we need to recreate the index with the column name adjusted. + + // recreate triggers / indexes + if($table == $table_new) + { + // we had no RENAME TO, so we can recreate indexes/triggers just like the original ones + $alter_transaction .= $recreate_query['sql'].';'; + } else + { + // we had a RENAME TO, so we need to exchange the table-name in the CREATE-SQL of triggers & indexes + switch ($recreate_query['type']) + { + case 'index': + $recreate_queryIndex = preg_replace($preg_index, '$1'.$this->quote_id(strtr($table_new, array('\\' => '\\\\', '$' => '\$'))).'$3 ', $recreate_query['sql']); + if($recreate_queryIndex!=$recreate_query['sql'] && $recreate_queryIndex != NULL) + $alter_transaction .= $recreate_queryIndex.';'; + else + { + // the CREATE INDEX regex did not match. this normally should not happen + if($debug) $this->debugOutput .= 'ERROR: CREATE INDEX regex did not match!?

'; + // just try to recreate the index originally (will fail most likely) + $alter_transaction .= $recreate_query['sql'].';'; + } + break; + + case 'trigger': + // TODO: IMPLEMENT + $alter_transaction .= $recreate_query['sql'].';'; + break; + default: + if($debug) $this->debugOutput .= 'ERROR: Unknown type '.htmlencode($recreate_query['type']).'

'; + $alter_transaction .= $recreate_query['sql'].';'; + } + } + } + $alter_transaction .= 'COMMIT;'; + if($debug) $this->debugOutput .= $alter_transaction; + return $this->multiQuery($alter_transaction); + } + } + + //multiple query execution + //returns true on success, false otherwise. Use getError() to fetch the error. + public function multiQuery($query) + { + if($this->type=="PDO") + $success = $this->db->exec($query); + else if($this->type=="SQLite3") + $success = $this->db->exec($query); + else + $success = $this->db->queryExec($query, $error); + return $success; + } + + + // checks whether a table has a primary key + public function hasPrimaryKey($table) + { + $table_info = $this->getTableInfo($table); + foreach($table_info as $row_id => $row_data) + { + if($row_data['pk']) + { + return true; + } + + } + return false; + } + + // Returns an array of columns by which rows can be uniquely adressed. + // For tables with a rowid column, this is always array('rowid') + // for tables without rowid, this is an array of the primary key columns. + public function getPrimaryKey($table) + { + $primary_key = array(); + // check if this table has a rowid + $getRowID = $this->select('SELECT ROWID FROM '.$this->quote_id($table).' LIMIT 0,1'); + if(isset($getRowID[0])) + // it has, so we prefer addressing rows by rowid + return array('rowid'); + else + { + // the table is without rowid, so use the primary key + $table_info = $this->getTableInfo($table); + if(is_array($table_info)) + { + foreach($table_info as $row_id => $row_data) + { + if($row_data['pk']) + $primary_key[] = $row_data['name']; + } + } + } + return $primary_key; + } + + // selects a row by a given key $pk, which is an array of values + // for the columns by which a row can be adressed (rowid or primary key) + public function wherePK($table, $pk) + { + $where = ""; + $primary_key = $this->getPrimaryKey($table); + foreach($primary_key as $pk_index => $column) + { + if($where!="") + $where .= " AND "; + $where .= $this->quote_id($column) . ' = '; + if(is_int($pk[$pk_index]) || is_float($pk[$pk_index])) + $where .= $pk[$pk_index]; + else + $where .= $this->quote($pk[$pk_index]); + } + return $where; + } + + //get number of rows in table + public function numRows($table, $dontTakeLong = false) + { + // as Count(*) can be slow on huge tables without PK, + // if $dontTakeLong is set and the size is > 2MB only count() if there is a PK + if(!$dontTakeLong || $this->getSize() <= 2000 || $this->hasPrimaryKey($table)) + { + $result = $this->select("SELECT Count(*) FROM ".$this->quote_id($table)); + return $result[0]; + } else + { + return '?'; + } + } + + //correctly escape a string to be injected into an SQL query + public function quote($value) + { + if($this->type=="PDO") + { + // PDO quote() escapes and adds quotes + return $this->db->quote($value); + } + else if($this->type=="SQLite3") + { + return "'".$this->db->escapeString($value)."'"; + } + else + { + return "'".sqlite_escape_string($value)."'"; + } + } + + //correctly escape an identifier (column / table / trigger / index name) to be injected into an SQL query + public function quote_id($value) + { + // double-quotes need to be escaped by doubling them + $value = str_replace('"','""',$value); + return '"'.$value.'"'; + } + + + //import sql + //returns true on success, error message otherwise + public function import_sql($query) + { + $import = $this->multiQuery($query); + if(!$import) + return $this->getError(); + else + return true; + } + + public function prepareQuery($query) + { + if($this->type=='PDO' || $this->type=='SQLite3') + return $this->db->prepare($query); + else + { + // here we are in trouble, SQLiteDatabase cannot prepare statements. + // we need to emulate prepare as best as we can + # todo: implement this + return null; + } + } + + public function bindValue($handle, $parameter, $value, $type) + { + if($this->type=='SQLite3') + { + $types = array( + 'bool'=>SQLITE3_INTEGER, + 'int'=>SQLITE3_INTEGER, + 'float'=>SQLITE3_FLOAT, + 'text'=>SQLITE3_TEXT, + 'blob'=>SQLITE3_BLOB, + 'null'=>SQLITE3_NULL); + if(!isset($types[$type])) + $type = 'text'; + // there is no SQLITE_BOOL, so check value and make sure it is 0/1 + if($type=='bool') + { + if($value===1 || $value===true) + $value=1; + elseif($value===0 || $value===false) + $value=0; + else + return false; + } + return $handle->bindValue($parameter, $value, $types[$type]); + } + if($this->type=='PDO') + { + $types = array( + 'bool'=>PDO::PARAM_BOOL, + 'int'=>PDO::PARAM_INT, + 'float'=>PDO::PARAM_STR, + 'text'=>PDO::PARAM_STR, + 'blob'=>PDO::PARAM_LOB, + 'null'=>PDO::PARAM_NULL); + if(!isset($types[$type])) + $type = 'text'; + // there is no PDO::PARAM_FLOAT, so we check it ourself + if($type=='float') + { + if(is_numeric($value)) + $value = (float) $value; + else + return false; + } + return $handle->bindValue($parameter, $value, $types[$type]); + } + else + # todo: workaround + return false; + + } + + public function executePrepared($handle, $fetchResult=false) + { + if($this->type=='PDO') + { + $ok=$handle->execute(); + if($fetchResult && $ok) + { + $res = $handle->fetchAll(); + $handle->closeCursor(); + return $res; + } + else + { + if($ok) + $handle->closeCursor(); + return $ok; + } + } + elseif($this->type=='SQLite3') + { + $resultset=$handle->execute(); + if($fetchResult && $resultset!==false) + { + $res = $resultset->fetchArray(); + $resultset->finalize(); + return $res; + } + else + { + if($resultset!==false) + $resultset->finalize(); + if($resultset===false) + return false; + else + return true; + } + } + else + { + #todo. + return false; + } + } + + //import csv + //returns true on success, error message otherwise + public function import_csv($filename, $table, $field_terminate, $field_enclosed, $field_escaped, $null, $fields_in_first_row) + { + @set_time_limit(-1); + $csv_handle = fopen($filename,'r'); + $csv_insert = "BEGIN;\n"; + $csv_number_of_rows = 0; + // PHP requires enclosure defined, but has no problem if it was not used + if($field_enclosed=="") $field_enclosed='"'; + // PHP requires escaper defined + if($field_escaped=="") $field_escaped='\\'; + // support tab delimiters + if($field_terminate=='\t') $field_terminate = "\t"; + while($csv_handle!==false && !feof($csv_handle)) + { + $csv_data = fgetcsv($csv_handle, 0, $field_terminate, $field_enclosed, $field_escaped); + if(is_array($csv_data) && ($csv_data[0] != NULL || count($csv_data)>1)) + { + $csv_number_of_rows++; + if($csv_number_of_rows==1) + { + if($this->getTypeOfTable($table)!="table") + { + // First,Create a new table + $csv_insert .="CREATE TABLE ".$this->quote($table)." ("; + $number_of_cols = count($csv_data); + foreach($csv_data as $csv_col => $csv_cell) + { + if($fields_in_first_row) + $csv_insert .= $this->quote($csv_cell); + else + $csv_insert.= $this->quote("col{$csv_col}"); + if($csv_col < $number_of_cols-1) + $csv_insert .= ", "; + } + $csv_insert .=");"; + + } else { + $number_of_cols = count($this->getTableInfo($table)); + } + if($fields_in_first_row) + continue; + } + $csv_insert .= "INSERT INTO ".$this->quote_id($table)." VALUES ("; + for($csv_col = 0; $csv_col < $number_of_cols; $csv_col++) + { + if(isset($csv_data[$csv_col])) + $csv_cell = $csv_data[$csv_col]; + else + $csv_cell = $null; + if($csv_cell == $null) + $csv_insert .= "NULL"; + else + $csv_insert.= $this->quote($csv_cell); + if($csv_col < $number_of_cols-1) + $csv_insert .= ","; + } + $csv_insert .= ");\n"; + + if($csv_number_of_rows % 5000 == 0) + { + $csv_insert .= "COMMIT;\nBEGIN;\n"; + } + } + } + if($csv_handle === false) + return "Error reading CSV file"; + else + { + $csv_insert .= "COMMIT;"; + fclose($csv_handle); + $import = $this->multiQuery($csv_insert); + if(!$import) + return $this->getError(); + else + return true; + } + } + + //export csv + public function export_csv($tables, $field_terminate, $field_enclosed, $field_escaped, $null, $crlf, $fields_in_first_row) + { + @set_time_limit(-1); + // we use \r\n if the _client_ OS is windows (as the exported file is downloaded to the client), \n otherwise + $crlf = (isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'], 'Win')!==false ? "\r\n" : "\n"); + + $query = "SELECT * FROM sqlite_master WHERE type='table' or type='view' ORDER BY type DESC"; + $result = $this->selectArray($query); + for($i=0; $igetTableInfo($result[$i]['tbl_name']); + $cols = array(); + for($z=0; $zquote_id($result[$i]['tbl_name']); + $table_result = $this->query($query); + $firstRow=true; + while($row = $this->fetch($table_result, "assoc")) + { + if(!$firstRow) + echo $crlf; + else + $firstRow=false; + + for($y=0; $ygetPath().$crlf; + echo "----".$crlf; + } + $query = "SELECT * FROM sqlite_master WHERE type='table' OR type='index' OR type='view' OR type='trigger' ORDER BY type='trigger', type='index', type='view', type='table'"; + $result = $this->selectArray($query); + + if($transaction) + echo "BEGIN TRANSACTION;".$crlf; + + //iterate through each table + for($i=0; $iquote_id($result[$i]['name']).";".$crlf; + } + if($structure) + { + if($comments) + { + echo "\r\n----".$crlf; + if($result[$i]['type']=="table" || $result[$i]['type']=="view") + echo "-- ".ucfirst($result[$i]['type'])." ".$lang['struct_for']." ".$result[$i]['tbl_name'].$crlf; + else // index or trigger + echo "-- ".$lang['struct_for']." ".$result[$i]['type']." ".$result[$i]['name']." ".$lang['on_tbl']." ".$result[$i]['tbl_name'].$crlf; + echo "----".$crlf; + } + echo $result[$i]['sql'].";".$crlf; + } + if($data && $result[$i]['type']=="table") + { + $query = "SELECT * FROM ".$this->quote_id($result[$i]['tbl_name']); + $table_result = $this->query($query, "assoc"); + + if($comments) + { + $numRows = $this->numRows($result[$i]['tbl_name']); + echo "\r\n----".$crlf; + echo "-- ".$lang['data_dump']." ".$result[$i]['tbl_name'].", ".sprintf($lang['total_rows'], $numRows).$crlf; + echo "----".$crlf; + } + $temp = $this->getTableInfo($result[$i]['tbl_name']); + $cols = array(); + $cols_quoted = array(); + for($z=0; $zquote_id($temp[$z][1]); + } + while($row = $this->fetch($table_result)) + { + $vals = array(); + for($y=0; $yquote($row[$cols[$y]]); + } + echo "INSERT INTO ".$this->quote_id($result[$i]['tbl_name'])." (".implode(",", $cols_quoted).") VALUES (".implode(",", $vals).");".$crlf; + } + } + } + } + if($transaction) + echo "COMMIT;".$crlf; + } +} +class GetParameters +{ + private $_fields; + + public function __construct(array $defaults = array()) + { + $this->_fields = $defaults; + } + + public function __set($key, $value) + { + $this->_fields[$key] = $value; + } + + public function __isset($key) + { + return isset($this->_fields[$key]); + } + + public function __unset($key) + { + unset($this->_fields[$key]); + } + + public function __get($key) + { + return $this->_fields[$key]; + } + + public function getURL(array $assoc = array(), $html = true, $prefix='?') + { + $arg_sep = ($html?'&':'&'); + return $prefix . http_build_query(array_merge($this->_fields, $assoc), '', $arg_sep); + } + + public function getLink(array $assoc = array(), $content = '[ link ]', $class = '', $title = '', $target='') + { + return '' . $content . ''; + } + + public function getForm(array $assoc = array(), $method = 'post', $upload = false, $name = '', $csrf = true) + { + $hidden = ''; + if($method == 'get') + { + $url = ''; + foreach(array_merge($this->_fields, $assoc) as $key => $value) + { + if(!is_null($value)) + $hidden .= ' '; + } + } + else + $url = $this->getURL($assoc); + + if($csrf && $method == 'post') + $hidden .= ''; + + return "
" . + $hidden; + } + + public function redirect(array $assoc = array(), $message="") + { + if($message!="") + { + $_SESSION[COOKIENAME.'messages'][md5($message)] = $message; + $url = $this->getURL(array_merge($assoc, array('message'=>md5($message))), false); + } + else + $url = $this->getURL($assoc, false); + + $protocol = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http'); + + header("Location: ".$protocol."://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].$url, true, 302); + exit; + } +}// class MicroTimer (issue #146) +// wraps calls to microtime(), calculating the elapsed time and rounding output +// +class MicroTimer { + + private $startTime, $stopTime; + + // creates and starts a timer + function __construct() + { + $this->startTime = microtime(true); + } + + // stops a timer + public function stop() + { + $this->stopTime = microtime(true); + } + + // returns the number of seconds from the timer's creation, or elapsed + // between creation and call to ->stop() + public function elapsed() + { + if ($this->stopTime) + return round($this->stopTime - $this->startTime, 4); + + return round(microtime(true) - $this->startTime, 4); + } + + // called when using a MicroTimer object as a string + public function __toString() + { + return (string) $this->elapsed(); + } + +} +// class Resources (issue #157) +// outputs secondary files, such as css and javascript +// data is stored gzipped (gzencode) and encoded (base64_encode) +// +class Resources { + + // set this to the file containing getInternalResource; + // currently unused in split mode; set to __FILE__ for built PLA. + public static $embedding_file = __FILE__; + + private static $_resources = array( + 'css' => array( + 'mime' => 'text/css', + 'data' => 'resources/phpliteadmin.css', + ), + 'javascript' => array( + 'mime' => 'text/javascript', + 'data' => 'resources/phpliteadmin.js', + ), + 'favicon' => array( + 'mime' => 'image/x-icon', + 'data' => 'resources/favicon.ico', + 'base64' => 'true', + ), + ); + + // outputs the specified resource, if defined in this class. + // the main script should do no further output after calling this function. + public static function output($resource) + { + if (isset(self::$_resources[$resource])) { + $res =& self::$_resources[$resource]; + + if (function_exists('getInternalResource') && $data = getInternalResource($res['data'])) { + $filename = self::$embedding_file; + } else { + $filename = $res['data']; + } + + // use last-modified time as etag; etag must be quoted + $etag = '"' . filemtime($filename) . '"'; + + // check headers for matching etag; if etag hasn't changed, use the cached version + if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && $_SERVER['HTTP_IF_NONE_MATCH'] == $etag) { + header('HTTP/1.0 304 Not Modified'); + return; + } + + header('Etag: ' . $etag); + + // cache file for at most 30 days + header('Cache-control: max-age=2592000'); + + // output resource + header('Content-type: ' . $res['mime']); + + if (isset($data)) { + if (isset($res['base64'])) { + echo base64_decode($data); + } else { + echo $data; + } + } else { + readfile($filename); + } + } + } + +} + + +// returns data from internal resources, available in single-file mode +function getInternalResource($res) { + $resources = array('resources/phpliteadmin.css'=>array(0=>0,1=>4059,),'resources/phpliteadmin.js'=>array(0=>4059,1=>4542,),'resources/favicon.ico'=>array(0=>8601,1=>1448,),); + + if (isset($resources[$res]) && $f = fopen(__FILE__, 'r')) { + fseek($f, __COMPILER_HALT_OFFSET__ + $resources[$res][0]); + $data = fread($f, $resources[$res][1]); + fclose($f); + return $data; + } + return false; +} + +// resources embedded below, do not edit! +__halt_compiler() ?>body{margin:0px;padding:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;color:#000;background-color:#e0ebf6;overflow:auto}.body_tbl td{padding:9px 2px 9px 9px}.left_td{width:100px}a{color:#03F;text-decoration:none;cursor:pointer}a:hover{color:#06F}hr{height:1px;border:0;color:#bbb;background-color:#bbb;width:100%}h1{margin:0px;padding:5px;font-size:24px;background-color:#f3cece;text-align:center;color:#000;border-top-left-radius:5px;border-top-right-radius:5px;-moz-border-radius-topleft:5px;-moz-border-radius-topright:5px}#headerlinks{text-align:center;margin-bottom:10px;padding:5px 15px;border-color:#03F;border-width:1px;border-style:solid;border-left-style:none;border-right-style:none;font-size:12px;background-color:#e0ebf6;font-weight:bold}h1 #version{color:#000;font-size:16px}h1 #logo{color:#000}h2{margin:0px;padding:0px;font-size:14px;margin-bottom:20px}input,select,textarea,.CodeMirror{font-family:Arial,Helvetica,sans-serif;background-color:#eaeaea;color:#03F;border-color:#03F;border-style:solid;border-width:1px;margin:5px;border-radius:5px;-moz-border-radius:5px;padding:3px}input.btn{cursor:pointer}input.btn:hover{background-color:#ccc}fieldset label{min-width:200px;display:block;float:left}fieldset{padding:15px;border-color:#03F;border-width:1px;border-style:solid;border-radius:5px;-moz-border-radius:5px;background-color:#f9f9f9}#container{padding:10px}#leftNav{min-width:250px;padding:0px;border-color:#03F;border-width:1px;border-style:solid;background-color:#FFF;padding-bottom:15px;border-radius:5px;-moz-border-radius:5px}.databaseList select{max-width:200px}.viewTable tr td{padding:1px}#loginBox{width:500px;margin-left:auto;margin-right:auto;margin-top:50px;border-color:#03F;border-width:1px;border-style:solid;background-color:#FFF;border-radius:5px;-moz-border-radius:5px}#main{border-color:#03F;border-width:1px;border-style:solid;padding:15px;background-color:#FFF;border-bottom-left-radius:5px;border-bottom-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomleft:5px;-moz-border-radius-bottomright:5px;-moz-border-radius-topright:5px}.td1{background-color:#f9e3e3;text-align:right;font-size:12px;padding-left:10px;padding-right:10px}.td2{background-color:#f3cece;text-align:right;font-size:12px;padding-left:10px;padding-right:10px}.tdheader{border-color:#03F;border-width:1px;border-style:solid;font-weight:bold;font-size:12px;padding-left:10px;padding-right:10px;background-color:#e0ebf6;border-radius:5px;-moz-border-radius:5px}.confirm{border-color:#03F;border-width:1px;border-style:dashed;padding:15px;background-color:#e0ebf6}.tab{display:block;padding:5px;padding-right:8px;padding-left:8px;border-color:#03F;border-width:1px;border-style:solid;margin-right:5px;float:left;border-bottom-style:none;position:relative;top:1px;padding-bottom:4px;background-color:#eaeaea;border-top-left-radius:5px;border-top-right-radius:5px;-moz-border-radius-topleft:5px;-moz-border-radius-topright:5px}.tab_pressed{display:block;padding:5px;padding-right:8px;padding-left:8px;border-color:#03F;border-width:1px;border-style:solid;margin-right:5px;float:left;border-bottom-style:none;position:relative;top:1px;background-color:#FFF;cursor:default;border-top-left-radius:5px;border-top-right-radius:5px;-moz-border-radius-topleft:5px;-moz-border-radius-topright:5px}.helpq{font-size:11px;font-weight:normal}#help_container{padding:0px;font-size:12px;margin-left:auto;margin-right:auto;background-color:#fff}.help_outer{background-color:#FFF;padding:0px;height:300px;position:relative}.help_list{padding:10px;height:auto}.headd{font-size:14px;font-weight:bold;display:block;padding:10px;background-color:#e0ebf6;border-color:#03F;border-width:1px;border-style:solid;border-left-style:none;border-right-style:none}.help_inner{padding:10px}.help_top{display:block;position:absolute;right:10px;bottom:10px}.warning,.delete,.empty,.drop,.delete_db{color:red}.sidebar_table{font-size:11px}.active_table,.active_db{text-decoration:underline}.null{color:#888}.found{background:#FF0;text-decoration:none} +function initAutoincrement() +{var i=0;while(document.getElementById('i'+i+'_autoincrement')!=undefined) +{document.getElementById('i'+i+'_autoincrement').disabled=true;i++;}} +function toggleAutoincrement(i) +{var type=document.getElementById('i'+i+'_type');var primarykey=document.getElementById('i'+i+'_primarykey');var autoincrement=document.getElementById('i'+i+'_autoincrement');if(!autoincrement)return false;if(type.value=='INTEGER'&&primarykey.checked) +autoincrement.disabled=false;else +{autoincrement.disabled=true;autoincrement.checked=false;}} +function toggleNull(i) +{var pk=document.getElementById('i'+i+'_primarykey');var notnull=document.getElementById('i'+i+'_notnull');if(pk.checked) +{notnull.disabled=true;notnull.checked=true;} +else +{notnull.disabled=false;}} +function checkAll(field) +{var i=0;while(document.getElementById('check_'+i)!=undefined) +{document.getElementById('check_'+i).checked=true;i++;}} +function uncheckAll(field) +{var i=0;while(document.getElementById('check_'+i)!=undefined) +{document.getElementById('check_'+i).checked=false;i++;}} +function changeIgnore(area,e,u) +{if(area.value!="") +{if(document.getElementById(e)!=undefined) +document.getElementById(e).checked=false;if(document.getElementById(u)!=undefined) +document.getElementById(u).checked=false;}} +function moveFields() +{var fields=document.getElementById("fieldcontainer");var selected=[];for(var i=0;i0){CodeMirror.commands.autocomplete(instance);}} +function checkFileSize(input) +{if(input.files&&input.files.length==1) +{if(input.files[0].size>fileUploadMaxSize) +{alert(fileUploadMaxSizeErrorMsg+": "+(fileUploadMaxSize/1024/1024)+" MiB");return false;}} +return true;}AAABAAEAEBAAAAEAIAAoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwoKZQAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEMDJMAAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASDg7BAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAETDw9CCQkJ1QUFBb4AAABjAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgsLVgAAAO8YExP/AAAA7QAAALEAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQNDUsAAADJGBMT/xgTE/8AAAD/AAAAuAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZERE8DQoKwhgTE/8QDQ2sGBMT/xgTE/8AAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwICHkAAAD/EQwMzQAAAMIAAAD/AAAA7gAAAGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOCwtWAAAA8RgTE/8IBQW1AAAA/wAAAP8AAADlAAAAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0KCsEAAAD/EQ8PzAAAAMkAAAD/AAAA/wAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDAAAA/xgTE/8TDw/FAAAA8gAAAP8AAADqAAAAJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAALUAAAD/GBMT/wAAALkAAAD/AAAA/wAAAIkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAA4wAAAP8GBgbFAAAA2QAAAP8AAADGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF4AAAD5AAAA/RgTE/8AAAD/AAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQQAAAOIAAAD/AAAA/wAAAHYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjAAAArgAAAG4AAAAAAAAAAAAAAAAAAAAA \ No newline at end of file diff --git a/timeframes.csv b/timeframes.csv new file mode 100644 index 0000000..eab922d --- /dev/null +++ b/timeframes.csv @@ -0,0 +1,3 @@ +Giorno,Inizio,Fine,Blocco +0,600,675,540 +1,672,795,610 diff --git a/ui.php b/ui.php new file mode 100644 index 0000000..778561b --- /dev/null +++ b/ui.php @@ -0,0 +1,1299 @@ + + +
+

MordApp

+ +
+ + + +

Accesso

+

+ + +

+

+ + +

+

+ +

+ + +
+ +

Registrazione

+

+ + +

+

+

+ + +

+

+

+ + + + + + + + + +

+

+
+ + +

+ + +

+

+

+ + +

+

+ +

+
+ +Le due password non coincidono"); + if (!in_array($data["cat"], ["student", "teacher", "other"])) return UIauth("

Selezione una categoria

"); + if ($data["cat"] == "student" && !in_array($data["classe"], str_split("12345"))) return UIauth("

Selezione una classe

"); + if ($data["cat"] == "student" && !in_array($data["sezione"], str_split("ABCDEFGHIJKLMNOPQRSTUVWXYZ"))) return UIauth("

Selezione una sezione

"); + if (empty($data["name"]) || empty($data["email"]) || empty($data["password"])) return UIauth("

Compila tutti i campi

"); + if ($data["cat"] == "student") $classe = $data["classe"] . $data["sezione"]; + elseif ($data["cat"] == "teacher") $classe = "Docente"; + else $classe = "altro"; + $res = new_account($data["email"], $data["name"], $data["password"], $classe); + switch ($res) { + case "ALREADY_EXISTS": + return UIauth("

Esiste già un account con questa email

"); + break; + case "INVALID_EMAIL": + return UIauth("

Email non valida

"); + break; + case "WRONG_DOMAIN": + return UIauth("

Occorre una email @liceococito.it

"); + break; + } + email("Nuovo Account", 'Grazie per esserti registratə su MordApp
Verifica il mio account', $data["email"], $data["name"]); +?> +
+

Mordapp

+
+
+ Account registrato.
Ti arriverà una email di conferma a breve per l'attivazione +
+ Ok +
+Sessione invalida"); +?> +
+

Benvenutə

+

Mordapp

+ + " style="height:40px;"> +
+
+ + + +
+ +
+
Food
+
+
+
+ + + +
+
+
+
+
+
Utente
+
+
+
+ + + +
+
+
+
+
+
Esci
+
+
+
+ + + +
+
+
+
+ +
+ +
+ +
+
Food
+
+
+
+ + + +
+
+
+
+
+
Fasce Orarie
+
+
+
+ + + +
+
+
+
+
+
Menu
+
+
+
+ + + +
+
+
+
+
+ +
+
+
Utente
+
+
+
+ + + +
+
+
+
+
+
Esci
+
+
+
+ + + +
+
+ +
+
+ +
+
+ Sessione invalida"); + ?> +
+

Ordini

+

MordApp

+ " style="height:40px;"> +
+ +

+ +
+ + + +
+
+ + + + +
+
+
+
+ +
+
+
+ Data:
+ Ora:
+
+ Creato il +
+ " . htmlentities($d["name"]) . " ×" . ((int)$d["dishQty"]) . "
"; + $subtot = ((int)$d["dishQty"]) * $d["price"]; + echo " €" . number_format($d["price"], "2", ",", "'") . " × " . ((int)$d["dishQty"]) . " = € " . number_format($subtot, "2", ",", "'") . "
"; + if ($d["dishNotes"]) echo "

Note:
" . htmlentities($d["dishNotes"]) . "


"; + $tot += $subtot; + ?> +
+
+
+ Totale: € +

Note:
" . htmlentities($el["notes"]) . "


"; + ?> +
+
+
+
+ + + "> + +
+
+ + + "> + +
+
+
+
+
+ + +
+ +
+ Sessione invalida"); + if ($orderId != "NEW") { + $o = getOrder($token, $orderId); + if (!$o) return showOrders($token); + $new = false; + } else { + $new = true; + } + ?> +
+

Ordine per il

Nuovo Ordine

+

MordApp

+ " style="height:40px;"> +
+

+ +
+ + + +
+ + +
+
+
+ + + +
+ prepare("SELECT * FROM Dishes WHERE deleted=0 ORDER BY name ASC"); + $q->execute(); + $list = $q->fetchAll(PDO::FETCH_ASSOC); + foreach ($list as $el) { + $val = 0; + $total = "0,00"; + $notes = ""; + foreach ($o["dishes"] as $di) { + if ($di["id"] == $el["id"]) { + $val = $di["dishQty"]; + $total = number_format($val * $el["price"], 2, ",", "'"); + $TOT += $val * $el["price"]; + $notes = $di["dishNotes"]; + break; + } + } + ?> +
+ +
+ +
+ × " value="" data-cpu=""> = € +
+

+ Note + +
+
+
+ + +
+
+
+ Totale: + +
+ + + + + +
+ + +
+
+ +
+
+
+ +
+
+ + + +
+ Sessione invalida"); + ?> +
+

Gestione account

+

Mordapp

+ " style="height:40px;"> + +
+
+
+ + + +
+
+
+
+ + +
+ + +

Accesso

+

+ + " requried> +

+

+ + " requried> +

+

+ + +

+

+ +

+
+
+ Sessione invalida"); + $data = computeTimeframes(); + ?> +
+

Ordini

+

MordApp

+ " style="height:40px;"> +
+ +

+ +
+ + + +
+
+ + + + +
+
+
+

Parametri di ricerca

+
+ + +

+ "> + +

+ "> + +

+ +

+
+ +
+
+
+
+
+ Nessun risultato"; + ?> +
+ + Seleziona il giorno"; + } + ?> + +
+ +
+ Sessione invalida"); + ?> + +
+

Fasce Orarie

+

MordApp

+ " style="height:40px;"> +
+ +

+ +
+ + + +
+
+ Aggiungi fascia oraria +
+
+ + Salva +
+ + + +
+ + Sessione invalida"); + ?> + +
+

Fasce Orarie

+

MordApp

+ " style="height:40px;"> +
+ +

+ +
+ + + +
+
+ Aggiungi Piatto +
+
+ + Salva +
+ + + +
+ +