/** * @see Walker::start_el() * @since 1.9 * * @param string $output Passed by reference. Used to append additional content. * @param object $page Page data object. * @param int $depth Depth of page. Used for padding. * @param int $current_page Page ID. * @param array $args */ public function start_el(&$output, $page, $depth = 0, $args = array(), $current_page = 0) { $group_id = bp_docs_get_folder_group($page->ID); $user_id = bp_docs_get_folder_user($page->ID); $parent_selector = bp_docs_folder_selector(array('name' => 'folder-parent-' . $page->ID, 'id' => 'folder-parent-' . $page->ID, 'class' => 'folder-parent', 'selected' => $page->post_parent, 'group_id' => $group_id, 'echo' => false)); $type_selector_markup = ''; if (empty($page->post_parent)) { $selected = null; if (!empty($group_id)) { $selected = $group_id; } else { if (!empty($user_id)) { $selected = 'me'; } else { $selected = 'global'; } } $type_selector = bp_docs_folder_type_selector(array('echo' => false, 'selected' => $selected, 'name' => 'folder-type-' . $page->ID, 'id' => 'folder-type-' . $page->ID)); $type_selector_markup = sprintf('<label for="folder-type-%d">%s</label> %s <div style="clear:both;"></div>', intval($page->ID), __('Type', 'bp-docs'), $type_selector); } $output .= sprintf(' <li class="folder folder-edit-closed" data-folder-id="%d"> <div class="folder-info"> <h4>%s<span class="folder-toggle-edit"> <a href="#">%s</a></span><span class="folder-toggle-close"> <a href="#">%s</a></span></h4> <div class="folder-details"> <form method="post" action=""> <label for="folder-name-%d">%s</label> <input id="folder-name-%d" name="folder-name-%d" value="%s" /> <div style="clear:both;"></div> <label for="folder-parent-%d">%s</label> %s <div style="clear:both;"></div> %s <input type="hidden" class="folder-id" name="folder-id" value="%d" /> %s <input type="submit" value="%s" class="primary-button" /> <a class="folder-delete" href="%s">%s</a> </form> </div> </div>', intval($page->ID), esc_html($page->post_title), __('Edit', 'bp-docs'), __('Close', 'bp-docs'), intval($page->ID), __('Name', 'bp-docs'), intval($page->ID), intval($page->ID), esc_attr($page->post_title), intval($page->ID), __('Parent', 'bp-docs'), $parent_selector, $type_selector_markup, intval($page->ID), wp_nonce_field('bp-docs-edit-folder-' . $page->ID, 'bp-docs-edit-folder-nonce-' . $page->ID, false, false), __('Save Changes', 'bp-docs'), add_query_arg('delete-folder', $page->ID, bp_get_requested_url()), __('Delete', 'bp-docs')); }
/** * @group bp_docs_get_folder_user */ public function test_bp_docs_get_folder_user_should_hit_primed_cache() { global $wpdb; $u = $this->factory->user->create(); $f = bp_docs_create_folder(array('name' => 'foo', 'user_id' => $u)); $this->assertSame($u, bp_docs_get_folder_user($f)); $num_queries = $wpdb->num_queries; $this->assertSame($u, bp_docs_get_folder_user($f)); $this->assertSame($num_queries, $wpdb->num_queries); }
/** * Add user information to individual Doc breadcrumbs. * * Hooked very late to ensure it's the first item on the list. * * @since 1.9.0 * * @param array $crumbs * @return array */ function bp_docs_user_single_breadcrumb($crumbs, $doc = null) { if (is_a($doc, 'WP_Post')) { $doc_id = $doc->ID; } else { if (bp_docs_is_existing_doc()) { $doc_id = get_queried_object_id(); } } if (bp_docs_enable_folders() && !empty($doc_id)) { $folder_id = bp_docs_get_doc_folder($doc_id); if ($folder_id) { $user_id = bp_docs_get_folder_user($folder_id); } } if (!empty($user_id)) { $user_crumbs = array(sprintf('<a href="%s">%s’s Docs</a>', bp_core_get_user_domain($user_id) . bp_docs_get_slug() . '/', bp_core_get_user_displayname($user_id))); $crumbs = array_merge($user_crumbs, $crumbs); } return $crumbs; }