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: 10 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;