<?php

class SiteOrigin_Panels_Cache_Renderer {

	function __construct() {
		// Clear cache when the Page Builder version changes
		add_action( 'siteorigin_panels_version_changed', array( $this, 'clear_cache' ), 10, 0 );

		// When we activate/deactivate a plugin or switch themes that might change rendering
		add_action( 'activated_plugin', array( $this, 'clear_cache' ), 10, 0 );
		add_action( 'deactivated_plugin', array( $this, 'clear_cache' ), 10, 0 );
		add_action( 'switch_theme', array( $this, 'clear_cache' ), 10, 0 );

		// When settings are saved, this is also a good way to force a cache refresh
		add_action( 'siteorigin_panels_save_settings', array( $this, 'clear_cache' ), 10, 0 );

		// When a single post is saved
		add_action( 'save_post', array( $this, 'clear_cache' ), 10, 2 );
	}

	/**
	 * @return SiteOrigin_Panels_Cache_Renderer
	 */
	static function single() {
		static $single;
		return empty( $single ) ? $single = new self() : $single;
	}

	/**
	 * Clear post meta cache.
	 *
	 * Keep this around for a bit in attempt to delete any existing caches.
	 *
	 * @param bool|int $post_id The ID of the post to clear or false for all
	 */
	public function clear_cache( $post_id = false ){
		global $wpdb;
		
		$wpdb->query( "DELETE FROM $wpdb->postmeta WHERE meta_key = 'siteorigin_panels_cache'" );
	}
}
