/** * Check dependency constraints for the package. * * @param array $dependencies An array of dependencies to check. * * @return array An array of unsatisfied dependencies. */ public function checkDependencies(array $dependencies) { $unsatisfied = array(); $dependencies = xPDOTransport::checkPlatformDependencies($dependencies); foreach ($dependencies as $package => $constraint) { if (strtolower($package) === strtolower($this->identifier)) { continue; } switch (strtolower($package)) { case 'modx': $versionData = $this->xpdo->getVersionData(); if (!xPDOTransport::satisfies($versionData['full_version'], $constraint)) { $unsatisfied[$package] = $constraint; } break; default: /* get latest installed package version */ $latestQuery = $this->xpdo->newQuery('modTransportPackage', array(array("UCASE({$this->xpdo->escape('package_name')}) LIKE UCASE({$this->xpdo->quote($package)})"), 'installed:IS NOT' => null)); $latestQuery->sortby('installed', 'DESC'); /** @var modTransportPackage $latest */ $latest = $this->xpdo->getObject('modTransportPackage', $latestQuery); if ($latest) { $latest->parseSignature(); if (xPDOTransport::satisfies($latest->version, $constraint)) { unset($latest); continue; } } $unsatisfied[$package] = $constraint; break; } } return $unsatisfied; }