Загрузка аватара пользователя через код

InstantCMS 2.X

Загрузка аватара пользователя через код

#1 13 февраля 2026 в 09:57

Всем мира!
подскажите к какому хуку цепляться, что бы загрузить аватар пользователя в своем компоненте при регистрации пользователя так

  $generatedPassword = generatePassword(12);
        $user['password_hash'] = password_hash($generatedPassword, PASSWORD_BCRYPT);

        $userData = [
            'nickname' => $displayName,
            'email'    => $email,
            'password_hash' => $user['password_hash'],           
            'date_reg' => date('Y-m-d H:i:s'),
            'is_activated' => 1 // Активирован сразу
        ];

                    $newUserId = $userModel->addUser($userData);

пользователя добавляю, всё работает, осталось только добавить аватар (есть прямая ссылка на картинку),
конечно можно загрузить в папку и в базу прописать так 
---
normal: 000/u1/f/5/1c7d5abc.png
small: 000/u1/5/a/40f324a1.png
micro: 000/u1/1/0/234ec62d.png

но должны же быть методы, хуки движка? с чего начать куда копать ?
спасибо

#2 13 февраля 2026 в 10:12

 No Name, код можете посмотреть в моем бесплатном дополнении 

Примерно так

  1. public function getPresetSizes() {
  2. return $this->getOption('sizes');
  3.  
  4. }
  5.  
  6. public function getPreviews($value) {
  7. $codes = $this->getYoutubeIds($value);
  8. if (!$codes) {
  9. return NULL;
  10. }
  11. $result = [];
  12. $sizes = $this->getPresetSizes();
  13. $model_images = cmsCore::getModel('images');
  14. $presets = $model_images->filterIn('name', $sizes)->getPresets();
  15. foreach ($codes as $code_item) {
  16. $code = $code_item['code'];
  17. $image = $this->copyPreview($code);
  18. $images = $this->copyPreviews($image, $presets);
  19. if ($images) {
  20. $result[$code] = $images;
  21. }
  22. }
  23. return empty($result) ? false : $result;
  24.  
  25. }
  26.  
  27. public function savePreviews($model, $ctype_name, $previews_name, $id, $result) {
  28. $table_name = $model->table_prefix . $ctype_name;
  29. $model->update($table_name, $id, [
  30. $previews_name => cmsModel::arrayToString($result)
  31. ],false,true);
  32.  
  33. }
  34.  
  35. private function copyPreview($code) {
  36.  
  37. $images = array(
  38. 'https://img.youtube.com/vi/' . $code . '/oardefault.jpg',//short
  39. 'https://img.youtube.com/vi/' . $code . '/maxresdefault.jpg',
  40. 'https://img.youtube.com/vi/' . $code . '/sddefault.jpg',
  41. 'https://img.youtube.com/vi/' . $code . '/hqdefault.jpg'
  42. );
  43.  
  44. $link = false;
  45.  
  46. foreach ($images as $ytimg) {
  47.  
  48. $h = get_headers($ytimg, true);
  49. $code = substr($h[0], 9, 3);
  50.  
  51. if ((int) $code < 400) {
  52. $link = $ytimg;
  53. break;
  54. }
  55. }
  56.  
  57. $dest = $this->getDestination($link);
  58. file_save_from_url($link, $dest);
  59. return $dest;
  60.  
  61. }
  62.  
  63. private function copyPreviews($image_file, $presets) {
  64. try {
  65. $image = new cmsImages($image_file);
  66. } catch (Exception $exc) {
  67. files_delete_file($image_file, 2);
  68. return false;
  69. }
  70. $result = [];
  71. foreach ($presets as $p) {
  72. $resized_path = $image->resizeByPreset($p, '');
  73. if (!$resized_path) {
  74. continue;
  75. }
  76. $result[$p['name']] = $resized_path;
  77. }
  78. files_delete_file($image_file, 2);
  79. return $result;
  80.  
  81. }
  82.  
  83. private function getDestination($link) {
  84. $uploader = new cmsUploader;
  85. $directory = $uploader->getUploadDestinationDirectory();
  86. $dest_name = files_sanitize_name($link);
  87. return $directory . $dest_name;
  88.  
  89. }
#3 17 февраля 2026 в 09:59

 Zau4man, Спасибо помогли

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.

Похожее в блогах

🍪Мы используем файлы cookie для работы сайта. Читать подробнее.