Загрузка аватарок
Добрый день!
А есть у кого-нибудь на примете работающее решение по этому вопросу?
С уважением.
А есть у кого-нибудь на примете работающее решение по этому вопросу?
С уважением.
Комментарии: 7
Заходил, и за дополнение это — в курсе.
Оно платное, в данном случае это лишнее, потому что необходимый функционал минималистичен.
Вообще, решения в сети есть, но они не работают корректно.
Оно платное, в данном случае это лишнее, потому что необходимый функционал минималистичен.
Вообще, решения в сети есть, но они не работают корректно.
Так и нужно было писать
А есть у кого-нибудь на примете работающее бесплатное решение по этому вопросу?
Так есть? Или с бумагой в стране напряженка?))
Не знаю — мне незачем.
<?php
if (!$modx->user->hasSessionContext('web') ) {
die('Not logged!');
}
$prefix = trim($modx->getOption('placeholderPrefix', $scriptProperties, 'user.'));
$profile = $modx->user->getOne('Profile');
if(isset($_REQUEST['update']) && $_REQUEST['update'] == '1'){
// имя
$fullname = (isset($_REQUEST['fullname']) && !empty($_REQUEST['fullname'])) ? $_REQUEST['fullname'] : $profile->get('fullname');
$fullname = trim(strip_tags($fullname));
if(empty($fullname)){
$fullname = 'Без имени';
}
$profile->set('fullname', $fullname);
//фото
$clearphoto = (isset($_REQUEST['clearphoto']) && $_REQUEST['clearphoto'] == '1');
if($clearphoto){
$profile->set('photo', '');
}else{
$photoConfig = array('w' => 48,'h' => 48,'zc' => 1,'bg' => '#fff','f' => 'png');
// если выбран файл
if(isset($_FILES['photo']) && isset($_FILES['photo']['tmp_name']) && !empty($_FILES['photo']['tmp_name'])){
$file_info = getimagesize($_FILES['photo']['tmp_name']);
if(!empty($file_info)){
// пути
$photoFileName = substr(uniqid(), 8).'.png';
$newPath = 'uploads/users/'.$modx->user->get('id').'/';
// проверяем каталог
if(!file_exists(MODX_BASE_PATH.$newPath)){
if(!mkdir(MODX_BASE_PATH.$newPath, 0777, true)){
echo "Can`t create directory ".$newPath;
}
}
// перемещаем файл
if(move_uploaded_file($_FILES['photo']['tmp_name'], MODX_BASE_PATH.$newPath.$photoFileName)){
// подключаем phpthumb
require_once MODX_CORE_PATH.'model/phpthumb/phpthumb.class.php';
// инициализируем
$phpThumb = new phpThumb();
$phpThumb->setSourceFilename(MODX_BASE_PATH.$newPath.$photoFileName);
foreach ($photoConfig as $k => $v) {
$phpThumb->setParameter($k, $v);
}
// генерируем файл
if ($phpThumb->GenerateThumbnail()) {
if ($phpThumb->RenderToFile(MODX_BASE_PATH.$newPath.$photoFileName)) {
// устанавливаем права на файл, это опционально, зависит от сервера
chmod(MODX_BASE_PATH.$newPath.$photoFileName, 0666);
// сохраняем изменения
$profile->set('photo', $newPath.$photoFileName);
}
}
}
}
}
}
// вызываем событие OnBeforeUserFormSave
$modx->invokeEvent('OnBeforeUserFormSave',array(
'mode' => modSystemEvent::MODE_UPD
,'id' => $modx->user->get('id')
,'user' => &$modx->user
,'profile' => &$profile
));
// сохраняем все изменения
$profile->save();
$modx->user->save();
// вызываем событие OnBeforeUserFormSave
$modx->invokeEvent('OnUserFormSave',array(
'mode' => modSystemEvent::MODE_UPD
,'id' => $modx->user->get('id')
,'user' => &$modx->user
,'profile' => &$profile
));
// устанавливаем плейсхолдер, чтобы показать сообщение
$modx->setPlaceholder($prefix.'success', '1');
}
// устанавливаем плейсхолдеры для отображения информации
$modx->setPlaceholder($prefix.'fullname', $profile->get('fullname'));
$modx->setPlaceholder($prefix.'photo', $profile->get('photo'));
return '';
Форму надеюсь с полями сами сделаете.Поле clearphoto — это checkbox, типа «Удалить аватар».
Большое спасибо!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.