function wptouch_build_wordpress_menu_tree($parent = 0, $depth = 1, &$data, $exclude_disabled = false, $parent_object = false)
{
    global $wptouch_pro;
    $items = wptouch_get_wordpress_menu_items($parent);
    if ($depth > 1 && $parent_object) {
        $menu_data = wptouch_create_menu_item($parent_object->page_id, $depth, $parent_object->title, 'link', false, 0, true, $parent_object->item_link, false);
        $data[$parent_object->title] = $menu_data;
    }
    if ($items) {
        // iterate through all items
        foreach ($items as $item) {
            $menu_item_type = get_post_meta($item->ID, '_menu_item_type', TRUE);
            $object_id = get_post_meta($item->ID, '_menu_item_object_id', TRUE);
            $menu_target = get_post_meta($item->ID, '_menu_item_target', TRUE);
            $post_title = $item->post_title;
            if ($object_id) {
                switch ($menu_item_type) {
                    case 'post_type':
                        $post_info = get_post($object_id);
                        if (!$post_title) {
                            $post_title = $post_info->post_title;
                        }
                        $menu_class = $wptouch_pro->get_class_for_webapp_ignore(get_permalink($object_id));
                        if ($menu_target == '_blank') {
                            $menu_class = trim($menu_class) . ' external target';
                        }
                        $menu_data = wptouch_create_menu_item($item->ID, $depth, $post_title, 'link', false, 0, false, get_permalink($object_id), $menu_class, $post_info->ID);
                        if (wptouch_wordpress_menu_has_children($item->ID)) {
                            $sub_menu = array();
                            wptouch_build_wordpress_menu_tree($item->ID, $depth + 1, $sub_menu, $exclude_disabled, $menu_data);
                            $menu_data->has_children = true;
                            $menu_data->submenu = $sub_menu;
                            $menu_data->item_type = 'menu';
                        }
                        $data[$post_title] = $menu_data;
                        break;
                    case 'taxonomy':
                        $object_type = get_post_meta($item->ID, '_menu_item_object', TRUE);
                        $term_data = get_term_by('id', $object_id, $object_type);
                        $link = get_term_link((int) $term_data->term_id, $object_type);
                        if (!$post_title) {
                            $post_title = $term_data->name;
                        }
                        $menu_data = wptouch_create_menu_item($item->ID + WPTOUCH_ICON_CATEGORY_BASE, $depth, $post_title, 'link', false, 0, false, $link, $wptouch_pro->get_class_for_webapp_ignore($link));
                        if (wptouch_wordpress_menu_has_children($item->ID)) {
                            $sub_menu = array();
                            wptouch_build_wordpress_menu_tree($item->ID, $depth + 1, $sub_menu, $exclude_disabled, $menu_data);
                            $menu_data->has_children = true;
                            $menu_data->submenu = $sub_menu;
                            $menu_data->item_type = 'menu';
                        }
                        $data[$post_title] = $menu_data;
                        break;
                    case 'custom':
                        $menu_class = $wptouch_pro->get_class_for_webapp_ignore(get_post_meta($item->ID, '_menu_item_url', TRUE));
                        if ($menu_target == '_blank') {
                            $menu_class = trim($menu_class) . ' external target';
                        }
                        $menu_data = wptouch_create_menu_item($item->ID + WPTOUCH_ICON_CUSTOM_BASE, $depth, $post_title, 'link', false, 0, false, get_post_meta($item->ID, '_menu_item_url', TRUE), $menu_class);
                        if (wptouch_wordpress_menu_has_children($item->ID)) {
                            $sub_menu = array();
                            wptouch_build_wordpress_menu_tree($item->ID, $depth + 1, $sub_menu, $exclude_disabled, $menu_data);
                            $menu_data->has_children = true;
                            $menu_data->submenu = $sub_menu;
                            $menu_data->item_type = 'menu';
                        }
                        $data[$post_title] = $menu_data;
                        break;
                }
            }
        }
    }
}
Ejemplo n.º 2
0
function wptouch_page_get_icon()
{
    global $wptouch_pro;
    if (wptouch_page_has_icon()) {
        if (wptouch_is_custom_page_template()) {
            $page_id = wptouch_get_custom_page_template_id();
        } else {
            $page_id = get_the_ID();
        }
        // If we're not in the loop yet, let's grab the first post and then rewind
        if (!$page_id) {
            if (have_posts()) {
                the_post();
                rewind_posts();
                $page_id = get_the_ID();
            }
        }
        $settings = wptouch_get_settings();
        if ($settings->custom_menu_name != 'none') {
            $menu_items = array();
            wptouch_build_wordpress_menu_tree(0, 1, $menu_items, true);
            $icon = wptouch_recursive_find_page($page_id, $menu_items);
            if ($icon) {
                return $icon;
            } else {
                return wptouch_get_site_menu_icon(-1000000);
            }
        } else {
            return wptouch_get_site_menu_icon($page_id);
        }
    } else {
        return false;
    }
}
Ejemplo n.º 3
0
function wptouch_build_menu_tree($parent = 0, $depth = 1, &$data, $exclude_disabled = false)
{
    global $wpdb;
    global $wptouch_pro;
    if (wptouch_should_cache_menu_items($parent, $depth)) {
        $menu_data = wptouch_get_menu_cache_data($exclude_disabled);
        if ($menu_data) {
            $data = $menu_data;
            return;
        }
    }
    $settings = $wptouch_pro->get_settings();
    if ($settings->custom_menu_name != 'none') {
        @wptouch_build_wordpress_menu_tree($parent, $depth, $data, $exclude_disabled);
    } else {
        if ($settings->menu_sort_order == 'alpha') {
            $sql = "SELECT * FROM {$wpdb->posts} WHERE post_type = 'page' AND post_parent = {$parent} AND post_status = 'publish' ORDER BY post_title";
        } else {
            $sql = "SELECT * FROM {$wpdb->posts} WHERE post_type = 'page' AND post_parent = {$parent} AND post_status = 'publish' ORDER BY menu_order";
        }
        $pages = $wpdb->get_results($sql);
        if ($pages) {
            if ($parent) {
                $page = get_post($parent);
                $menu_options = new stdClass();
                $menu_options->page_id = $parent;
                $menu_options->depth = $depth;
                $menu_options->title = $page->post_title;
                $menu_options->item_type = 'link';
                $menu_options->has_children = false;
                $menu_options->post_parent = $parent;
                $menu_options->duplicate_link = true;
                $menu_options->item_link = $wptouch_pro->convert_to_internal_url(get_permalink($parent));
                $menu_options->item_class = $wptouch_pro->get_class_for_webapp_ignore($menu_options->item_link);
                $data[$page->ID] = $menu_options;
            }
            foreach ($pages as $page) {
                if ($exclude_disabled) {
                    if (isset($settings->disabled_menu_items[$page->ID])) {
                        continue;
                    }
                }
                $menu_options = new stdClass();
                $menu_options->title = $page->post_title;
                $menu_options->depth = $depth;
                $menu_options->page_id = $page->ID;
                if ($parent) {
                    $menu_options->post_parent = $parent;
                }
                if (wptouch_page_has_children($page->ID)) {
                    $menu_options->item_type = 'menu';
                    $menu_options->has_children = true;
                    $submenu = array();
                    wptouch_build_menu_tree($page->ID, $depth + 1, $submenu, $exclude_disabled);
                    if (count($submenu) == 1) {
                        $menu_options->item_type = 'link';
                        $menu_options->has_children = false;
                        $menu_options->item_link = $wptouch_pro->convert_to_internal_url(get_permalink($page->ID));
                        $menu_options->item_class = $wptouch_pro->get_class_for_webapp_ignore($menu_options->item_link);
                    } else {
                        $menu_options->submenu = $submenu;
                    }
                } else {
                    $menu_options->item_type = 'link';
                    $menu_options->has_children = false;
                    $menu_options->item_link = $wptouch_pro->convert_to_internal_url(get_permalink($page->ID));
                    $menu_options->item_class = $wptouch_pro->get_class_for_webapp_ignore($menu_options->item_link);
                }
                $data[$page->ID] = $menu_options;
            }
        }
    }
    if (wptouch_should_cache_menu_items($parent, $depth)) {
        wptouch_set_menu_cache($exclude_disabled, $data);
    }
}