Back to PackageAdapter class

Method storeExtension

protected void
storeExtension
()
Method to store the extension to the database
Returns
  • void
Since
  • 3.4
-
  • \RuntimeException

Method storeExtension - Source code

/**
 * Method to store the extension to the database
 *
 * @return  void
 *
 * @since   3.4
 * @throws  \RuntimeException
 */
protected function storeExtension()
{
    if ($this->currentExtensionId) {
        if (!$this->parent->isOverwrite()) {
            // Install failed, roll back changes
            throw new \RuntimeException(Text::sprintf('JLIB_INSTALLER_ABORT_ALREADY_EXISTS', Text::_('JLIB_INSTALLER_' . $this->route), $this->name));
        }
        $this->extension->load($this->currentExtensionId);
        $this->extension->name = $this->name;
    } else {
        $this->extension->name = $this->name;
        $this->extension->type = 'package';
        $this->extension->element = $this->element;
        $this->extension->changelogurl = $this->changelogurl;
        // There is no folder for packages
        $this->extension->folder = '';
        $this->extension->enabled = 1;
        $this->extension->protected = 0;
        $this->extension->access = 1;
        $this->extension->client_id = 0;
        $this->extension->params = $this->parent->getParams();
    }
    // Update the manifest cache for the entry
    $this->extension->manifest_cache = $this->parent->generateManifestCache();
    if (!$this->extension->store()) {
        // Install failed, roll back changes
        throw new \RuntimeException(Text::sprintf('JLIB_INSTALLER_ABORT_PACK_INSTALL_ROLLBACK', $this->extension->getError()));
    }
    // Since we have created a package item, we add it to the installation step stack
    // so that if we have to rollback the changes we can undo it.
    $this->parent->pushStep(array('type' => 'extension', 'id' => $this->extension->extension_id));
}