/** * @see Action::execute() */ public function execute() { // call execute event parent::execute(); // save selection if ($this->saveSelection) { $sql = ''; foreach ($this->packages as $packageName => $packageData) { if (!empty($sql)) { $sql .= ','; } $sql .= "(" . $this->source->sourceID . ",\r\n\t\t\t\t\t'" . escapeString($this->directory) . "',\r\n\t\t\t\t\t'" . escapeString($packageName) . "',\r\n\t\t\t\t\t'" . escapeString($packageData['hash']) . "',\r\n\t\t\t\t\t'" . escapeString($packageData['directory']) . "'\r\n\t\t\t\t\t)"; } if (!empty($sql)) { $sql = "INSERT INTO\t\tpb" . PB_N . "_selected_package\r\n\t\t\t\t\t\t\t\t(sourceID, directory, packageName, hash, resourceDirectory)\r\n\t\t\t\t\tVALUES\t\t\t" . $sql . "\r\n\t\t\t\t\tON DUPLICATE KEY UPDATE\tresourceDirectory = VALUES(resourceDirectory)"; WCF::getDB()->sendQuery($sql); } } // set package resources PackageHelper::registerPackageResources($this->packages); // read package $pr = new PackageReader($this->source->sourceID, $this->directory); try { // build package $pb = new PackageBuilder($this->source, $pr, $this->directory, $this->filename); if ($this->wcfSetupResource) { require_once PB_DIR . 'lib/system/package/StandalonePackageBuilder.class.php'; $spb = new StandalonePackageBuilder($this->source, $this->wcfSetupResource); $spb->createWcfSetup($pb->getArchiveLocation()); } } catch (SystemException $e) { PackageHelper::clearTemporaryFiles(); throw $e; } // clear previously created archives PackageHelper::clearTemporaryFiles(); // call executed event $this->executed(); // forward HeaderUtil::redirect('index.php?page=SourceView&sourceID=' . $this->source->sourceID . SID_ARG_2ND_NOT_ENCODED); exit; }