HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux ns3133907 6.8.0-86-generic #87-Ubuntu SMP PREEMPT_DYNAMIC Mon Sep 22 18:03:36 UTC 2025 x86_64
User: cssnetorguk (1024)
PHP: 8.2.28
Disabled: NONE
Upload Files
File: /home/davidrendel.org.uk/public_html/wp-content/themes/kubio/lib/kubio-themebase/src/Theme.php
<?php

namespace Kubio\Theme;

use ColibriWP\Theme\Core\Utils;
use ColibriWP\Theme\Defaults;
use ColibriWP\Theme\Theme as ThemeBase;
use ColibriWP\Theme\View;
use ColibriWP\Theme\Translations;

class Theme extends ThemeBase {

    private $state = array();

    public function afterSetup() {
        parent::afterSetup();
        add_action( 'admin_enqueue_scripts', array( $this, 'enqueueThemeInfoPageScripts' ), 20 );
        add_action('customize_controls_print_footer_scripts', array( $this, 'addKubioOnboarding' ), 20 );

        add_action(
            'wp_ajax_kubio_onboarding_disable_notice',
            function () {
                check_ajax_referer('kubio_onboarding_disable_notice_nonce');
                update_option( "kubio-onboarding-notice-disabled", true );
            }
        );
    }

    public function addThemeInfoPage() {
        return;
    }

    public function enqueueThemeInfoPageScripts() {
        global $plugin_page;
        $slug = get_template() . '-page-info';

        if ( $plugin_page === $slug || $this->shouldDisplayAdminNotice() ) {
            wp_enqueue_style( $slug );
            wp_enqueue_script( $slug );
            wp_enqueue_script( 'wp-util' );
        }

        if ( $this->shouldDisplayAdminNotice() ) {
            ob_start();

            ?>
            <script>
                jQuery(function($){
                    $(".kubio-admin-big-notice").show();
                });
            </script>
            <?php
            $script = strip_tags( ob_get_clean() );
            wp_add_inline_script( 'jquery', $script );
        }
    }

    public function shouldDisplayAdminNotice() {

        global $pagenow;
        if ( Flags::get( 'kubio_activation_time', false ) ) {
            return false;
        }

        $slug = get_template() . '-page-info';
	    $is_fresh_site = !$this->themeWasCustomized();

        if ( !$is_fresh_site ) {
            return false;
        }

        if ( get_option( "{$slug}-theme-notice-dismissed", false ) !== false ) {
            return false;
        }

        if ( apply_filters( 'kubio_is_enabled', false ) ) {
            return false;
        }

        if ( $pagenow === 'update.php' ) {
            return false;
        }

        return true;
    }

    public function addThemeNotice() {

        if ( $this->shouldDisplayAdminNotice() ) :
            ?>
            <div class="notice notice-success is-dismissible kubio-admin-big-notice notice-large">
                <?php View::make( 'admin/admin-notice-frontpage' ); ?>
            </div>
            <script>

            </script>
        <?php
        endif;
    }

    public function addKubioOnboarding(){
        $notice_disabled = !!get_option("kubio-onboarding-notice-disabled", false);
        $is_fresh_site = !!get_option('fresh_site');
        $kubio_enabled = apply_filters( 'kubio_is_enabled', false );

        if ( $notice_disabled || !$is_fresh_site || $kubio_enabled) {
            return;
        }

        ?>
        <div class="kubio-onboarding kubio-step-1--active">
            <div>
                <!-- STEP 1 -->
                <div class="kubio-onboarding__wrapper kubio-step-1">
                    <div class="kubio-onboarding__wrapper__header">
                        <div class="kubio-onboarding__dismiss">
                            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi bi-x" viewBox="0 0 16 16">
                                <path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708"/>
                            </svg>
                        </div>
                        <h2> <?php echo Translations::get('themebase_step1_title') ?> </h2>
                    </div>

                    <div class="kubio-onboarding__wrapper__content">
                        <label>
                            <input type="radio" id="kubio-install-new-homepage" name="kubio-onboarding-action" value="kubio-install-new-homepage" checked ai="true"></input>
                            <div class="radio-card">
                                <div class="radio-card__radio-checked">
                                    <?php echo file_get_contents(kubio_theme()->getThemeResource('images/theme-base/check.svg')) ?>
                                    <div class="radio-card__radio-checked__background"></div>
                                </div>
                                <div class="radio-card__image-container">
                                    <img src="<?php echo kubio_theme()->getThemeResource('images/theme-base/web-layout.png')?>" alt="web-layout" draggable="false">
                                </div>
                                <span>
                                    <p><?php echo Translations::get('themebase_step1_option1_title') ?></p>
                                    <p><?php echo Translations::get('themebase_step1_option1_subtitle') ?></p>
                                </span>

                            </div>
                        </label>

                        <label>
                            <input type="radio" id="kubio-keep-current-layout" name="kubio-onboarding-action" value="kubio-keep-current-layout"></input>
                            <div class="radio-card">
                                <div class="radio-card__radio-checked">
                                    <?php echo file_get_contents(kubio_theme()->getThemeResource('images/theme-base/check.svg')) ?>
                                    <div class="radio-card__radio-checked__background"></div>
                                </div>
                                <div class="radio-card__image-container">
                                    <img src="<?php echo kubio_theme()->getThemeResource('images/theme-base/blog-layout.png')?>" alt="blog-layout" draggable="false" >
                                </div>
                                <span>
                                    <p><?php echo Translations::get('themebase_step2_option1_title') ?></p>
                                    <p><?php echo Translations::get('themebase_step2_option1_subtitle') ?></p>
                                </span>
                            </div>
                        </label>
                    </div>

                    <div class="kubio-onboarding__wrapper__footer">
                        <div>
                            <button class="button button-primary button-hero" data-action="continue">
                                <?php echo Translations::get('continue') ?>
                            </button>
                        </div>
                    </div>
                </div>


                <!-- STEP 2 -->
                <div class="kubio-onboarding__wrapper kubio-step-2">
                    <div class="kubio-onboarding__wrapper__header">
                        <div class="kubio-onboarding__dismiss">
                            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi bi-x" viewBox="0 0 16 16">
                                <path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708"/>
                            </svg>
                        </div>
                        <h2><?php Translations::escHtmlE( 'themebase_step2_title' ); ?></h2>
                    </div>

                    <div class="kubio-onboarding__wrapper__content">
                        <p><?php Translations::escHtmlE( 'theme_description', kubio_theme()->getName() ); ?></p>

                        <ul>
                            <li>
                                <?php echo file_get_contents(kubio_theme()->getThemeResource('images/theme-base/round-check.svg')) ?>
                                <?php Translations::escHtmlE( 'benefit_1' ); ?>
                            </li>
                            <li>
                                <?php echo file_get_contents(kubio_theme()->getThemeResource('images/theme-base/round-check.svg')) ?>
                                <?php Translations::escHtmlE( 'benefit_2' ); ?>
                            </li>
                            <li>
                                <?php echo file_get_contents(kubio_theme()->getThemeResource('images/theme-base/round-check.svg')) ?>
                                <?php Translations::escHtmlE( 'benefit_3' ); ?>
                            </li>
                            <li>
                                <?php echo file_get_contents(kubio_theme()->getThemeResource('images/theme-base/round-check.svg')) ?>
                                <?php Translations::escHtmlE( 'benefit_4' ); ?>
                            </li>
                        </ul>

                        <div class="kubio-onboarding__wrapper__content__buttons">
                            <button class="button button-primary button-hero" data-action="generate">
                                <?php Translations::escHtmlE( 'themebase_step2_button1' ); ?>
                            </button>
                            <button class="button-link button-hero" data-action="default">
                                <?php Translations::escHtmlE( 'themebase_step2_button2' ); ?>
                            </button>
                        </div>

                        <p><?php Translations::escHtmlE( 'themebase_step2_footer_info' ); ?></p>

                    </div>

                    <div class="kubio-onboarding__wrapper__footer"></div>
                </div>
            </div>
        </div>
        <?php
    }

    public function themeWasCustomized() {

        if ( Flags::get( 'theme_customized' ) ) {
            return true;
        }

        $mods         = get_theme_mods();
        $mods_keys    = array_keys( is_array( $mods ) ? $mods : array() );
        $default_keys = array_keys( Defaults::getDefaults() );

        foreach ( $default_keys as $default_key ) {
            foreach ( $mods_keys as $mod_key ) {
                if ( strpos( $mod_key, "{$default_key}." ) === 0 ) {
                    Flags::set( 'theme_customized', true );

                    return true;
                }
            }
        }

        return false;
    }


    public function getState( $path, $fallback = null ) {
        return Utils::pathGet( $this->state, $path, $fallback );
    }

    public function setState( $path, $value ) {
        Utils::pathSet( $this->state, $path, $value );
    }

    public function deleteState( $path ) {
        Utils::pathDelete( $this->state, $path );
    }

    public function getName() {
        $slug  = $this->getThemeSlug();
        $theme = $this->getTheme( $slug );

        return $theme->get( 'Name' );
    }

    public function getScreenshot() {
        $slug  = $this->getThemeSlug();
        $theme = $this->getTheme( $slug );

        return $theme->get_screenshot();
    }

    public function getFrontPagePreview() {
        return  Theme::rootDirectoryUri() . '/resources/images/admin/admin-notice.png';
    }
    public function getListMarkerUrl() {
        return Theme::rootDirectoryUri() . '/resources/images/admin/checkmark.svg';
    }

    public function getThemeResource($path) {
        return Theme::rootDirectoryUri() . '/resources/' . $path;
    }

}