File "Admin.php"
Full path: /home/dora/public_html/wp-content/plugins/bricksforge/includes/Admin.php
File size: 5.89 KB
MIME-type: --
Charset: utf-8
<?php
namespace Bricksforge;
/**
* Admin Pages Handler
*/
class Admin
{
public function __construct()
{
add_action('admin_menu', [$this, 'admin_menu']);
add_action('admin_init', [$this, 'check_for_global_classes']);
add_filter('plugin_action_links_bricksforge/plugin.php', [$this, 'add_plugin_links']);
wp_enqueue_style('bricksforge-style');
$this->render_conditionals();
}
public function render_conditionals()
{
if (get_option('brf_activated_tools') && in_array(0, get_option('brf_activated_tools'))) {
wp_enqueue_script('bricksforge-font-uploader');
add_filter('upload_mimes', [$this, 'upload_mimes']);
}
}
/**
* Register our menu page
*
* @return void
*/
public function admin_menu()
{
global $submenu;
$capability = 'manage_options';
$slug = 'bricksforge';
$whitelabel = get_option('brf_whitelabel');
$whitelabel = $whitelabel != false && is_array($whitelabel) ? $whitelabel[0] : false;
$menu_title = isset($whitelabel->menuTitle) && $whitelabel->menuTitle ? $whitelabel->menuTitle : 'Bricksforge';
$hook = add_submenu_page('bricks', __($menu_title, 'bricksforge'), __($menu_title, 'bricksforge'), $capability, $slug, [$this, 'plugin_page']);
add_action('load-' . $hook, [$this, 'init_hooks']);
}
/**
* Check for custom global classes. If yes, refresh the css file
*
* @return void
* @since 0.9.2
*/
public function check_for_global_classes()
{
$classes = get_option('brf_global_classes');
if (!$classes || !count($classes)) {
return;
}
$css_content = file_get_contents(BRICKSFORGE_CUSTOM_STYLES_FILE);
if (preg_replace('/\s+/', '', $css_content) != "") {
return;
}
if (class_exists('Bricksforge\Api\Bricksforge')) {
(new Api\Bricksforge)->render_css_files($classes);
}
}
/**
* Add Plugin Links
*
* @return void
*/
public function add_plugin_links($links)
{
$links = array_merge(
array(
'<a style="color: #555; font-weight: 600" href="' . esc_url(admin_url('/admin.php?page=bricksforge')) . '">' . __('Settings', 'bricksforge') . '</a>',
'<a style="color: #555; font-weight: 600" href="https://forum.bricksforge.io" target="_blank">' . __('Forum', 'bricksforge') . '</a>',
'<a style="color: #555; font-weight: 600" href="https://bricksforge.io/documentation" target="_blank">' . __('Documentation', 'bricksforge') . '</a>'
),
$links
);
return $links;
}
/**
* Initialize our hooks for the admin page
*
* @return void
*/
public function init_hooks()
{
add_action('admin_enqueue_scripts', [$this, 'enqueue_scripts']);
}
/**
* Load scripts and styles for the app
*
* @return void
*/
public function enqueue_scripts()
{
$args = array(
'siteurl' => get_option('siteurl'),
'ajaxurl' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('wp_rest'),
'pluginurl' => BRICKSFORGE_URL,
'pluginVersion' => BRICKSFORGE_VERSION,
'apiurl' => get_rest_url() . "bricksforge/v1/",
'bricksElements' => \Bricks\Elements::$elements,
'globalClasses' => get_option('bricks_global_classes'),
'globalClassesLocked' => get_option('bricks_global_classes_locked'),
'brfGlobalClassesActivated' => get_option('brf_global_classes_activated'),
'brfActivatedTools' => get_option('brf_activated_tools'),
'brfActivatedElements' => get_option('brf_activated_elements'),
'breakpoints' => \Bricks\Breakpoints::$breakpoints,
'pages' => query_posts(["post_type" => "any", 'posts_per_page' => -1, 'post_status' => 'publish',]),
'ptPage' => query_posts(["post_type" => "page", 'posts_per_page' => -1, 'post_status' => 'publish',]),
'templates' => get_posts(['post_type' => 'bricks_template', 'post_status' => 'publish', 'numberposts' => -1, 'posts_per_page' => -1]),
'popups' => get_option('brf_popups'),
'permissions' => get_option('brf_permissions_roles'),
'maintenance' => get_option('brf_maintenance'),
'whiteLabel' => get_option('brf_whitelabel'),
'panelActivated' => get_option('brf_activated_tools') && in_array(6, get_option('brf_activated_tools')),
'settings' => get_option('brf_settings'),
);
wp_enqueue_style('bricksforge-admin');
wp_localize_script('bricksforge-admin', 'BRFVARS', $args);
wp_enqueue_script('bricksforge-admin');
}
/**
* Render our admin page
*
* @return void
*/
public function plugin_page()
{
echo '<div class="wrap"><div id="bricksforge-admin-app"></div></div>';
}
public function upload_mimes($mime_types)
{
$font_mime_types = [
// 'eot' => 'font/eot', // <IE9 only (if specified, it must be listed first)
'woff2' => 'font/woff2',
'woff' => 'font/woff',
'ttf' => 'font/ttf',
];
if (\Bricks\Capabilities::current_user_can_use_builder()) {
foreach ($font_mime_types as $type => $mime) {
if (!isset($mime_types[$type])) {
$mime_types[$type] = $mime;
}
}
}
return $mime_types;
}
}