fix #7328 add _no_count support
[Pman.Base] / Pman / Roo.php
index 8aa0a70..a9871a0 100644 (file)
@@ -85,6 +85,9 @@ class Pman_Roo extends Pman
      *    lookup[key]=value  single fetch based on a single key value lookup.
      *                       multiple key/value can be used. eg. ontable+onid..
      *    _columns           what to return.
+     * 
+     *    _no_count          skip the default count query.
+     *                       use the number of records in the query result as the total
      *
      *    
      * JOINS:
@@ -141,9 +144,9 @@ class Pman_Roo extends Pman
      *                     -- apply any query filters on data. and hide stuff not to be seen.
      *                     -- can exit by calling $roo->jerr()
      *   postListExtra($_REQUEST, $roo, $array_data) : array(extra_name => data)
-     *                     - add extra column data on the results (like new messages etc.)
+     *                     - add extra column to the jdata return key/value info.
      *   postListFilter($data, $authUser, $request) return $data
-     *                      - add extra data to an object
+     *                      - modify the returned array of data (either add stuff to the data, or remove lines etc)
      * 
      *   
      *   toRooSingleArray($authUser, $request) : array
@@ -266,16 +269,18 @@ class Pman_Roo extends Pman
             $xx=clone($x);
             
         }
-       
-        $total = $xx->count($this->countWhat);
+        $total = false;
+        if (!isset($_REQUEST['_no_count'])) {
+            $total = $xx->count($this->countWhat);
+        }
         // sorting..
       //   
-        //var_dump($total);exit;
+        // var_dump($total);exit;
         $this->applySort($x);
         
         $fake_limit = false;
         
-        if (!empty($_REQUEST['_distinct']) && $total < 400) {
+        if (!empty($_REQUEST['_distinct']) && $total !== false && $total < 400) {
             $fake_limit  = true;
         }
         
@@ -307,7 +312,7 @@ class Pman_Roo extends Pman
         
         if (!empty($_REQUEST['query']['add_blank'])) {
             $ret[] = array( 'id' => 0, 'name' => '----');
-            $total+=1;
+            $total === false ? false : $total+1;
         }
          
         $rooar = method_exists($x, 'toRooArray');
@@ -357,13 +362,14 @@ class Pman_Roo extends Pman
         if (!empty($_REQUEST['_requestMeta']) &&  count($ret)) {
             $meta = $this->meta($x, $ret);
             if ($meta) {
+                $extra = $extra ? $extra: array();
                 $extra['metaData'] = $meta;
             }
         }
         // this make take some time...
         $this->sessionState(0);
        // echo "<PRE>"; print_r($ret);
-        $this->jdata($ret, max(count($ret), $total), $extra );
+        $this->jdata($ret, max(count($ret), $total === false ? 0 : $total), $extra );
 
     
     }
@@ -538,7 +544,7 @@ class Pman_Roo extends Pman
                           // 'fillBlank' => 'gray', // set 
                     );
                     //die('here');
-                    if (method_exists($this->do, 'toSimpleExcelColumn')) {
+                    if (!empty($this->do) && method_exists($this->do, 'toSimpleExcelColumn')) {
                         $add = $this->do->toSimpleExcelColumn($add);
                     }