16180f6b6SKarsten Kosmala<?php 26180f6b6SKarsten Kosmala 36180f6b6SKarsten Kosmalause dokuwiki\Extension\RemotePlugin; 4*760fd51aSKarsten Kosmalause dokuwiki\Remote\AccessDeniedException; 56180f6b6SKarsten Kosmala 66180f6b6SKarsten Kosmalaclass remote_plugin_farmer extends RemotePlugin { 76180f6b6SKarsten Kosmala /** @var helper_plugin_farmer hlp */ 86180f6b6SKarsten Kosmala protected $helper; 96180f6b6SKarsten Kosmala 106180f6b6SKarsten Kosmala /** 116180f6b6SKarsten Kosmala * remote_plugin_struct constructor. 126180f6b6SKarsten Kosmala */ 136180f6b6SKarsten Kosmala public function __construct() 146180f6b6SKarsten Kosmala { 156180f6b6SKarsten Kosmala parent::__construct(); 166180f6b6SKarsten Kosmala 176180f6b6SKarsten Kosmala $this->helper = plugin_load('helper', 'farmer'); 186180f6b6SKarsten Kosmala } 196180f6b6SKarsten Kosmala 20107b329dSKarsten Kosmala /** 21107b329dSKarsten Kosmala * Get the configured farm host 22107b329dSKarsten Kosmala * 23107b329dSKarsten Kosmala * @return string 24*760fd51aSKarsten Kosmala * @throws AccessDeniedException 25107b329dSKarsten Kosmala */ 26107b329dSKarsten Kosmala public function getFarmhost(): string 27107b329dSKarsten Kosmala { 28*760fd51aSKarsten Kosmala $this->ensureAdmin(); 296180f6b6SKarsten Kosmala return $this->helper->getConfig()['base']['farmhost']; 306180f6b6SKarsten Kosmala } 316180f6b6SKarsten Kosmala 32107b329dSKarsten Kosmala /** 33107b329dSKarsten Kosmala * Get the configured base domain of the farmer 34107b329dSKarsten Kosmala * This could be an empty string, then farmhost will be used to determine an animal url 35107b329dSKarsten Kosmala * 36107b329dSKarsten Kosmala * @return string 37*760fd51aSKarsten Kosmala * @throws AccessDeniedException 38107b329dSKarsten Kosmala */ 39107b329dSKarsten Kosmala public function getBaseDomain(): string 40107b329dSKarsten Kosmala { 41*760fd51aSKarsten Kosmala $this->ensureAdmin(); 426180f6b6SKarsten Kosmala return $this->helper->getConfig()['base']['basedomain']; 436180f6b6SKarsten Kosmala } 446180f6b6SKarsten Kosmala 45107b329dSKarsten Kosmala /** 46107b329dSKarsten Kosmala * Get a list of all animal names 47107b329dSKarsten Kosmala * 48107b329dSKarsten Kosmala * @return array 49*760fd51aSKarsten Kosmala * @throws AccessDeniedException 50107b329dSKarsten Kosmala */ 51107b329dSKarsten Kosmala public function listAnimals(): array 52107b329dSKarsten Kosmala { 53*760fd51aSKarsten Kosmala $this->ensureAdmin(); 546180f6b6SKarsten Kosmala return $this->helper->getAllAnimals(); 556180f6b6SKarsten Kosmala } 566180f6b6SKarsten Kosmala 57107b329dSKarsten Kosmala /** 58107b329dSKarsten Kosmala * Get a list of all animal urls 59107b329dSKarsten Kosmala * 60107b329dSKarsten Kosmala * @return array 61*760fd51aSKarsten Kosmala * @throws AccessDeniedException 62107b329dSKarsten Kosmala */ 63107b329dSKarsten Kosmala public function listAnimalUrls(): array 64107b329dSKarsten Kosmala { 65*760fd51aSKarsten Kosmala $this->ensureAdmin(); 666180f6b6SKarsten Kosmala foreach($this->helper->getAllAnimals() as $animal) { 676180f6b6SKarsten Kosmala $animalUrls[] = $this->helper->getAnimalURL($animal); 686180f6b6SKarsten Kosmala } 696180f6b6SKarsten Kosmala return $animalUrls; 706180f6b6SKarsten Kosmala } 717a001063SKarsten Kosmala 727a001063SKarsten Kosmala /** 73fab4b515SKarsten Kosmala * Get configuration details of farmer plugin enriched by list of animals 747a001063SKarsten Kosmala * 757a001063SKarsten Kosmala * @return array 76*760fd51aSKarsten Kosmala * @throws AccessDeniedException 777a001063SKarsten Kosmala */ 787a001063SKarsten Kosmala public function getFarmerConfig(): array 797a001063SKarsten Kosmala { 80*760fd51aSKarsten Kosmala $this->ensureAdmin(); 817a001063SKarsten Kosmala $farmerConfig = $this->helper->getConfig(); 82fab4b515SKarsten Kosmala foreach($this->helper->getAllAnimals() as $index=>$animal) { 83fab4b515SKarsten Kosmala $farmerConfig['animals'][$index]["name"] =$animal; 84fab4b515SKarsten Kosmala $farmerConfig['animals'][$index]["url"] = $this->helper->getAnimalURL($animal); 857a001063SKarsten Kosmala } 867a001063SKarsten Kosmala return $farmerConfig; 877a001063SKarsten Kosmala } 88*760fd51aSKarsten Kosmala 89*760fd51aSKarsten Kosmala /** 90*760fd51aSKarsten Kosmala * @throws AccessDeniedException 91*760fd51aSKarsten Kosmala */ 92*760fd51aSKarsten Kosmala private function ensureAdmin() { 93*760fd51aSKarsten Kosmala if (!auth_isadmin()) { 94*760fd51aSKarsten Kosmala throw new AccessDeniedException( 95*760fd51aSKarsten Kosmala 'You are not allowed to access farmer configuration, superuser permission is required', 96*760fd51aSKarsten Kosmala 114 97*760fd51aSKarsten Kosmala ); 98*760fd51aSKarsten Kosmala } 99*760fd51aSKarsten Kosmala } 1006180f6b6SKarsten Kosmala} 101