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 JUpdaterExtension
+ Graphe d'héritage de JUpdaterExtension:
+ Graphe de collaboration de JUpdaterExtension:

Liste de tous les membres

Fonctions membres publiques

 findUpdate ($options)

Fonctions membres protégées

 _startElement ($parser, $name, $attrs=array())
 _endElement ($parser, $name)
 _characterData ($parser, $data)
- Fonctions membres protégées inherited from JUpdateAdapter
 _getStackLocation ()
 _getLastTag ()

Additional Inherited Members

- 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
 $parent = null
 $db = null
- Attributs protégés inherited from JObject
 $_errors = array()

Description détaillée

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


Documentation des fonctions membres

JUpdaterExtension::_characterData (   $parser,
  $data 
)
protected

Character Parser Function

Paramètres:
object$parserParser object.
object$dataThe data.
Renvoie:
void
Note:
This is public because its called externally.
Depuis:
11.1
A faire:
remove code if(!isset($this->$tag->_data)) $this->$tag->_data = ''; $this->$tag->_data .= $data;

Définition à la ligne 134 du fichier extension.php.

{
$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;
}
}
JUpdaterExtension::_endElement (   $parser,
  $name 
)
protected

Character Parser Function

Paramètres:
object$parserParser object.
object$nameThe name of the element.
Renvoie:
void
Depuis:
11.1

Définition à la ligne 82 du fichier extension.php.

Références JFilterInput\getInstance().

{
array_pop($this->stack);
// @todo remove code: echo 'Closing: '. $name .'<br />';
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))
{
// Target platform isn't a valid field in the update table so unset it to prevent J! from trying to store it
unset($this->currentUpdate ->targetplatform);
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;
}
}

+ Voici le graphe d'appel pour cette fonction :

JUpdaterExtension::_startElement (   $parser,
  $name,
  $attrs = array() 
)
protected

Start element parser callback.

Paramètres:
object$parserThe parser object.
string$nameThe name of the element.
array$attrsThe attributes of the element.
Renvoie:
void
Depuis:
11.1

Définition à la ligne 34 du fichier extension.php.

Références JTable\getInstance().

{
array_push($this->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;
}
break;
}
}

+ Voici le graphe d'appel pour cette fonction :

JUpdaterExtension::findUpdate (   $options)

Finds an update.

Paramètres:
array$optionsUpdate options.
Renvoie:
array Array containing the array of update sites and array of updates
Depuis:
11.1

Définition à la ligne 158 du fichier extension.php.

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

{
$url = $options['location'];
$this->_url = &$url;
$this->updateSiteId = $options['update_site_id'];
if (substr($url, -4) != '.xml')
{
if (substr($url, -1) != '/')
{
$url .= '/';
}
$url .= 'extension.xml';
}
$db = $this->parent->getDBO();
// 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))
{
$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->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))
{
JLog::add("Error parsing url: " . $url, JLog::WARNING, 'updater');
$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;
// <client> has to be 'administrator' or 'site', numeric values are depreceated. See http://docs.joomla.org/Design_of_JUpdate
'Using numeric values for <client> 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);
}

+ Voici le graphe d'appel pour cette fonction :


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