NULL, __const_Action::ADMIN_MENU => NULL ]; function __construct(__type_Settings $__Setup) { static $__STATIC_fnI, $__STATIC_fnV, $__STATIC_fnF, $__STATIC_fnS, $__STATIC_fnR, $__STATIC_fnP; isset($__STATIC_fnI) ?: $__STATIC_fnI = function(__type_Call $T) { switch(TRUE): case $T->isVal($T::fn, __const_Type::SPL_CLOSURE): return Invoke::emitCallable($T->fn, $T->arguments); case $T->isVal($T::fn, __const_Type::SPL_FUNCTION): return Invoke::emitFunction($T->fn, $T->arguments); case $T->isVal($T::fn, __const_Type::SPL_METHOD): return Invoke::emit($T->fn[0], $T->fn[1], $T->arguments); endswitch; }; isset($__STATIC_fnV) ?: $__STATIC_fnV = function(__type_Settings $__Setup, array $__cache, array $__input) { if(FALSE === isset($_POST['action'])) return; $result = []; switch($_POST['action']): case 'reset': if($__Setup->messages instanceOf __type_Messages) Inv::addSettingsError($__Setup->id, 'restore_defaults', $__Setup->messages->resetComplete, 'updated fade'); if(TRUE === $__Setup->deep) { foreach($__cache as $sid => &$fields) foreach($fields as $fid => &$Field) $result[$sid][$fid] = $Field->std; } else { foreach($__cache as $id => &$Field) $result[$id] = $Field->std; } break; case 'import': if($result = unserialize(stripslashes(trim($_POST['import'])))) { if($__Setup->messages instanceOf __type_Messages) Inv::addSettingsError($__Setup->id, 'import', $__Setup->messages->importComplete, 'updated fade'); break; } if($__Setup->messages instanceOf __type_Messages) Inv::addSettingsError($__Setup->id, 'import', $__Setup->messages->importError, 'updated fade'); break; case 'update': $v = function(__type_Field $Field, $i) { if(FALSE === isset($i)) return $Field->std; if(NULL !== ($_ = $Field->fn)) return $_($i, $Field); //if(Inv::hasFilter('tri4m_sanitize_'.$Field->type)) // $result[$id] = Inv::applyFilters('tri4m_sanitize_' . $Field->type, $__input[$id], $Field); return $i; return $Field->std; }; if(TRUE === $__Setup->deep) { foreach($__cache as $sid => &$fields) foreach($fields as $fid => &$Field) { $i = &$__input[$sid][$fid]; $result[$sid][$fid] = $v($Field, $i); } } else { foreach($__cache as $id => &$Field) { $i = &$__input[$id]; $result[$id] = $v($Field, $i); } } break; endswitch; return [] === $result ? NULL : $result; }; isset($__STATIC_fnS) ?: $__STATIC_fnS = function(__type_Settings $__Setup, __type_Section $__Section) use (&$__STATIC_fnI) { Inv::addSettingsSection ( $__Section->id, $__Section->title, function() use (&$__Section, &$__STATIC_fnI) { switch(TRUE): case is_string($c = $__Section->content): print $c; break; case is_array($c = $__Section->content): print implode(PHP_EOL, $c); break; case ($c = $__Section->content) instanceOf __type_Call: print is_array($c = $__STATIC_fnI($c)) ? implode(PHP_EOL, $c) : $c; break; endswitch; }, $__Setup->id ); }; isset($__STATIC_fnF) ?: $__STATIC_fnF = function(__type_Settings $__Setup, __type_Section $__Section, __type_Field $__Field) { Inv::addSettingsField ( $__Field->id, $__Field->title, function() use (&$__Setup, &$__Section, &$__Field) { if(TRUE === $__Setup->deep) { if(FALSE === ($options = Inv::getOption($__Setup->id)) || FALSE === isset($options[$__Section->id][$__Field->id])) $options[$__Section->id][$__Field->id] = $__Field->std; } else { if(FALSE === ($options = Inv::getOption($__Setup->id)) || FALSE === isset($options[$__Field->id])) $options[$__Field->id] = $__Field->std; } $pattern = [ 'id' => '{:setupId}_{:sectionId}_{:fieldId}', 'name' => TRUE === $__Setup->deep ? '{:setupId}[{:sectionId}][{:fieldId}]' : '{:setupId}[{:fieldId}]', 'type' => '{:type}', 'value' => '{:value}' ]; $config = [ 'fieldId' => $__Field->id, 'sectionId' => $__Section->id, 'setupId' => $__Setup->id, 'value' => TRUE === $__Setup->deep ? $options[$__Section->id][$__Field->id] : $options[$__Field->id], 'type' => $__Field->type ]; foreach($pattern as &$_) $_ = String::insert($_, $config); print String::insert('', ['attr' => String::attribute($pattern, ['delimeter' => ' '])]); }, $__Setup->id, $__Section->id, [ 'type' => $__Field->type, 'desc' => $__Field->desc, 'id' => String::insert('{:setupId}_{:fieldId}', ['setupId' => $__Setup->id, 'fieldId' => $__Field->id]), 'label_for' => String::insert('{:setupId}_{:fieldId}', ['setupId' => $__Setup->id, 'fieldId' => $__Field->id]), 'choices' => $__Field->choices, 'std' => $__Field->std, 'class' => $__Field->cssClass ] ); }; isset($__STATIC_fnR) ?: $__STATIC_fnR = function(__type_Settings $__Setup, array &$__cache) use (&$__STATIC_fnV) { Inv::registerSetting ( $__Setup->id, $__Setup->id, NULL === $__Setup->fn ? function($__input) use (&$__Setup, &$__cache, &$__STATIC_fnV) { return $__STATIC_fnV($__Setup, $__cache, $__input); } : $__Setup->fn ); }; isset($__STATIC_fnP) ?: $__STATIC_fnP = function(__type_Settings $__Setup) { print $__Setup->page->beforeForm; settings_fields($__Setup->id); do_settings_sections($__Setup->id); print $__Setup->page->beforeCtrl; print $__Setup->page->submit; print $__Setup->page->reset; print $__Setup->page->afterCtrl; print $__Setup->page->afterForm; }; $id = $__Setup->id; $this->__Setup = $__Setup; $this->__Setup->id = Theme::slug(Inflector::variablize(Inflector::underscore($this->__Setup->id))); if($this->__Setup->page instanceOf __type_Page) { $config = []; foreach([ __type_Page::parentId => __type_SubMenuPage::parentId, __type_Page::title => __type_SubMenuPage::title, __type_Page::menuTitle => __type_SubMenuPage::menuTitle, __type_Page::cssClass => __type_SubMenuPage::cssClass, __type_Page::capability => __type_SubMenuPage::capability, __type_Page::icon => __type_SubMenuPage::icon ] as $i => $k) $config[$k] = $this->__Setup->page->get()->toArray()[$i]; $config[__type_SubMenuPage::id] = $id; $config[__type_SubMenuPage::content] = new __type_Call([ __type_Call::fn => function() use (&$__STATIC_fnP) { $__STATIC_fnP($this->__Setup); } ]); $this->__Page = new SubMenuPage(new __type_SubMenuPage($config)); } $this->__actions[__const_Action::ADMIN_INIT] = new __type_Action([ __type_Action::argsNum => 0, __type_Action::priority => 101, __type_Action::fn => function() use (&$__STATIC_fnV, &$__STATIC_fnF, &$__STATIC_fnS, &$__STATIC_fnR) { $__STATIC_fnR($this->__Setup, $this->__cache); foreach($this->__Setup->sections->get() as $Section) { $Section->id = Inflector::variablize(Inflector::underscore($Section->id)); $__STATIC_fnS($this->__Setup, $Section); foreach($Section->fields->get() as $Field) { $Field->id = Inflector::variablize(Inflector::underscore($Field->id)); TRUE === $this->__Setup->deep ? $this->__cache[$Section->id][$Field->id] = $Field : $this->__cache[$Field->id] = $Field; $__STATIC_fnF($this->__Setup, $Section, $Field); } } } ]); /* $this->__actions[__const_Action::ADMIN_MENU] = new __type_Action([ __type_Action::argsNum => 0, __type_Action::priority => 100, __type_Action::fn => function() use (&$__STATIC_fnP) { $this->__pageHook = $__STATIC_fnP($this->__Setup); } ]); /* $this->__actions[String::insert(__const_Action::LOAD_PAGE_HOOK__, ['pageHook' => $this->__pageHook])] = new __type_Action([ __type_Action::argsNum => 2, __type_Action::priority => 105, __type_Action::fn => function($__pageNow, $__WPScreen) { wp_register_style('admin', get_bloginfo('template_url') . '/styles.css'); wp_enqueue_style( 'admin' ); } ]); */ } public function install() { $this->__Page instanceOf SubMenuPage ? parent::install()->__Page->install() : parent::install(); return $this; } }