HEX
Server: LiteSpeed
System: Linux pulsar191.sitesanctuary.org 5.14.0-284.30.1.el9.tuxcare.els9.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Jan 10 17:34:05 UTC 2025 x86_64
User: lgooir (1604)
PHP: 8.1.32
Disabled: exec,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/lgooir/.trash/rising-bamboo/inc/cmb2/custom_fields/tabs/cmb2-tabs.php
<?php
/**
 * @package      CMB2\Tabs
 * @author       Ruben Garcia <rubengcdev@gmail.com>, GamiPress <contact@gamipress.com>, AutomatorWP <contact@automatorwp.com>
 * @copyright    Copyright (c) Ruben Garcia
 *
 * Plugin Name: CMB2 Tabs
 * Plugin URI: https://github.com/rubengc/cmb2-tabs
 * GitHub Plugin URI: https://github.com/rubengc/cmb2-tabs
 * Description: Tabs for CMB2 boxes.
 * Version: 1.0.4
 * Author: Ruben Garcia
 * Author URI: http://rubengc.com/
 * License: GPLv2+
 */


// Exit if accessed directly
if ( ! defined('ABSPATH') ) {
	exit;
}

if ( ! class_exists('CMB2_Tabs') ) {
	/**
	 * Class CMB2_Tabs
	 */
	class CMB2_Tabs {

		/**
		 * Current version number
		 */
		const VERSION = '1.0.4';

		/**
		 * Initialize the plugin by hooking into CMB2
		 */
		public function __construct() {
			add_action('admin_enqueue_scripts', array( $this, 'setup_admin_scripts' ));
			add_action('doing_dark_mode', array( $this, 'setup_dark_mode' ));
			add_action('cmb2_before_form', array( $this, 'before_form' ), 10, 4);
			add_action('cmb2_after_form', array( $this, 'after_form' ), 10, 4);
		}

		/**
		 * Render tabs
		 *
		 * @param array  $cmb_id      The current box ID
		 * @param int    $object_id   The ID of the current object
		 * @param string $object_type The type of object you are working with.
		 * @param array  $cmb         This CMB2 object
		 */
		public function before_form( $cmb_id, $object_id, $object_type, $cmb ) {
			if ( $cmb->prop('tabs') && is_array($cmb->prop('tabs')) ) : ?>
				<div class="cmb-tabs-wrap cmb-tabs-<?php echo ( ( $cmb->prop('vertical_tabs') ) ? 'vertical' : 'horizontal' ); ?>">
					<div class="cmb-tabs">

						<?php 
						foreach ( $cmb->prop('tabs') as $tab ) :
							$fields_selector = array();

							if ( ! isset($tab['id']) ) {
								continue;
							}

							if ( ! isset($tab['fields']) ) {
								$tab['fields'] = array();
							}

							if ( ! is_array($tab['fields']) ) {
								$tab['fields'] = array();
							}

							foreach ( $tab['fields'] as $tab_field ) :
								$fields_selector[] = '.' . 'cmb2-id-' . str_replace('_', '-', sanitize_html_class($tab_field)) . ':not(.cmb2-tab-ignore)';
							endforeach;

							$fields_selector = apply_filters('cmb2_tabs_tab_fields_selector', $fields_selector, $tab, $cmb_id, $object_id, $object_type, $cmb);
							$fields_selector = apply_filters('cmb2_tabs_tab_' . $tab['id'] . '_fields_selector', $fields_selector, $tab, $cmb_id, $object_id, $object_type, $cmb);
							?>

							<div id="<?php echo $cmb_id . '-tab-' . $tab['id']; ?>" class="cmb-tab" data-fields="<?php echo implode(', ', $fields_selector); ?>">

								<?php 
								if ( isset($tab['icon']) && ! empty($tab['icon']) ) :
									$tab['icon'] = strpos($tab['icon'], 'dashicons') !== false ? 'dashicons ' . $tab['icon'] : $tab['icon']
									?>
									<span class="cmb-tab-icon"><i class="<?php echo $tab['icon']; ?>"></i></span>
								<?php endif; ?>

								<?php if ( isset($tab['title']) && ! empty($tab['title']) ) : ?>
									<span class="cmb-tab-title"><?php echo $tab['title']; ?></span>
								<?php endif; ?>
							</div>
						<?php endforeach; ?>

					</div> <!-- .cmb-tabs -->
				<?php 
			endif;
		}

		/**
		 * Close tabs
		 *
		 * @param array  $cmb_id      The current box ID
		 * @param int    $object_id   The ID of the current object
		 * @param string $object_type The type of object you are working with.
		 * @param array  $cmb         This CMB2 object
		 */
		public function after_form( $cmb_id, $object_id, $object_type, $cmb ) {
			if ( $cmb->prop('tabs') && is_array($cmb->prop('tabs')) ) : 
				?>
				</div> <!-- .cmb-tabs-wrap -->
				<?php 
			endif;
		}

		/**
		 * Enqueue scripts and styles
		 */
		public function setup_admin_scripts() {
			wp_register_script('cmb-tabs', plugins_url('js/tabs.js', __FILE__), array( 'jquery' ), self::VERSION, true);
			wp_enqueue_script('cmb-tabs');

			wp_enqueue_style('cmb-tabs', plugins_url('css/tabs.css', __FILE__), array(), self::VERSION);
			wp_enqueue_style('cmb-tabs');

		}

		/**
		 * Enqueue dark mode styles
		 */
		public function setup_dark_mode() {
			wp_enqueue_style('cmb-tabs-dark-mode', plugins_url('css/dark-mode.css', __FILE__), array(), self::VERSION);
			wp_enqueue_style('cmb-tabs-dark-mode');

		}

	}

	$cmb2_tabs = new CMB2_Tabs();
}