[dev] [commit] r1070 - phplib phplib/models templates/admin templates/common wwwbase/admin

automailer at dexonline.ro automailer at dexonline.ro
Tue Jan 28 17:03:03 EET 2014


Author: cata
Date: Tue Jan 28 17:03:03 2014
New Revision: 1070

Log:
Add pagination to the moderator definition searches.
Fixes #291.

Added:
   templates/admin/definitionLookup.ihtml
Modified:
   phplib/FileCache.php
   phplib/models/Definition.php
   templates/admin/index.ihtml
   templates/common/sourceDropDown.ihtml
   wwwbase/admin/definitionLookup.php
   wwwbase/admin/viewPendingDefinitions.php

Modified: phplib/FileCache.php
==============================================================================
--- phplib/FileCache.php	Mon Jan 27 12:50:38 2014	(r1069)
+++ phplib/FileCache.php	Tue Jan 28 17:03:03 2014	(r1070)
@@ -80,9 +80,9 @@
     return self::get($key);
   }
 
-  static function putModeratorQueryResults($ip, $defIds) {
+  static function putModeratorQueryResults($ip, $queryData) {
     $key = self::getKeyForModeratorIp($ip);
-    self::put($key, $defIds);
+    self::put($key, $queryData);
   }
 }
 

Modified: phplib/models/Definition.php
==============================================================================
--- phplib/models/Definition.php	Mon Jan 27 12:50:38 2014	(r1069)
+++ phplib/models/Definition.php	Tue Jan 28 17:03:03 2014	(r1070)
@@ -210,22 +210,23 @@
     // file_put_contents("/var/log/dex-highlight.log", $logEntry, FILE_APPEND | LOCK_EX);
   }
 
-  public static function searchModerator($cuv, $hasDiacritics, $sourceId, $status, $userId, $beginTime, $endTime) {
+  public static function searchModerator($cuv, $hasDiacritics, $sourceId, $status, $userId, $beginTime, $endTime, $page, $resultsPerPage) {
     $regexp = StringUtil::dexRegexpToMysqlRegexp($cuv);
     $sourceClause = $sourceId ? "and Definition.sourceId = $sourceId" : '';
     $userClause = $userId ? "and Definition.userId = $userId" : '';
+    $offset = ($page - 1) * $resultsPerPage;
 
     if ($status == ST_DELETED) {
       // Deleted definitions are not associated with any lexem
       $collate = $hasDiacritics ? '' : 'collate utf8_general_ci';
       return Model::factory('Definition')
         ->raw_query("select * from Definition where lexicon $collate $regexp and status = " . ST_DELETED . " and createDate between $beginTime and $endTime " .
-                    "$sourceClause $userClause order by lexicon, sourceId limit 500", null)->find_many();
+                    "$sourceClause $userClause order by lexicon, sourceId limit $offset, $resultsPerPage", null)->find_many();
     } else {
       $query = "select distinct Definition.* from Lexem join LexemDefinitionMap on Lexem.id = LexemDefinitionMap.lexemId " .
         "join Definition on LexemDefinitionMap.definitionId = Definition.id where formNoAccent $regexp " .
         "and Definition.status = $status and Definition.createDate >= $beginTime and Definition.createDate <= $endTime " .
-        "$sourceClause $userClause order by lexicon, sourceId limit 500";
+        "$sourceClause $userClause order by lexicon, sourceId limit $offset, $resultsPerPage";
       return Model::factory('Definition')->raw_query($query, null)->find_many();
     }
   }

Added: templates/admin/definitionLookup.ihtml
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ templates/admin/definitionLookup.ihtml	Tue Jan 28 17:03:03 2014	(r1070)
@@ -0,0 +1,16 @@
+<form action="definitionLookup.php" method="post">
+  {foreach from=$args key=name item=value}
+    <input type="hidden" name="{$name}" value="{$value}">
+  {/foreach}
+  <input type="submit" name="prevPageButton" value="<< înapoi">
+    <b>pagina {$args.page}</b>  
+  <input type="submit" name="nextPageButton" value="înainte >>">
+  <br><br>
+
+  {include file="admin/definitionList.ihtml"}
+  {if (count($searchResults))}
+    <input type="submit" name="prevPageButton" value="<< înapoi">
+      <b>pagina {$args.page}</b>  
+    <input type="submit" name="nextPageButton" value="înainte >>">
+  {/if}
+</form>

Modified: templates/admin/index.ihtml
==============================================================================
--- templates/admin/index.ihtml	Mon Jan 27 12:50:38 2014	(r1069)
+++ templates/admin/index.ihtml	Tue Jan 28 17:03:03 2014	(r1070)
@@ -114,7 +114,7 @@
       trimise de:
   <input type="text" name="nick" size="10" value=""/>
       sursa:
-  {include file="common/sourceDropDown.ihtml" sources=$allModeratorSources}
+  {include file="common/sourceDropDown.ihtml" name="sourceId" sources=$allModeratorSources}
   <br/>
           între
   {assign var="nextYear" value=$currentYear+1}

Modified: templates/common/sourceDropDown.ihtml
==============================================================================
--- templates/common/sourceDropDown.ihtml	Mon Jan 27 12:50:38 2014	(r1069)
+++ templates/common/sourceDropDown.ihtml	Tue Jan 28 17:03:03 2014	(r1070)
@@ -1,8 +1,9 @@
+{assign var="name" value=$name|default:'source'}
 {assign var="skipAnySource" value=$skipAnySource|default:''}
 {assign var="src_selected" value=$src_selected|default:null}
 {assign var="urlName" value=$urlName|default:false}
 {assign var="autosubmit" value=$autosubmit|default:false}
-<select name="source" id="sourceDropDown" {if $autosubmit}onchange="this.form.submit();"{/if}>
+<select name="{$name}" id="sourceDropDown" {if $autosubmit}onchange="this.form.submit();"{/if}>
   {if !$skipAnySource}
     <option value="">Toate sursele</option>
   {/if}

Modified: wwwbase/admin/definitionLookup.php
==============================================================================
--- wwwbase/admin/definitionLookup.php	Mon Jan 27 12:50:38 2014	(r1069)
+++ wwwbase/admin/definitionLookup.php	Tue Jan 28 17:03:03 2014	(r1070)
@@ -4,23 +4,34 @@
 util_assertNotMirror();
 RecentLink::createOrUpdate('Căutare definiții');
 
+define('RESULTS_PER_PAGE', 500);
+
 $name = util_getRequestParameter('name');
 $status = util_getRequestIntParameter('status');
 $nick = util_getRequestParameter('nick');
-$sourceId = util_getRequestIntParameter('source');
+$sourceId = util_getRequestIntParameter('sourceId');
 $yr1 = util_getRequestIntParameter('yr1');
 $mo1 = util_getRequestIntParameter('mo1');
 $da1 = util_getRequestIntParameter('da1');
 $yr2 = util_getRequestIntParameter('yr2');
 $mo2 = util_getRequestIntParameter('mo2');
 $da2 = util_getRequestIntParameter('da2');
+$page = util_getRequestIntParameterWithDefault('page', 1);
+$prevPageButton = util_getRequestParameter('prevPageButton');
+$nextPageButton = util_getRequestParameter('nextPageButton');
 $searchButton = util_getRequestParameter('searchButton');
 
 $ip = $_SERVER['REMOTE_ADDR'];
 
 // Execute query and display results
 // Convert wildcards to mysql format
-if ($searchButton) {
+if ($searchButton || $prevPageButton || $nextPageButton) {
+  if ($prevPageButton && $page > 1) {
+    $page--;
+  }
+  if ($nextPageButton) {
+    $page++;
+  }
   $name = StringUtil::cleanupQuery($name);
   $arr = StringUtil::analyzeQuery($name);
   $hasDiacritics = $arr[0];
@@ -39,17 +50,31 @@
   $endTime = mktime(23, 59, 59, $mo2, $da2, $yr2);
   
   // Query the database and output the results
-  $defs = Definition::searchModerator($name, $hasDiacritics, $sourceId, $status, $userId, $beginTime, $endTime);
+  $defs = Definition::searchModerator($name, $hasDiacritics, $sourceId, $status, $userId, $beginTime, $endTime, $page, RESULTS_PER_PAGE);
   $searchResults = SearchResult::mapDefinitionArray($defs);
-  FileCache::putModeratorQueryResults($ip, $searchResults);
+
+  $args = array('name' => $name,
+                'status' => $status,
+                'nick' => $nick,
+                'sourceId' => $sourceId,
+                'yr1' => $yr1,
+                'mo1' => $mo1,
+                'da1' => $da1,
+                'yr2' => $yr2,
+                'mo2' => $mo2,
+                'da2' => $da2,
+                'page' => $page);
+
+  FileCache::putModeratorQueryResults($ip, array($searchResults, $args));
 } else {
-  $searchResults = FileCache::getModeratorQueryResults($ip);
+  list($searchResults, $args) = FileCache::getModeratorQueryResults($ip);
 }
 
 SmartyWrap::assign('searchResults', $searchResults);
+SmartyWrap::assign('args', $args);
 SmartyWrap::assign('sectionTitle', 'Căutare definiții');
 SmartyWrap::assign('sectionCount', count($searchResults));
 SmartyWrap::assign('allStatuses', util_getAllStatuses());
 SmartyWrap::assign('recentLinks', RecentLink::loadForUser());
-SmartyWrap::displayAdminPage('admin/definitionList.ihtml');
+SmartyWrap::displayAdminPage('admin/definitionLookup.ihtml');
 ?>

Modified: wwwbase/admin/viewPendingDefinitions.php
==============================================================================
--- wwwbase/admin/viewPendingDefinitions.php	Mon Jan 27 12:50:38 2014	(r1069)
+++ wwwbase/admin/viewPendingDefinitions.php	Tue Jan 28 17:03:03 2014	(r1070)
@@ -13,7 +13,7 @@
 }
 
 $ip = $_SERVER['REMOTE_ADDR'];
-$defs = Definition::searchModerator('*', '', $sourceId, ST_PENDING, 0, 0, time());
+$defs = Definition::searchModerator('*', '', $sourceId, ST_PENDING, 0, 0, time(), 1, 500);
 $searchResults = SearchResult::mapDefinitionArray($defs);
 FileCache::putModeratorQueryResults($ip, $searchResults);
 


More information about the Dev mailing list