/** * Parses the raw INI data into an array of update information * @param string $rawData The raw INI data * @return array The parsed data */ private function parseINI($rawData) { $ret = array('version' => '', 'date' => '', 'stability' => '', 'downloadURL' => '', 'infoURL' => '', 'releasenotes' => ''); // Get the magic string $magicPos = strpos($rawData, '; Live Update provision file'); if ($magicPos === false) { // That's not an INI file :( return $ret; } if ($magicPos !== 0) { $rawData = substr($rawData, $magicPos); } require_once dirname(__FILE__) . '/inihelper.php'; $iniData = LiveUpdateINIHelper::parse_ini_file($rawData, false, true); // Get the supported platforms $supportedPlatform = false; $versionParts = explode('.', JVERSION); $currentPlatform = $versionParts[0] . '.' . $versionParts[1]; if (array_key_exists('platforms', $iniData)) { $rawPlatforms = explode(',', $iniData['platforms']); foreach ($rawPlatforms as $platform) { $platform = trim($platform); if (substr($platform, 0, 7) != 'joomla/') { echo 'continue'; continue; } $platform = substr($platform, 7); if ($currentPlatform == $platform) { $supportedPlatform = true; } } } else { // Lies, damn lies $supportedPlatform = true; } if (!$supportedPlatform) { return $ret; } $ret['version'] = array_key_exists('version', $iniData) ? $iniData['version'] : ''; $ret['date'] = array_key_exists('date', $iniData) ? $iniData['date'] : ''; $config = LiveUpdateConfig::getInstance(); $auth = $config->getAuthorization(); if (!array_key_exists('link', $iniData)) { $iniData['link'] = ''; } $glue = strpos($iniData['link'], '?') === false ? '?' : '&'; $ret['downloadURL'] = $iniData['link'] . (empty($auth) ? '' : $glue . $auth); if (array_key_exists('stability', $iniData)) { $stability = $iniData['stability']; } else { // Stability not defined; guesswork mode enabled $version = $ret['version']; if (preg_match('#^[0-9\\.]*a[0-9\\.]*#', $version) == 1) { $stability = 'alpha'; } elseif (preg_match('#^[0-9\\.]*b[0-9\\.]*#', $version) == 1) { $stability = 'beta'; } elseif (preg_match('#^[0-9\\.]*rc[0-9\\.]*#', $version) == 1) { $stability = 'rc'; } elseif (preg_match('#^[0-9\\.]*$#', $version) == 1) { $stability = 'stable'; } else { $stability = 'svn'; } } $ret['stability'] = $stability; if (array_key_exists('releasenotes', $iniData)) { $ret['releasenotes'] = $iniData['releasenotes']; } if (array_key_exists('infourl', $iniData)) { $ret['infoURL'] = $iniData['infourl']; } return $ret; }
/** * Parses the raw INI data into an array of update information * @param string $rawData The raw INI data * @return array The parsed data */ private function parseINI($rawData) { $ret = array('version' => '', 'date' => '', 'stability' => '', 'downloadURL' => '', 'infoURL' => '', 'releasenotes' => ''); // Get the magic string $magicPos = strpos($rawData, '; Live Update provision file'); if ($magicPos === false) { // That's not an INI file :( return $ret; } if ($magicPos !== 0) { $rawData = substr($rawData, $magicPos); } require_once dirname(__FILE__) . '/inihelper.php'; $iniData = LiveUpdateINIHelper::parse_ini_file($rawData, false, true); $ret['version'] = $iniData['version']; $ret['date'] = $iniData['date']; $config = LiveUpdateConfig::getInstance(); $auth = $config->getAuthorization(); $glue = strpos($iniData['link'], '?') === false ? '?' : '&'; $ret['downloadURL'] = $iniData['link'] . (empty($auth) ? '' : $glue . $auth); if (array_key_exists('stability', $iniData)) { $stability = $iniData['stability']; } else { // Stability not defined; guesswork mode enabled $version = $ret['version']; if (preg_match('#^[0-9\\.]*a[0-9\\.]*#', $version) == 1) { $stability = 'alpha'; } elseif (preg_match('#^[0-9\\.]*b[0-9\\.]*#', $version) == 1) { $stability = 'beta'; } elseif (preg_match('#^[0-9\\.]*rc[0-9\\.]*#', $version) == 1) { $stability = 'rc'; } elseif (preg_match('#^[0-9\\.]*$#', $version) == 1) { $stability = 'stable'; } else { $stability = 'svn'; } } $ret['stability'] = $stability; if (array_key_exists('releasenotes', $iniData)) { $ret['releasenotes'] = $iniData['releasenotes']; } if (array_key_exists('infourl', $iniData)) { $ret['infoURL'] = $iniData['infourl']; } return $ret; }