[aur-dev] [PATCH 1/7] Allow for setting an account's inactivity status

canyonknight canyonknight at gmail.com
Mon Aug 5 20:20:22 EDT 2013


On Mon, Aug 5, 2013 at 4:10 AM, Lukas Fleischer
<archlinux at cryptocrack.de> wrote:
> This adds a field to the users table and corresponding fields to the
> account edit and display forms that allow for setting an (in-)activity
> status.
>
> This might turn out to be useful if a user is on vacation and can not
> respond to update/orphan/deletion requests. It will also be used for
> automated participation calculation later.
>
> Signed-off-by: Lukas Fleischer <archlinux at cryptocrack.de>
> ---
>  UPGRADING                          |  9 +++++++++
>  support/schema/aur-schema.sql      |  1 +
>  web/html/account.php               |  5 +++--
>  web/lib/acctfuncs.inc.php          | 28 ++++++++++++++++++++++------
>  web/template/account_details.php   |  6 ++++++
>  web/template/account_edit_form.php |  5 +++++
>  6 files changed, 46 insertions(+), 8 deletions(-)
>
> diff --git a/UPGRADING b/UPGRADING
> index a04471f..d8527e3 100644
> --- a/UPGRADING
> +++ b/UPGRADING
> @@ -1,6 +1,15 @@
>  Upgrading
>  =========
>
> +From 2.2.0 to 2.3.0
> +-------------------
> +
> +1. Add an inactivity time stamp to the "Users" table:
> +
> +----
> +ALTER TABLE Users ADD COLUMN InactivityTS BIGINT NOT NULL DEFAULT 0;
> +----
> +
>  From 2.1.0 to 2.2.0
>  -------------------
>
> diff --git a/support/schema/aur-schema.sql b/support/schema/aur-schema.sql
> index 0d04f12..68db93f 100644
> --- a/support/schema/aur-schema.sql
> +++ b/support/schema/aur-schema.sql
> @@ -35,6 +35,7 @@ CREATE TABLE Users (
>         LastVoted BIGINT UNSIGNED NOT NULL DEFAULT 0,
>         LastLogin BIGINT UNSIGNED NOT NULL DEFAULT 0,
>         LastLoginIPAddress INTEGER UNSIGNED NOT NULL DEFAULT 0,
> +       InactivityTS BIGINT UNSIGNED NOT NULL DEFAULT 0,
>         PRIMARY KEY (ID),
>         UNIQUE (Username),
>         UNIQUE (Email),
> diff --git a/web/html/account.php b/web/html/account.php
> index 4af3043..79b5eeb 100644
> --- a/web/html/account.php
> +++ b/web/html/account.php
> @@ -52,7 +52,8 @@ if (isset($_COOKIE["AURSID"])) {
>                                 display_account_form($atype, "UpdateAccount", $row["Username"],
>                                         $row["AccountTypeID"], $row["Suspended"], $row["Email"],
>                                         "", "", $row["RealName"], $row["LangPreference"],
> -                                       $row["IRCNick"], $row["PGPKey"], $row["ID"]);
> +                                       $row["IRCNick"], $row["PGPKey"],
> +                                       $row["InactivityTS"] ? 1 : 0, $row["ID"]);
>                         } else {
>                                 print __("You do not have permission to edit this account.");
>                         }
> @@ -81,7 +82,7 @@ if (isset($_COOKIE["AURSID"])) {
>                                         in_request("U"), in_request("T"), in_request("S"),
>                                         in_request("E"), in_request("P"), in_request("C"),
>                                         in_request("R"), in_request("L"), in_request("I"),
> -                                       in_request("K"), in_request("ID"));
> +                                       in_request("K"), in_request("J"), in_request("ID"));
>                 }
>         } else {
>                 if ($atype == "Trusted User" || $atype == "Developer") {
> diff --git a/web/lib/acctfuncs.inc.php b/web/lib/acctfuncs.inc.php
> index 1deeac5..7602ec2 100644
> --- a/web/lib/acctfuncs.inc.php
> +++ b/web/lib/acctfuncs.inc.php
> @@ -54,12 +54,13 @@ function html_format_pgp_fingerprint($fingerprint) {
>   * @param string $L The language preference of the displayed user
>   * @param string $I The IRC nickname of the displayed user
>   * @param string $K The PGP key fingerprint of the displayed user
> + * @param string $J The inactivity status of the displayed user
>   * @param string $UID The user ID of the displayed user
>   *
>   * @return void
>   */
>  function display_account_form($UTYPE,$A,$U="",$T="",$S="",
> -                       $E="",$P="",$C="",$R="",$L="",$I="",$K="",$UID=0) {
> +               $E="",$P="",$C="",$R="",$L="",$I="",$K="",$J="", $UID=0) {
>         global $SUPPORTED_LANGS;
>
>         include("account_edit_form.php");
> @@ -83,12 +84,13 @@ function display_account_form($UTYPE,$A,$U="",$T="",$S="",
>   * @param string $L The language preference of the user
>   * @param string $I The IRC nickname of the user
>   * @param string $K The PGP fingerprint of the user
> + * @param string $J The inactivity status of the user
>   * @param string $UID The user ID of the modified account
>   *
>   * @return string|void Return void if successful, otherwise return error
>   */
>  function process_account_form($UTYPE,$TYPE,$A,$U="",$T="",$S="",$E="",
> -                       $P="",$C="",$R="",$L="",$I="",$K="",$UID=0) {
> +                       $P="",$C="",$R="",$L="",$I="",$K="",$J="",$UID=0) {
>
>         # error check and process request for a new/modified account
>         global $SUPPORTED_LANGS, $AUR_LOCATION;
> @@ -185,7 +187,7 @@ function process_account_form($UTYPE,$TYPE,$A,$U="",$T="",$S="",$E="",
>         if ($error) {
>                 print "<ul class='errorlist'><li>".$error."</li></ul>\n";
>                 display_account_form($UTYPE, $A, $U, $T, $S, $E, "", "",
> -                               $R, $L, $I, $K, $UID);
> +                               $R, $L, $I, $K, $J, $UID);
>         } else {
>                 if ($TYPE == "new") {
>                         # no errors, go ahead and create the unprivileged user
> @@ -206,9 +208,10 @@ function process_account_form($UTYPE,$TYPE,$A,$U="",$T="",$S="",$E="",
>                         $I = $dbh->quote($I);
>                         $K = $dbh->quote(str_replace(" ", "", $K));
>                         $q = "INSERT INTO Users (AccountTypeID, Suspended, ";
> -                       $q.= "Username, Email, Passwd, Salt, RealName, ";
> -                       $q.= "LangPreference, IRCNick, PGPKey) VALUES (1, 0, ";
> -                       $q.= "$U, $E, $P, $salt, $R, $L, $I, $K)";
> +                       $q.= "InactivityTS, Username, Email, Passwd, Salt, ";
> +                       $q.= "RealName, LangPreference, IRCNick, PGPKey) ";
> +                       $q.= "VALUES (1, 0, 0, $U, $E, $P, $salt, $R, $L, ";
> +                       $q.= "$I, $K)";
>                         $result = $dbh->exec($q);
>                         if (!$result) {
>                                 print __("Error trying to create account, %s%s%s.",
> @@ -240,6 +243,18 @@ function process_account_form($UTYPE,$TYPE,$A,$U="",$T="",$S="",$E="",
>                 } else {
>                         # no errors, go ahead and modify the user account
>
> +                       $q = "SELECT InactivityTS FROM Users WHERE ";
> +                       $q.= "ID = " . intval($UID);
> +                       $result = $dbh->query($q);
> +                       $row = $result->fetch(PDO::FETCH_NUM);
> +                       if ($row[0] && $J) {
> +                               $inactivity_ts = $row[0];
> +                       } elseif ($J) {
> +                               $inactivity_ts = time();
> +                       } else {
> +                               $inactivity_ts = 0;
> +                       }
> +
>                         $q = "UPDATE Users SET ";
>                         $q.= "Username = " . $dbh->quote($U);
>                         if ($T) {
> @@ -262,6 +277,7 @@ function process_account_form($UTYPE,$TYPE,$A,$U="",$T="",$S="",$E="",
>                         $q.= ", LangPreference = " . $dbh->quote($L);
>                         $q.= ", IRCNick = " . $dbh->quote($I);
>                         $q.= ", PGPKey = " . $dbh->quote(str_replace(" ", "", $K));
> +                       $q.= ", InactivityTS = " . $inactivity_ts;
>                         $q.= " WHERE ID = ".intval($UID);
>                         $result = $dbh->exec($q);
>                         if (!$result) {
> diff --git a/web/template/account_details.php b/web/template/account_details.php
> index fdebfb3..02ed32b 100644
> --- a/web/template/account_details.php
> +++ b/web/template/account_details.php
> @@ -38,6 +38,12 @@
>                                         <td><?= html_format_pgp_fingerprint($row["PGPKey"]) ?></td>
>                                 </tr>
>                                 <tr>
> +                                       <th><?= __("Status") . ":" ?></th>
> +                                       <td>
> +                                       <?= $row["InactivityTS"] ? __("Inactive since") . ' ' . date("Y-m-d H:i", $row["InactivityTS"]) : __("Active"); ?>

Do we normally do formatted strings in these situations?

> +                                       </td>
> +                               </tr>
> +                               <tr>
>                                         <th><?= __("Last Voted") . ":" ?></th>
>                                         <td>
>                                         <?= $row["LastVoted"] ? date("Y-m-d", $row["LastVoted"]) : __("Never"); ?>
> diff --git a/web/template/account_edit_form.php b/web/template/account_edit_form.php
> index a0de2a3..30b26fd 100644
> --- a/web/template/account_edit_form.php
> +++ b/web/template/account_edit_form.php
> @@ -56,6 +56,11 @@
>                 <?php endif; ?>
>
>                 <p>
> +                       <label for="id_inactive"><?= __("Inactive") ?>:</label>
> +                       <input type="checkbox" name="J" id="id_inactive" <?= $J ? 'checked="checked"' : '' ?> />
> +               </p>
> +
> +               <p>
>                         <label for="id_email"><?= __("Email Address") ?>:</label>
>                         <input type="text" size="30" maxlength="64" name="E" id="id_email" value="<?= htmlspecialchars($E,ENT_QUOTES) ?>" /> (<?= __("required") ?>)
>                 </p>
> --
> 1.8.4.rc1.383.g13e9f3f
>


More information about the aur-dev mailing list