/** * @group bulk_delete */ public function test_buddydrive_bulk_delete_items() { // create the upload dir $upload_dir = buddydrive_get_upload_data(); $expected_ids = array(); $quota_left = 0; $u1 = $this->factory->user->create(); $u2 = $this->factory->user->create(); $items_users = array('screenshot-1.png' => $u1, 'screenshot-2.png' => $u1, 'screenshot-3.png' => $u2); $args = array('type' => buddydrive_get_file_post_type(), 'mime_type' => 'image/png'); foreach ($items_users as $item => $user) { $f = trailingslashit(buddydrive()->plugin_dir) . $item; copy($f, trailingslashit($upload_dir['dir']) . $item); $fs = filesize($item); buddydrive_update_user_space($user, filesize($item)); if ('screenshot-1.png' === $item) { $quota_left = $fs; } $args = array_merge($args, array('user_id' => $user, 'title' => $item, 'guid' => trailingslashit($upload_dir['url']) . $item)); $expected_ids[$item] = buddydrive_save_item($args); } unset($expected_ids['screenshot-1.png']); $count = buddydrive_delete_item(array('ids' => $expected_ids)); $this->assertTrue($count === count($expected_ids)); $not_deleted = buddydrive_get_buddyfiles_by_ids($expected_ids); $this->assertTrue(empty($not_deleted)); $this->assertEquals($quota_left, (int) get_user_meta($u1, '_buddydrive_total_space', true), 'u1 quota should be set'); $this->assertEmpty((int) get_user_meta($u2, '_buddydrive_total_space', true), 'u2 quota should be 0'); }
public function create_files() { $args = array('type' => buddydrive_get_file_post_type(), 'user_id' => $this->user_id, 'title' => 'screenshot-1.png', 'content' => 'foo file', 'mime_type' => 'image/png', 'guid' => trailingslashit(buddydrive()->upload_url) . 'screenshot-1.png'); $this->expected_ids['foo'] = buddydrive_save_item($args); $args = array_merge($args, array('title' => 'readme.txt', 'content' => 'bar file', 'mime_type' => 'text/plain', 'guid' => trailingslashit(buddydrive()->upload_url) . 'readme.txt')); $this->expected_ids['bar'] = buddydrive_save_item($args); }
/** * Create a folder thanks to Ajax * * @uses check_admin_referer() for security reasons * @uses wp_kses() to sanitize pwd and title * @uses buddydrive_get_folder_post_type() to get folder post type * @uses buddydrive_save_item() to save the folder * @uses the BuddyDrive loop to retrieve the folder created * @uses buddydrive_get_template() to get the template for bp-default or any theme * @return string the folder created */ function buddydrive_save_new_buddyfolder() { // Bail if not a POST action if ('POST' !== strtoupper($_SERVER['REQUEST_METHOD'])) { return; } // Check the nonce check_admin_referer('buddydrive_actions', '_wpnonce_buddydrive_actions'); if (!empty($_POST['title'])) { $buddydrive_title = $_POST['title']; if (!empty($_POST['sharing_option'])) { $meta = new stdClass(); $meta->privacy = $_POST['sharing_option']; if ($_POST['sharing_option'] == 'password') { $meta->password = wp_kses($_POST['sharing_pass'], array()); } if ($_POST['sharing_option'] == 'groups') { $meta->groups = $_POST['sharing_group']; } } $args = array('type' => buddydrive_get_folder_post_type(), 'title' => wp_kses($buddydrive_title, array()), 'content' => '', 'metas' => $meta); $buddyfolder_id = buddydrive_save_item($args); if (buddydrive_has_items('id=' . $buddyfolder_id)) { while (buddydrive_has_items()) { buddydrive_the_item(); bp_get_template_part('buddydrive-entry'); } } } die; }
/** * @group delete */ public function test_buddydrive_delete_item_zero() { // create the upload dir $upload_dir = buddydrive_get_upload_data(); $expected_id = buddydrive_save_item(array('type' => buddydrive_get_file_post_type(), 'user_id' => $this->user_id, 'title' => 'screenshot-1.png', 'content' => 'foo file', 'mime_type' => 'image/png', 'guid' => trailingslashit($upload_dir['url']) . 'screenshot-1.png')); $count = buddydrive_delete_item(array('ids' => 0, 'user_id' => false)); $this->assertEmpty($count); $not_deleted = buddydrive_get_buddyfiles_by_ids($expected_id); $this->assertTrue(!empty($not_deleted)); }
/** * Updates a BuddyDrive item * * @param array $args the arguments to update * @param object $item the BuddyDrive item * @uses wp_parse_args() to merge defaults and args array * @uses buddydrive_get_file_post_type() to get the BuddyFile post type * @uses get_post_meta() to get privacy options * @uses buddydrive_save_item() to update the item * @return integer $modified the id of the item updated */ function buddydrive_update_item($args = '', $item = false) { if (empty($item)) { return false; } $old_pass = false; if (!empty($item->password)) { $old_pass = $item->password; } $old_group = false; if (!empty($item->group)) { $old_group = $item->group; } $defaults = array('id' => $item->ID, 'type' => $item->post_type, 'user_id' => $item->user_id, 'parent_folder_id' => $item->post_parent, 'title' => $item->title, 'content' => $item->content, 'mime_type' => $item->mime_type, 'guid' => $item->guid, 'privacy' => $item->check_for, 'password' => $old_pass, 'group' => $old_group, 'buddydrive_meta' => false); $params = wp_parse_args($args, $defaults); // if the parent folder was set, then we need to define a default privacy status if (!empty($item->post_parent) && empty($params['parent_folder_id'])) { $params['privacy'] = 'private'; } elseif (!empty($params['parent_folder_id']) && $params['type'] === buddydrive_get_file_post_type()) { $params['privacy'] = get_post_meta($params['parent_folder_id'], '_buddydrive_sharing_option', true); } // building the meta object $meta = new stdClass(); $meta->privacy = $params['privacy']; // Delete the thumbnail if the public file became private if ('public' === $item->check_for && 'public' !== $meta->privacy) { buddydrive_delete_thumbnail($item->ID); } if ($meta->privacy === 'password' && !empty($params['password'])) { $meta->password = $params['password']; } if ($meta->privacy === 'groups') { if (!empty($params['group'])) { $meta->groups = $params['group']; } else { $meta->groups = get_post_meta($params['parent_folder_id'], '_buddydrive_sharing_groups', true); } } if (!empty($params['buddydrive_meta'])) { $meta->buddydrive_meta = $params['buddydrive_meta']; } // preparing the args for buddydrive_save_item $params['metas'] = $meta; // we dont need privacy, password and group as it's in $meta unset($params['privacy']); unset($params['password']); unset($params['group']); $modified = buddydrive_save_item($params); if (empty($modified)) { return false; } do_action('buddydrive_update_item', $params, $args, $item); return $modified; }