16180f6b6SKarsten Kosmala<?php 26180f6b6SKarsten Kosmala 36180f6b6SKarsten Kosmalause dokuwiki\Extension\RemotePlugin; 4760fd51aSKarsten Kosmalause dokuwiki\Remote\AccessDeniedException; 56180f6b6SKarsten Kosmala 6*f64a85f7SAndreas Gohrclass remote_plugin_farmer extends RemotePlugin 7*f64a85f7SAndreas Gohr{ 86180f6b6SKarsten Kosmala /** @var helper_plugin_farmer hlp */ 96180f6b6SKarsten Kosmala protected $helper; 106180f6b6SKarsten Kosmala 116180f6b6SKarsten Kosmala /** 126180f6b6SKarsten Kosmala * remote_plugin_struct constructor. 136180f6b6SKarsten Kosmala */ 146180f6b6SKarsten Kosmala public function __construct() 156180f6b6SKarsten Kosmala { 166180f6b6SKarsten Kosmala parent::__construct(); 176180f6b6SKarsten Kosmala 186180f6b6SKarsten Kosmala $this->helper = plugin_load('helper', 'farmer'); 196180f6b6SKarsten Kosmala } 206180f6b6SKarsten Kosmala 21107b329dSKarsten Kosmala /** 22107b329dSKarsten Kosmala * Get the configured farm host 23107b329dSKarsten Kosmala * 24107b329dSKarsten Kosmala * @return string 25760fd51aSKarsten Kosmala * @throws AccessDeniedException 26107b329dSKarsten Kosmala */ 27107b329dSKarsten Kosmala public function getFarmhost(): string 28107b329dSKarsten Kosmala { 29760fd51aSKarsten Kosmala $this->ensureAdmin(); 306180f6b6SKarsten Kosmala return $this->helper->getConfig()['base']['farmhost']; 316180f6b6SKarsten Kosmala } 326180f6b6SKarsten Kosmala 33107b329dSKarsten Kosmala /** 34107b329dSKarsten Kosmala * Get the configured base domain of the farmer 35107b329dSKarsten Kosmala * This could be an empty string, then farmhost will be used to determine an animal url 36107b329dSKarsten Kosmala * 37107b329dSKarsten Kosmala * @return string 38760fd51aSKarsten Kosmala * @throws AccessDeniedException 39107b329dSKarsten Kosmala */ 40107b329dSKarsten Kosmala public function getBaseDomain(): string 41107b329dSKarsten Kosmala { 42760fd51aSKarsten Kosmala $this->ensureAdmin(); 436180f6b6SKarsten Kosmala return $this->helper->getConfig()['base']['basedomain']; 446180f6b6SKarsten Kosmala } 456180f6b6SKarsten Kosmala 46107b329dSKarsten Kosmala /** 47107b329dSKarsten Kosmala * Get a list of all animal names 48107b329dSKarsten Kosmala * 49107b329dSKarsten Kosmala * @return array 50760fd51aSKarsten Kosmala * @throws AccessDeniedException 51107b329dSKarsten Kosmala */ 52107b329dSKarsten Kosmala public function listAnimals(): array 53107b329dSKarsten Kosmala { 54760fd51aSKarsten Kosmala $this->ensureAdmin(); 556180f6b6SKarsten Kosmala return $this->helper->getAllAnimals(); 566180f6b6SKarsten Kosmala } 576180f6b6SKarsten Kosmala 58107b329dSKarsten Kosmala /** 59107b329dSKarsten Kosmala * Get a list of all animal urls 60107b329dSKarsten Kosmala * 61107b329dSKarsten Kosmala * @return array 62760fd51aSKarsten Kosmala * @throws AccessDeniedException 63107b329dSKarsten Kosmala */ 64107b329dSKarsten Kosmala public function listAnimalUrls(): array 65107b329dSKarsten Kosmala { 66760fd51aSKarsten Kosmala $this->ensureAdmin(); 676180f6b6SKarsten Kosmala foreach ($this->helper->getAllAnimals() as $animal) { 686180f6b6SKarsten Kosmala $animalUrls[] = $this->helper->getAnimalURL($animal); 696180f6b6SKarsten Kosmala } 706180f6b6SKarsten Kosmala return $animalUrls; 716180f6b6SKarsten Kosmala } 727a001063SKarsten Kosmala 737a001063SKarsten Kosmala /** 74fab4b515SKarsten Kosmala * Get configuration details of farmer plugin enriched by list of animals 757a001063SKarsten Kosmala * 767a001063SKarsten Kosmala * @return array 77760fd51aSKarsten Kosmala * @throws AccessDeniedException 787a001063SKarsten Kosmala */ 797a001063SKarsten Kosmala public function getFarmerConfig(): array 807a001063SKarsten Kosmala { 81760fd51aSKarsten Kosmala $this->ensureAdmin(); 827a001063SKarsten Kosmala $farmerConfig = $this->helper->getConfig(); 83fab4b515SKarsten Kosmala foreach ($this->helper->getAllAnimals() as $index => $animal) { 84fab4b515SKarsten Kosmala $farmerConfig['animals'][$index]["name"] = $animal; 85fab4b515SKarsten Kosmala $farmerConfig['animals'][$index]["url"] = $this->helper->getAnimalURL($animal); 867a001063SKarsten Kosmala } 877a001063SKarsten Kosmala return $farmerConfig; 887a001063SKarsten Kosmala } 89760fd51aSKarsten Kosmala 90760fd51aSKarsten Kosmala /** 91760fd51aSKarsten Kosmala * @throws AccessDeniedException 92760fd51aSKarsten Kosmala */ 93*f64a85f7SAndreas Gohr private function ensureAdmin() 94*f64a85f7SAndreas Gohr { 95760fd51aSKarsten Kosmala if (!auth_isadmin()) { 96760fd51aSKarsten Kosmala throw new AccessDeniedException( 97760fd51aSKarsten Kosmala 'You are not allowed to access farmer configuration, superuser permission is required', 98760fd51aSKarsten Kosmala 114 99760fd51aSKarsten Kosmala ); 100760fd51aSKarsten Kosmala } 101760fd51aSKarsten Kosmala } 1026180f6b6SKarsten Kosmala} 103