Open Journal Systems  3.3.0
installPluginVersion.php
1 <?php
2 
16 define('RUNNING_UPGRADE', 1);
17 
18 require(dirname(dirname(dirname(dirname(__FILE__)))) . '/tools/bootstrap.inc.php');
19 
20 import('lib.pkp.classes.site.Version');
21 import('lib.pkp.classes.site.VersionCheck');
22 
25  private $_descriptor;
26 
31  function __construct($argv = array()) {
32  parent::__construct($argv);
33 
34  if (!isset($this->argv[0]) || !file_exists($this->argv[0])) {
35  $this->usage();
36  exit(1);
37  }
38 
39  $this->_descriptor = $this->argv[0];
40  }
41 
45  function usage() {
46  echo "Install plugin version tool\n"
47  . "Usage: {$this->scriptName} path/to/version.xml\n";
48  }
49 
53  function execute() {
54  $versionInfo = VersionCheck::parseVersionXML($this->_descriptor);
55  $pluginVersion = $versionInfo['version'];
56 
57  $productType = $pluginVersion->getProductType();
58  if (!preg_match('/^plugins\.(.+)$/', $productType, $matches) || !in_array($matches[1], Application::getPluginCategories())) {
59  error_log("Invalid type \"$productType\".");
60  return false;
61  }
62 
63  $versionDao = DAORegistry::getDAO('VersionDAO');
64  $versionDao->insertVersion($pluginVersion, true);
65 
66  $pluginPath = dirname($this->_descriptor);
67  $plugin = @include("$pluginPath/index.php");
68  if ($plugin && is_object($plugin)) {
69  PluginRegistry::register($matches[1], $plugin, $pluginPath);
70  }
71  $plugin = PluginRegistry::getPlugin($matches[1], $plugin->getName());
72 
73  import('classes.install.Upgrade');
74  $installer = new Upgrade(array());
75  if (!isset($installer->dbconn)) {
76  // Connect to the database.
77  $conn = DBConnection::getInstance();
78  $installer->dbconn = $conn->getDBConn();
79 
80  if (!$conn->isConnected()) {
81  $installer->setError(INSTALLER_ERROR_DB, $this->dbconn->errorMsg());
82  return false;
83  }
84  }
85  if (!isset($installer->dataXMLParser)) {
86  $installer->dataXMLParser = new DBDataXMLParser();
87  $installer->dataXMLParser->setDBConn($installer->dbconn);
88  }
89  $result = true;
90  $param = array(&$installer, &$result);
91 
92  if ($plugin->getInstallSchemaFile()) {
93  $plugin->updateSchema('Installer::postInstall', $param);
94  }
95  if ($plugin->getInstallSitePluginSettingsFile()) {
96  $plugin->installSiteSettings('Installer::postInstall', $param);
97  }
98  if ($plugin->getInstallControlledVocabFiles()) {
99  $plugin->installControlledVocabs('Installer::postInstall', $param);
100  }
101  if ($plugin->getInstallEmailTemplatesFile()) {
102  $plugin->installEmailTemplates('Installer::postInstall', $param);
103  }
104  if ($plugin->getInstallEmailTemplateDataFile()) {
105  $plugin->installEmailTemplateData('Installer::postInstall', $param);
106  }
107  if ($plugin->getInstallDataFile()) {
108  $plugin->installData('Installer::postInstall', $param);
109  }
110  $plugin->installFilters('Installer::postInstall', $param);
111  return $result;
112  }
113 }
114 
115 $tool = new InstallPluginVersionTool(isset($argv) ? $argv : array());
116 $tool->execute();
117 
118 
CommandLineTool
Initialization code for command-line scripts.
Definition: CliTool.inc.php:44
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
$tool
$tool
Definition: mergeCoverageReportTool.php:120
Application\getPluginCategories
getPluginCategories()
Definition: Application.inc.php:112
InstallPluginVersionTool\execute
execute()
Definition: installPluginVersion.php:56
InstallPluginVersionTool
CLI tool for installing a plugin version descriptor.
Definition: installPluginVersion.php:23
DBDataXMLParser
Class to import and export database data from an XML format. See dbscripts/xml/dtd/xmldata....
Definition: DBDataXMLParser.inc.php:20
PluginRegistry\getPlugin
static getPlugin($category, $name)
Definition: PluginRegistry.inc.php:85
InstallPluginVersionTool\__construct
__construct($argv=array())
Definition: installPluginVersion.php:34
PluginRegistry\register
static register($category, $plugin, $path, $mainContextId=null)
Definition: PluginRegistry.inc.php:64
DBConnection\getInstance
static getInstance($setInstance=null)
Definition: DBConnection.inc.php:241
CommandLineTool\$argv
$argv
Definition: CliTool.inc.php:53
VersionCheck\parseVersionXML
static parseVersionXML($url)
Definition: VersionCheck.inc.php:74
InstallPluginVersionTool\usage
usage()
Definition: installPluginVersion.php:48