Quand j’installe myplugin pour la première fois, il devrait mettre à jour la colonne location
dans #__update_sites
table avec la chaîne mise à jour qui inclut la clé API.
Je ne parviens pas à mettre à jour lors de la première installation car ma requête ne comprend pas le update_site_id
de #__update_sites_extensions
.
Je me demande pourquoi? Pour cette raison, je suis incapable de mettre à jour la chaîne. Seulement après l'installation peut.
Quelqu'un peut-il indiquer à quel stade joomla met à jour le #__update_sites_extensions
avec le location/ url
?
Existe-t-il également un moyen d'empêcher Joomla d'insérer dans cette table le url
à chaque installation?
en fichier xml:
<updateservers>
<server type="extension" name="myplugin Update Site">https://test.com/jupdates/manifest/myplugin</server>
</updateservers>
Dans script.php
public function postflight()
{
$extensionId = $this->getExtensionId();
$updateSiteId = $this->updateSiteId($extensionId);
$defaultLocation = 'https://test.com/jupdates/manifest/myplugin';
$location = $defaultLocation . '?apikey=' . APIKEY;
mettre à jour la chaîne d'emplacement avec la clé api
$db = JFactory::getDBO();
$query = array();
$query = 'UPDATE '. $db->quoteName('#__update_sites')
. ' SET ' . $db->quoteName('location') . ' = ' . $db->Quote($location)
. ' WHERE ' . $db->quoteName('update_site_id') . ' = ' . $db->Quote($updateSiteId);
$db->setQuery($query);
$db->query();
}
les fonctions:
public function getExtensionId()
{
$db = JFactory::getDBO();
$query = array();
$query[] = 'SELECT ' . $db->quoteName('extension_id') . ' FROM ' . $db->quoteName('#__extensions');
$query[] = 'WHERE ' . $db->quoteName('element') . '=' . $db->Quote('myplugin');
$query[] = 'AND ' . $db->quoteName('type') . '=' . $db->Quote('plugin');
$query = implode(' ', $query);
$db->setQuery($query);
$extensionId = $db->loadResult();
return $extensionId;
}
public function updateSiteId($extensionId)
{
$db = JFactory::getDBO();
$query = array();
$query[] = 'SELECT ' . $db->quoteName('update_site_id') . ' FROM ' . $db->quoteName('#__update_sites_extensions');
$query[] = 'WHERE ' . $db->quoteName('extension_id') . '=' . $db->Quote($extensionId);
$query = implode(' ', $query);
$db->setQuery($query);
$updateSiteId = $db->loadResult();
return $updateSiteId;
}
La définition du serveur de mise à jour n'est chargée dans la base de données que lorsque l'événement onExtensionAfterInstall
est distribué, et cela dépend de l'activation du plug-in "Extension - Joomla".