Grav\Plugin\Admin\AdminController::preparePage PHP Method

preparePage() protected method

Prepare a page to be stored: update its folder, name, template, header and content
protected preparePage ( Grav\Common\Page\Page $page, boolean $clean_header = false, string $language = '' )
$page Grav\Common\Page\Page
$clean_header boolean
$language string
    protected function preparePage(Page $page, $clean_header = false, $language = '')
    {
        $input = (array) $this->data;
        if (isset($input['order'])) {
            $order = max(0, (int) isset($input['order']) && $input['order'] ? $input['order'] : $page->value('order'));
            $ordering = $order ? sprintf('%02d.', $order) : '';
            $slug = empty($input['folder']) ? $page->value('folder') : (string) $input['folder'];
            $page->folder($ordering . $slug);
        }
        if (isset($input['name']) && !empty($input['name'])) {
            $type = (string) strtolower($input['name']);
            $name = preg_replace('|.*/|', '', $type);
            if ($language) {
                $name .= '.' . $language;
            } else {
                $language = $this->grav['language'];
                if ($language->enabled()) {
                    $name .= '.' . $language->getLanguage();
                }
            }
            $name .= '.md';
            $page->name($name);
            $page->template($type);
        }
        // Special case for Expert mode: build the raw, unset content
        if (isset($input['frontmatter']) && isset($input['content'])) {
            $page->raw("---\n" . (string) $input['frontmatter'] . "\n---\n" . (string) $input['content']);
            unset($input['content']);
        }
        if (isset($input['header'])) {
            $header = $input['header'];
            foreach ($header as $key => $value) {
                if ($key == 'metadata' && is_array($header[$key])) {
                    foreach ($header['metadata'] as $key2 => $value2) {
                        if (isset($input['toggleable_header']['metadata'][$key2]) && !$input['toggleable_header']['metadata'][$key2]) {
                            $header['metadata'][$key2] = '';
                        }
                    }
                } elseif ($key == 'taxonomy' && is_array($header[$key])) {
                    foreach ($header[$key] as $taxkey => $taxonomy) {
                        if (is_array($taxonomy) && count($taxonomy) == 1 && trim($taxonomy[0]) == '') {
                            unset($header[$key][$taxkey]);
                        }
                    }
                } else {
                    if (isset($input['toggleable_header'][$key]) && !$input['toggleable_header'][$key]) {
                        $header[$key] = null;
                    }
                }
            }
            if ($clean_header) {
                $header = Utils::arrayFilterRecursive($header, function ($k, $v) {
                    return !(is_null($v) || $v === '');
                });
            }
            $page->header((object) $header);
            $page->frontmatter(Yaml::dump((array) $page->header()));
        }
        // Fill content last because it also renders the output.
        if (isset($input['content'])) {
            $page->rawMarkdown((string) $input['content']);
        }
    }