Issue #1378092 by oriol_e9g, wedge, beejeebus: Fixed User pictures are not removed properly.
parent
afb4f1f0be
commit
1978413929
|
@ -493,6 +493,10 @@ function user_save($account, $edit = array(), $category = 'account') {
|
|||
file_delete($account->original->picture);
|
||||
}
|
||||
}
|
||||
elseif (isset($edit['picture_delete']) && $edit['picture_delete']) {
|
||||
file_usage_delete($account->original->picture, 'user', 'user', $account->uid);
|
||||
file_delete($account->original->picture);
|
||||
}
|
||||
$account->picture = empty($account->picture->fid) ? 0 : $account->picture->fid;
|
||||
|
||||
// Do not allow 'uid' to be changed.
|
||||
|
|
|
@ -1080,6 +1080,50 @@ class UserPictureTestCase extends DrupalWebTestCase {
|
|||
$this->assertEqual($pic_path, (string) $elements[0]['src'], t("User picture source is correct."));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests deletion of user pictures.
|
||||
*/
|
||||
function testDeletePicture() {
|
||||
$this->drupalLogin($this->user);
|
||||
|
||||
$image = current($this->drupalGetTestFiles('image'));
|
||||
$info = image_get_info($image->uri);
|
||||
|
||||
// Set new variables: valid dimensions, valid filesize (0 = no limit).
|
||||
$test_dim = ($info['width'] + 10) . 'x' . ($info['height'] + 10);
|
||||
variable_set('user_picture_dimensions', $test_dim);
|
||||
variable_set('user_picture_file_size', 0);
|
||||
|
||||
// Save a new picture.
|
||||
$edit = array('files[picture_upload]' => drupal_realpath($image->uri));
|
||||
$this->drupalPost('user/' . $this->user->uid . '/edit', $edit, t('Save'));
|
||||
|
||||
// Load actual user data from database.
|
||||
$account = user_load($this->user->uid, TRUE);
|
||||
$pic_path = isset($account->picture) ? $account->picture->uri : NULL;
|
||||
|
||||
// Check if image is displayed in user's profile page.
|
||||
$this->drupalGet('user');
|
||||
$this->assertRaw(file_uri_target($pic_path), "Image is displayed in user's profile page");
|
||||
|
||||
// Check if file is located in proper directory.
|
||||
$this->assertTrue(is_file($pic_path), 'File is located in proper directory');
|
||||
|
||||
$edit = array('picture_delete' => 1);
|
||||
$this->drupalPost('user/' . $this->user->uid . '/edit', $edit, t('Save'));
|
||||
|
||||
// Load actual user data from database.
|
||||
$account1 = user_load($this->user->uid, TRUE);
|
||||
$this->assertNull($account1->picture, 'User object has no picture');
|
||||
|
||||
$file = file_load($account->picture->fid);
|
||||
$this->assertFalse($file, 'File is removed from database');
|
||||
|
||||
// Clear out PHP's file stat cache so we see the current value.
|
||||
clearstatcache();
|
||||
$this->assertFalse(is_file($pic_path), 'File is removed from file system');
|
||||
}
|
||||
|
||||
function saveUserPicture($image) {
|
||||
$edit = array('files[picture_upload]' => drupal_realpath($image->uri));
|
||||
$this->drupalPost('user/' . $this->user->uid . '/edit', $edit, t('Save'));
|
||||
|
|
Loading…
Reference in New Issue