xref: /plugin/farmer/remote.php (revision 760fd51ab0b0a5f7cabaedb65a536b245514ae87)
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