Exemplo n.º 1
0
 public static function sql_exec($params, &$smarty)
 {
     global $_G;
     if (!empty($params['sql']) && System::$db) {
         // 创建目录
         $base = create_dir(VI_ROOT . 'cache/dataset/sql/');
         // 缓存地址
         $file = $base . md5($params['sql']) . ".php";
         //////////////////////
         //检查缓存是否有效
         if ($params['cache'] && file_exists($file) && time() - filemtime($file) <= $params['cache'] * 60) {
             $result = unserialize(file_get_contents($file));
         } else {
             switch ($params['type']) {
                 case 'value':
                     $result = System::$db->getValue($params['sql']);
                     break;
                 case 'first':
                     $result = System::$db->getOne($params['sql']);
                     break;
                 default:
                 case 'multi':
                     $result = System::$db->getAll($params['sql']);
                     break;
             }
             //////////////////////
             if ($params['jsonde']) {
                 $params['jsonde'] = explode(',', $params['jsonde']);
             }
             if ($params['serialize']) {
                 $params['serialize'] = explode(',', $params['serialize']);
             }
             if ($result !== FALSE) {
                 switch ($params['type']) {
                     case 'first':
                         $result = Cached::format($result, $params);
                         break;
                     default:
                     case 'multi':
                         foreach ($result as &$row) {
                             $row = Cached::format($row, $params);
                         }
                         break;
                 }
             }
         }
         //////////////////////
         if ($params['cache']) {
             create_file($file, serialize($result));
         }
         //////////////////////
         $smarty->assign($params['assign'], $result);
     }
 }