D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
mihaidwf
/
justshea.net
/
wp-content
/
plugins
/
happy-elementor-addons
/
classes
/
Filename :
conditions-cache.php
back
Copy
<?php namespace Happy_Addons\Elementor\Classes; if (!defined('ABSPATH')) { exit; // Exit if accessed directly } class Conditions_Cache { private static $instance = null; public static function instance() { if ( is_null( self::$instance ) ) { self::$instance = new self(); } return self::$instance; } const OPTION_NAME = 'happy_theme_elements_conditions'; protected $conditions = []; public function __construct() { $this->refresh(); } /** * @param Theme_Document $document * @param array $conditions * * @return $this */ public function add($location, $post_id, array $conditions) { if ($location) { if (is_array($this->conditions) && !isset($this->conditions[$location])) { $this->conditions[$location] = []; } $this->conditions[$location][$post_id] = $conditions; } return $this; } /** * @param int $post_id * * @return $this */ public function remove($post_id) { $post_id = absint($post_id); foreach ($this->conditions as $location => $templates) { foreach ($templates as $id => $template) { if ($post_id === $id) { unset($this->conditions[$location][$id]); } } } return $this; } /** * @param Theme_Document $document * @param array $conditions * * @return $this */ public function update($location, $post_id, $conditions) { return $this->remove($post_id)->add($location, $post_id, $conditions); } public function save() { return update_option(self::OPTION_NAME, $this->conditions); } public function refresh() { $this->conditions = get_option(self::OPTION_NAME, []); return $this; } public function clear() { $this->conditions = []; return $this; } public function get_by_location($location) { if (isset($this->conditions[$location])) { return $this->conditions[$location]; } return []; } public function regenerate() { $this->clear(); $document_types = array_keys(Theme_Builder::get_template_types()); $post_types = [ Theme_Builder::CPT, ]; $query = new \WP_Query([ 'posts_per_page' => -1, 'post_type' => $post_types, 'fields' => 'ids', 'meta_key' => '_ha_display_cond', ]); foreach ($query->posts as $post_id) { $conditions = get_post_meta($post_id,'_ha_display_cond',true); $location = get_post_meta($post_id,'_ha_library_type',true); $this->add($location, $post_id, $conditions); } $this->save(); return $this; } }