summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2021-03-04 12:30:45 +0300
committerAndrew Dolgov <[email protected]>2021-03-04 12:30:45 +0300
commit30765805fddfcbec2ee18f96905a530ae30427d1 (patch)
treef5d094f8ff23da899362d4c6956608040f056630
parent31b29e0a56ef6581c5e209c062eee6b3a72a17fe (diff)
use orm for settings profiles stuff
-rw-r--r--classes/pref/prefs.php88
-rw-r--r--js/PrefHelpers.js7
2 files changed, 43 insertions, 52 deletions
diff --git a/classes/pref/prefs.php b/classes/pref/prefs.php
index 09fbce9a1..89783bd38 100644
--- a/classes/pref/prefs.php
+++ b/classes/pref/prefs.php
@@ -1427,66 +1427,61 @@ class Pref_Prefs extends Handler_Protected {
}
function activateprofile() {
- $_SESSION["profile"] = (int) clean($_REQUEST["id"]);
+ $id = (int) $_REQUEST['id'] ?? 0;
- // default value
- if (!$_SESSION["profile"]) $_SESSION["profile"] = null;
+ $profile = ORM::for_table('ttrss_settings_profiles')
+ ->where('owner_uid', $_SESSION['uid'])
+ ->find_one($id);
+
+ if ($profile) {
+ $_SESSION["profile"] = $id;
+ } else {
+ $_SESSION["profile"] = null;
+ }
}
function remprofiles() {
- $ids = explode(",", clean($_REQUEST["ids"]));
+ $ids = $_REQUEST["ids"] ?? [];
- foreach ($ids as $id) {
- if ($_SESSION["profile"] != $id) {
- $sth = $this->pdo->prepare("DELETE FROM ttrss_settings_profiles WHERE id = ? AND
- owner_uid = ?");
- $sth->execute([$id, $_SESSION['uid']]);
- }
- }
+ ORM::for_table('ttrss_settings_profiles')
+ ->where('owner_uid', $_SESSION['uid'])
+ ->where_in('id', $ids)
+ ->where_not_equal('id', $_SESSION['profile'] ?? 0)
+ ->delete_many();
}
function addprofile() {
$title = clean($_REQUEST["title"]);
if ($title) {
- $this->pdo->beginTransaction();
-
- $sth = $this->pdo->prepare("SELECT id FROM ttrss_settings_profiles
- WHERE title = ? AND owner_uid = ?");
- $sth->execute([$title, $_SESSION['uid']]);
+ $profile = ORM::for_table('ttrss_settings_profiles')
+ ->where('owner_uid', $_SESSION['uid'])
+ ->where('title', $title)
+ ->find_one();
- if (!$sth->fetch()) {
+ if (!$profile) {
+ $profile = ORM::for_table('ttrss_settings_profiles')->create();
- $sth = $this->pdo->prepare("INSERT INTO ttrss_settings_profiles (title, owner_uid)
- VALUES (?, ?)");
-
- $sth->execute([$title, $_SESSION['uid']]);
-
- $sth = $this->pdo->prepare("SELECT id FROM ttrss_settings_profiles WHERE
- title = ? AND owner_uid = ?");
- $sth->execute([$title, $_SESSION['uid']]);
+ $profile->title = $title;
+ $profile->owner_uid = $_SESSION['uid'];
+ $profile->save();
}
-
- $this->pdo->commit();
}
}
function saveprofile() {
- $id = clean($_REQUEST["id"]);
- $title = clean($_REQUEST["title"]);
+ $id = (int)$_REQUEST["id"];
+ $title = clean($_REQUEST["value"]);
- if ($id == 0) {
- print __("Default profile");
- return;
- }
-
- if ($title) {
- $sth = $this->pdo->prepare("UPDATE ttrss_settings_profiles
- SET title = ? WHERE id = ? AND
- owner_uid = ?");
+ if ($title && $id) {
+ $profile = ORM::for_table('ttrss_settings_profiles')
+ ->where('owner_uid', $_SESSION['uid'])
+ ->find_one($id);
- $sth->execute([$title, $id, $_SESSION['uid']]);
- print $title;
+ if ($profile) {
+ $profile->title = $title;
+ $profile->save();
+ }
}
}
@@ -1494,18 +1489,19 @@ class Pref_Prefs extends Handler_Protected {
function getProfiles() {
$rv = [];
- $sth = $this->pdo->prepare("SELECT title,id FROM ttrss_settings_profiles
- WHERE owner_uid = ? ORDER BY title");
- $sth->execute([$_SESSION['uid']]);
+ $profiles = ORM::for_table('ttrss_settings_profiles')
+ ->where('owner_uid', $_SESSION['uid'])
+ ->order_by_expr('title')
+ ->find_many();
array_push($rv, ["title" => __("Default profile"),
"id" => 0,
"active" => empty($_SESSION["profile"])
]);
- while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
- $row["active"] = isset($_SESSION["profile"]) && $_SESSION["profile"] == $row["id"];
- array_push($rv, $row);
+ foreach ($profiles as $profile) {
+ $profile['active'] = ($_SESSION["profile"] ?? 0) == $profile->id;
+ array_push($rv, $profile->as_array());
};
print json_encode($rv);
diff --git a/js/PrefHelpers.js b/js/PrefHelpers.js
index 241bb6e71..b599e7e3f 100644
--- a/js/PrefHelpers.js
+++ b/js/PrefHelpers.js
@@ -135,12 +135,7 @@ const Helpers = {
if (confirm(__("Remove selected profiles? Active and default profiles will not be removed."))) {
Notify.progress("Removing selected profiles...", true);
- const query = {
- op: "pref-prefs", method: "remprofiles",
- ids: sel_rows.toString()
- };
-
- xhr.post("backend.php", query, () => {
+ xhr.post("backend.php", {op: "pref-prefs", method: "remprofiles", "ids[]": sel_rows}, () => {
Notify.close();
dialog.refresh();
});