RooTrait.php
authoredward <edward@roojs.com>
Wed, 30 Mar 2016 10:27:44 +0000 (18:27 +0800)
committeredward <edward@roojs.com>
Wed, 30 Mar 2016 10:27:44 +0000 (18:27 +0800)
RooTrait.php

index 47bd73f..e4c5e1c 100644 (file)
@@ -261,4 +261,85 @@ trait Pman_Core_RooTrait {
         exit;
         
     }
+    
+    function jdata($ar,$total=false, $extra=array(), $cachekey = false)
+    {
+        // should do mobile checking???
+        if ($total == false) {
+            $total = count($ar);
+        }
+        $extra=  $extra ? $extra : array();
+        require_once 'Services/JSON.php';
+        $json = new Services_JSON();
+        
+        $retHTML = isset($_SERVER['CONTENT_TYPE']) && 
+                preg_match('#multipart/form-data#i', $_SERVER['CONTENT_TYPE']);
+        
+        if ($retHTML){
+            if (isset($_REQUEST['returnHTML']) && $_REQUEST['returnHTML'] == 'NO') {
+                $retHTML = false;
+            }
+        } else {
+            $retHTML = isset($_REQUEST['returnHTML']) && $_REQUEST['returnHTML'] !='NO';
+        }
+        
+        if ($retHTML) {
+            
+            header('Content-type: text/html');
+            echo "<HTML><HEAD></HEAD><BODY>";
+            // encode html characters so they can be read..
+            echo  str_replace(array('<','>'), array('\u003c','\u003e'),
+                        $json->encodeUnsafe(array('success' =>  true, 'total'=> $total, 'data' => $ar) + $extra));
+            echo "</BODY></HTML>";
+            exit;
+        }
+        
+        
+        // see if trimming will help...
+        if (!empty($_REQUEST['_pman_short'])) {
+            $nar = array();
+            
+            foreach($ar as $as) {
+                $add = array();
+                foreach($as as $k=>$v) {
+                    if (is_string($v) && !strlen(trim($v))) {
+                        continue;
+                    }
+                    $add[$k] = $v;
+                }
+                $nar[] = $add;
+            }
+            $ar = $nar;
+              
+        }
+        
+      
+        $ret =  $json->encode(array('success' =>  true, 'total'=> $total, 'data' => $ar) + $extra);  
+        
+        if (!empty($cachekey)) {
+            
+            $fn = ini_get('session.save_path') . '/json-cache'.date('/Y/m/d').'.'. $cachekey . '.cache.json';
+            if (!file_exists(dirname($fn))) {
+                mkdir(dirname($fn), 0777,true);
+            }
+            file_put_contents($fn, $ret);
+        }
+        echo $ret;
+        exit;
+    }
+    
+    
+    
+    /** a daily cache **/
+    function jdataCache($cachekey)
+    {
+        $fn = ini_get('session.save_path') . '/json-cache'.date('/Y/m/d').'.'. $cachekey . '.cache.json';
+        if (file_exists($fn)) {
+            header('Content-type: application/json');
+            echo file_get_contents($fn);
+            exit;
+        }
+        return false;
+        
+    }
 }