Обновление аватарки пользователя [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();