/**
  * 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;
 }