C:\xampp\htdocs\landing\wp-content\plugins\penci-framework\lib\meta-box\inc\walkers\select-tree.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?php
/**
 * Select tree walker for cascading select fields.
 *
 * @package Meta Box
 */

/**
 * The select tree walker class.
 */
class RWMB_Walker_Select_Tree {
    
/**
     * Field data.
     *
     * @var string
     */
    
public $field;

    
/**
     * Field meta value.
     *
     * @var array
     */
    
public $meta = array();

    
/**
     * Constructor.
     *
     * @param array $db_fields Database fields.
     * @param array $field     Field parameters.
     * @param mixed $meta      Meta value.
     */
    
public function __construct$db_fields$field$meta ) {
        
$this->db_fields wp_parse_args( (array) $db_fields, array(
            
'parent' => '',
            
'id'     => '',
            
'label'  => '',
        ) );
        
$this->field     $field;
        
$this->meta      = (array) $meta;
    }

    
/**
     * Display array of elements hierarchically.
     *
     * @param array $options An array of options.
     *
     * @return string
     */
    
public function walk$options ) {
        
$parent   $this->db_fields['parent'];
        
$children = array();

        foreach ( 
$options as $option ) {
            
$index = isset( $option->$parent ) ? $option->$parent 0;
            
$children$index ][] = $option;
        }

        
$top_level = isset( $children[0] ) ? $options[0]->$parent;
        return 
$this->display_level$children$top_leveltrue );
    }

    
/**
     * Display a hierarchy level.
     *
     * @param array $options   An array of options.
     * @param int   $parent_id Parent item ID.
     * @param bool  $active    Whether to show or hide.
     *
     * @return string
     */
    
public function display_level$options$parent_id 0$active false ) {
        
$id         $this->db_fields['id'];
        
$field      $this->field;
        
$walker     = new RWMB_Walker_Select$this->db_fields$field$this->meta );
        
$attributes RWMB_Field::call'get_attributes'$field$this->meta );

        
$children $options$parent_id ];
        
$output   sprintf(
            
'<div class="rwmb-select-tree %s" data-parent-id="%s"><select %s>',
            
$active '' 'hidden',
            
$parent_id,
            
RWMB_Field::render_attributes$attributes )
        );
        
$output .= isset( $field['placeholder'] ) ? "<option value=''>{$field['placeholder']}</option>" '<option></option>';
        
$output .= $walker->walk$children, - );
        
$output .= '</select>';

        foreach ( 
$children as $c ) {
            if ( isset( 
$options$c->$id ] ) ) {
                
$output .= $this->display_level$options$c->$idin_array$c->$id$this->meta ) && $active );
            }
        }

        
$output .= '</div>';
        return 
$output;
    }
}
x

Windows NT KPTV 6.2 build 9200 (Windows Server 2012 Datacenter Edition) i586