Обновление аватарки пользователя [MODX]

30 Марта 2017
php
Задача: "Дать доступ пользователю изменять изображение своего профиля"
  1. Создайте форму загрузки изображения:

    <form action="" method="POST" enctype="multipart/form-data">
        <input type="file" name="photo"/>
        <button type="submit">загрузить</button>
    </form>
    
  2. Создайте сниппет или отдельный файл(не забудьте подключится) и укажите его в атрибуте action, поместите следующие внутрь:

    $user=$modx->getUser(); // получаем данные текущего пользователя
    if(!$user){
        return;
    }
    
    $profile=$user->getOne('Profile'); // данные профиля полученного юзера
    if(!$profile){
        return;
    }
    
    if (!empty($_FILES['photo'])) {
        $allowedExts = array("jpg", "jpeg", "gif", "png");  // допустимые форматы
        $extension = strtolower(end(explode(".", $_FILES["photo"]["name"])));
        if ((($_FILES["photo"]["type"] == "image/gif") 
            || ($_FILES["photo"]["type"] == "image/jpeg") 
            || ($_FILES["photo"]["type"] == "image/png") 
            || ($_FILES["photo"]["type"] == "image/pjpeg")) 
            && ($_FILES["photo"]["size"] < 5000000) // максимальный размер изображения
            && in_array($extension, $allowedExts)) 
        { 
            if($_FILES["photo"]["error"]>0){ 
                $answer="Неизвестная ошибка"; 
            }else{
                $uploadfile =$_SERVER['DOCUMENT_ROOT']."/img/".strtotime(date('Y-m-d H:i:s'))."_".$_FILES["photo"]["name"]; // путь и название будущего файла
                if(file_exists($uploadfile)){ 
                    $answer="Файл с таким названием существует"; 
                }else{ 
                    $answer="Ваше фото успешно обновлено"; 
                    move_uploaded_file($_FILES['photo']['tmp_name'],$uploadfile); // загрузка изображения
                    $profile->set('photo', $uploadfile); // запись в базу
                } 
            } 
        }else{
            $answer="Неверный файл, попробуйте выбрать другой файл!";
        } 
    }else{
        $answer="Файл не найден, попробуйте повторить попытку!";
    }
    
    $profile->save();