function main_applicationversions($eventData) { global $gLocale, $gXmlDefinition, $gPageTitle, $gToolbars; $acRemote = new \Innomatic\Application\AppCentralRemoteServer($eventData['id']); $availReps = $acRemote->ListAvailableRepositories(isset($eventData['refresh']) ? true : false); $availMods = $acRemote->ListAvailableApplications($eventData['repid'], isset($eventData['refresh']) ? true : false); $appVersions = $acRemote->ListAvailableApplicationVersions($eventData['repid'], $eventData['applicationid'], isset($eventData['refresh']) ? true : false); $xAccount = new WebServicesAccount($acRemote->mAccountId); $headers[0]['label'] = $gLocale->getStr('version.header'); $headers[1]['label'] = $gLocale->getStr('dependencies.header'); $headers[2]['label'] = $gLocale->getStr('installed_version.header'); $gXmlDefinition = '<vertgroup><name>applications</name> <children> <label><name>title</name> <args> <bold>true</bold> <label type="encoded">' . urlencode($xAccount->mName . ' - ' . $availReps[$eventData['repid']]['name'] . ' - ' . $availMods[$eventData['applicationid']]['appid']) . '</label> </args> </label> <table><name>applications</name> <args> <headers type="array">' . WuiXml::encode($headers) . '</headers> <rowsperpage>10</rowsperpage> <pagesactionfunction>repapplications_list_action_builder</pagesactionfunction> <pagenumber>' . (isset($eventData['pagenumber']) ? $eventData['pagenumber'] : '') . '</pagenumber> <sessionobjectusername>' . $eventData['id'] . '-' . $eventData['repid'] . '-' . $eventData['applicationid'] . '</sessionobjectusername> </args> <children>'; $row = 0; $appQuery = \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getDataAccess()->execute('SELECT appversion ' . 'FROM applications ' . 'WHERE appid=' . \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getDataAccess()->formatText($availMods[$eventData['applicationid']]['appid'])); while (list($version, $data) = each($appVersions)) { if (strlen($data['dependencies'])) { $appDeps = new \Innomatic\Application\ApplicationDependencies(); $depCheck = $appDeps->checkApplicationDependencies(0, '', $appDeps->explodeDependencies($data['dependencies'])); } else { $depCheck = false; } if ($appQuery->getNumberRows()) { $currentVersion = $appQuery->getFields('appversion'); } else { $currentVersion = $gLocale->getStr('none_version.label'); } if ($depCheck == false) { $appInstallable = true; $missingDeps = ''; if ($appQuery->getNumberRows()) { switch (\Innomatic\Application\ApplicationDependencies::compareVersionNumbers($version, $currentVersion)) { case \Innomatic\Application\ApplicationDependencies::VERSIONCOMPARE_EQUAL: $label = $gLocale->getStr('reinstall_application.button'); $icon = 'cycle'; break; case \Innomatic\Application\ApplicationDependencies::VERSIONCOMPARE_MORE: $label = $gLocale->getStr('update_application.button'); $icon = 'up'; break; case \Innomatic\Application\ApplicationDependencies::VERSIONCOMPARE_LESS: $label = $gLocale->getStr('downgrade_application.button'); $icon = 'down'; break; } } else { $label = $gLocale->getStr('install_application.button'); $icon = 'folder'; } } else { $appInstallable = false; $missingDeps = '<br><strong>' . $gLocale->getStr('missing_deps.label') . '</strong>'; while (list(, $dep) = each($depCheck)) { $missingDeps .= '<br>' . $dep; } } $toolbars = ''; if ($appInstallable) { $toolbars .= '<button> <args> <label>' . WuiXml::cdata($label) . '</label> <themeimage>' . $icon . '</themeimage> <horiz>true</horiz> <action>' . WuiXml::cdata(\Innomatic\Wui\Dispatch\WuiEventsCall::buildEventsCallString('', array(array('view', 'repositoryapplications', array('id' => $eventData['id'], 'repid' => $eventData['repid'])), array('action', 'installapplication', array('id' => $eventData['id'], 'repid' => $eventData['repid'], 'applicationid' => $eventData['applicationid'], 'version' => $version))))) . '</action> </args> </button>'; } $gXmlDefinition .= '<label row="' . $row . '" col="0"><name>version</name> <args> <label type="encoded">' . urlencode($version) . '</label> </args> </label> <label row="' . $row . '" col="1"><name>dependencies</name> <args> <label type="encoded">' . urlencode(str_replace(',', '<br>', $data['dependencies']) . (strlen($data['suggestions']) ? '<br><br><strong>' . $gLocale->getStr('suggestions.label') . '</strong><br>' . str_replace(',', '<br>', $data['suggestions']) . '<br>' : '') . $missingDeps) . '</label> </args> </label> <label row="' . $row . '" col="2"><name>current</name> <args> <label type="encoded">' . urlencode($currentVersion) . '</label> </args> </label> <horizgroup row="' . $row . '" col="3"><name>tb</name> <children>' . $toolbars . '</children> </horizgroup>'; $row++; } $gXmlDefinition .= ' </children> </table> </children> </vertgroup>'; $gToolbars['reptools'] = array('refresh' => array('label' => $gLocale->getStr('refresh.button'), 'themeimage' => 'cycle', 'horiz' => 'true', 'action' => \Innomatic\Wui\Dispatch\WuiEventsCall::buildEventsCallString('', array(array('view', 'applicationversions', array('id' => $eventData['id'], 'repid' => $eventData['repid'], 'applicationid' => $eventData['applicationid'], 'refresh' => '1')))))); $gPageTitle .= ' - ' . $gLocale->getStr('applicationversions.title'); }