ru-se.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

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 }