пытаюсь вытянуть форму загрузки аватара пользователя
<?phpfunction custom_picture_form() {
global $user;
$form = array(
'#attributes' => array('enctype' => 'multipart/form-data'),
);
$form['picture']['picture_upload'] = array(
'#type' => 'file',
'#title' => t('Upload picture'),
'#size' => 28,
'#description' => t('Your virtual face or picture. Maximum dimensions are %dimensions and the maximum size is %size kB.',
array('%dimensions' => variable_get('user_picture_dimensions', '200x200'),
'%size' => variable_get('user_picture_file_size', '300'))) .' '. variable_get('user_picture_guidelines', '')
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Отправить',
);
$form['#uid'] = $user->uid;
return $form;
}
function custom_picture_form_validate($form, &$form_state) {
// If required, validate the uploaded picture.
$validators = array(
'file_validate_is_image' => array(),
'file_validate_image_resolution' => array(variable_get('user_picture_dimensions', '130x130')),
'file_validate_size' => array(variable_get('user_picture_file_size', '30') * 1024),
);
if ($file = file_save_upload('picture_upload', $validators)) {
// Remove the old picture.
if (isset($form_state['values']['_account']->picture) && file_exists($form_state['values']['_account']->picture)) {
file_delete($form_state['values']['_account']->picture);
}
$info = image_get_info($file->filepath);
$destination = variable_get('user_picture_path', 'pictures') .'/picture-'. $form['#uid'] .'.'. $info['extension'];
if (file_copy($file, $destination, FILE_EXISTS_REPLACE)) {
$form_state['values']['picture'] = $file->filepath;
cache_clear_all($form['#uid'] .':', 'cache_menu', TRUE);
cache_clear_all();
drupal_set_message(t('The changes have been saved.'));
}
else {
form_set_error('picture_upload', t("Failed to upload the picture image; the %directory directory doesn't exist or is not writable.", array('%directory' => variable_get('user_picture_path', 'pictures'))));
}
}
}
?>
Картинка загружается в files но не цепляется к юзеру и не отображается.
пытаюсь на сабмит навесить еще что-то типа:
<?phpfunction _photos_form_submit($form, $form_state) {
global $user;
$user = user_load($user->uid);
$file = file_load($form_state['storage']['fid']);
$user->field_user_photo['und'] = array(array('fid' => $file->fid));
user_save($user);
}?>
это код для 7-рки, пыталась переделать под 6-рку разными манипуляциями. Но фото все равно не цепляется и выдает ошибку:
user warning: Duplicate entry '' for key 'name' query: INSERT INTO users (created, access) VALUES (1381502495, 1381502495) in modules/user/user.module on line 342.
в Принципе я понимаю что создаю типа "дубликата", но как тогда правильно написать в коде?
Заранее спасибо
Комментарии
Почему у Вас логика сабмита в функции валидации? Сами потом ведь запутаетесь. Прежде чем записывать в БД есть смысл проверить, не самый шустрый способ, за то кроссплатформенный.
Выше ерунду написал.
В 6рке объект пользователя устроен несколько иначе, по дефолту он не является сущностью, потому обычным методом поле к нему не прицепить, однако, на сколько помню, там может использоваться дефолтный $user->picture(или как-то так), это если не используете дополнительные модули, например content_profile(или как там его) проще наверное будет посмотреть на объект пользователя через devel.
использую) По в моем случае профиль генерирует свой модуль. content_profile используется, но только в полях, а изображение выводится стандартное $picture
Значит в этот самый $picture и пихать, создайте вручную юзера с изображением и посмотрите как он выглядит через модуль devel(вкладка "разработка"(development) в профиле юзера), и потом от этого пляшите.(на сколько помню там сразу присваивается fid, напрямую, но могу ошибаться, потому и стоит посмотреть на это через devel)
З.Ы. devel это модуль, если что
вот, блин)))
Заведите мужа-друпальщика(можно 2х)
муж есть, вот только он по сео. А вот по поводу второго мужа надо подумать))интересно:)