Airship\Cabin\Bridge\Landing\Cabins::manage PHP Method

manage() public method

Update Cabin configuration
public manage ( string $cabinName = '' )
$cabinName string
    public function manage(string $cabinName = '')
    {
        if (!$this->isSuperUser()) {
            // Admins only!
            \Airship\redirect($this->airship_cabin_prefix);
        }
        if (!\in_array($cabinName, $this->getCabinNamespaces())) {
            // Invalid cabin name
            \Airship\redirect($this->airship_cabin_prefix . '/cabins');
        }
        $this->setTemplateExtraData($cabinName);
        if (!$this->ensureCabinLinkExists($cabinName)) {
            \Airship\json_response(['error' => 'Could not create symlink']);
        }
        $cabin = \Airship\loadJSON(ROOT . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'cabins.json');
        // Apply the cabin's input filter:
        $filterName = '\\Airship\\Cabin\\' . $cabinName . '\\ConfigFilter';
        if (\class_exists($filterName)) {
            $filter = new $filterName();
        } else {
            $filter = (new GeneralFilterContainer())->addFilter('content_security_policy', new ArrayFilter());
        }
        $post = $this->post($filter);
        if (!empty($post)) {
            if ($this->saveSettings($cabinName, $cabin, $post)) {
                \Airship\redirect($this->airship_cabin_prefix . '/cabins/manage/' . $cabinName);
            }
        }
        $settings = [];
        foreach ($cabin as $path => $data) {
            if ($data['name'] === $cabinName) {
                $settings['cabin'] = $data;
                $settings['cabin']['path'] = $path;
                break;
            }
        }
        if (empty($settings['cabin'])) {
            // Cabin not found
            \Airship\redirect($this->airship_cabin_prefix);
        }
        $settings['content_security_policy'] = $this->loadJSONConfigFile($cabinName, 'content_security_policy.json');
        $settings['cabin_extra'] = \Airship\loadJSON(ROOT . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'Cabin' . DIRECTORY_SEPARATOR . $cabinName . DIRECTORY_SEPARATOR . 'config.json');
        $gadgets = ROOT . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'Cabin' . DIRECTORY_SEPARATOR . $cabinName . DIRECTORY_SEPARATOR . 'gadgets.json';
        if (!\file_exists($gadgets)) {
            \file_put_contents($gadgets, '[]');
        }
        $settings['gadgets'] = \Airship\loadJSON($gadgets);
        $settings['motifs'] = $this->getCabinsMotifs($cabinName);
        $settings['twig_vars'] = \Airship\loadJSON(ROOT . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'Cabin' . DIRECTORY_SEPARATOR . $cabinName . DIRECTORY_SEPARATOR . 'twig_vars.json');
        $this->lens('cabin_manage', ['name' => $cabinName, 'config' => $settings]);
    }