У меня есть следующий код (который я нашел в Интернете), чтобы программно загрузить изображение профиля в существующую учетную запись пользователя. Тем не менее, я получаю «дубликат записи».Как программно удалить изображение профиля пользователя?
Я поэтому решил сначала удалить существующую фотографию (если есть), прежде чем загружать новую фотографию. Или есть лучший способ перезаписи без получения ошибки ниже? сообщение
Ошибка:
DOException: SQLSTATE [23000]: Integrity нарушение ограничения: 1062 Дублированный запись 'http://www.example.com/sites/default/files/photo_gallery' ключевых 'URI': INSERT INTO {file_managed} (UID, Ури, filemime, размер_файла, status, timestamp, type) VALUES (: db_insert_placeholder_0,: db_insert_placeholder_1,: db_insert_placeholder_2,: db_insert_placeholder_3,: db_insert_placeholder_4,: db_insert_placeholder_5,: db_insert_placeholder_6); Array ([: db_insert_placeholder_0] => 1302 [: db_insert_placeholder_1] =>http://www.example.com/sites/default/files/photo_gallery/newphoto.png [: db_insert_placeholder_2] => image/png [: db_insert_placeholder_3] => 143769 [: db_insert_placeholder_4] => 1 [: db_insert_placeholder_5] => 1414500789 [: db_insert_placeholder_6] => image) в drupal_write_record() (строка 7202 из /home1/public_html/example/includes/common.inc).
Вот код, я использую:
$obj_tochange = user_load($user);
$image_path ='http://www.example.com/sites/default/files/photo_gallery/newphoto.png';
$image_info = image_get_info($image_path);
// create file object
$file = new StdClass();
$file->uid = $obj_tochange->uid;
$file->uri = $image_path;
$file->filemime = $image_info['mime_type'];
$file->status = FILE_STATUS_PERMANENT;
$file->filesize = $image_info['file_size'];
file_save($file);
$edit['picture'] = $file;
user_save($obj_tochange, $edit);