/**
     * @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&#8217;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;
}