Operator: Paginate the CDR results
authorBen Klang <ben@alkaloid.net>
Sun, 10 Jan 2010 21:17:36 +0000 (16:17 -0500)
committerBen Klang <ben@alkaloid.net>
Sun, 10 Jan 2010 21:17:36 +0000 (16:17 -0500)
operator/search.php
operator/templates/search.inc [new file with mode: 0644]
operator/templates/search/footer.inc [deleted file]
operator/templates/search/header.inc [deleted file]
operator/templates/search/row.inc [deleted file]

index 0cda93a..c61ba98 100644 (file)
@@ -27,6 +27,10 @@ if (!$vars->exists('rowstart')) {
     $rowstart = 0;
 }
 
+if (isset($_SESSION['operator']['lastdata'])) {
+    $data = $_SESSION['operator']['lastdata'];
+}
+
 $form = new SearchCDRForm(_("Search Call Detail Records"), $vars);
 if ($form->isSubmitted() && $form->validate($vars, true)) {
     $accountcode = $vars->get('accountcode');
@@ -52,6 +56,7 @@ if ($form->isSubmitted() && $form->validate($vars, true)) {
             'dcontext' => $vars->get('dcontext'),
             'startdate' => $vars->get('startdate'),
             'enddate' => $vars->get('enddate'));
+        $_SESSION['operator']['lastdata'] = $data;
     }
 } else {
     if (isset($_SESSION['operator']['lastsearch']['params'])) {
@@ -61,6 +66,20 @@ if ($form->isSubmitted() && $form->validate($vars, true)) {
     }
 }
 
+// Create the Pager UI
+$page = Horde_Util::getGet('page', 1);
+$pager_vars = Horde_Variables::getDefaultVariables();
+$pager_vars->set('page', $page);
+$perpage = $prefs->getValue('rowsperpage');
+$pager = new Horde_Ui_Pager('page', $pager_vars,
+                            array('num' => count($data),
+                                  'url' => 'search.php',
+                                  'page_count' => 10,
+                                  'perpage' => $perpage));
+
+// Limit the domain list to the current page
+$data = array_slice($data, $page*$perpage, $perpage);
+
 $title = _("Search Call Detail Records");
 Horde::addScriptFile('stripe.js', 'horde', true);
 
@@ -71,12 +90,7 @@ $form->renderActive($renderer, $vars);
 
 $columns = unserialize($prefs->getValue('columns'));
 if (!empty($data)) {
-    require OPERATOR_TEMPLATES . '/search/header.inc';
-    unset($data['count'], $data['minutes'], $data['failed']);
-    foreach ($data as $record) {
-        require OPERATOR_TEMPLATES . '/search/row.inc';
-    }
-    require OPERATOR_TEMPLATES . '/search/footer.inc';
+    require OPERATOR_TEMPLATES . '/search.inc';
 }
 
 require $registry->get('templates', 'horde') . '/common-footer.inc';
diff --git a/operator/templates/search.inc b/operator/templates/search.inc
new file mode 100644 (file)
index 0000000..ad76612
--- /dev/null
@@ -0,0 +1,35 @@
+Call Statistics Summary:<br />
+<ul>
+<li>Total Calls: <?php echo $data['numcalls']; ?></li>
+<li>Total Minutes: <?php echo round($data['minutes'], 1); ?></li>
+<li>Failed Calls: <?php echo $data['failed']; ?></li>
+</ul>
+<br />
+<table class="striped">
+<tr>
+<?php
+foreach ($columns as $column) {
+    echo '<th class="control">' . Operator::getColumnName($column) . '</th>';
+}
+?>
+</tr>
+
+<tr>
+<?php
+foreach ($data as $record) {
+    echo "<tr>\n";
+    foreach ($columns as $column) {
+        echo "<td>";
+        if ($column == 'amaflags') {
+            $record[$column] = Operator::getAMAFlagName($record[$column]);
+        }
+        echo $record[$column];
+        echo "</td>\n";
+    }
+    echo "</tr>\n";
+}
+?>
+</tr>
+
+</table>
+<?php echo $pager->render(); ?>
diff --git a/operator/templates/search/footer.inc b/operator/templates/search/footer.inc
deleted file mode 100644 (file)
index 000ca4b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-</table>
diff --git a/operator/templates/search/header.inc b/operator/templates/search/header.inc
deleted file mode 100644 (file)
index 36127b0..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-Call Statistics Summary:<br />
-<ul>
-<li>Total Calls: <?php echo $data['numcalls']; ?></li>
-<li>Total Minutes: <?php echo round($data['minutes'], 1); ?></li>
-<li>Failed Calls: <?php echo $data['failed']; ?></li>
-</ul>
-<br />
-<table class="striped">
-<tr>
-<?php
-foreach ($columns as $column) {
-    echo '<th class="control">' . Operator::getColumnName($column) . '</th>';
-}
-?>
-</tr>
diff --git a/operator/templates/search/row.inc b/operator/templates/search/row.inc
deleted file mode 100644 (file)
index c1359d0..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<tr>
-<?php
-foreach ($columns as $column) {
-    echo "<td>";
-    if ($column == 'amaflags') {
-        $record[$column] = Operator::getAMAFlagName($record[$column]);
-    }
-    echo $record[$column];
-    echo "</td>";
-}
-?>
-</tr>