PHP Classes

File: htdocs/Frameworks/art/functions.cache.php

Recommend this page to a friend!
  Classes of Michael Beck   Xoops 2.5   htdocs/Frameworks/art/functions.cache.php   Download  
File: htdocs/Frameworks/art/functions.cache.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Xoops 2.5
Modular content management publication system
Author: By
Last change:
Date: 7 years ago
Size: 5,616 bytes
 

Contents

Class file image Download
<?php
/**
 * Cache handlers
 *
 * @copyright (c) 2000-2016 XOOPS Project (www.xoops.org)
 * @license GNU GPL 2 (http://www.gnu.org/licenses/gpl-2.0.html)
 * @author Taiwen Jiang <phppp@users.sourceforge.net>
 * @since 1.00
 * @package Frameworks
 * @subpackage art
 */

if (!defined('FRAMEWORKS_ART_FUNCTIONS_CACHE')):
   
define('FRAMEWORKS_ART_FUNCTIONS_CACHE', true);

   
/**
     * @param null|array $groups
     *
     * @return string
     */
   
function mod_generateCacheId_byGroup($groups = null)
    {
        global
$xoopsUser;

        if (!empty(
$groups) && is_array($groups)) {
        } elseif (
is_object($xoopsUser)) {
           
$groups = $xoopsUser->getGroups();
        }
        if (!empty(
$groups) && is_array($groups)) {
           
sort($groups);
           
$contentCacheId = substr(md5(implode(',', $groups) . XOOPS_DB_PASS . XOOPS_DB_NAME), 0, strlen(XOOPS_DB_USER) * 2);
        } else {
           
$contentCacheId = XOOPS_GROUP_ANONYMOUS;
        }

        return
$contentCacheId;
    }

   
/**
     * @param null $groups
     *
     * @return string
     */
   
function mod_generateCacheId($groups = null)
    {
        return
mod_generateCacheId_byGroup($groups);
    }

   
/**
     * @param $data
     * @param null|string $name
     * @param null|string $dirname
     * @param string $root_path
     *
     * @return bool
     */
   
function mod_createFile($data, $name = null, $dirname = null, $root_path = XOOPS_CACHE_PATH)
    {
        global
$xoopsModule;

       
$name = $name ? : (string)time();
       
$dirname = $dirname ? : (is_object($xoopsModule) ? $xoopsModule->getVar('dirname', 'n') : 'system');

       
xoops_load('XoopsCache');
       
$key = "{$dirname}_{$name}";

        return
XoopsCache::write($key, $data);
    }

   
/**
     * @param $data
     * @param null $name
     * @param null $dirname
     *
     * @return bool
     */
   
function mod_createCacheFile($data, $name = null, $dirname = null)
    {
        return
mod_createFile($data, $name, $dirname);
    }

   
/**
     * @param $data
     * @param null|string $name
     * @param null $dirname
     * @param null $groups
     *
     * @return bool
     */
   
function mod_createCacheFile_byGroup($data, $name = null, $dirname = null, $groups = null)
    {
       
$name .= mod_generateCacheId_byGroup();

        return
mod_createCacheFile($data, $name, $dirname);
    }

   
/**
     * @param $name
     * @param null|string $dirname
     * @param string $root_path
     *
     * @return mixed|null
     */
   
function mod_loadFile($name, $dirname = null, $root_path = XOOPS_CACHE_PATH)
    {
        global
$xoopsModule;

       
$data = null;

        if (empty(
$name)) {
            return
$data;
        }
       
$dirname = $dirname ? : (is_object($xoopsModule) ? $xoopsModule->getVar('dirname', 'n') : 'system');
       
xoops_load('XoopsCache');
       
$key = "{$dirname}_{$name}";

        return
XoopsCache::read($key);
    }

   
/**
     * @param $name
     * @param null $dirname
     *
     * @return mixed|null
     */
   
function mod_loadCacheFile($name, $dirname = null)
    {
       
$data = mod_loadFile($name, $dirname);

        return
$data;
    }

   
/**
     * @param $name
     * @param null $dirname
     * @param null $groups
     *
     * @return mixed|null
     */
   
function mod_loadCacheFile_byGroup($name, $dirname = null, $groups = null)
    {
       
$name .= mod_generateCacheId_byGroup();
       
$data = mod_loadFile($name, $dirname);

        return
$data;
    }

   
/* Shall we use the function of glob for better performance ? */

    /**
     * @param string $name
     * @param null $dirname
     * @param string $root_path
     *
     * @return bool
     */
   
function mod_clearFile($name = '', $dirname = null, $root_path = XOOPS_CACHE_PATH)
    {
        if (empty(
$dirname)) {
           
$pattern = $dirname ? "{$dirname}_{$name}.*\.php" : "[^_]+_{$name}.*\.php";
            if (
$handle = opendir($root_path)) {
                while (
false !== ($file = readdir($handle))) {
                    if (
is_file($root_path . '/' . $file) && preg_match("/{$pattern}$/", $file)) {
                        @
unlink($root_path . '/' . $file);
                    }
                }
               
closedir($handle);
            }
        } else {
           
$files = (array)glob($root_path . "/*{$dirname}_{$name}*.php");
            foreach (
$files as $file) {
                @
unlink($file);
            }
        }

        return
true;
    }

   
/**
     * @param string $name
     * @param null $dirname
     *
     * @return bool
     */
   
function mod_clearCacheFile($name = '', $dirname = null)
    {
        return
mod_clearFile($name, $dirname);
    }

   
/**
     * @param string $pattern
     *
     * @return bool
     */
   
function mod_clearSmartyCache($pattern = '')
    {
        global
$xoopsModule;

        if (empty(
$pattern)) {
           
$dirname = (is_object($xoopsModule) ? $xoopsModule->getVar('dirname', 'n') : 'system');
           
$pattern = "/(^{$dirname}\^.*\.html$|blk_{$dirname}_.*[^\.]*\.html$)/";
        }
        if (
$handle = opendir(XOOPS_CACHE_PATH)) {
            while (
false !== ($file = readdir($handle))) {
                if (
is_file(XOOPS_CACHE_PATH . '/' . $file) && preg_match($pattern, $file)) {
                    @
unlink(XOOPS_CACHE_PATH . '/' . $file);
                }
            }
           
closedir($handle);
        }

        return
true;
    }

endif;