On 25.06.2014 11:44, Lukas Fleischer wrote:
> Introduce a new navigation point "Requests" that shows a list of pending
> package requests. This functionality is only available to Trusted Users.
> 
> Signed-off-by: Lukas Fleischer <archli...@cryptocrack.de>
> ---
>  web/html/pkgreq.php             | 58 ++++++++++++++++++++++++++++++++++++
>  web/lib/pkgbasefuncs.inc.php    | 20 +++++++++++++
>  web/lib/routing.inc.php         |  1 +
>  web/template/header.php         |  3 ++
>  web/template/pkgreq_results.php | 66 
> +++++++++++++++++++++++++++++++++++++++++
>  5 files changed, 148 insertions(+)
>  create mode 100644 web/template/pkgreq_results.php
> 
> diff --git a/web/html/pkgreq.php b/web/html/pkgreq.php
> index c8dd673..05eeb51 100644
> --- a/web/html/pkgreq.php
> +++ b/web/html/pkgreq.php
> @@ -14,6 +14,62 @@ if (!check_user_privileges()) {
>       header('Location: /');
>       exit();
>  }
> +
> +if (!isset($base_id)) {
> +     $results = pkgbase_request_list();
> +     $total = count($results);
> +
> +     /* Sanitize paging variables. */
> +     if (isset($_GET['O'])) {

I understand this is copied from pkg_search_page() in
web/lib/pkgfuncs.inc.php, but now would be a good time to clean it up
(in both places). Especially the usage of $_GET rather than a local
variable should go away.

Introduce something like input_get($field_name, $default = false); which
would check if the value is set and if it is return it, otherwise return
the default.

> +             $_GET['O'] = intval($_GET['O']);
> +             if ($_GET['O'] < 0)
> +                     $_GET['O'] = 0;

$value = max(intval($value), 0);

> +     } else {
> +             $_GET['O'] = 0;
> +     }
> +
> +
> +     if (isset($_GET["PP"])) {
> +             $_GET["PP"] = intval($_GET["PP"]);
> +             if ($_GET["PP"] < 50)
> +                     $_GET["PP"] = 50;
> +             else if ($_GET["PP"] > 250)
> +                     $_GET["PP"] = 250;

# Source: http://at2.php.net/manual/en/function.min.php#81302
function bound($x, $min, $max)
{
     return min(max($x, $min), $max);
}

> +     } else {
> +             $_GET["PP"] = 50;
> +     }
> +
> +     /* Calculate the results to use. */
> +     $first = $_GET['O'] + 1;
> +
> +     /* Calculation of pagination links. */
> +     $per_page = ($_GET['PP'] > 0) ? $_GET['PP'] : 50;
> +     $current = ceil($first / $per_page);
> +     $pages = ceil($total / $per_page);
> +     $templ_pages = array();
> +
> +     if ($current > 1) {
> +             $templ_pages['&laquo; ' . __('First')] = 0;
> +             $templ_pages['&lsaquo; ' . __('Previous')] = ($current - 2) * 
> $per_page;
> +     }
> +
> +     if ($current - 5 > 1)
> +             $templ_pages["..."] = false;
> +
> +     for ($i = max($current - 5, 1); $i <= min($pages, $current + 5); $i++) {
> +             $templ_pages[$i] = ($i - 1) * $per_page;
> +     }
> +
> +     if ($current + 5 < $pages)
> +             $templ_pages["... "] = false;
> +
> +     if ($current < $pages) {
> +             $templ_pages[__('Next') . ' &rsaquo;'] = $current * $per_page;
> +             $templ_pages[__('Last') . ' &raquo;'] = ($pages - 1) * 
> $per_page;
> +     }
> +
> +     $SID = $_COOKIE['AURSID'];
> +     include('pkgreq_results.php');
> +} else {
>  ?>
>  
>  <div class="box">
> @@ -51,5 +107,7 @@ if (!check_user_privileges()) {
>  </div>
>  
>  <?php
> +}
> +
>  html_footer(AUR_VERSION);
>  
> diff --git a/web/lib/pkgbasefuncs.inc.php b/web/lib/pkgbasefuncs.inc.php
> index a9fe949..505bb51 100644
> --- a/web/lib/pkgbasefuncs.inc.php
> +++ b/web/lib/pkgbasefuncs.inc.php
> @@ -964,6 +964,26 @@ function pkgbase_update_category($base_id, $category_id) 
> {
>  }
>  
>  /**
> + * Get a list of all package requests
> + *
> + * @return array List of pacakge requests with details
> + */
> +function pkgbase_request_list() {
> +     $dbh = DB::connect();
> +
> +     $q = "SELECT PackageRequests.ID, ";
> +     $q.= "PackageRequests.PackageBaseID AS BaseID, ";
> +     $q.= "PackageRequests.PackageBaseName AS Name, ";
> +     $q.= "RequestTypes.Name AS Type, PackageRequests.Comments, ";
> +     $q.= "Users.Username AS User, PackageRequests.RequestTS ";
> +     $q.= "FROM PackageRequests INNER JOIN RequestTypes ON ";
> +     $q.= "RequestTypes.ID = PackageRequests.ReqTypeID ";
> +     $q.= "INNER JOIN Users ON Users.ID = PackageRequests.UsersID";
> +
> +     return $dbh->query($q)->fetchAll();
> +}
> +
> +/**
>   * File a deletion/orphan request against a package base
>   *
>   * @global string $AUR_LOCATION The AUR's URL used for notification e-mails
> diff --git a/web/lib/routing.inc.php b/web/lib/routing.inc.php
> index 1b2aa52..5836a13 100644
> --- a/web/lib/routing.inc.php
> +++ b/web/lib/routing.inc.php
> @@ -5,6 +5,7 @@ $ROUTES = array(
>       '/index.php' => 'home.php',
>       '/packages' => 'packages.php',
>       '/pkgbase' => 'pkgbase.php',
> +     '/requests' => 'pkgreq.php',
>       '/register' => 'account.php',
>       '/account' => 'account.php',
>       '/accounts' => 'account.php',
> diff --git a/web/template/header.php b/web/template/header.php
> index df83995..03ce536 100644
> --- a/web/template/header.php
> +++ b/web/template/header.php
> @@ -57,6 +57,9 @@
>                                       <li><a href="<?= get_uri('/packages/'); 
> ?>"><?= __("Packages"); ?></a></li>
>                                       <?php if (isset($_COOKIE['AURSID'])): ?>
>                                               <li><a href="<?= 
> get_uri('/packages/'); ?>?SeB=m&amp;K=<?= 
> username_from_sid($_COOKIE["AURSID"]); ?>"><?= __("My Packages"); ?></a></li>
> +                                             <?php if 
> (check_user_privileges()): ?>
> +                                             <li><a href="<?= 
> get_uri('/requests/') ; ?>"><?= __("Requests"); ?></a></li>
> +                                             <?php endif; ?>
>                                               <li><a href="<?= 
> get_uri('/submit/'); ?>"><?= __("Submit"); ?></a></li>
>                                               <?php if 
> (check_user_privileges()): ?>
>                                               <li><a href="<?= 
> get_uri('/accounts/') ; ?>"><?= __("Accounts"); ?></a></li>
> diff --git a/web/template/pkgreq_results.php b/web/template/pkgreq_results.php
> new file mode 100644
> index 0000000..7cbdcc4
> --- /dev/null
> +++ b/web/template/pkgreq_results.php
> @@ -0,0 +1,66 @@
> +<div id="pkglist-results" class="box">
> +     <div class="pkglist-stats">
> +             <p><?= __('%d package requests found. Page %d of %d.', $total, 
> $current, $pages) ?></p>
> +             <?php if (count($templ_pages) > 1): ?>
> +             <p class="pkglist-nav">
> +                     <?php foreach ($templ_pages as $pagenr => $pagestart): 
> ?>
> +                             <?php if ($pagestart === false): ?>
> +                                     <span class="page"><?= $pagenr ?></span>
> +                             <?php elseif ($pagestart + 1 == $first): ?>
> +                                     <span class="page"><?= $pagenr ?></span>
> +                             <?php else: ?>
> +                                     <a class="page" href="<?= 
> get_uri('/requests/'); ?>?<?= mkurl('O=' . $pagestart) ?>"><?= $pagenr ?></a>
> +                             <?php endif; ?>
> +                     <?php endforeach; ?>
> +             </p>
> +             <?php endif; ?>
> +     </div>
> +
> +     <table class="results">
> +     <thead>
> +             <tr>
> +                     <th><?= __("Package") ?></th>
> +                     <th><?= __("Type") ?></th>
> +                     <th><?= __("Comments") ?></th>
> +                     <th><?= __("Filed by") ?></th>
> +                     <th><?= __("Date") ?></th>
> +             </tr>
> +     </thead>
> +     <tbody>
> +
> +             <?php while (list($indx, $row) = each($results)): ?>
> +             <tr class="<?= ($indx % 2 == 0) ? 'odd' : 'even' ?>">
> +                     <?php if ($row['BaseID']): ?>
> +                     <td><a href="<?= 
> htmlspecialchars(get_pkgbase_uri($row["Name"]), ENT_QUOTES); ?>"><?= 
> htmlspecialchars($row["Name"]) ?></a></td>
> +                     <?php else: ?>
> +                     <td><?= htmlspecialchars($row["Name"]) ?></td>
> +                     <?php endif; ?>
> +                     <td><?= htmlspecialchars(ucfirst($row['Type']), 
> ENT_QUOTES); ?></td>
> +                     <td class="wrap"><?= htmlspecialchars($row['Comments'], 
> ENT_QUOTES); ?></td>
> +                     <td>
> +                     <a href="<?= get_uri('/account/') . 
> htmlspecialchars($row['User'], ENT_QUOTES) ?>" title="<?= __('View account 
> information for %s', htmlspecialchars($row['User'])) ?>"><?= 
> htmlspecialchars($row['User']) ?></a>
> +                     </td>
> +                     <td><?= gmdate("Y-m-d H:i", intval($row['RequestTS'])) 
> ?></td>
> +             </tr>
> +             <?php endwhile; ?>
> +
> +     </tbody>
> +     </table>
> +
> +     <div class="pkglist-stats">
> +             <p><?= __('%d package requests found. Page %d of %d.', $total, 
> $current, $pages) ?></p>
> +             <?php if (count($templ_pages) > 1): ?>
> +             <p class="pkglist-nav">
> +                     <?php foreach ($templ_pages as $pagenr => $pagestart): 
> ?>
> +                             <?php if ($pagestart === false): ?>
> +                                     <span class="page"><?= $pagenr ?></span>
> +                             <?php elseif ($pagestart + 1 == $first): ?>
> +                                     <span class="page"><?= $pagenr ?></span>
> +                             <?php else: ?>
> +                                     <a class="page" href="<?= 
> get_uri('/requests/'); ?>?<?= mkurl('O=' . $pagestart) ?>"><?= $pagenr ?></a>
> +                             <?php endif; ?>
> +                     <?php endforeach; ?>
> +             </p>
> +             <?php endif; ?>
> +     </div>
> +</div>
> 


Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to