public function getMissingDependencies($requires)
{
$missingRequirements = array();
if (empty($requires)) {
return $missingRequirements;
}
foreach ($requires as $name => $requiredVersion) {
$currentVersion = $this->getCurrentVersion($name);
$missingVersions = $this->getMissingVersions($currentVersion, $requiredVersion);
if (!empty($missingVersions)) {
$missingRequirements[] = array('requirement' => $name, 'actualVersion' => $currentVersion, 'requiredVersion' => $requiredVersion, 'causedBy' => implode(', ', $missingVersions));
}
}
return $missingRequirements;
}
private function makeSureThereAreNoMissingRequirements($metadata) { $requires = array(); if (!empty($metadata->require)) { $requires = (array) $metadata->require; } $dependency = new PluginDependency(); $missingDependencies = $dependency->getMissingDependencies($requires); if (!empty($missingDependencies)) { $message = ''; foreach ($missingDependencies as $dep) { $params = array(ucfirst($dep['requirement']), $dep['actualVersion'], $dep['requiredVersion']); $message .= Piwik::translate('CorePluginsAdmin_MissingRequirementsNotice', $params); } throw new PluginInstallerException($message); } }