HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux WebLive 5.15.0-79-generic #86-Ubuntu SMP Mon Jul 10 16:07:21 UTC 2023 x86_64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/html/wptoho/wp-content/themes/themify-ultra/themify/class-themify-menu-toggle-dropdown.php
<?php
/**
 * Menu Toggle Dropdown feature
 * 
 * Allows toggle dropdown instead of click top open menu items.
 * 
 * @package Themify
 * @since 4.8.6
 */
class Themify_Menu_Toggle_Dropdown {

    /**
     * Setup menu toggle dropdown functionality
     */
    public static function init() {
            if( is_admin() ) {
                    add_action( 'wp_nav_menu_item_custom_fields', array( __CLASS__, 'wp_nav_menu_item_custom_fields' ), 15, 2 );
                    add_action( 'wp_update_nav_menu_item', array( __CLASS__, 'wp_update_nav_menu_item' ), 10, 3 );
                    add_action( 'delete_post', array( __CLASS__, 'delete_post' ), 1, 3 );
            } else {
                    add_filter( 'nav_menu_css_class', array( __CLASS__, 'nav_menu_css_class' ), 10, 2 );
            }
    }

    /**
     * Save the toggle dropdown meta for a menu item. Also removes the meta entirely if the field is cleared.
     */
    public static function wp_update_nav_menu_item( $menu_id, $menu_item_db_id, $args ) {
        $param_key = 'menu-item-tf-toggle-dropdown';
        $meta_key = '_themify_toggle_dropdown';
                $new_meta_value = isset( $_POST[$param_key] , $_POST[$param_key][$menu_item_db_id] ) ? $_POST[$param_key][$menu_item_db_id] : false;
        if ( $new_meta_value ) {
            update_post_meta( $menu_item_db_id, $meta_key, $new_meta_value );
        } else {
            delete_post_meta( $menu_item_db_id, $meta_key );
        }
    }

    /**
     * Clean up the toggle dropdown meta field when a menu item is deleted
     *
     * @param int $post_id
     */
    public static function delete_post( $post_id ) {
        if( is_nav_menu_item( $post_id ) ) {
            delete_post_meta( $post_id, '_themify_toggle_dropdown' );
        }
    }

    /**
     * Display the toggle dropdown picker for menu items in the backend
     */
    public static function wp_nav_menu_item_custom_fields( $item_id, $item ) {
            $saved_meta = get_post_meta( $item_id, '_themify_toggle_dropdown', true );
            ?>
            <p class="field-tf-toggle-dropdown description-wide">
                <label for="edit-menu-item-tf-toggle-dropdown-<?php echo $item_id; ?>">
                    <input type="checkbox" name="menu-item-tf-toggle-dropdown[<?php echo $item_id; ?>]" value="1" <?php echo ($saved_meta ? 'checked="checked"' : ''); ?> id="edit-menu-item-tf-toggle-dropdown-<?php echo $item_id?>" class="edit-menu-item-tf-toggle-dropdown widefat">
                                    <?php _e( 'Use this link as dropdown menu trigger on mobile', 'themify' ) ?><br />
                </label>
            </p>
    <?php }

    /**
     * Add a css class to toggle dropdown menu items
     */
    public static function nav_menu_css_class( $classes, $item ) {
        if (in_array('menu-item-has-children', $item->classes,true) && !empty(get_post_meta( $item->ID, '_themify_toggle_dropdown', true ))) {
            $classes[] = 'themify_toggle_dropdown';
        }
        return $classes;
    }

}
Themify_Menu_Toggle_Dropdown::init();