function validate() { // make sure that the user is uploading a file $this->_files = HttpVars::getFiles(); $this->_templateId = $this->_request->getValue("templateId"); $this->_subFolderId = $this->_request->getValue("subFolderId"); // check if there's any file to upload if (count($this->_files) != 1) { if (empty($this->_subFolderId)) { $this->_view = new PluginBlogTemplatesListView($this->_blogInfo, $this->_templateId); } else { $this->_view = new PluginBlogTemplateSubFolderListView($this->_blogInfo, $this->_templateId, $this->_subFolderId); } $this->_view->setErrorMessage($this->_locale - tr("error_must_upload_file")); $this->setCommonData(); return false; } if (!$this->isValidExtension($this->_files['resourceFile']['name'])) { if (empty($this->_subFolderId)) { $this->_view = new PluginBlogTemplatesListView($this->_blogInfo, $this->_templateId); } else { $this->_view = new PluginBlogTemplateSubFolderListView($this->_blogInfo, $this->_templateId, $this->_subFolderId); } $this->_view->setErrorMessage($this->_locale->tr("templateeditor_error_templatefile_extension")); $this->setCommonData(); return false; } return true; }
/** * Carries out the specified action */ function perform() { // fetch the information coming from the resource $this->_description = Textfilter::filterAllHTML($this->_request->getValue("resourceDescription")); $this->_albumId = $this->_request->getValue("albumId"); $this->_resource = $this->_request->getValue("resourceFile"); // check if there is any file uploaded $files = HttpVars::getFiles(); // we probably need to rearrange the $files array a bit better... $this->_files = array(); foreach ($files as $file) { if ($file["error"] == 0 && $file["size"] > 0 && $file["name"] != "") { $this->_files[] = $file; } } // let the gallery library do its work... $resources = new GalleryResources(); $this->_view = new AdminResourcesListView($this->_blogInfo, array("albumId" => $this->_albumId)); $successMessage = ""; $errorMessage = ""; foreach ($this->_files as $file) { // create a new FileUpload object based on the file $upload = new FileUpload($file); // add the resource to the db $this->notifyEvent(EVENT_PRE_RESOURCE_ADD, array("upload" => &$upload)); $res = $resources->addResource($this->_blogInfo->getId(), $this->_albumId, $this->_description, $upload); // check if everything went fine and if not, show an error message if ($res > 0) { $successMessage .= $this->_locale->pr("resource_added_ok", $file["name"]) . "<br/>"; // try to fetch the resource so that we can send it in the event $resource = $resources->getResource($res, $this->_blogInfo->getId()); $this->notifyEvent(EVENT_POST_RESOURCE_ADD, array("resource" => &$resource)); } else { if ($res == GALLERY_ERROR_RESOURCE_FORBIDDEN_EXTENSION) { $errorMessage .= $this->_locale->pr("error_resource_forbidden_extension", $file["name"]) . "<br/>"; } elseif ($res == GALLERY_ERROR_RESOURCE_TOO_BIG) { $errorMessage .= $this->_locale->pr("error_resource_too_big", $file["name"]) . "<br/>"; } elseif ($res == GALLERY_ERROR_UPLOADS_NOT_ENABLED) { $errorMessage .= $this->_locale->tr("error_uploads_disabled") . "<br/>"; } elseif ($res == GALLERY_ERROR_QUOTA_EXCEEDED) { $errorMessage .= $this->_locale->tr("error_quota_exceeded") . "<br/>"; } else { $errorMessage .= $this->_locale->pr("error_adding_resource", $file["name"]) . "<br/>"; } } } // clear the cache no matter what happened... we should only clear it if there was at least one // file uploaded but this way is not that bad after all... CacheControl::resetBlogCache($this->_blogInfo->getId(), false); if ($successMessage != "") { $this->_view->setSuccessMessage($successMessage); } if ($errorMessage != "") { $this->_view->setErrorMessage($errorMessage); } $this->setCommonData(); return true; }
/** * installs an uploaded template */ function _performUploadTemplate() { // handle the uploaded file $files = HttpVars::getFiles(); $uploads = new FileUploads($files); if (count($files) == 0 || $files["templateFile"]["name"] == "") { $this->_view = new AdminTemplatedView($this->_blogInfo, "newglobaltemplate"); $this->_view->setValue("templateFolder", TemplateSetStorage::getBaseTemplateFolder()); $this->_view->setErrorMessage($this->_locale->tr("error_must_upload_file")); $this->setCommonData(); return false; } $config =& Config::getConfig(); $tmpFolder = $config->getValue('temp_folder'); // move it to the temporary folder $result = $uploads->process($tmpFolder); // and from there, unpack it $upload = new FileUpload($files['templateFile']); $templateSandbox = new TemplateSandbox(); $valid = $templateSandbox->checkTemplateSet($upload->getFileName(), $tmpFolder . '/'); if ($valid < 0) { $this->_view = new AdminSiteTemplatesListView($this->_blogInfo); $this->_view->setErrorMessage($this->_checkTemplateSandboxResult($valid)); $this->setCommonData(); return false; } // the template was ok, so then we can proceed and move it to the main // template folder, add it to our array of templates // // :KLUDGE: // // maybe we should simply move the files rather than unpacking the whole // thing again, but this indeed makes things easier! ;) $unpacker = new Unpacker(); $templateFolder = $config->getValue('template_folder'); $fileToUnpack = $tmpFolder . '/' . $upload->getFileName(); if (!$unpacker->unpack($fileToUnpack, $templateFolder)) { $this->_view = new AdminSiteTemplatesListView($this->_blogInfo); $tf = new Textfilter(); $this->_view->setErrorMessage($this->_locale->pr('error_installing_template', $tf->filterAllHtml($upload->getFileName()))); $this->setCommonData(); return false; } // if the template set was installed ok in the template folder, we can record // it as a valid set $ts = new TemplateSetStorage(); $fileParts = explode(".", $upload->getFileName()); $templateName = $fileParts[0]; $ts->addTemplate($templateName); $this->_view = new AdminSiteTemplatesListView($this->_blogInfo); $this->_view->setSuccessMessage($this->_locale->pr('template_installed_ok', $templateName)); $this->setCommonData(); return true; }
function _performUploadLocale() { // since we are here, the file name was validated to be ok, so we can // continue with the operation $files = HttpVars::getFiles(); $uploads = new FileUploads($files); $this->_view = new AdminSiteLocalesListView($this->_blogInfo); // we can first of all move the file to the destionation folder $result = $uploads->process($this->_config->getValue("locale_folder")); // the only thing that can happen is that the file was not correctly saved if ($result[0]->getError() != 0) { $this->_view->setErrorMessage($this->_locale->tr("error_saving_locale")); return false; } // and once it's there, we can do as if we were adding a locale code $upload = new FileUpload($files["localeFile"]); $res = preg_match(REGEXP_VALID_LOCALE, $upload->getFileName(), $matches); $localeCode = $matches[1]; // add the file to the list of locales $locales = new Locales(); $locales->addLocale($localeCode); $this->_view->setSuccessMessage($this->_locale->pr("locale_added_ok", $localeCode)); return true; }
function _performUploadTemplate() { // get the temporary folder $config =& Config::getConfig(); $tmpFolder = $config->getValue("temp_folder"); // move it to the temporary folder $files = HttpVars::getFiles(); if (count($files) == 0 || $files["templateFile"]["name"] == "") { $this->_view = new AdminTemplatedView($this->_blogInfo, "newblogtemplate"); $this->_view->setValue("templateFolder", TemplateSetStorage::getBlogBaseTemplateFolder($this->_blogInfo->getId())); $this->_view->setErrorMessage($this->_locale->tr("error_must_upload_file")); $this->setCommonData(); return false; } $uploads = new FileUploads($files); $result = $uploads->process($tmpFolder); if ($result < 0) { $this->_view = new AdminBlogTemplateSetsListView($this->_blogInfo); $this->_view->setErrorMessage($this->_locale->tr("error_uploads_disabled")); $this->setCommonData(); return false; } $upload = new FileUpload($files["templateFile"]); // and make it go through the template sandbox to check if // we're dealing with a 'healthy' file $templateSandbox = new TemplateSandbox(); $valid = $templateSandbox->checkTemplateSet($upload->getFileName(), $tmpFolder . "/"); if ($valid < 0) { $this->_view = new AdminBlogTemplateSetsListView($this->_blogInfo); $this->_view->setErrorMessage(AdminAddTemplateAction::_checkTemplateSandboxResult($valid)); $this->setCommonData(); return false; } // // :KLUDGE: // // maybe we should simply move the files rather than unpacking the whole // thing again, but this indeed makes things easier! ;) // // since it is a local template, the path has to be $template_folder/blog_x/$templateName $ts = new TemplateSetStorage(); $blogTemplateFolder = $ts->createBlogTemplateFolder($this->_blogInfo->getId()); // it should be there now... we can continue $destFolder = $blogTemplateFolder . "/"; $unpacker = new Unpacker(); if (!$unpacker->unpack($tmpFolder . "/" . $upload->getFileName(), $destFolder)) { $this->_view = new AdminBlogTemplateSetsListView($this->_blogInfo); $this->_view->setErrorMessage($this->_locale->tr("error_installing_template")); $this->setCommonData(); // remove the file before returning! File::delete($tmpFolder . "/" . $upload->getFileName()); return false; } // if the template set was installed ok in the template folder, we can record // it as a valid set $fileParts = explode(".", $upload->getFileName()); $templateName = $fileParts[0]; $ts->addTemplate($templateName, $this->_blogInfo->getId()); // remove the file File::delete($tmpFolder . "/" . $upload->getFileName()); $this->_view = new AdminBlogTemplateSetsListView($this->_blogInfo); $this->_view->setSuccessMessage($this->_locale->pr("template_installed_ok", $templateName)); $this->setCommonData(); return true; }