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; }