]> git.wh0rd.org - tt-rss.git/blobdiff - classes/pref/users.php
pre-users: disallow renaming admin user
[tt-rss.git] / classes / pref / users.php
index e8775133515276ad575325441bbd03b0b3ff1bef..164935b234533db0d773f06734fcc93a2819bdb5 100644 (file)
@@ -17,93 +17,16 @@ class Pref_Users extends Handler_Protected {
                        return array_search($method, $csrf_ignored) !== false;
                }
 
-               function userdetails() {
-
-                       $uid = sprintf("%d", $_REQUEST["id"]);
-
-                       $result = $this->dbh->query("SELECT login,
-                               ".SUBSTRING_FOR_DATE."(last_login,1,16) AS last_login,
-                               access_level,
-                               (SELECT COUNT(int_id) FROM ttrss_user_entries
-                                       WHERE owner_uid = id) AS stored_articles,
-                               ".SUBSTRING_FOR_DATE."(created,1,16) AS created
-                               FROM ttrss_users
-                               WHERE id = '$uid'");
-
-                       if ($this->dbh->num_rows($result) == 0) {
-                               print "<h1>".__('User not found')."</h1>";
-                               return;
-                       }
-
-                       // print "<h1>User Details</h1>";
-
-                       $login = $this->dbh->fetch_result($result, 0, "login");
-
-                       print "<table width='100%'>";
-
-                       $last_login = make_local_datetime(
-                               $this->dbh->fetch_result($result, 0, "last_login"), true);
-
-                       $created = make_local_datetime(
-                               $this->dbh->fetch_result($result, 0, "created"), true);
-
-                       $access_level = $this->dbh->fetch_result($result, 0, "access_level");
-                       $stored_articles = $this->dbh->fetch_result($result, 0, "stored_articles");
-
-                       print "<tr><td>".__('Registered')."</td><td>$created</td></tr>";
-                       print "<tr><td>".__('Last logged in')."</td><td>$last_login</td></tr>";
-
-                       $result = $this->dbh->query("SELECT COUNT(id) as num_feeds FROM ttrss_feeds
-                               WHERE owner_uid = '$uid'");
-
-                       $num_feeds = $this->dbh->fetch_result($result, 0, "num_feeds");
-
-                       print "<tr><td>".__('Subscribed feeds count')."</td><td>$num_feeds</td></tr>";
-
-                       print "</table>";
-
-                       print "<h1>".__('Subscribed feeds')."</h1>";
-
-                       $result = $this->dbh->query("SELECT id,title,site_url FROM ttrss_feeds
-                               WHERE owner_uid = '$uid' ORDER BY title");
-
-                       print "<ul class=\"userFeedList\">";
-
-                       while ($line = $this->dbh->fetch_assoc($result)) {
-
-                               $icon_file = ICONS_URL."/".$line["id"].".ico";
-
-                               if (file_exists($icon_file) && filesize($icon_file) > 0) {
-                                       $feed_icon = "<img class=\"tinyFeedIcon\" src=\"$icon_file\">";
-                               } else {
-                                       $feed_icon = "<img class=\"tinyFeedIcon\" src=\"images/blank_icon.gif\">";
-                               }
-
-                               print "<li>$feed_icon&nbsp;<a href=\"".$line["site_url"]."\">".$line["title"]."</a></li>";
-
-                       }
-
-                       if ($this->dbh->num_rows($result) < $num_feeds) {
-                               // FIXME - add link to show ALL subscribed feeds here somewhere
-                               print "<li><img
-                                       class=\"tinyFeedIcon\" src=\"images/blank_icon.gif\">&nbsp;...</li>";
-                       }
-
-                       print "</ul>";
-
-                       print "<div align='center'>
-                               <button dojoType=\"dijit.form.Button\" type=\"submit\">".__("Close this window").
-                               "</button></div>";
-
-                       return;
-               }
-
                function edit() {
                        global $access_level_names;
 
-                       $id = $this->dbh->escape_string($_REQUEST["id"]);
+                       print '<div dojoType="dijit.layout.TabContainer" style="height : 400px">
+                       <div dojoType="dijit.layout.ContentPane" title="'.__('Edit user').'">';
+
                        print "<form id=\"user_edit_form\" onsubmit='return false' dojoType=\"dijit.form.Form\">";
 
+                       $id = (int) $this->dbh->escape_string($_REQUEST["id"]);
+
                        print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"id\" value=\"$id\">";
                        print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"pref-users\">";
                        print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"method\" value=\"editSave\">";
@@ -114,7 +37,7 @@ class Pref_Users extends Handler_Protected {
                        $access_level = $this->dbh->fetch_result($result, 0, "access_level");
                        $email = $this->dbh->fetch_result($result, 0, "email");
 
-                       $sel_disabled = ($id == $_SESSION["uid"]) ? "disabled" : "";
+                       $sel_disabled = ($id == $_SESSION["uid"] || $login == "admin") ? "disabled" : "";
 
                        print "<div class=\"dlgSec\">".__("User")."</div>";
                        print "<div class=\"dlgSecCont\">";
@@ -125,7 +48,7 @@ class Pref_Users extends Handler_Protected {
 
                        print "<input size=\"30\" style=\"font-size : 16px\"
                                dojoType=\"dijit.form.ValidationTextBox\" required=\"1\"
-                               onkeypress=\"return filterCR(event, userEditSave)\" $sel_disabled
+                               $sel_disabled
                                name=\"login\" value=\"$login\">";
 
                        print "</div>";
@@ -146,7 +69,7 @@ class Pref_Users extends Handler_Protected {
 
                        print "<hr/>";
 
-                       print "<input dojoType=\"dijit.form.TextBox\" type=\"password\" size=\"20\" onkeypress=\"return filterCR(event, userEditSave)\" placeholder=\"Change password\"
+                       print "<input dojoType=\"dijit.form.TextBox\" type=\"password\" size=\"20\" placeholder=\"Change password\"
                                name=\"password\">";
 
                        print "</div>";
@@ -154,7 +77,7 @@ class Pref_Users extends Handler_Protected {
                        print "<div class=\"dlgSec\">".__("Options")."</div>";
                        print "<div class=\"dlgSecCont\">";
 
-                       print "<input dojoType=\"dijit.form.TextBox\" size=\"30\" name=\"email\" onkeypress=\"return filterCR(event, userEditSave)\" placeholder=\"E-mail\"
+                       print "<input dojoType=\"dijit.form.TextBox\" size=\"30\" name=\"email\" placeholder=\"E-mail\"
                                value=\"$email\">";
 
                        print "</div>";
@@ -163,15 +86,92 @@ class Pref_Users extends Handler_Protected {
 
                        print "</form>";
 
+                       print '</div>'; #tab
+                       print "<div href=\"backend.php?op=pref-users&method=userdetails&id=$id\"
+                               dojoType=\"dijit.layout.ContentPane\" title=\"".__('User details')."\">";
+
+                       print '</div>';
+                       print '</div>';
+
                        print "<div class=\"dlgButtons\">
                                <button dojoType=\"dijit.form.Button\" type=\"submit\">".
-                                       __('Save')."</button>
+                               __('Save')."</button>
                                <button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('userEditDlg').hide()\">".
-                                       __('Cancel')."</button></div>";
+                               __('Cancel')."</button></div>";
 
                        return;
                }
 
+               function userdetails() {
+                       $id = (int) $this->dbh->escape_string($_REQUEST["id"]);
+
+                       $result = $this->dbh->query("SELECT login,
+                               ".SUBSTRING_FOR_DATE."(last_login,1,16) AS last_login,
+                               access_level,
+                               (SELECT COUNT(int_id) FROM ttrss_user_entries
+                                       WHERE owner_uid = id) AS stored_articles,
+                               ".SUBSTRING_FOR_DATE."(created,1,16) AS created
+                               FROM ttrss_users
+                               WHERE id = '$id'");
+
+                       if ($this->dbh->num_rows($result) == 0) {
+                               print "<h1>".__('User not found')."</h1>";
+                               return;
+                       }
+
+                       print "<table width='100%'>";
+
+                       $last_login = make_local_datetime(
+                               $this->dbh->fetch_result($result, 0, "last_login"), true);
+
+                       $created = make_local_datetime(
+                               $this->dbh->fetch_result($result, 0, "created"), true);
+
+                       $stored_articles = $this->dbh->fetch_result($result, 0, "stored_articles");
+
+                       print "<tr><td>".__('Registered')."</td><td>$created</td></tr>";
+                       print "<tr><td>".__('Last logged in')."</td><td>$last_login</td></tr>";
+
+                       $result = $this->dbh->query("SELECT COUNT(id) as num_feeds FROM ttrss_feeds
+                               WHERE owner_uid = '$id'");
+
+                       $num_feeds = $this->dbh->fetch_result($result, 0, "num_feeds");
+
+                       print "<tr><td>".__('Subscribed feeds count')."</td><td>$num_feeds</td></tr>";
+                       print "<tr><td>".__('Stored articles')."</td><td>$stored_articles</td></tr>";
+
+                       print "</table>";
+
+                       print "<h1>".__('Subscribed feeds')."</h1>";
+
+                       $result = $this->dbh->query("SELECT id,title,site_url FROM ttrss_feeds
+                               WHERE owner_uid = '$id' ORDER BY title");
+
+                       print "<ul class=\"userFeedList\">";
+
+                       while ($line = $this->dbh->fetch_assoc($result)) {
+
+                               $icon_file = ICONS_URL."/".$line["id"].".ico";
+
+                               if (file_exists($icon_file) && filesize($icon_file) > 0) {
+                                       $feed_icon = "<img class=\"tinyFeedIcon\" src=\"$icon_file\">";
+                               } else {
+                                       $feed_icon = "<img class=\"tinyFeedIcon\" src=\"images/blank_icon.gif\">";
+                               }
+
+                               print "<li>$feed_icon&nbsp;<a href=\"".$line["site_url"]."\">".$line["title"]."</a></li>";
+
+                       }
+
+                       if ($this->dbh->num_rows($result) < $num_feeds) {
+                               // FIXME - add link to show ALL subscribed feeds here somewhere
+                               print "<li><img
+                                       class=\"tinyFeedIcon\" src=\"images/blank_icon.gif\">&nbsp;...</li>";
+                       }
+
+                       print "</ul>";
+               }
+
                function editSave() {
                        $login = $this->dbh->escape_string(trim($_REQUEST["login"]));
                        $uid = $this->dbh->escape_string($_REQUEST["id"]);
@@ -342,8 +342,6 @@ class Pref_Users extends Handler_Protected {
                        print "<button dojoType=\"dijit.form.Button\" onclick=\"addUser()\">".__('Create user')."</button>";
 
                        print "
-                               <button dojoType=\"dijit.form.Button\" onclick=\"selectedUserDetails()\">".
-                               __('Details')."</button dojoType=\"dijit.form.Button\">
                                <button dojoType=\"dijit.form.Button\" onclick=\"editSelectedUser()\">".
                                __('Edit')."</button dojoType=\"dijit.form.Button\">
                                <button dojoType=\"dijit.form.Button\" onclick=\"removeSelectedUsers()\">".
@@ -381,8 +379,7 @@ class Pref_Users extends Handler_Protected {
                                        login,access_level,email,
                                        ".SUBSTRING_FOR_DATE."(last_login,1,16) as last_login,
                                        ".SUBSTRING_FOR_DATE."(created,1,16) as created,
-                                       (SELECT COUNT(id) FROM ttrss_feeds WHERE owner_uid = tu.id) AS num_feeds,
-                                       (SELECT COUNT(ref_id) FROM ttrss_user_entries WHERE owner_uid = tu.id) AS num_articles
+                                       (SELECT COUNT(id) FROM ttrss_feeds WHERE owner_uid = tu.id) AS num_feeds
                                FROM
                                        ttrss_users tu
                                WHERE
@@ -400,7 +397,6 @@ class Pref_Users extends Handler_Protected {
                                                <td width='20%'><a href=\"#\" onclick=\"updateUsersList('login')\">".__('Login')."</a></td>
                                                <td width='20%'><a href=\"#\" onclick=\"updateUsersList('access_level')\">".__('Access Level')."</a></td>
                                                <td width='10%'><a href=\"#\" onclick=\"updateUsersList('num_feeds')\">".__('Subscribed feeds')."</a></td>
-                                               <td width='10%'><a href=\"#\" onclick=\"updateUsersList('num_articles')\">".__('Stored articles')."</a></td>
                                                <td width='20%'><a href=\"#\" onclick=\"updateUsersList('created')\">".__('Registered')."</a></td>
                                                <td width='20%'><a href=\"#\" onclick=\"updateUsersList('last_login')\">".__('Last login')."</a></td></tr>";
 
@@ -429,7 +425,6 @@ class Pref_Users extends Handler_Protected {
 
                                print "<td $onclick>" . $access_level_names[$line["access_level"]] . "</td>";
                                print "<td $onclick>" . $line["num_feeds"] . "</td>";
-                               print "<td $onclick>" . $line["num_articles"] . "</td>";
                                print "<td $onclick>" . $line["created"] . "</td>";
                                print "<td $onclick>" . $line["last_login"] . "</td>";