20 use \PKP\Services\interfaces\EntityPropertyInterface;
28 $request = $args[
'request'];
29 $router = $request->getRouter();
30 $dispatcher = $request->getDispatcher();
33 foreach ($props as $prop) {
34 $values[$prop] = $site->getData($prop);
75 public function validate($props, $allowedLocales, $primaryLocale) {
77 LOCALE_COMPONENT_PKP_ADMIN,
78 LOCALE_COMPONENT_APP_ADMIN,
79 LOCALE_COMPONENT_PKP_MANAGER,
80 LOCALE_COMPONENT_APP_MANAGER
84 import(
'lib.pkp.classes.validation.ValidatorFactory');
87 $schemaService->getValidationRules(
SCHEMA_SITE, $allowedLocales),
89 'primaryLocale.regex' => __(
'validator.localeKey'),
90 'supportedLocales.regex' => __(
'validator.localeKey'),
116 [
'pageHeaderTitleImage',
'styleSheet'],
117 [
'pageHeaderTitleImage'],
120 $user ? $user->getId() :
null
125 $validator->after(
function($validator) use ($props) {
126 if (!empty($props[
'sidebar']) && !$validator->errors()->get(
'sidebar')) {
127 $plugins = \PluginRegistry::loadCategory(
'blocks', true);
128 foreach ($props[
'sidebar'] as $pluginName) {
129 if (empty($plugins[$pluginName])) {
130 $validator->errors()->add(
'sidebar', __(
'manager.setup.layout.sidebar.invalidBlock', [
'name' => $pluginName]));
137 $validator->after(
function($validator) use ($props) {
138 if (!empty($props[
'themePluginPath']) && !$validator->errors()->get(
'themePluginPath')) {
139 $plugins = \PluginRegistry::loadCategory(
'themes', true);
141 foreach ($plugins as $plugin) {
142 if ($props[
'themePluginPath'] === $plugin->getDirName()) {
148 $validator->errors()->add(
'themePluginPath', __(
'manager.setup.theme.notFound'));
153 if ($validator->fails()) {
154 $errors = $schemaService->formatValidationErrors($validator->errors(), $schemaService->get(
SCHEMA_SITE), $allowedLocales);
157 \HookRegistry::call(
'Site::validate', array(&$errors, $props, $allowedLocales, $primaryLocale));
173 public function edit($site, $params, $request) {
177 $userId = $request->getUser() ? $request->getUser()->getId() :
null;
178 $supportedLocales = $site->getSupportedLocales();
179 if (array_key_exists(
'pageHeaderTitleImage', $params)) {
180 foreach ($supportedLocales as $localeKey) {
181 if (!array_key_exists($localeKey, $params[
'pageHeaderTitleImage'])) {
184 $params[
'pageHeaderTitleImage'][$localeKey] = $this->_saveFileParam($site, $params[
'pageHeaderTitleImage'][$localeKey],
'pageHeaderTitleImage', $userId, $localeKey,
true);
187 if (array_key_exists(
'styleSheet', $params)) {
188 $params[
'styleSheet'] = $this->_saveFileParam($site, $params[
'styleSheet'],
'styleSheet', $userId);
191 $newSite = $siteDao->newDataObject();
192 $newSite->_data = array_merge($site->_data, $params);
196 $siteDao->updateObject($newSite);
197 $newSite = $siteDao->getSite();
214 public function moveTemporaryFile($context, $temporaryFile, $fileNameBase, $userId, $localeKey =
'') {
215 import(
'classes.file.PublicFileManager');
216 $publicFileManager = new \PublicFileManager();
217 import(
'lib.pkp.classes.file.TemporaryFileManager');
218 $temporaryFileManager = new \TemporaryFileManager();
220 $fileName = $fileNameBase;
222 $fileName .=
'_' . $localeKey;
225 $extension = $publicFileManager->getDocumentExtension($temporaryFile->getFileType());
227 $extension = $publicFileManager->getImageExtension($temporaryFile->getFileType());
229 $fileName .= $extension;
231 if (!$publicFileManager->copyFile($temporaryFile->getFilePath(), $publicFileManager->getSiteFilesPath() .
'/' . $fileName)) {
235 $temporaryFileManager->deleteById($temporaryFile->getId(), $userId);
261 protected function _saveFileParam($site, $value, $settingName, $userId, $localeKey =
'', $isImage =
false) {
262 import(
'lib.pkp.classes.file.TemporaryFileManager');
263 $temporaryFileManager = new \TemporaryFileManager();
266 if (is_null($value)) {
267 $setting = $site->getData($settingName, $localeKey);
269 $fileName = $isImage ? $setting[
'uploadName'] : $setting;
270 import(
'classes.file.PublicFileManager');
271 $publicFileManager = new \PublicFileManager();
272 $publicFileManager->removeSiteFile($fileName);
278 if (empty($value[
'temporaryFileId'])) {
282 $temporaryFile = $temporaryFileManager->getFile((
int) $value[
'temporaryFileId'], $userId);
283 $fileName = $this->moveTemporaryFile($site, $temporaryFile, $settingName, $userId, $localeKey);
288 import(
'classes.file.PublicFileManager');
289 $publicFileManager = new \PublicFileManager();
291 list($width, $height) = getimagesize($publicFileManager->getSiteFilesPath() .
'/' . $fileName);
292 $altText = !empty($value[
'altText']) ? $value[
'altText'] :
'';
295 'originalFilename' => $temporaryFile->getOriginalFileName(),
296 'uploadName' => $fileName,
300 'altText' => $altText,
304 'originalFilename' => $temporaryFile->getOriginalFileName(),
305 'uploadName' => $fileName,