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