Implements: FS#46546

Signed-off-by: Mark Weiman <[email protected]>
---
 web/html/css/aurweb.css          |  4 ++++
 web/html/index.php               |  3 +++
 web/html/pkgflagcomment.php      | 19 +++++++++++++++++++
 web/lib/pkgbasefuncs.inc.php     | 32 ++++++++++++++++++++++++++++++++
 web/template/flag_comment.php    | 25 +++++++++++++++++++++++++
 web/template/pkgbase_actions.php |  2 +-
 6 files changed, 84 insertions(+), 1 deletion(-)
 create mode 100644 web/html/pkgflagcomment.php
 create mode 100644 web/template/flag_comment.php

diff --git a/web/html/css/aurweb.css b/web/html/css/aurweb.css
index 82b83d9..92ff898 100644
--- a/web/html/css/aurweb.css
+++ b/web/html/css/aurweb.css
@@ -130,6 +130,10 @@
        top: 4px;
 }
 
+.flagged a {
+       color: inherit;
+}
+
 legend {
        padding: 1em 0;
 }
diff --git a/web/html/index.php b/web/html/index.php
index e99d22f..ce0f0f3 100644
--- a/web/html/index.php
+++ b/web/html/index.php
@@ -73,6 +73,9 @@ if (!empty($tokens[1]) && '/' . $tokens[1] == 
get_pkg_route()) {
                        case "unflag":
                                $_POST['do_UnFlag'] = __('UnFlag');
                                break;
+                       case "flag-comment":
+                               include('pkgflagcomment.php');
+                               return;
                        case "delete":
                                include('pkgdel.php');
                                return;
diff --git a/web/html/pkgflagcomment.php b/web/html/pkgflagcomment.php
new file mode 100644
index 0000000..98680ef
--- /dev/null
+++ b/web/html/pkgflagcomment.php
@@ -0,0 +1,19 @@
+<?php
+
+set_include_path(get_include_path() . PATH_SEPARATOR . '../lib');
+
+include_once("aur.inc.php");
+include_once("pkgbasefuncs.inc.php");
+
+set_lang();
+check_sid();
+
+if (!isset($base_id)) {
+       header('Location: /');
+       exit();
+}
+
+html_header(__("Flag Comment"));
+$message = pkgbase_get_flag_comment($base_id);
+include('flag_comment.php');
+html_footer(AURWEB_VERSION);
diff --git a/web/lib/pkgbasefuncs.inc.php b/web/lib/pkgbasefuncs.inc.php
index 7b744d5..be8b964 100644
--- a/web/lib/pkgbasefuncs.inc.php
+++ b/web/lib/pkgbasefuncs.inc.php
@@ -445,6 +445,38 @@ function pkgbase_unflag($base_ids) {
 }
 
 /**
+ * Get package flag OOD comment
+ *
+ * @param int $base_id
+ *
+ * @return array Tuple of pkgbase ID, reason for OOD, and user who flagged
+ */
+function pkgbase_get_flag_comment($base_id) {
+       $base_id = intval($base_id);
+       $dbh = DB::connect();
+
+       $q = "SELECT FlaggerComment,OutOfDateTS,Username FROM PackageBases ";
+       $q.= "LEFT JOIN Users ON FlaggerUID = Users.ID ";
+       $q.= "WHERE PackageBases.ID = " . $base_id . " ";
+       $q.= "AND PackageBases.OutOfDateTS IS NOT NULL";
+       $result = $dbh->query($q);
+
+       $row = array();
+
+       if (!$result) {
+               $row['error'] = __("Error retrieving package details.");
+       }
+       else {
+               $row = $result->fetch(PDO::FETCH_ASSOC);
+               if (empty($row)) {
+                       $row['error'] = __("Package details could not be 
found.");
+               }
+       }
+
+       return $row;
+}
+
+/**
  * Delete package bases
  *
  * @param array $base_ids Array of package base IDs to delete
diff --git a/web/template/flag_comment.php b/web/template/flag_comment.php
new file mode 100644
index 0000000..36af43e
--- /dev/null
+++ b/web/template/flag_comment.php
@@ -0,0 +1,25 @@
+<div class="box">
+       <h2><?= __('Flagged Out-of-Date Comment: %s', 
htmlspecialchars($pkgbase_name)) ?></h2>
+       <p>
+               <?php if (isset($message['Username'])): ?>
+                       <?= __('%s%s%s flagged %s%s%s out-of-date on %s%s%s for 
the following reason:',
+                               '<strong>', 
html_format_username($message['Username']), '</strong>',
+                               '<strong>', htmlspecialchars($pkgbase_name), 
'</strong>',
+                               '<strong>', gmdate('Y-m-d', 
$message['OutOfDateTS']), '</strong>'); ?>
+               <?php else: ?>
+                       <?= __('%s%s%s is not flagged out-of-date.',
+                               '<strong>', htmlspecialchars($pkgbase_name), 
'</strong>'); ?>
+               <?php endif; ?>
+       </p>
+       <p>
+               <div class="article-content">
+                       <blockquote><p><?= 
parse_comment($message['FlaggerComment']) ?></p></blockquote>
+               </div>
+       </p>
+       <p>
+               <form action="<?= 
htmlspecialchars(get_pkgbase_uri($pkgbase_name), ENT_QUOTES) ?>">
+                       <input type="submit" value="<?= __("Return to Details") 
?>" />
+               </form>
+       </p>
+</div>
+
diff --git a/web/template/pkgbase_actions.php b/web/template/pkgbase_actions.php
index f8968fb..85b1c3b 100644
--- a/web/template/pkgbase_actions.php
+++ b/web/template/pkgbase_actions.php
@@ -8,7 +8,7 @@
                        </li>
                        <li><a href="<?= $snapshot_uri ?>"><?= __('Download 
snapshot') ?></a>
                        <li><a 
href="https://wiki.archlinux.org/index.php/Special:Search?search=<?= 
urlencode($row['Name']) ?>"><?= __('Search wiki') ?></a></li>
-                       <li><span class="flagged"><?php if ($row["OutOfDateTS"] 
!== NULL) { echo __('Flagged out-of-date')." (${out_of_date_time})"; } 
?></span></li>
+                       <li><span class="flagged"><?= $row["OutOfDateTS"] !== 
NULL ? html_action_link($base_uri . 'flag-comment/', __('Flagged out-of-date 
%s', "(${out_of_date_time})")) : "" ?></span></li>
                        <?php if ($row["OutOfDateTS"] === NULL): ?>
                        <li><?= html_action_link($base_uri . 'flag/', __('Flag 
package out-of-date')) ?></li>
                        <?php elseif (($row["OutOfDateTS"] !== NULL) && 
has_credential(CRED_PKGBASE_UNFLAG, $unflaggers)): ?>
-- 
2.6.4

Reply via email to