diff options
author | Andrew Dolgov <[email protected]> | 2021-06-16 14:24:57 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2021-06-16 14:24:57 +0300 |
commit | 8ed8a109659bc4a629dd785f21f22e99bb84f289 (patch) | |
tree | bb2c2db76834dd15e69826134f2ba1a6cae8e6aa /classes/pref/prefs.php | |
parent | 92c78beb909d8955657564127c2e953ca25113e3 (diff) |
add settings profile cloning
Diffstat (limited to 'classes/pref/prefs.php')
-rw-r--r-- | classes/pref/prefs.php | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/classes/pref/prefs.php b/classes/pref/prefs.php index 1eaa99345..cb666e945 100644 --- a/classes/pref/prefs.php +++ b/classes/pref/prefs.php @@ -1338,6 +1338,35 @@ class Pref_Prefs extends Handler_Protected { } } + function cloneprofile() { + $old_profile = $_REQUEST["old_profile"] ?? 0; + $new_title = clean($_REQUEST["new_title"]); + + if ($old_profile && $new_title) { + $new_profile = ORM::for_table('ttrss_settings_profiles')->create(); + $new_profile->title = $new_title; + $new_profile->owner_uid = $_SESSION['uid']; + + if ($new_profile->save()) { + $sth = $this->pdo->prepare("INSERT INTO ttrss_user_prefs + (owner_uid, pref_name, profile, value) + SELECT + :uid, + pref_name, + :new_profile, + value + FROM ttrss_user_prefs + WHERE owner_uid = :uid AND profile = :old_profile"); + + $sth->execute([ + "uid" => $_SESSION["uid"], + "new_profile" => $new_profile->id, + "old_profile" => $old_profile, + ]); + } + } + } + function remprofiles() { $ids = $_REQUEST["ids"] ?? []; @@ -1394,11 +1423,19 @@ class Pref_Prefs extends Handler_Protected { array_push($rv, ["title" => __("Default profile"), "id" => 0, + "initialized" => true, "active" => empty($_SESSION["profile"]) ]); foreach ($profiles as $profile) { $profile['active'] = ($_SESSION["profile"] ?? 0) == $profile->id; + + $num_settings = ORM::for_table('ttrss_user_prefs') + ->where('profile', $profile->id) + ->count(); + + $profile['initialized'] = $num_settings > 0; + array_push($rv, $profile->as_array()); }; |