Your IP : 216.73.217.78


Current Path : /home/seto/iniciativa.lv/wp-content/plugins/kk-star-ratings/src/
Upload File :
Current File : /home/seto/iniciativa.lv/wp-content/plugins/kk-star-ratings/src/admin.php

<?php

/*
 * This file is part of bhittani/kk-star-ratings.
 *
 * (c) Kamal Khan <shout@bhittani.com>
 *
 * For the full copyright and license information, please view
 * the LICENSE file that was distributed with this source code.
 */

namespace Bhittani\StarRating;

if (! defined('ABSPATH')) {
    http_response_code(404);
    exit();
}

use RuntimeException;

function get_admin_tabs()
{
    $tabs = apply_plugin_filters('admin_tabs', []);
    $keys = array_keys($tabs);
    $tab = isset($_GET['tab']) ? sanitize_text_field($_GET['tab']) : reset($keys);
    $active = apply_plugin_filters('active_admin_tab', $tab);

    return [$tabs, $active];
}

add_action('admin_menu', __NAMESPACE__.'\admin');
function admin()
{
    add_menu_page(
        config('name'),
        config('name'),
        'manage_options',
        config('slug'),
        __NAMESPACE__.'\admin_callback',
        'dashicons-star-filled'
    );
}

function admin_callback()
{
    list($tabs, $active) = get_admin_tabs();

    $content = apply_plugin_filters('admin_content', '', $active);

    if ($active) {
        $content = apply_plugin_filters('admin_content.'.$active, $content);
    }

    echo view('admin.index', [
        'label' => config('name'),
        'version' => config('version'),
        'tabs' => $tabs,
        'active' => $active,
        'content' => $content,
    ]);
}

add_plugin_filter('admin_tabs', __NAMESPACE__.'\admin_tabs', 9);
function admin_tabs($tabs)
{
    return $tabs + [
        'general' => 'General',
        'appearance' => 'Appearance',
        'rich-snippets' => 'Rich Snippets',
    ];
}

add_plugin_filter('admin_content', __NAMESPACE__.'\admin_content', 9, 2);
function admin_content($content, $active)
{
    if (! $active) {
        return $content;
    }

    $slug = config('slug');

    return view(["admin.tabs.{$active}", 'admin.content'], compact('active', 'slug'));
}

add_action('admin_init', __NAMESPACE__.'\settings_callback');
function settings_callback()
{
    list($tabs, $active) = get_admin_tabs();

    if (! $active) {
        return;
    }

    $slug = config('slug');

    add_settings_section('default', null, null, $slug);

    $fields = apply_plugin_filters('setting_fields', [], $active);
    $fields = apply_plugin_filters('setting_fields.'.$active, $fields);

    foreach ($fields as $field) {
        register_setting(
            $slug,
            $field['name'],
            [
                'sanitize_callback' => isset($field['filter']) ? $field['filter'] : null,
            ]
        );

        add_settings_field(
            $field['name'],
            $field['title'],
            __NAMESPACE__.'\setting_field_callback',
            $slug,
            'default',
            $field
        );
    }
}

function setting_field_callback($field)
{
    if (isset($field['fields'])) {
        $input = apply_plugin_filters('setting_field', '', $field);

        foreach ($field['fields'] as $field) {
            setting_field_callback($field);
            echo '<br><br>';
        }

        echo $input;
    } else {
        $input = apply_plugin_filters('setting_field', '', $field);

        if (isset($field['type']) && $field['type']) {
            echo apply_plugin_filters('setting_field.'.$field['type'], $input, $field);
        } else {
            echo $input;
        }
    }
}

add_plugin_filter('setting_fields', __NAMESPACE__.'\setting_fields', 9, 2);
function setting_fields($fields, $active)
{
    if (is_file($file = __DIR__.'/admin/'.$active.'.php')) {
        return array_merge($fields, (array) require $file);
    }

    return $fields;
}

add_plugin_filter('setting_field', __NAMESPACE__.'\setting_field', 9, 2);
function setting_field($input, $payload)
{
    if ($input || ! isset($payload['type']) || ! $payload['type']) {
        return $input;
    }

    try {
        return view('admin.fields.'.$payload['type'], $payload);
    } catch (RuntimeException $e) {
        return $input;
    }
}

add_plugin_filter('setting_field', __NAMESPACE__.'\setting_field_help', 11, 2);
function setting_field_help($input, $payload)
{
    if (! isset($payload['help']) || ! $payload['help']) {
        return $input;
    }

    return $input.'<p class="description">'.$payload['help'].'</p>';
}