/** * {@inheritdoc} * @see \rakelley\jhframe\interfaces\IFileHandler::Delete() */ public function Delete($key) { $file = $this->Read($key); if ($file) { $this->fileSystem->Delete($file); } }
/** * {@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); } }
/** * Обновление логотипа пользователя. * * @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; }
/** * Обновляет фото пользователя * * @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; }