Exemplo n.º 1
0
 /**
  * {@inheritdoc}
  * @see \rakelley\jhframe\interfaces\IFileHandler::Delete()
  */
 public function Delete($key)
 {
     $file = $this->Read($key);
     if ($file) {
         $this->fileSystem->Delete($file);
     }
 }
Exemplo n.º 2
0
 /**
  * {@inheritdoc}
  * @see \rakelley\jhframe\interfaces\services\IKeyValCache::Purge()
  *
  * Currently the filter is only partially functional as keys are hashed to
  * avoid issues with special characters in file names, only exact keys will
  * be matched.
  * @todo revisit key usage to permit wipes based on partial keys
  */
 public function Purge($filter = null)
 {
     if (is_array($filter)) {
         array_map([$this, 'Purge'], $filter);
         return;
     }
     if ($filter) {
         $filter = $this->filterKey($filter);
     } else {
         $filter = '*';
     }
     $pattern = $this->directory . $filter . $this->extension;
     $files = $this->fileSystem->Glob($pattern);
     if ($files) {
         $this->fileSystem->Delete($files);
     }
 }
Exemplo n.º 3
0
 /**
  * Обновление логотипа пользователя.
  *
  * @param integer $fid ИД пользователя
  * @param object  $logo CFile, @see class CFile();
  * @param integer $del  Удалить либо обновить (1,0)
  *
  * @return string $error Сообщение об ошибке
  */
 public function UpdateLogo($fid, $logo, $del)
 {
     // если юзер меняет логотип пока предыдущий еще не отмодерирован - будет история изменений
     $aChange = $GLOBALS['DB']->row("SELECT id, old_val, new_val FROM users_change WHERE user_id = ?i AND ucolumn = 'logo'", $fid);
     $aDelFile = array();
     // файлы которые нужно будет удалять сразу
     $dir = get_login($fid);
     $err = '';
     if (!$dir) {
         $error = 'Имя пользователя не определено';
     }
     $this->logo = $this->GetField($fid, $err, 'logo');
     $old_logo = $this->logo;
     $error .= $err;
     if ($del == 1) {
         $this->logo = '';
     } else {
         if ($logo && !$error) {
             $logo->max_size = 50000;
             $logo->max_image_size = array('width' => 150, 'height' => 100);
             $logo->resize = 0;
             $logo->proportional = 1;
             $logo->topfill = 1;
             $logo->allowed_ext = $GLOBALS['graf_array'];
             $this->logo = $logo->MoveUploadedFile($dir . '/logo');
             $error .= $logo->StrError('<br />');
             if (!$error && !$logo->img_to_small('sm_' . $this->logo, array('width' => 50, 'height' => 50))) {
                 $error .= 'Невозможно уменьшить картинку.';
             }
         }
     }
     if (!$error) {
         $error .= $this->Update($fid, $res);
         // определяемся какие файлы нужно удалить
         if ($del == 1) {
             // удаляем логотип
             if ($aChange) {
                 // если хранили версии логотипа на случай возврата - то грохаем обе
                 if ($aChange['old_val']) {
                     $aDelFile[] = $aChange['old_val'];
                 }
                 $aDelFile[] = $aChange['new_val'];
             } else {
                 // иначе просто грохаем логотип
                 $aDelFile[] = $old_logo;
             }
         } elseif ($logo) {
             // меняем логотип
             if ($aChange && $aChange['new_val']) {
                 // грохаем только промежуточную версию, если была
                 $aDelFile[] = $aChange['new_val'];
             }
         }
     }
     // удаление не нужных файлов (если нет ошибок при сохранении разумеется)
     if ($aDelFile && !$error) {
         foreach ($aDelFile as $file) {
             $logo->Delete(0, 'users/' . substr($dir, 0, 2) . '/' . $dir . '/logo/', $file);
             $logo->Delete(0, 'users/' . substr($dir, 0, 2) . '/' . $dir . '/logo/', 'sm_' . $file);
         }
     }
     return $error;
 }
Exemplo n.º 4
0
 /**
  * Обновляет фото пользователя
  *
  * @param integer $fid               id пользователя
  * @param object $foto               файл фотографии
  * @param integer $del               флаг удаления фото (1 - удалить, 0 - перезакачаь)
  * @return string                    текст ошибки в случае неуспеха
  */
 function UpdateFoto($fid, $foto, $del)
 {
     // если юзер меняет аватар пока предыдущий еще не отмодерирован - будет история изменений
     $aChange = $GLOBALS['DB']->row("SELECT id, old_val, new_val FROM users_change WHERE user_id = ?i AND ucolumn = 'photo'", $fid);
     $aDelFile = array();
     // файлы которые нужно будет удалять сразу
     $dir = get_login($fid);
     $err = "";
     if (!$dir) {
         $error = "Имя пользователя не определено";
     }
     $this->photo = $this->GetField($fid, $err, "photo");
     $old_foto = $this->photo;
     $error .= $err;
     if ($del == 1) {
         $this->photo = "";
     } else {
         if ($foto && !$error) {
             $foto->max_size = 102400000;
             $foto->max_image_size = array('width' => 100, 'height' => 100, 'less' => 0);
             $foto->resize = 1;
             $foto->proportional = 1;
             $foto->topfill = 1;
             $cFile->crop = 1;
             $foto->allowed_ext = array_diff($GLOBALS['graf_array'], array('swf', 'gif'));
             $this->photo = $foto->MoveUploadedFile($dir . "/foto");
             $error .= $foto->StrError('<br />');
             if (!$error && !$foto->img_to_small("sm_" . $this->photo, array('width' => 50, 'height' => 50))) {
                 $error .= "Невозможно уменьшить картинку.";
             }
         }
     }
     if (!$error) {
         $error .= $this->Update($fid, $res);
         // определяемся какие файлы нужно удалить
         if ($del == 1) {
             // удаляем аватар
             if ($aChange) {
                 // если хранили версии аватара на случай возврата - то грохаем обе
                 if ($aChange['old_val']) {
                     $aDelFile[] = $aChange['old_val'];
                 }
                 $aDelFile[] = $aChange['new_val'];
             } else {
                 // иначе просто грохаем аватар
                 $aDelFile[] = $old_foto;
             }
         } elseif ($foto) {
             // меняем аватар
             if ($aChange && $aChange['new_val']) {
                 // грохаем только промежуточную версию, если была
                 $aDelFile[] = $aChange['new_val'];
             }
         }
     }
     // удаление не нужных файлов (если нет ошибок при сохранении разумеется)
     if ($aDelFile && !$error) {
         foreach ($aDelFile as $file) {
             $foto->Delete(0, "users/" . substr($dir, 0, 2) . "/" . $dir . "/foto/", $file);
             $foto->Delete(0, "users/" . substr($dir, 0, 2) . "/" . $dir . "/foto/", "sm_" . $file);
         }
     }
     return $error;
 }