* @author Andreas Gohr */ class admin_plugin_farmer extends AdminPlugin { /** @var helper_plugin_farmer */ protected $helper; /** @var array The available pages for the current user in the current wiki */ protected $pages; /** @var string The currently selected page */ protected $page; /** @var AdminPlugin the plugin to use for the current page */ protected $adminplugin; /** * @return bool we're available for managers and admins */ public function forAdminOnly() { return false; } /** * Initialize current page */ public function __construct() { global $INPUT; $this->helper = plugin_load('helper', 'farmer'); // set available pages depending on user and animal $isanimal = (bool) $this->helper->getAnimal(); if ($isanimal || !auth_isadmin()) { $this->pages = ['info']; } elseif (!$this->helper->checkFarmSetup()) { $this->pages = ['setup']; } else { $this->pages = ['info', 'config', 'new', 'plugins', 'delete']; } // make sure current page requested is available $this->page = $INPUT->str('sub'); if (!in_array($this->page, $this->pages)) { $this->page = $this->pages[0]; } // load the sub component $this->adminplugin = plugin_load('admin', 'farmer_' . $this->page); if (!$this->adminplugin) nice_die('Something went wrong loading the plugin component for ' . hsc($this->page)); } /** * handle user request */ public function handle() { $this->adminplugin->handle(); } /** * output appropriate tab */ public function html() { global $ID; echo '
'; echo '

' . $this->getLang('menu') . '

'; echo ''; echo '
'; echo $this->locale_xhtml('tab_' . $this->page); echo '
'; echo '
'; $this->adminplugin->html(); echo '
'; echo '
'; echo $this->locale_xhtml('tab_' . $this->page . '_help'); echo '
'; echo '
'; } /** * @return int */ public function getMenuSort() { return 42; } }