Warning: Cannot modify header information - headers already sent by (output started at /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code:102) in /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code on line 4

Warning: Cannot modify header information - headers already sent by (output started at /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code:102) in /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code on line 4

Warning: Cannot modify header information - headers already sent by (output started at /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code:102) in /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code on line 4

Warning: Cannot modify header information - headers already sent by (output started at /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code:102) in /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code on line 4

Warning: Cannot modify header information - headers already sent by (output started at /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code:102) in /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code on line 4

Warning: Cannot modify header information - headers already sent by (output started at /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code:102) in /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code on line 4
PK´[[¦V‰ index.htmlnuW+A„¶ PK´[[› »§§ updater.phpnuW+A„¶getDBO(); $retval = false; // Push it into an array if (!is_array($eid)) { $query = 'SELECT DISTINCT update_site_id, type, location, last_check_timestamp, extra_query FROM #__update_sites WHERE enabled = 1'; } else { $query = 'SELECT DISTINCT update_site_id, type, location, last_check_timestamp, extra_query FROM #__update_sites' . ' WHERE update_site_id IN' . ' (SELECT update_site_id FROM #__update_sites_extensions WHERE extension_id IN (' . implode(',', $eid) . '))'; } $db->setQuery($query); $results = $db->loadAssocList(); $result_count = count($results); $now = time(); for ($i = 0; $i < $result_count; $i++) { $result = &$results[$i]; $this->setAdapter($result['type']); if (!isset($this->_adapters[$result['type']])) { // Ignore update sites requiring adapters we don't have installed continue; } if ($cacheTimeout > 0) { if (isset($result['last_check_timestamp']) && ($now - $result['last_check_timestamp'] <= $cacheTimeout)) { // Ignore update sites whose information we have fetched within // the cache time limit $retval = true; continue; } } $update_result = $this->_adapters[$result['type']]->findUpdate($result); if (is_array($update_result)) { if (array_key_exists('update_sites', $update_result) && count($update_result['update_sites'])) { $results = JArrayHelper::arrayUnique(array_merge($results, $update_result['update_sites'])); $result_count = count($results); } if (array_key_exists('updates', $update_result) && count($update_result['updates'])) { for ($k = 0, $count = count($update_result['updates']); $k < $count; $k++) { $current_update = &$update_result['updates'][$k]; $current_update->extra_query = $result['extra_query']; $update = JTable::getInstance('update'); $extension = JTable::getInstance('extension'); $uid = $update ->find( array( 'element' => strtolower($current_update->get('element')), 'type' => strtolower($current_update->get('type')), 'client_id' => strtolower($current_update->get('client_id')), 'folder' => strtolower($current_update->get('folder')) ) ); $eid = $extension ->find( array( 'element' => strtolower($current_update->get('element')), 'type' => strtolower($current_update->get('type')), 'client_id' => strtolower($current_update->get('client_id')), 'folder' => strtolower($current_update->get('folder')) ) ); if (!$uid) { // Set the extension id if ($eid) { // We have an installed extension, check the update is actually newer $extension->load($eid); $data = json_decode($extension->manifest_cache, true); if (version_compare($current_update->version, $data['version'], '>') == 1) { $current_update->extension_id = $eid; $current_update->store(); } } else { // A potentially new extension to be installed $current_update->store(); } } else { $update->load($uid); // If there is an update, check that the version is newer then replaces if (version_compare($current_update->version, $update->version, '>') == 1) { $current_update->store(); } } } } } // Finally, update the last update check timestamp $query = $db->getQuery(true) ->update($db->quoteName('#__update_sites')) ->set($db->quoteName('last_check_timestamp') . ' = ' . $db->quote($now)) ->where($db->quoteName('update_site_id') . ' = ' . $db->quote($result['update_site_id'])); $db->setQuery($query); $db->execute(); } return $retval; } /** * Finds an update for an extension * * @param integer $id Id of the extension * * @return mixed * * @since 11.1 */ public function update($id) { $updaterow = JTable::getInstance('update'); $updaterow->load($id); $update = new JUpdate; if ($update->loadFromXML($updaterow->detailsurl)) { return $update->install(); } return false; } } PK´[[5µÆrrupdateadapter.phpnuW+A„¶', $this->stack); } /** * Gets the reference to the last tag * * @return object * * @since 11.1 */ protected function _getLastTag() { return $this->stack[count($this->stack) - 1]; } } PK´[[+.öââ update.phpnuW+A„¶ element * * @var string * @since 11.1 */ protected $name; /** * Update manifest element * * @var string * @since 11.1 */ protected $description; /** * Update manifest element * * @var string * @since 11.1 */ protected $element; /** * Update manifest element * * @var string * @since 11.1 */ protected $type; /** * Update manifest element * * @var string * @since 11.1 */ protected $version; /** * Update manifest element * * @var string * @since 11.1 */ protected $infourl; /** * Update manifest element * * @var string * @since 11.1 */ protected $client; /** * Update manifest element * * @var string * @since 11.1 */ protected $group; /** * Update manifest element * * @var string * @since 11.1 */ protected $downloads; /** * Update manifest element * * @var string * @since 11.1 */ protected $tags; /** * Update manifest element * * @var string * @since 11.1 */ protected $maintainer; /** * Update manifest element * * @var string * @since 11.1 */ protected $maintainerurl; /** * Update manifest element * * @var string * @since 11.1 */ protected $category; /** * Update manifest element * * @var string * @since 11.1 */ protected $relationships; /** * Update manifest element * * @var string * @since 11.1 */ protected $targetplatform; /** * Extra query for download URLs * * @var string * @since 13.1 */ protected $extra_query; /** * Resource handle for the XML Parser * * @var resource * @since 12.1 */ protected $xmlParser; /** * Element call stack * * @var array * @since 12.1 */ protected $stack = array('base'); /** * Unused state array * * @var array * @since 12.1 */ protected $stateStore = array(); /** * Object containing the current update data * * @var stdClass * @since 12.1 */ protected $currentUpdate; /** * Object containing the latest update data * * @var stdClass * @since 12.1 */ protected $latest; /** * Gets the reference to the current direct parent * * @return object * * @since 11.1 */ protected function _getStackLocation() { return implode('->', $this->stack); } /** * Get the last position in stack count * * @return string * * @since 11.1 */ protected function _getLastTag() { return $this->stack[count($this->stack) - 1]; } /** * XML Start Element callback * * @param object $parser Parser object * @param string $name Name of the tag found * @param array $attrs Attributes of the tag * * @return void * * @note This is public because it is called externally * @since 11.1 */ public function _startElement($parser, $name, $attrs = array()) { array_push($this->stack, $name); $tag = $this->_getStackLocation(); // Reset the data if (isset($this->$tag)) { $this->$tag->_data = ""; } switch ($name) { // This is a new update; create a current update case 'UPDATE': $this->currentUpdate = new stdClass; break; // Don't do anything case 'UPDATES': break; // For everything else there's...the default! default: $name = strtolower($name); if (!isset($this->currentUpdate->$name)) { $this->currentUpdate->$name = new stdClass; } $this->currentUpdate->$name->_data = ''; foreach ($attrs as $key => $data) { $key = strtolower($key); $this->currentUpdate->$name->$key = $data; } break; } } /** * Callback for closing the element * * @param object $parser Parser object * @param string $name Name of element that was closed * * @return void * * @note This is public because it is called externally * @since 11.1 */ public function _endElement($parser, $name) { array_pop($this->stack); switch ($name) { // Closing update, find the latest version and check case 'UPDATE': $ver = new JVersion; $product = strtolower(JFilterInput::getInstance()->clean($ver->PRODUCT, 'cmd')); // Check for optional min_dev_level and max_dev_level attributes to further specify targetplatform (e.g., 3.0.1) if (isset($this->currentUpdate->targetplatform->name) && $product == $this->currentUpdate->targetplatform->name && preg_match('/' . $this->currentUpdate->targetplatform->version . '/', $ver->RELEASE) && ((!isset($this->currentUpdate->targetplatform->min_dev_level)) || $ver->DEV_LEVEL >= $this->currentUpdate->targetplatform->min_dev_level) && ((!isset($this->currentUpdate->targetplatform->max_dev_level)) || $ver->DEV_LEVEL <= $this->currentUpdate->targetplatform->max_dev_level)) { // Check if PHP version supported via tag, assume true if tag isn't present if (!isset($this->currentUpdate->php_minimum) || version_compare(PHP_VERSION, $this->currentUpdate->php_minimum->_data, '>=')) { $phpMatch = true; } else { $phpMatch = false; } if ($phpMatch) { if (isset($this->latest)) { if (version_compare($this->currentUpdate->version->_data, $this->latest->version->_data, '>') == 1) { $this->latest = $this->currentUpdate; } } else { $this->latest = $this->currentUpdate; } } } break; case 'UPDATES': // If the latest item is set then we transfer it to where we want to if (isset($this->latest)) { foreach (get_object_vars($this->latest) as $key => $val) { $this->$key = $val; } unset($this->latest); unset($this->currentUpdate); } elseif (isset($this->currentUpdate)) { // The update might be for an older version of j! unset($this->currentUpdate); } break; } } /** * Character Parser Function * * @param object $parser Parser object. * @param object $data The data. * * @return void * * @note This is public because its called externally. * @since 11.1 */ public function _characterData($parser, $data) { $tag = $this->_getLastTag(); // @todo remove code: if(!isset($this->$tag->_data)) $this->$tag->_data = ''; // @todo remove code: $this->$tag->_data .= $data; // Throw the data for this item together $tag = strtolower($tag); if (isset($this->currentUpdate->$tag)) { $this->currentUpdate->$tag->_data .= $data; } } /** * Loads an XML file from a URL. * * @param string $url The URL. * * @return boolean True on success * * @since 11.1 */ public function loadFromXML($url) { $http = JHttpFactory::getHttp(); $response = $http->get($url); if (200 != $response->code) { // TODO: Add a 'mark bad' setting here somehow JLog::add(JText::sprintf('JLIB_UPDATER_ERROR_EXTENSION_OPEN_URL', $url), JLog::WARNING, 'jerror'); return false; } $this->xmlParser = xml_parser_create(''); xml_set_object($this->xmlParser, $this); xml_set_element_handler($this->xmlParser, '_startElement', '_endElement'); xml_set_character_data_handler($this->xmlParser, '_characterData'); if (!xml_parse($this->xmlParser, $response->body)) { die( sprintf( "XML error: %s at line %d", xml_error_string(xml_get_error_code($this->xmlParser)), xml_get_current_line_number($this->xmlParser) ) ); } xml_parser_free($this->xmlParser); return true; } } PK´[[fØÝ»»»adapters/collection.phpnuW+A„¶', $this->stack); } /** * Get the parent tag * * @return string parent * * @since 11.1 */ protected function _getParent() { return end($this->parent); } /** * Opening an XML element * * @param object $parser Parser object * @param string $name Name of element that is opened * @param array $attrs Array of attributes for the element * * @return void * * @since 11.1 */ public function _startElement($parser, $name, $attrs = array()) { array_push($this->stack, $name); $tag = $this->_getStackLocation(); // Reset the data if (isset($this->$tag)) { $this->$tag->_data = ""; } switch ($name) { case 'CATEGORY': if (isset($attrs['REF'])) { $this->update_sites[] = array('type' => 'collection', 'location' => $attrs['REF'], 'update_site_id' => $this->updateSiteId); } else { // This item will have children, so prepare to attach them $this->pop_parent = 1; } break; case 'EXTENSION': $update = JTable::getInstance('update'); $update->set('update_site_id', $this->updateSiteId); foreach ($this->updatecols as $col) { // Reset the values if it doesn't exist if (!array_key_exists($col, $attrs)) { $attrs[$col] = ''; if ($col == 'CLIENT') { $attrs[$col] = 'site'; } } } $client = JApplicationHelper::getClientInfo($attrs['CLIENT'], 1); if (isset($client->id)) { $attrs['CLIENT_ID'] = $client->id; } // Lower case all of the fields foreach ($attrs as $key => $attr) { $values[strtolower($key)] = $attr; } // Only add the update if it is on the same platform and release as we are $ver = new JVersion; // Lower case and remove the exclamation mark $product = strtolower(JFilterInput::getInstance()->clean($ver->PRODUCT, 'cmd')); /* * Set defaults, the extension file should clarify in case but it may be only available in one version * This allows an update site to specify a targetplatform * targetplatformversion can be a regexp, so 1.[56] would be valid for an extension that supports 1.5 and 1.6 * Note: Whilst the version is a regexp here, the targetplatform is not (new extension per platform) * Additionally, the version is a regexp here and it may also be in an extension file if the extension is * compatible against multiple versions of the same platform (e.g. a library) */ if (!isset($values['targetplatform'])) { $values['targetplatform'] = $product; } // Set this to ourself as a default if (!isset($values['targetplatformversion'])) { $values['targetplatformversion'] = $ver->RELEASE; } // Set this to ourself as a default // validate that we can install the extension if ($product == $values['targetplatform'] && preg_match('/' . $values['targetplatformversion'] . '/', $ver->RELEASE)) { $update->bind($values); $this->updates[] = $update; } break; } } /** * Closing an XML element * Note: This is a protected function though has to be exposed externally as a callback * * @param object $parser Parser object * @param string $name Name of the element closing * * @return void * * @since 11.1 */ protected function _endElement($parser, $name) { array_pop($this->stack); switch ($name) { case 'CATEGORY': if ($this->pop_parent) { $this->pop_parent = 0; array_pop($this->parent); } break; } } // Note: we don't care about char data in collection because there should be none /** * Finds an update * * @param array $options Options to use: update_site_id: the unique ID of the update site to look at * * @return array Update_sites and updates discovered * * @since 11.1 */ public function findUpdate($options) { $url = trim($options['location']); $this->updateSiteId = $options['update_site_id']; $appendExtension = false; if (array_key_exists('append_extension', $options)) { $appendExtension = $options['append_extension']; } if ($appendExtension && (substr($url, -4) != '.xml')) { if (substr($url, -1) != '/') { $url .= '/'; } $url .= 'update.xml'; } $this->base = new stdClass; $this->update_sites = array(); $this->updates = array(); $db = $this->parent->getDBO(); $http = JHttpFactory::getHttp(); $response = $http->get($url); // JHttp transport throws an exception when there's no response. try { $response = $http->get($url); } catch (Exception $e) { $response = null; } if (!isset($response) || 200 != $response->code) { // If the URL is missing the .xml extension, try appending it and retry loading the update if (!$appendExtension && (substr($url, -4) != '.xml')) { $options['append_extension'] = true; return $this->findUpdate($options); } $query = $db->getQuery(true) ->update('#__update_sites') ->set('enabled = 0') ->where('update_site_id = ' . $this->updateSiteId); $db->setQuery($query); $db->execute(); JLog::add("Error parsing url: " . $url, JLog::WARNING, 'updater'); $app = JFactory::getApplication(); $app->enqueueMessage(JText::sprintf('JLIB_UPDATER_ERROR_COLLECTION_OPEN_URL', $url), 'warning'); return false; } $this->xmlParser = xml_parser_create(''); xml_set_object($this->xmlParser, $this); xml_set_element_handler($this->xmlParser, '_startElement', '_endElement'); if (!xml_parse($this->xmlParser, $response->body)) { // If the URL is missing the .xml extension, try appending it and retry loading the update if (!$appendExtension && (substr($url, -4) != '.xml')) { $options['append_extension'] = true; return $this->findUpdate($options); } JLog::add("Error parsing url: " . $url, JLog::WARNING, 'updater'); $app = JFactory::getApplication(); $app->enqueueMessage(JText::sprintf('JLIB_UPDATER_ERROR_COLLECTION_PARSE_URL', $url), 'warning'); return false; } // TODO: Decrement the bad counter if non-zero return array('update_sites' => $this->update_sites, 'updates' => $this->updates); } } PK´[[±çR ggadapters/extension.phpnuW+A„¶stack, $name); $tag = $this->_getStackLocation(); // Reset the data if (isset($this->$tag)) { $this->$tag->_data = ""; } switch ($name) { case 'UPDATE': $this->currentUpdate = JTable::getInstance('update'); $this->currentUpdate->update_site_id = $this->updateSiteId; $this->currentUpdate->detailsurl = $this->_url; $this->currentUpdate->folder = ""; $this->currentUpdate->client_id = 1; break; // Don't do anything case 'UPDATES': break; default: if (in_array($name, $this->updatecols)) { $name = strtolower($name); $this->currentUpdate->$name = ''; } if ($name == 'TARGETPLATFORM') { $this->currentUpdate->targetplatform = $attrs; } if ($name == 'PHP_MINIMUM') { $this->currentUpdate->php_minimum = ''; } break; } } /** * Character Parser Function * * @param object $parser Parser object. * @param object $name The name of the element. * * @return void * * @since 11.1 */ protected function _endElement($parser, $name) { array_pop($this->stack); // @todo remove code: echo 'Closing: '. $name .'
'; switch ($name) { case 'UPDATE': $ver = new JVersion; // Lower case and remove the exclamation mark $product = strtolower(JFilterInput::getInstance()->clean($ver->PRODUCT, 'cmd')); // Check that the product matches and that the version matches (optionally a regexp) // Check for optional min_dev_level and max_dev_level attributes to further specify targetplatform (e.g., 3.0.1) if ($product == $this->currentUpdate->targetplatform['NAME'] && preg_match('/' . $this->currentUpdate->targetplatform['VERSION'] . '/', $ver->RELEASE) && ((!isset($this->currentUpdate->targetplatform->min_dev_level)) || $ver->DEV_LEVEL >= $this->currentUpdate->targetplatform->min_dev_level) && ((!isset($this->currentUpdate->targetplatform->max_dev_level)) || $ver->DEV_LEVEL <= $this->currentUpdate->targetplatform->max_dev_level)) { // Check if PHP version supported via tag, assume true if tag isn't present if (!isset($this->currentUpdate->php_minimum) || version_compare(PHP_VERSION, $this->currentUpdate->php_minimum, '>=')) { $phpMatch = true; } else { // Notify the user of the potential update $msg = JText::sprintf( 'JLIB_INSTALLER_AVAILABLE_UPDATE_PHP_VERSION', $this->currentUpdate->name, $this->currentUpdate->version, $this->currentUpdate->php_minimum, PHP_VERSION ); JFactory::getApplication()->enqueueMessage($msg, 'warning'); $phpMatch = false; } // Target platform and php_minimum aren't valid fields in the update table so unset them to prevent J! from trying to store them unset($this->currentUpdate->targetplatform); unset($this->currentUpdate->php_minimum); if ($phpMatch) { if (isset($this->latest)) { if (version_compare($this->currentUpdate->version, $this->latest->version, '>') == 1) { $this->latest = $this->currentUpdate; } } else { $this->latest = $this->currentUpdate; } } } break; case 'UPDATES': // :D break; } } /** * Character Parser Function * * @param object $parser Parser object. * @param object $data The data. * * @return void * * @note This is public because its called externally. * @since 11.1 */ protected function _characterData($parser, $data) { $tag = $this->_getLastTag(); /** * @todo remove code * if(!isset($this->$tag->_data)) $this->$tag->_data = ''; * $this->$tag->_data .= $data; */ if (in_array($tag, $this->updatecols)) { $tag = strtolower($tag); $this->currentUpdate->$tag .= $data; } if ($tag == 'PHP_MINIMUM') { $this->currentUpdate->php_minimum = $data; } } /** * Finds an update. * * @param array $options Update options. * * @return array Array containing the array of update sites and array of updates * * @since 11.1 */ public function findUpdate($options) { $url = trim($options['location']); $this->_url = &$url; $this->updateSiteId = $options['update_site_id']; $appendExtension = false; if (array_key_exists('append_extension', $options)) { $appendExtension = $options['append_extension']; } if ($appendExtension && (substr($url, -4) != '.xml')) { if (substr($url, -1) != '/') { $url .= '/'; } $url .= 'extension.xml'; } $db = $this->parent->getDBO(); $http = JHttpFactory::getHttp(); // JHttp transport throws an exception when there's no reponse. try { $response = $http->get($url); } catch (Exception $e) { $response = null; } if (!isset($response) || (!empty($response->code) && 200 != $response->code)) { // If the URL is missing the .xml extension, try appending it and retry loading the update if (!$appendExtension && (substr($url, -4) != '.xml')) { $options['append_extension'] = true; return $this->findUpdate($options); } $query = $db->getQuery(true) ->update('#__update_sites') ->set('enabled = 0') ->where('update_site_id = ' . $this->updateSiteId); $db->setQuery($query); $db->execute(); JLog::add("Error opening url: " . $url, JLog::WARNING, 'updater'); $app = JFactory::getApplication(); $app->enqueueMessage(JText::sprintf('JLIB_UPDATER_ERROR_EXTENSION_OPEN_URL', $url), 'warning'); return false; } $this->xmlParser = xml_parser_create(''); xml_set_object($this->xmlParser, $this); xml_set_element_handler($this->xmlParser, '_startElement', '_endElement'); xml_set_character_data_handler($this->xmlParser, '_characterData'); if (!xml_parse($this->xmlParser, $response->body)) { // If the URL is missing the .xml extension, try appending it and retry loading the update if (!$appendExtension && (substr($url, -4) != '.xml')) { $options['append_extension'] = true; return $this->findUpdate($options); } JLog::add("Error parsing url: " . $url, JLog::WARNING, 'updater'); $app = JFactory::getApplication(); $app->enqueueMessage(JText::sprintf('JLIB_UPDATER_ERROR_EXTENSION_PARSE_URL', $url), 'warning'); return false; } xml_parser_free($this->xmlParser); if (isset($this->latest)) { if (isset($this->latest->client) && strlen($this->latest->client)) { if (is_numeric($this->latest->client)) { $byName = false; // has to be 'administrator' or 'site', numeric values are deprecated. See http://docs.joomla.org/Design_of_JUpdate JLog::add( 'Using numeric values for in the updater xml is deprecated. Use \'administrator\' or \'site\' instead.', JLog::WARNING, 'deprecated' ); } else { $byName = true; } $this->latest->client_id = JApplicationHelper::getClientInfo($this->latest->client, $byName)->id; unset($this->latest->client); } $updates = array($this->latest); } else { $updates = array(); } return array('update_sites' => array(), 'updates' => $updates); } } PK´[[¦V‰adapters/index.htmlnuW+A„¶ PK´[[¦V‰ index.htmlnuW+A„¶PK´[[› »§§ Yupdater.phpnuW+A„¶PK´[[5µÆrr;updateadapter.phpnuW+A„¶PK´[[+.öââ îupdate.phpnuW+A„¶PK´[[fØÝ»»» =adapters/collection.phpnuW+A„¶PK´[[±çR gg Zadapters/extension.phpnuW+A„¶PK´[[¦V‰¹yadapters/index.htmlnuW+A„¶PK0z