File: /var/www/vhosts/enlugo.es/httpdocs/wp-content/plugins/w3-total-cache/Generic_Plugin_WidgetForum.php
<?php
namespace W3TC;
/**
* W3 Forum Widget
*/
/**
* Class Generic_Plugin_WidgetForum
*/
class Generic_Plugin_WidgetForum {
/**
* Config
*/
private $_config = null;
function __construct() {
$this->_config = Dispatcher::config();
}
/**
* Runs plugin
*/
function run() {
if ( Util_Admin::get_current_wp_page() == 'w3tc_dashboard' )
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue' ) );
add_action( 'w3tc_widget_setup', array(
$this,
'wp_dashboard_setup'
) );
add_action( 'w3tc_network_dashboard_setup', array(
$this,
'wp_dashboard_setup'
) );
if ( is_admin() ) {
add_action( 'wp_ajax_w3tc_widget_latest_ajax', array( $this, 'action_widget_latest_ajax' ) );
}
}
/**
* Dashboard setup action
*
* @return void
*/
function wp_dashboard_setup() {
Util_Widget::add( 'w3tc_latest', __( 'Discussions', 'w3-total-cache' ), array(
$this,
'widget_latest'
), array(
$this,
'widget_latest_control'
), 'side' );
}
/**
* Returns key for transient cache of "widget latest"
*
* @return string
*/
function _widget_latest_cache_key() {
return 'dash_' . md5( 'w3tc_latest' );
}
/**
* Prints latest widget contents
*
* @return void
*/
function widget_latest() {
if ( false !== ( $output = get_transient( $this->_widget_latest_cache_key() ) ) )
echo $output;
else
include W3TC_INC_DIR . '/widget/latest.php';
}
/**
* Prints latest widget contents
*
* @return void
*/
function action_widget_latest_ajax() {
// load content of feed
global $wp_version;
$items = array();
$items_count = $this->_config->get_integer( 'widget.latest.items' );
include_once ABSPATH . WPINC . '/feed.php';
$feed = fetch_feed( W3TC_FEED_URL );
if ( !is_wp_error( $feed ) ) {
$feed_items = $feed->get_items( 0, $items_count );
foreach ( $feed_items as $feed_item ) {
$items[] = array(
'link' => $feed_item->get_link(),
'title' => htmlspecialchars_decode( $feed_item->get_title() )
);
}
}
ob_start();
include W3TC_INC_DIR . '/widget/latest_ajax.php';
// Default lifetime in cache of 12 hours (same as the feeds)
set_transient( $this->_widget_latest_cache_key(), ob_get_flush(), 43200 );
die();
}
/**
* Latest widget control
*
* @param integer $widget_id
* @param array $form_inputs
* @return void
*/
function widget_latest_control( $widget_id, $form_inputs = array() ) {
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
$this->_config->set( 'widget.latest.items', Util_Request::get_integer( 'w3tc_widget_latest_items', 3 ) );
$this->_config->save();
delete_transient( $this->_widget_latest_cache_key() );
}
include W3TC_INC_DIR . '/widget/latest_control.php';
}
public function enqueue() {
wp_enqueue_style( 'w3tc-widget' );
wp_enqueue_script( 'w3tc-metadata' );
wp_enqueue_script( 'w3tc-widget' );
}
}