This question has been answered by goldsky. See the first response.
$package->compareVersion('1.3.1.pl'), '==');$package->compareVersion('1.3.1.pl'), '<=');public function compareVersion($version,$direction = '<=') {
$v = $this->getComparableVersion();
return version_compare($version,$v,$direction);
}Thanks for the respond, Bob.
Any idea how can I get that instance on here?
https://github.com/virtudraft/virtuNewsletter/blob/master/_build/virtunewsletter/resolvers/tables.resolver.php
Is there $modx->transport or something?
if ($modx = & $object->xpdo) {
$c = $modx->newQuery('transport.modTransportPackage');
$c->where(array(
'workspace' => 1,
"(SELECT
`signature`
FROM {$modx->getTableName('modTransportPackage')} AS `latestPackage`
WHERE `latestPackage`.`package_name` = `modTransportPackage`.`package_name`
ORDER BY
`latestPackage`.`version_major` DESC,
`latestPackage`.`version_minor` DESC,
`latestPackage`.`version_patch` DESC,
IF(`release` = '' OR `release` = 'ga' OR `release` = 'pl','z',`release`) DESC,
`latestPackage`.`release_index` DESC
LIMIT 1,1) = `modTransportPackage`.`signature`",
));
$c->where(array(
'modTransportPackage.signature:LIKE' => '%virtunewsletter%',
'OR:modTransportPackage.package_name:LIKE' => '%virtunewsletter%',
'installed:IS NOT' => null
));
$oldPackage = $modx->getObject('transport.modTransportPackage', $c);
switch ($options[xPDOTransport::PACKAGE_ACTION]) {
case xPDOTransport::ACTION_INSTALL:
// bla bla
break;
case xPDOTransport::ACTION_UPGRADE:
if ($oldPackage) {
if ($oldPackage->compareVersion('1.6.0-beta1', '>')) {
// means: version_compare('1.6.0-beta1', $oldPackage->getComparableVersion(), '>');
}
if ($oldPackage->compareVersion('1.6.0-beta2', '>')) {
// means: version_compare('1.6.0-beta2', $oldPackage->getComparableVersion(), '>');
}
}
break;
case xPDOTransport::ACTION_UNINSTALL:
break;
}
return true;
Haven't checked or done this before, but can you check what the $object variable is a type of? I wouldn't be surprised if that would be the transport object..I believe it's a modTransportVehicle instance, so it's not usable on this case.
public function getData() {
$data = array();
$signatureArray = explode('-',$this->getProperty('signature'));
/* get packages */
$criteria = array(
'workspace' => $this->getProperty('workspace',1),
'package_name' => $signatureArray[0],
);
$limit = $this->getProperty('limit');
$pkgList = $this->modx->call('transport.modTransportPackage', 'listPackageVersions', array(&$this->modx, $criteria, $limit > 0 ? $limit : 0, $this->getProperty('start')));
$data['results'] = $pkgList['collection'];
$data['total'] = $pkgList['total'];
return $data;
}
3. Never create a package with spaces in the name.Lol... what's wrong to have spaces on package name, if we can handle it? :p
IIRC, there's a method in one of the package classes to transform the Package Name to a signature, which the getData() method should probably use.