Joomla Platform  13.1
Documentation des API du framework Joomla Platform
 Tout Classes Espaces de nommage Fichiers Fonctions Variables Pages
Référence de la classe JUpdaterCollection
+ Graphe d'héritage de JUpdaterCollection:
+ Graphe de collaboration de JUpdaterCollection:

Liste de tous les membres

Fonctions membres publiques

 _startElement ($parser, $name, $attrs=array())
 findUpdate ($options)

Fonctions membres protégées

 _getStackLocation ()
 _getParent ()
 _endElement ($parser, $name)
- Fonctions membres protégées inherited from JUpdateAdapter
 _getLastTag ()

Attributs protégés

 $base
 $parent = array(0)
 $pop_parent = 0
 $update_sites
 $updates
- Attributs protégés inherited from JUpdateAdapter
 $xmlParser
 $stack = array('base')
 $updateSiteId = 0
 $updatecols = array('NAME', 'ELEMENT', 'TYPE', 'FOLDER', 'CLIENT', 'VERSION', 'DESCRIPTION', 'INFOURL')
- Attributs protégés inherited from JAdapterInstance
 $db = null
- Attributs protégés inherited from JObject
 $_errors = array()

Description détaillée

Définition à la ligne 21 du fichier collection.php.


Documentation des fonctions membres

JUpdaterCollection::_endElement (   $parser,
  $name 
)
protected

Closing an XML element Note: This is a protected function though has to be exposed externally as a callback

Paramètres:
object$parserParser object
string$nameName of the element closing
Renvoie:
void
Depuis:
11.1

Définition à la ligne 190 du fichier collection.php.

{
array_pop($this->stack);
switch ($name)
{
case 'CATEGORY':
if ($this->pop_parent)
{
$this->pop_parent = 0;
array_pop($this->parent);
}
break;
}
}
JUpdaterCollection::_getParent ( )
protected

Get the parent tag

Renvoie:
string parent
Depuis:
11.1

Définition à la ligne 78 du fichier collection.php.

{
return end($this->parent);
}
JUpdaterCollection::_getStackLocation ( )
protected

Gets the reference to the current direct parent

Renvoie:
object
Depuis:
11.1

Réimplémentée à partir de JUpdateAdapter.

Définition à la ligne 66 du fichier collection.php.

{
return implode('->', $this->stack);
}
JUpdaterCollection::_startElement (   $parser,
  $name,
  $attrs = array() 
)

Opening an XML element

Paramètres:
object$parserParser object
string$nameName of element that is opened
array$attrsArray of attributes for the element
Renvoie:
void
Depuis:
11.1

Définition à la ligne 94 du fichier collection.php.

Références JFilterInput\getInstance(), et JTable\getInstance().

{
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;
}
}

+ Voici le graphe d'appel pour cette fonction :

JUpdaterCollection::findUpdate (   $options)

Finds an update

Paramètres:
array$optionsOptions to use: update_site_id: the unique ID of the update site to look at
Renvoie:
array Update_sites and updates discovered
Depuis:
11.1

Définition à la ligne 216 du fichier collection.php.

Références JLog\add(), JFactory\getApplication(), JHttpFactory\getHttp(), JText\sprintf(), et JLog\WARNING.

{
$url = $options['location'];
$this->updateSiteId = $options['update_site_id'];
if (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();
$response = $http->get($url);
// JHttp transport throws an exception when there's no reponse.
try
{
$response = $http->get($url);
}
catch (Exception $e)
{
$response = null;
}
if (!isset($response) || 200 != $response->code)
{
$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->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))
{
JLog::add("Error parsing url: " . $url, JLog::WARNING, 'updater');
$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);
}

+ Voici le graphe d'appel pour cette fonction :


Documentation des données membres

JUpdaterCollection::$base
protected

Définition à la ligne 29 du fichier collection.php.

JUpdaterCollection::$parent = array(0)
protected

Réimplémentée à partir de JAdapterInstance.

Définition à la ligne 37 du fichier collection.php.

JUpdaterCollection::$pop_parent = 0
protected

Définition à la ligne 45 du fichier collection.php.

JUpdaterCollection::$update_sites
protected

Définition à la ligne 50 du fichier collection.php.

JUpdaterCollection::$updates
protected

Définition à la ligne 57 du fichier collection.php.


La documentation de cette classe a été générée à partir du fichier suivant :