/** * @group manage_folder * @group folders */ public function test_manage_folder_user() { $u = $this->factory->user->create(); $f = bp_docs_create_folder(array('name' => 'foo', 'user_id' => $u)); $u1 = $this->factory->user->create(); $this->set_current_user($u1); $this->assertFalse(current_user_can('bp_docs_manage_folder', $f)); $u2 = $this->factory->user->create(array('role' => 'administrator')); $this->set_current_user($u2); $this->assertTrue(current_user_can('bp_docs_manage_folder', $f)); $this->set_current_user($u); $this->assertTrue(current_user_can('bp_docs_manage_folder', $f)); }
/** * @group bp_docs_delete_folder_contents */ public function test_bp_docs_delete_folder_contents() { $f1 = bp_docs_create_folder(array('name' => 'foo')); $f1_d1 = $this->factory->doc->create(); $f1_d2 = $this->factory->doc->create(); bp_docs_add_doc_to_folder($f1_d1, $f1); bp_docs_add_doc_to_folder($f1_d2, $f1); $f2 = bp_docs_create_folder(array('name' => 'foo', 'parent' => $f1)); $f2_d1 = $this->factory->doc->create(); $f2_d2 = $this->factory->doc->create(); bp_docs_add_doc_to_folder($f2_d1, $f2); bp_docs_add_doc_to_folder($f2_d2, $f2); $f3 = bp_docs_create_folder(array('name' => 'foo', 'parent' => $f1)); $f3_d1 = $this->factory->doc->create(); $f3_d2 = $this->factory->doc->create(); bp_docs_add_doc_to_folder($f3_d1, $f3); bp_docs_add_doc_to_folder($f3_d2, $f3); $f4 = bp_docs_create_folder(array('name' => 'foo', 'parent' => $f2)); $f4_d1 = $this->factory->doc->create(); $f4_d2 = $this->factory->doc->create(); bp_docs_add_doc_to_folder($f4_d1, $f4); bp_docs_add_doc_to_folder($f4_d2, $f4); $this->assertTrue(bp_docs_delete_folder_contents($f1)); $f1_term = bp_docs_get_folder_term($f1); $f1_docs = get_posts(array('post_type' => bp_docs_get_post_type_name(), 'tax_query' => array(array('taxonomy' => 'bp_docs_doc_in_folder', 'field' => 'term_id', 'terms' => $f1_term)), 'update_meta_cache' => false, 'update_term_cache' => false)); $this->assertSame(array(), $f1_docs); $f2_term = bp_docs_get_folder_term($f2); $f2_docs = get_posts(array('post_type' => bp_docs_get_post_type_name(), 'tax_query' => array(array('taxonomy' => 'bp_docs_doc_in_folder', 'field' => 'term_id', 'terms' => $f2_term)), 'update_meta_cache' => false, 'update_term_cache' => false)); $this->assertSame(array(), $f2_docs); $f3_term = bp_docs_get_folder_term($f3); $f3_docs = get_posts(array('post_type' => bp_docs_get_post_type_name(), 'tax_query' => array(array('taxonomy' => 'bp_docs_doc_in_folder', 'field' => 'term_id', 'terms' => $f3_term)), 'update_meta_cache' => false, 'update_term_cache' => false)); $this->assertSame(array(), $f3_docs); $f4_term = bp_docs_get_folder_term($f4); $f4_docs = get_posts(array('post_type' => bp_docs_get_post_type_name(), 'tax_query' => array(array('taxonomy' => 'bp_docs_doc_in_folder', 'field' => 'term_id', 'terms' => $f4_term)), 'update_meta_cache' => false, 'update_term_cache' => false)); $this->assertSame(array(), $f4_docs); $this->assertSame(array(), bp_docs_get_folders(array('parent_id' => $f1))); $this->assertSame(array(), bp_docs_get_folders(array('parent_id' => $f2))); }
/** * Process folder creation from manage-folders. */ function bp_docs_process_folder_create_cb() { if (!bp_docs_is_docs_component() && !bp_is_current_action(bp_docs_get_docs_slug())) { return; } if (!bp_docs_is_folder_manage_view()) { return; } if (empty($_POST['bp-docs-create-folder-submit'])) { return; } $nonce = isset($_POST['bp-docs-create-folder-nonce']) ? stripslashes($_POST['bp-docs-create-folder-nonce']) : ''; $redirect_url = bp_get_requested_url(); if (!wp_verify_nonce($nonce, 'bp-docs-create-folder')) { bp_core_add_message(__('There was a problem editing that folder. Please try again.', 'bp-docs'), 'error'); bp_core_redirect($redirect_url); die; } $folder_args = array('name' => stripslashes($_POST['new-folder'])); $parent = isset($_POST['new-folder-parent']) ? intval($_POST['new-folder-parent']) : null; if (!empty($parent)) { $folder_args['parent'] = $parent; } // If there's a parent, the parent's folder type takes precedence if (!empty($parent)) { $folder_args['group_id'] = bp_docs_get_folder_group($parent); $folder_args['user_id'] = bp_docs_get_folder_user($parent); // Otherwise, trust the values passed } else { // Type $folder_type = stripslashes($_POST['new-folder-type']); if ('global' === $folder_type) { // Nothing to do } else { if ('me' === $folder_type) { $folder_args['user_id'] = bp_loggedin_user_id(); } else { if (is_numeric($folder_type)) { // This is a group $folder_args['group_id'] = intval($folder_type); } } } } // Create the folder // @todo permissions checks $success = bp_docs_create_folder($folder_args); if (!empty($success) && !is_wp_error($success)) { bp_core_add_message(__('Folder successfully created.', 'bp-docs'), 'success'); } else { bp_core_add_message(__('There was a problem creating the folder. Please try again.', 'bp-docs'), 'error'); } bp_core_redirect($redirect_url); die; }