38217-vm/wp-content/plugins/mainwp/class/class-mainwp-cache.php
2026-02-05 17:08:59 +03:00

145 lines
4.1 KiB
PHP

<?php
/**
* Search Cache Handler
*
* Handles all search content.
*
* @package MainWP/Dashboard
*/
namespace MainWP\Dashboard;
/**
* Class MainWP_Cache
*
* @package MainWP\Dashboard
*/
class MainWP_Cache { // phpcs:ignore Generic.Classes.OpeningBraceSameLine.ContentAfterBrace -- NOSONAR.
/**
* Method init_session()
*
* Start session.
*/
public static function init_session() {
if ( PHP_SESSION_NONE === session_status() ) {
session_start();
}
}
/**
* Method init_session()
*
* Start session.
*/
public static function is_session_disable() {
return ! function_exists( 'session_start' ) || ! function_exists( 'session_status' ) || PHP_SESSION_DISABLED === session_status();
}
/**
* Method init_cache()
*
* Set session variables.
*
* @param mixed $page Page information.
*/
public static function init_cache( $page ) {
$_SESSION[ 'MainWP' . $page . 'Search' ] = '';
$_SESSION[ 'MainWP' . $page . 'SearchContext' ] = '';
$_SESSION[ 'MainWP' . $page . 'SearchResult' ] = '';
}
/**
* Method add_context()
*
* Set time & search context.
*
* @param mixed $page Page information.
* @param array $context Search context.
*/
public static function add_context( $page, $context ) {
if ( ! is_array( $context ) ) {
$context = array();
}
$context['time'] = time();
$_SESSION[ 'MainWP' . $page . 'SearchContext' ] = $context;
}
/**
* Method add_body()
*
* Set search body session variable.
*
* @param string $page Page information..
* @param mixed $body Search body.
*/
public static function add_body( $page, $body ) {
$_SESSION[ 'MainWP' . $page . 'Search' ] .= $body;
}
/**
* Method get_cached_context()
*
* Grab any cached searches.
*
* @param mixed $page Page information.
*
* @return array $cachedSearch Cached search array.
*/
public static function get_cached_context( $page ) {
$cachedSearch = ( isset( $_SESSION[ 'MainWP' . $page . 'SearchContext' ] ) && is_array( $_SESSION[ 'MainWP' . $page . 'SearchContext' ] ) ? $_SESSION[ 'MainWP' . $page . 'SearchContext' ] : null ); //phpcs:ignore -- ok.
if ( null !== $cachedSearch && ( ( time() - ( 2 * 60 * 60 ) ) > $cachedSearch['time'] ) ) {
unset( $_SESSION[ 'MainWP' . $page . 'SearchContext' ] );
unset( $_SESSION[ 'MainWP' . $page . 'Search' ] );
unset( $_SESSION[ 'MainWP' . $page . 'SearchResult' ] );
$cachedSearch = null;
}
if ( null !== $cachedSearch && isset( $cachedSearch['status'] ) ) {
$cachedSearch['status'] = explode( ',', $cachedSearch['status'] );
}
return $cachedSearch;
}
/**
* Method echo_body()
*
* Grab & echo cached search body.
*
* @param mixed $page Page information.
*/
public static function echo_body( $page ) {
if ( isset( $_SESSION[ 'MainWP' . $page . 'Search' ] ) ) {
echo $_SESSION[ 'MainWP' . $page . 'Search' ]; // phpcs:ignore WordPress.Security.EscapeOutput,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
}
}
/**
* Method add_result()
*
* Grab search results & store them in session.
*
* @param mixed $page Page information.
* @param mixed $result Search results.
*/
public static function add_result( $page, $result ) {
$_SESSION[ 'MainWP' . $page . 'SearchResult' ] = $result;
}
/**
* Method get_cached_result()
*
* Grab cached search results.
*
* @param mixed $page Page information.
*/
public static function get_cached_result( $page ) {
if ( isset( $_SESSION[ 'MainWP' . $page . 'SearchResult' ] ) ) {
return $_SESSION[ 'MainWP' . $page . 'SearchResult' ]; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized,WordPress.Security.NonceVerification.Recommended
}
}
}