BaseSetting.php (3608B)
1 <?php 2 3 namespace Materialis\Customizer; 4 5 class BaseSetting extends \WP_Customize_Setting 6 { 7 protected $cpData = null; 8 9 public function __construct($manager, $id, $cpData = array()) 10 { 11 $this->cpData = $cpData; 12 $this->manager = $manager; 13 $this->id = $id; 14 15 $this->cpData["__is__kirki"] = isset($this->cpData["__is__kirki"]) ? $this->cpData["__is__kirki"] : false; 16 17 $args = (isset($this->cpData['wp_data'])) ? $this->cpData['wp_data'] : array(); 18 19 20 if (isset($args['default'])) { 21 $default = $args['default']; 22 23 if ($default ==="__cp_filter__") { 24 $filter = $this->cpData['filterOptions']['filter']; 25 $filterDefault = isset($this->cpData['filterOptions']['default'])? $this->cpData['filterOptions']['default']: false; 26 $default = apply_filters($filter, $filterDefault) ; 27 } 28 29 $args['default'] = BaseSetting::filterDefault($default); 30 } 31 32 $args['capability'] = isset($args['capability']) ? $args['capability'] : "edit_theme_options"; 33 $args['option_type'] = isset($args['option_type'])? $args['option_type'] : "theme_mod"; 34 35 $this->cpData['wp_data'] = $args; 36 37 if ($this->isKirki()) { 38 \Kirki::add_config($id, $args); 39 } else { 40 parent::__construct($manager, $id, $args); 41 } 42 43 $this->init(); 44 } 45 46 47 public function isKirki() 48 { 49 $controlClass = \Materialis\Companion::getTreeValueAt($this->cpData, "control:class"); 50 $controlIsKirki = $controlClass && (strpos($controlClass, "kirki:") ===0); 51 52 $isKirki = $this->cpData["__is__kirki"] || $controlIsKirki; 53 54 return $isKirki; 55 } 56 57 public function setControl() 58 { 59 if (isset($this->cpData['no-control']) && $this->cpData['no-control']) { 60 return; 61 } 62 63 $controlData = array( 64 "class" => false, 65 "wp_data" => array( 66 "section" => $this->cpData['section'], 67 "label" => $this->id, 68 ), 69 ); 70 if (isset($this->cpData['control'])) { 71 $controlData = $this->cpData['control']; 72 73 if (!isset($controlData['wp_data'])) { 74 $controlData['wp_data'] = array(); 75 } 76 77 $controlData['wp_data']['section'] = isset($this->cpData['section']) ? $this->cpData['section'] : null; 78 $controlData['wp_data']['settings'] = $this->id; 79 } 80 81 if ($this->isKirki()) { 82 $settingTransport = \Materialis\Companion::getTreeValueAt($this->cpData, "wp_data:transport"); 83 $controlData['wp_data']['transport'] = $settingTransport ? $settingTransport : "refresh"; 84 85 $settingDefault = \Materialis\Companion::getTreeValueAt($this->cpData, "wp_data:default"); 86 $controlData['wp_data']['default'] = $settingDefault; 87 } 88 89 $this->companion()->customizer()->registerControls($this->manager, array( 90 $this->id => $controlData, 91 )); 92 } 93 94 protected function init() 95 { 96 return true; 97 } 98 99 final protected function companion() 100 { 101 return \Materialis\Companion::instance(); 102 } 103 104 public static function filterDefault($data) 105 { 106 return \Materialis\Companion::filterDefault($data); 107 } 108 109 public static function filterArrayDefaults($data) 110 { 111 return \Materialis\Companion::filterArrayDefaults($data); 112 } 113 }