PHP Classes

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

Recommend this page to a friend!
  Packages 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: Merge pull request #1586 from mambax7/feature/Cannot_use_bool_as_array

fix for Cannot use bool as array
copyright update
PER-CS formatting
Merge pull request #1239 from Andrew-Staves-Activ/notificationhandler_subscribe_success

Merge branch 'feature/php8_templates' of https://github.com/mambax7/XoopsCore25 into feature/php8_templates

# Conflicts:
# htdocs/themes/xswatch4/modules/publisher/publisher_item.tpl
Merge xswatch4
Date: 2 months ago
Size: 5,057 bytes
 

Contents

Class file image Download
<?php
/**
 * Cache handlers
 *
 * @copyright (c) 2000-2025 XOOPS Project (https://xoops.org)
 * @license GNU GPL 2 (https://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 array|null $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 mixed $groups
 *
 * @return string
 */
function mod_generateCacheId($groups = null)
{
    return
mod_generateCacheId_byGroup($groups);
}

/**
 * @param mixed $data
 * @param string|null $name
 * @param string|null $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 mixed $data
 * @param string|null $name
 * @param string|null $dirname
 *
 * @return bool
 */
function mod_createCacheFile($data, $name = null, $dirname = null)
{
    return
mod_createFile($data, $name, $dirname);
}

/**
 * @param mixed $data
 * @param string|null $name
 * @param string|null $dirname
 * @param mixed $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 string $name
 * @param string|null $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 string $name
 * @param string|null $dirname
 *
 * @return mixed
 */
function mod_loadCacheFile($name, $dirname = null)
{
   
$data = mod_loadFile($name, $dirname);

    return
$data;
}

/**
 * @param string $name
 * @param string|null $dirname
 * @param mixed $groups
 *
 * @return mixed
 */
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 string|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 string|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;