Example #1
0
 /**
  * @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');
 }
Example #2
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;
}
Example #4
0
 /**
  * @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;
}