Paginate all sections.
authorIain Patterson <me@iain.cx>
Mon, 4 Apr 2016 14:56:46 +0000 (10:56 -0400)
committerIain Patterson <me@iain.cx>
Mon, 4 Apr 2016 14:56:46 +0000 (10:56 -0400)
Add pagination to all sections of the application.

lib/area.php
lib/city.php
lib/contact.php
lib/donation.php
lib/hub.php

index 77272f7..fbf739d 100644 (file)
     update_area_delivery_days($parameters[0]);
   }
 
-  function show_areas($offset, $per_page, $city_name = null, $city_id = null) {
+  function show_areas($city_name = null, $city_id = null) {
+    list($first_page, $per_page) = pagination();
     if (isset($city_name) || isset($city_id)) {
       if (isset($city_id)) $city = get_city_by_id($city_id);
       else if ($city_name) $city = get_city_by_name($city_name);
       if ($city) {
         echo "<p>Areas in " . $city->getLink(get_city_displayname($city)) . ":";
         $q = new AreaQuery;
-        $areas = $q->filterByCityId($city_id)->find();
+        $areas = $q->filterByCityId($city_id)->orderByName()->orderById()->paginate($first_page, $per_page);
 
         if (count($areas)) {
           foreach ($areas as $area) {
@@ -40,6 +41,7 @@
               echo " " . $area->getDeleteLink();
             }
           }
+          show_pagination($areas);
         }
         else echo " none";
         echo "</p>\n";
     if ($parameters[0] == "in") {
       if ($parameters[1] == "city") {
         $city_id = $parameters[3];
-        show_areas(0, 10, $parameters[2], $city_id);
+        show_areas($parameters[2], $city_id);
         show_new_area_form($city_id);
       }
     }
index dd60e36..94c556e 100644 (file)
     }
   }
 
-  function show_cities($offset, $per_page, $name = null) {
+  function show_cities($name = null) {
+    list($first_page, $per_page) = pagination();
     echo "<p>Cities:";
     $q = new CityQuery;
     if (isset($name)) $q->filterByName($name);
-    $p = $q->paginate($offset, $per_page);
-    if (count($p)) {
-      foreach ($p as $city) {
+    $cities = $q->paginate($first_page, $per_page);
+    if (count($cities)) {
+      foreach ($cities as $city) {
         echo "<br>\nCity: " . $city->getStrongLink(get_city_displayname($city));
         $n = $city->getName();
         $i = $city->getId();
@@ -28,6 +29,7 @@
           echo " " . $city->getDeleteLink();
         }
       }
+      show_pagination($cities);
     }
     else echo " none";
     echo "</p>\n";
       break;
 
       default:
-        show_cities(0, 10, $name);
+        show_cities($name);
         show_new_city_form();
       break;
     }
   }
   else if (isset($name)) show_city($name, $id);
-  else show_cities(0, 10);
+  else show_cities();
 
   if (count($parameters)) echo "<p class=\"noprint standout\">Show all <a href=\"/city\">cities</a></p>\n";
   show_new_city_form();
index fdbd169..ee9f3e0 100644 (file)
     echo ", " . $city->getLink(get_city_displayname($city));
   }
 
-  function show_contacts($offset, $per_page, $address_ids) {
+  function show_contacts($address_ids) {
+    list($first_page, $per_page) = pagination();
     $q = new ContactQuery;
-    $contacts = $q->filterByAddressId($address_ids)->orderByForename()->orderBySurname()->find();
+    $contacts = $q->filterByAddressId($address_ids)->orderByForename()->orderBySurname()->orderById('desc')->paginate($first_page, $per_page);
     if (count($contacts)) {
       foreach ($contacts as $contact) show_contact_summary($contact);
+      show_pagination($contacts);
     }
     else echo " none";
   }
 
-  function search_contacts($offset, $per_page, $search) {
+  function search_contacts($search) {
+    list($first_page, $per_page) = pagination();
     $q = new ContactQuery;
-    $contacts = $q->filterByDisplayname("%$search%")->find();
+    $contacts = $q->filterByDisplayname("%$search%")->orderByForename()->orderBySurname()->orderById('desc')->paginate($first_page, $per_page);
     echo "<p>Contacts matching '" . htmlspecialchars($search) . "':";
     if (count($contacts)) {
       foreach ($contacts as $contact) show_contact_summary($contact);
+      show_pagination($contacts);
     }
     else echo "none";
     echo "</p>\n";
     foreach ($addresses as $address) $address_ids[] = $address->getId();
 
     $q = new ContactQuery;
-    $contacts = $q->filterByAddressId($address_ids)->find();
+    $contacts = $q->filterByAddressId($address_ids)->orderByForename()->orderBySurname()->orderById('desc')->paginate($first_page, $per_page);
     echo "<p>Contacts in address '" . htmlspecialchars($search) . "':";
     if (count($contacts)) {
       foreach ($contacts as $contact) show_contact_summary($contact);
+      show_pagination($contacts);
     }
     else echo "none";
     echo "</p>\n";
   }
 
-  function show_city_contacts($offset, $per_page, $city_name, $city_id = null) {
+  function show_city_contacts($city_name, $city_id = null) {
     if (isset($city_id)) $city = get_city_by_id($city_id);
     else if ($city_name) $city = get_city_by_name($city_name);
     if ($city) {
       foreach ($addresses as $address) $address_ids[] = $address->getId();
 
       echo "<p>Contacts in city " . $city->getLink(get_city_displayname($city)) . ":";
-      return show_contacts($offset, $per_page, $address_ids);
+      return show_contacts($address_ids);
     }
     else echo "<p>No such city!</p>\n";
   }
 
-  function show_area_contacts($offset, $per_page, $area_name, $area_id = null) {
+  function show_area_contacts($area_name, $area_id = null) {
     if (isset($area_id)) $area = get_area_by_id($area_id);
     else if ($area_name) $area = get_area_by_name($area_name);
     if ($area) {
       foreach ($addresses as $address) $address_ids[] = $address->getId();
 
       echo "<p>Contacts in area " . $area->getLink() . ":";
-      return show_contacts($offset, $per_page, $address_ids);
+      return show_contacts($address_ids);
     }
     else echo "<p>No such area!</p>\n";
   }
           $area = $q->findOneById($area_id);
           $city = get_area_city($area);
           if ($city) $city_id = $city->getId();
-          show_area_contacts(0, 10, $parameters[2], $area_id);
+          show_area_contacts($parameters[2], $area_id);
         break;
 
         case "city":
           $_POST['city_id'] = $city_id;
           $q = new CityQuery;
           $city = $q->findOneById($city_id);
-          show_city_contacts(0, 10, $parameters[2], $city_id);
+          show_city_contacts($parameters[2], $city_id);
         break;
       }
     }
     else if ($parameters[0] == "search") {
-      search_contacts(0, 10, urldecode($parameters[1]));
+      search_contacts(urldecode($parameters[1]));
     }
   }
   list($name, $id, $args) = parse_parameters($parameters);
index b1aba40..a5036f3 100644 (file)
     exit;
   }
 
-  function show_donations($offset, $per_page, $contact_ids = null, $hub_ids = null) {
+  function show_donations($contact_ids = null, $hub_ids = null) {
+    list($first_page, $per_page) = pagination();
     $q = new DonationQuery;
     if (isset($contact_ids)) $q->filterByContactId($contact_ids);
     if (isset($hub_ids)) $q->filterByHubId($hub_ids);
-    $donations = $q->find();
+    $donations = $q->orderByDate('desc')->orderById('desc')->paginate($first_page, $per_page);
     if (count($donations)) {
       foreach ($donations as $donation) {
         echo "<br>\nDonation " . $donation->getStrongLink($donation->getId()) . ": " . get_donation_displayname($donation);
           echo " " . $donation->getDeleteLink();
         }
       }
+      show_pagination($donations);
     }
     else echo " none";
   }
 
-  function show_city_donations($offset, $per_page, $city_name, $city_id = null) {
+  function show_city_donations($city_name, $city_id = null) {
     if (isset($city_id)) $city = get_city_by_id($city_id);
     else if ($city_name) $city = get_city_by_name($city_name);
     if ($city) {
       foreach ($hubs as $hub) $hub_ids[] = $hub->getId();
 
       echo "<p>Donations in city " . $city->getLink(get_city_displayname($city)) . ":";
-      return show_donations($offset, $per_page, null, $hub_ids);
+      return show_donations(null, $hub_ids);
     }
     else echo "<p>No such city!</p>\n";
   }
 
-  function show_contact_donations($offset, $per_page, $contact_name, $contact_id = null) {
+  function show_contact_donations($contact_name, $contact_id = null) {
     if (isset($contact_id)) $contact = get_contact_by_id($contact_id);
     else if ($contact_name) $contact = get_contact_by_name($contact_name);
     if ($contact) {
       echo "<p>Donations from contact " . $contact->getLink() . ":";
-      return show_donations($offset, $per_page, $contact->getId());
+      return show_donations($contact->getId());
     }
     else echo "<p>No such contact!</p>\n";
   }
 
-  function show_hub_donations($offset, $per_page, $hub_name, $hub_id = null) {
+  function show_hub_donations($hub_name, $hub_id = null) {
     if (isset($hub_id)) $hub = get_hub_by_id($hub_id);
     else if ($hub_name) $hub = get_hub_by_name($hub_name);
     if ($hub) {
       echo "<p>Donations to hub " . $hub->getLink() . ":";
-      return show_donations($offset, $per_page, null, $hub->getId());
+      return show_donations(null, $hub->getId());
     }
     else echo "<p>No such hub!</p>\n";
   }
 
-  function show_area_donations($offset, $per_page, $area_name, $area_id = null) {
+  function show_area_donations($area_name, $area_id = null) {
     if (isset($area_id)) $area = get_area_by_id($area_id);
     else if ($area_name) $area = get_area_by_name($area_name);
     if ($area) {
       foreach ($hubs as $hub) $hub_ids[] = $hub->getId();
 
       echo "<p>Donations in area " . $area->getLink() . ":";
-      return show_donations($offset, $per_page, null, $hub_ids);
+      return show_donations(null, $hub_ids);
     }
     else echo "<p>No such area!</p>\n";
   }
           $area = $q->findOneById($area_id);
           $city = get_area_city($area);
           if ($city) $city_id = $city->getId();
-          show_area_donations(0, 10, $parameters[2], $area_id);
+          show_area_donations($parameters[2], $area_id);
         break;
 
         case "city":
           $_POST['city_id'] = $city_id;
           $q = new CityQuery;
           $city = $q->findOneById($city_id);
-          show_city_donations(0, 10, $parameters[2], $city_id);
+          show_city_donations($parameters[2], $city_id);
         break;
       }
     }
           $contact_id = $parameters[3];
           $q = new ContactQuery;
           $contact = $q->findOneById($contact_id);
-          show_contact_donations(0, 10, $parameters[2], $contact_id);
+          show_contact_donations($parameters[2], $contact_id);
         break;
       }
     }
           $hub_id = $parameters[3];
           $q = new HubQuery;
           $hub = $q->findOneById($hub_id);
-          show_hub_donations(0, 10, $parameters[2], $hub_id);
+          show_hub_donations($parameters[2], $hub_id);
         break;
       }
     }
index 176903d..e5a551a 100644 (file)
     if ($city) echo ", " . $city->getLink(get_city_displayname($city));
   }
 
-  function show_hubs($offset, $per_page, $address_ids) {
+  function show_hubs($address_ids) {
+    list($first_page, $per_page) = pagination();
     $q = new HubQuery;
-    $hubs = $q->filterByAddressId($address_ids)->find();
+    $hubs = $q->filterByAddressId($address_ids)->orderByDisplayname()->orderById()->paginate($first_page, $per_page);
     if (count($hubs)) {
       foreach ($hubs as $hub) show_hub_summary($hub);
+      show_pagination($hubs);
     }
     else echo " none";
   }
 
-  function show_city_hubs($offset, $per_page, $city_name, $city_id = null) {
+  function show_city_hubs($city_name, $city_id = null) {
     if (isset($city_id)) $city = get_city_by_id($city_id);
     else if ($city_name) $city = get_city_by_name($city_name);
     if ($city) {
       foreach ($addresses as $address) $address_ids[] = $address->getId();
 
       echo "<p>Hubs in city " . $city->getLink(get_city_displayname($city)) . ":";
-      return show_hubs($offset, $per_page, $address_ids);
+      return show_hubs($address_ids);
     }
     else echo "<p>No such city!</p>\n";
   }
 
-  function show_area_hubs($offset, $per_page, $area_name, $area_id = null) {
+  function show_area_hubs($area_name, $area_id = null) {
     if (isset($area_id)) $area = get_area_by_id($area_id);
     else if ($area_name) $area = get_area_by_name($area_name);
     if ($area) {
       foreach ($addresses as $address) $address_ids[] = $address->getId();
 
       echo "<p>Hubs in area " . $area->getLink() . ":";
-      return show_hubs($offset, $per_page, $address_ids);
+      return show_hubs($address_ids);
     }
     else echo "<p>No such area!</p>\n";
   }
           $area = $q->findOneById($area_id);
           $city = get_area_city($area);
           if ($city) $city_id = $city->getId();
-          show_area_hubs(0, 10, $parameters[2], $area_id);
+          show_area_hubs($parameters[2], $area_id);
         break;
 
         case "city":
           $_POST['city_id'] = $city_id;
           $q = new CityQuery;
           $city = $q->findOneById($city_id);
-          show_city_hubs(0, 10, $parameters[2], $city_id);
+          show_city_hubs($parameters[2], $city_id);
         break;
       }
     }