all-in-one-event-calendar/app/controller/calendar-feeds.php
2017-11-09 17:36:04 +01:00

84 lines
No EOL
2 KiB
PHP

<?php
/**
* Feeds (import and export streams) mediator.
*
* @author Time.ly Network Inc.
* @since 2.0
*
* @package AI1EC
* @subpackage AI1EC.Controller
*/
class Ai1ec_Controller_Calendar_Feeds extends Ai1ec_Base {
/**
* @var array Holds the instances of registered plugins.
*/
protected $_plugins = array();
/**
* Add plugin to the internal array.
*
* This assure us that the plugins extends our base abstract class.
*
* @param Ai1ec_Connector_Plugin $plugin Plugin to add.
*
* @return void
*/
public function add_plugin( Ai1ec_Connector_Plugin $plugin ) {
$plugin->initialize_settings_if_not_set();
$this->_plugins[] = $plugin;
}
/**
* Get an instance of a plugin class
*
* @param string $class
* @throws Exception
* @return Ai1ec_Connector_Plugin
*/
public function get_plugin_instance( $class ) {
foreach ( $this->_plugins as $plugin ) {
if( get_class( $plugin ) === $class ) {
return $plugin;
}
}
throw new Exception( "Class not found" );
}
/**
* Give the plugins the possibility to handle data posted in the calendar feeds page
*
* @return void
*/
public function handle_feeds_page_post() {
// Iterate over the plugins and call the methods
foreach ( $this->_plugins as $plugin ) {
$plugin->handle_feeds_page_post();
}
}
/**
* Render the tab header for each plugin
*
* @param $active_feed
* The tab that should be visualized
*/
public function render_tab_headers() {
foreach ( $this->_plugins as $plugin ) {
$plugin->render_tab_header();
}
}
/**
* Render the tab body for each plugin
*
* @param $active_feed
* The tab that should be visualized
*/
public function render_tab_contents() {
foreach ( $this->_plugins as $plugin ) {
$plugin->render_tab_content();
}
}
}