From c3bdaa96218950c6fdc35af5f24441d69a4d6095 Mon Sep 17 00:00:00 2001 From: Dmitry Kasatkin Date: Thu, 20 Apr 2023 14:49:19 +0300 Subject: [PATCH] Added appstat resolver --- _build/build.config.php | 1 + _build/resolvers/resolve.modappstat.php | 109 ++++++++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 _build/resolvers/resolve.modappstat.php diff --git a/_build/build.config.php b/_build/build.config.php index 1abdcaf93..4b6753cc4 100644 --- a/_build/build.config.php +++ b/_build/build.config.php @@ -55,4 +55,5 @@ 'chunks', 'statuses', 'setup', + 'modappstat', ]; diff --git a/_build/resolvers/resolve.modappstat.php b/_build/resolvers/resolve.modappstat.php new file mode 100644 index 000000000..2a959ec09 --- /dev/null +++ b/_build/resolvers/resolve.modappstat.php @@ -0,0 +1,109 @@ +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( + array( + 'modTransportPackage.package_name' => strtolower($package) + ), + 'installed:IS NOT' => null + ) +); +$c->limit(1); + +/** @var modTransportPackage $oldPackage */ +$oldPackage = $modx->getObject('transport.modTransportPackage', $c); + +$oldVersion = ''; +if ($oldPackage) { + $oldVersion = $oldPackage->get('version_major') . '.' . $oldPackage->get('version_minor'); + $oldVersion .= '.' . $oldPackage->get('version_patch'); + $oldVersion .= '-' . $oldPackage->get('release'); +} + +$version = ''; +if ($options['topic']) { + $topic = trim($options['topic'], '/'); + $topic = explode('/', $topic); + $signature = end($topic); + $version = str_replace(strtolower($package) . '-', '', $signature); +} + +$modxVersionObj = $modx->getObject('modSystemSetting', array('key' => 'settings_version')); +$modxVersion = ($modxVersionObj) ? $modxVersionObj->get('value') : ''; +$managerLang = $modx->getOption('manager_language'); + +$action = ''; +switch ($options[xPDOTransport::PACKAGE_ACTION]) { + case xPDOTransport::ACTION_INSTALL: + $action = 'install'; + break; + case xPDOTransport::ACTION_UPGRADE: + $action = 'upgrade'; + break; + case xPDOTransport::ACTION_UNINSTALL: + $action = 'uninstall'; + + $version = $oldVersion; + $setupOptionsPath = explode('/', $options['setup-options']); + $signature = $setupOptionsPath[0]; + $oldVersion = str_replace(strtolower($package) . '-', '', $signature); + + break; +} + +$params = array( + 'name' => $options['namespace'], + 'url' => $_SERVER['SERVER_NAME'], + 'php_version' => phpversion(), + 'modx_version' => $modxVersion, + 'manager_lang' => $managerLang, + 'installation_type' => $action, + 'package_version_from' => $oldVersion, + 'package_version' => $version, + 'date' => time() +); + +/** + * Curl POST. + */ +$curl = curl_init(); +curl_setopt($curl, CURLOPT_URL, $url); +curl_setopt($curl, CURLOPT_HTTPHEADER, array('Authorization: MODX-RSCHARDCODEDPASS')); +curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); +curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 120); +curl_setopt($curl, CURLOPT_POST, true); +curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($params)); +curl_setopt($curl, CURLOPT_TIMEOUT, 120); + +$response = curl_exec($curl); +$responseInfo = curl_getinfo($curl); +$curlError = curl_error($curl); +curl_close($curl); + +return true;