// Merge -> revision 8720
git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@8722 b9a71923-0436-4b27-9f14-aed3839534dd
This commit is contained in:
@@ -459,15 +459,29 @@ $this->standalone = true;
|
||||
}
|
||||
public function ajaxProcessCheckFilesVersion()
|
||||
{
|
||||
if ($testOrigCore = $this->upgrader->isAuthenticPrestashopVersion() !== false)
|
||||
if ($this->upgrader->isAuthenticPrestashopVersion() !== false)
|
||||
{
|
||||
$this->nextParams['status'] = 'ok';
|
||||
$testOrigCore = true;
|
||||
}
|
||||
else
|
||||
$this->nextParams['status'] = 'nok';
|
||||
{
|
||||
$testOrigCore = false;
|
||||
$this->nextParams['status'] = 'warn';
|
||||
}
|
||||
|
||||
$changedFileList = $this->upgrader->getChangedFilesList();
|
||||
|
||||
if ($changedFileList === false)
|
||||
{
|
||||
$changedFileList = array();
|
||||
$this->nextParams['msg'] = $this->l('Unable to check files');
|
||||
$this->nextParams['status'] = 'error';
|
||||
}
|
||||
else
|
||||
{
|
||||
// echo '<img src="'.$originalCore.'" /> '.
|
||||
$this->nextParams['msg'] = ($testOrigCore?$this->l('Core files are ok'):sprintf($this->l('%s core files have been modified'), sizeof($changedFileList)));
|
||||
}
|
||||
$this->nextParams['result'] = $changedFileList;
|
||||
}
|
||||
public function ajaxProcessUpgradeNow()
|
||||
@@ -534,7 +548,7 @@ $this->standalone = true;
|
||||
if (file_exists($destExtract))
|
||||
Tools::deletedirectory($destExtract);
|
||||
|
||||
if (Tools::ZipExtract($filepath,$destExtract))
|
||||
if (self::ZipExtract($filepath,$destExtract))
|
||||
{
|
||||
$adminDir = str_replace($this->prodRootDir, '', $this->adminDir);
|
||||
rename($this->latestRootDir.DIRECTORY_SEPARATOR.'admin', $this->latestRootDir.DIRECTORY_SEPARATOR.$adminDir);
|
||||
@@ -935,9 +949,11 @@ $this->standalone = true;
|
||||
if (self::ZipExtract($filepath, $destExtract))
|
||||
{
|
||||
// once it's restored, do not delete the archive file. This has to be done manually
|
||||
// but we can empty the var, to avoid loop.
|
||||
$this->backupFilesFilename = '';
|
||||
if (!empty($this->backupDbFilename) AND file_exists($this->backupDbFilename) )
|
||||
{
|
||||
$this->nextDesc = $this->l('Files restored. No database backup found. Restoration done.');
|
||||
$this->nextDesc = $this->l('Files restored. Checking next step ...');
|
||||
$this->next = 'rollback';
|
||||
}
|
||||
else
|
||||
@@ -1548,7 +1564,7 @@ txtError[37] = "'.$this->l('The config/defines.inc.php file was not found. Where
|
||||
$srcRootWritable = '../img/admin/disabled.gif';
|
||||
echo '<b>'.$this->l('Root directory status').' : </b>'.'<img src="'.$srcRootWritable.'" /> '.($this->rootWritable?$this->l('fully writable'):$this->l('not writable recursively')).'<br/><br/>';
|
||||
|
||||
if ($this->upgrader->needUpgrade)
|
||||
if ($this->upgrader->need_upgrade)
|
||||
{
|
||||
if ($this->upgrader->autoupgrade)
|
||||
$srcAutoupgrade = '../img/admin/enabled.gif';
|
||||
@@ -1556,6 +1572,12 @@ txtError[37] = "'.$this->l('The config/defines.inc.php file was not found. Where
|
||||
$srcAutoupgrade = '../img/admin/disabled.gif';
|
||||
echo '<b>'.$this->l('Autoupgrade allowed').' : </b>'.'<img src="'.$srcAutoupgrade.'" /> '.($this->upgrader->autoupgrade?$this->l('This release allow autoupgrade.'):$this->l('This release does not allow autoupgrade')).'. <br/><br/>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$srcAutoupgrade = '../img/admin/disabled.gif';
|
||||
echo '<b>'.$this->l('Autoupgrade allowed').' : </b>'.'<img src="../img/admin/disabled.gif" /> . <br/><br/>';
|
||||
}
|
||||
|
||||
|
||||
if (Configuration::get('PS_SHOP_ENABLE'))
|
||||
{
|
||||
@@ -1606,7 +1628,7 @@ txtError[37] = "'.$this->l('The config/defines.inc.php file was not found. Where
|
||||
// echo '<input class="button" type="submit" name="sumbitUpdateVersion" value="'.$this->l('Backup Database, backup files and update right now and in one click !').'"/>';
|
||||
// echo '<input class="button" type="submit" id="refreshCurrent" value="'.$this->l("refresh update dir / current").'"/>';
|
||||
echo '<br/>';
|
||||
if ($this->upgrader->needUpgrade)
|
||||
if ($this->upgrader->need_upgrade)
|
||||
{
|
||||
if($this->configOk())
|
||||
{
|
||||
@@ -2129,8 +2151,12 @@ $js.= '$(document).ready(function(){
|
||||
res = $.parseJSON(res);
|
||||
answer = res.nextParams;
|
||||
$("#checkPrestaShopFilesVersion").html("<span>"+answer.msg+"</span> ");
|
||||
if (answer.status == "error")
|
||||
$("#checkPrestaShopFilesVersion").prepend("<img src=\"../img/admin/warning.gif\" /> ");
|
||||
else
|
||||
{
|
||||
$("#checkPrestaShopFilesVersion").prepend(answer.status);
|
||||
$("#checkPrestaShopFilesVersion").append("<a id=\"toggleChangedList\" class=\"button\" href=\"\">'.$this->l('See or hide the list').'</a><br/>");
|
||||
|
||||
$("#checkPrestaShopFilesVersion").append("<div id=\"changedList\" style=\"display:none \">");
|
||||
|
||||
$("#changedList").html("<ul>");
|
||||
@@ -2139,7 +2165,7 @@ $js.= '$(document).ready(function(){
|
||||
});
|
||||
|
||||
$("#toggleChangedList").bind("click",function(e){e.preventDefault();$("#changedList").toggle();});
|
||||
|
||||
}
|
||||
}
|
||||
,
|
||||
error: function(res,textStatus,jqXHR)
|
||||
|
||||
@@ -25,19 +25,19 @@
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
class UpgraderCore{
|
||||
class UpgraderCore
|
||||
{
|
||||
const DEFAULT_CHECK_VERSION_DELAY_HOURS = 24;
|
||||
public $rss_version_link = 'http://www.prestashop.com/xml/version.xml';
|
||||
public $rss_version_link = 'http://www.prestashop.com/xml/upgrader.xml';
|
||||
public $rss_md5file_link_dir = 'http://www.prestashop.com/xml/md5/';
|
||||
/**
|
||||
* link contains hte url where to download the file
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $needUpgrade = false;
|
||||
private $noRefresh = false;
|
||||
private $changedFiles = array();
|
||||
private $missingFiles = array();
|
||||
private $need_upgrade = false;
|
||||
private $changed_files = array();
|
||||
private $missing_files = array();
|
||||
|
||||
public $version_name;
|
||||
public $version_num;
|
||||
@@ -49,18 +49,9 @@ class UpgraderCore{
|
||||
|
||||
public function __get($var)
|
||||
{
|
||||
if($var == 'needUpgrade')
|
||||
if ($var == 'need_upgrade')
|
||||
return $this->isLastVersion();
|
||||
}
|
||||
/**
|
||||
* we need to checkPSVersion when we use that class
|
||||
* @param boolean noRefresh if true, checkPSVersion will not refresh its information
|
||||
* @return object Upgrader
|
||||
*/
|
||||
public function __construct($noRefresh = false)
|
||||
{
|
||||
$this->noRefresh = (bool)$noRefresh;
|
||||
}
|
||||
|
||||
/**
|
||||
* downloadLast download the last version of PrestaShop and save it in $dest/$filename
|
||||
@@ -86,7 +77,7 @@ class UpgraderCore{
|
||||
if (empty($this->link))
|
||||
$this->checkPSVersion();
|
||||
|
||||
return $this->needUpgrade;
|
||||
return $this->need_upgrade;
|
||||
|
||||
}
|
||||
|
||||
@@ -100,14 +91,14 @@ class UpgraderCore{
|
||||
if (empty($this->link))
|
||||
{
|
||||
if (class_exists('Configuration'))
|
||||
$lastCheck = Configuration::get('PS_LAST_VERSION_CHECK');
|
||||
$last_check = Configuration::get('PS_LAST_VERSION_CHECK');
|
||||
else
|
||||
$lastCheck = 0;
|
||||
$last_check = 0;
|
||||
// if we use the autoupgrade process, we will never refresh it
|
||||
// except if no check has been done before
|
||||
if ($force OR ($lastCheck < time() - (3600 * Upgrader::DEFAULT_CHECK_VERSION_DELAY_HOURS)) )
|
||||
if ($force || ($last_check < time() - (3600 * Upgrader::DEFAULT_CHECK_VERSION_DELAY_HOURS)))
|
||||
{
|
||||
libxml_set_streams_context(stream_context_create(array('http' => array('timeout' => 3))));
|
||||
libxml_set_streams_context(@stream_context_create(array('http' => array('timeout' => 3))));
|
||||
if ($feed = @simplexml_load_file($this->rss_version_link))
|
||||
{
|
||||
|
||||
@@ -119,7 +110,7 @@ class UpgraderCore{
|
||||
$this->autoupgrade = (int)$feed->autoupgrade;
|
||||
$this->autoupgrade_module = (int)$feed->autoupgrade_module;
|
||||
$this->desc = (string)$feed->desc ;
|
||||
$configLastVersion = array(
|
||||
$config_last_version = array(
|
||||
'name' => $this->version_name,
|
||||
'num' => $this->version_num,
|
||||
'link' => $this->link,
|
||||
@@ -131,22 +122,22 @@ class UpgraderCore{
|
||||
);
|
||||
if (class_exists('Configuration'))
|
||||
{
|
||||
Configuration::updateValue('PS_LAST_VERSION',serialize($configLastVersion));
|
||||
Configuration::updateValue('PS_LAST_VERSION', serialize($config_last_version));
|
||||
Configuration::updateValue('PS_LAST_VERSION_CHECK',time());
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$lastVersionCheck = @unserialize(Configuration::get('PS_LAST_VERSION'));
|
||||
$this->version_name = $lastVersionCheck['name'];
|
||||
$this->version_num = $lastVersionCheck['num'];
|
||||
$this->link = $lastVersionCheck['link'];
|
||||
$this->autoupgrade = $lastVersionCheck['autoupgrade'];
|
||||
$this->autoupgrade_module = $lastVersionCheck['autoupgrade_module'];
|
||||
$this->md5 = $lastVersionCheck['md5'];
|
||||
$this->desc = $lastVersionCheck['desc'];
|
||||
$this->changelog = $lastVersionCheck['changelog'];
|
||||
$last_version_check = @unserialize(Configuration::get('PS_LAST_VERSION'));
|
||||
$this->version_name = $last_version_check['name'];
|
||||
$this->version_num = $last_version_check['num'];
|
||||
$this->link = $last_version_check['link'];
|
||||
$this->autoupgrade = $last_version_check['autoupgrade'];
|
||||
$this->autoupgrade_module = $last_version_check['autoupgrade_module'];
|
||||
$this->md5 = $last_version_check['md5'];
|
||||
$this->desc = $last_version_check['desc'];
|
||||
$this->changelog = $last_version_check['changelog'];
|
||||
}
|
||||
}
|
||||
// retro-compatibility :
|
||||
@@ -154,7 +145,7 @@ class UpgraderCore{
|
||||
// false otherwise
|
||||
if (version_compare(_PS_VERSION_, $this->version_num, '<'))
|
||||
{
|
||||
$this->needUpgrade = true;
|
||||
$this->need_upgrade = true;
|
||||
return array('name' => $this->version_name, 'link' => $this->link);
|
||||
}
|
||||
else
|
||||
@@ -163,63 +154,69 @@ class UpgraderCore{
|
||||
|
||||
public function getChangedFilesList()
|
||||
{
|
||||
$checksum = simplexml_load_file($this->rss_md5file_link_dir._PS_VERSION_.'.xml');
|
||||
if (count($this->changed_files) == 0)
|
||||
{
|
||||
$checksum = @simplexml_load_file($this->rss_md5file_link_dir._PS_VERSION_.'.xml');
|
||||
if ($checksum === false)
|
||||
throw new Exception('No checksum xml file for your Prestashop version');
|
||||
$this->browseXmlAndCompare($checksum);
|
||||
|
||||
return $this->changedFiles;
|
||||
return false;
|
||||
else
|
||||
$this->browseXmlAndCompare($checksum->ps_root_dir[0]);
|
||||
}
|
||||
return $this->changed_files;
|
||||
}
|
||||
protected function addChangedFile($path)
|
||||
{
|
||||
$this->versionIsModified = true;
|
||||
$this->changedFiles[] = $path;
|
||||
//array_unique($this->changedFiles);
|
||||
$this->version_is_modified = true;
|
||||
$this->changed_files[] = $path;
|
||||
//array_unique($this->changed_files);
|
||||
}
|
||||
|
||||
protected function addMissingFile($path)
|
||||
{
|
||||
$this->versionIsModified = true;
|
||||
$this->missingFiles[] = $path;
|
||||
$this->version_is_modified = true;
|
||||
$this->missing_files[] = $path;
|
||||
//array_unique($this->missingFile);
|
||||
}
|
||||
|
||||
protected function browseXmlAndCompare($node, &$currentPath = array(), $level = 0)
|
||||
protected function browseXmlAndCompare($node, &$current_path = array(), $level = 1)
|
||||
{
|
||||
foreach ($node as $key => $child)
|
||||
{
|
||||
if (is_object($child) && $child->getName() != 'md5file')
|
||||
if (is_object($child) && $child->getName() == 'dir')
|
||||
{
|
||||
$level += 1;
|
||||
$currentPath[$level] = $child->getName();
|
||||
$this->browseXmlAndCompare($child, $currentPath, $level);
|
||||
$level -= 1;
|
||||
$current_path[$level] = (string)$child['name'];
|
||||
$this->browseXmlAndCompare($child, $current_path, $level + 1);
|
||||
}
|
||||
else
|
||||
else if (is_object($child) && $child->getName() == 'md5file')
|
||||
{
|
||||
$path = '';
|
||||
for ($i=1;$i<=$level;$i++)
|
||||
$path .= $currentPath[$i].'/';
|
||||
$path .= (string)$child->attributes()->name;
|
||||
$path = _PS_ROOT_DIR_.DIRECTORY_SEPARATOR;
|
||||
for ($i = 1; $i < $level; $i++)
|
||||
$path .= $current_path[$i].'/';
|
||||
$path .= (string)$child['name'];
|
||||
$path = str_replace('ps_root_dir',_PS_ROOT_DIR_,$path);
|
||||
|
||||
// replace default admin dir by current one
|
||||
$path = str_replace(_PS_ROOT_DIR_.'/admin', _PS_ADMIN_DIR_, $path);
|
||||
if(!file_exists($path))
|
||||
$this->addMissingFile($path);
|
||||
else if (!$this->compareChecksum($path, (string)$child->attributes()->sum))
|
||||
else if (!$this->compareChecksum($path, (string)$child))
|
||||
$this->addChangedFile($path);
|
||||
// else, file is original (and ok)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function compareChecksum($path, $originalSum)
|
||||
protected function compareChecksum($path, $original_sum)
|
||||
{
|
||||
if (md5_file($path) == $originalSum)
|
||||
if (md5_file($path) == $original_sum)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public function isAuthenticPrestashopVersion()
|
||||
{
|
||||
return !$this->versionIsModified;
|
||||
$this->getChangedFilesList();
|
||||
return !$this->version_is_modified;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -24,11 +24,8 @@ $_MODULE['<{autoupgrade}prestashop>adminselfupgrade_4f7c02592a962e40a920f32f3a24
|
||||
$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_3f10faa8b44a7175ae8fc5dcb8dec5de'] = 'Tous les fichiers ont été mis à jour. Mise à jour de la base de données en cours.';
|
||||
$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_1ad932e3b85eb2907a817cd3e3e6907e'] = 'Erreur pour la mise à jour de %s';
|
||||
$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_078a325fbcc1dbd50bd9f969ce954965'] = 'encore %2$s fichiers à mettre à jour.';
|
||||
$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_62740df131433ec9d45bf1810eefb19b'] = 'erreur pendant la mise à jour de la base de données.';
|
||||
$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_9a2f2cf276ea9f79b31a815897c0e3e6'] = '%s ignoré.';
|
||||
$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_63ded4905ba41ac4bf00373df2739576'] = 'création du répertoire %2$s. encore %3$s fichiers à mettre à jour.';
|
||||
$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_11978affb3b0dbb16c50d571fd05de6d'] = 'erreur lors de la création du répertoire %s';
|
||||
$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_1b854285afc1988b6f83414fde5943ab'] = '%1$s copié dans %2$s. encore %3$s fichiers à mettre à jour.';
|
||||
$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_0e06ce0972ad338e1d96e8589dc21b9c'] = 'erreur lors de la copie de %1$s vers %2$s';
|
||||
$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_5f7f50973696d0a42c1efcc07f7820a0'] = 'Votre site est maintenant restauré.';
|
||||
$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_28517b8a291c50d80aa53a078407065b'] = 'Répertoire racine nettoyée.';
|
||||
@@ -138,9 +135,8 @@ $_MODULE['<{autoupgrade}prestashop>adminselfupgrade_7f786b903ea8045f5b5b7e3c5a4e
|
||||
$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_3a3a651c9a67bca9ac902da789466b93'] = 'Mise à jour instable';
|
||||
$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_a22eff458b4f4bce6d3232e367ff0138'] = 'Votre configuration actuelle indique que vous voulez mettre à jour votre système à partir d\'une branche de développement instable, sans numéro de version. Si vous mettez à jour, vous ne pourrez plus appliquer le processus de versions stables officiel.';
|
||||
$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_dae8ace18bdcbcc6ae5aece263e14fe8'] = 'Options';
|
||||
$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_c747916b25dcb02e0e81ee84dbd966ea'] = 'Vous n\'avez pas besoin d\'utiliser cette fonctionnalité.';
|
||||
$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_6b3930a184368a458be6e4429f409877'] = 'Mise à jour terminée. Vérifiez votre boutique (essayez de faire une commande, vérifier le thème)';
|
||||
$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_91195bbbacc2147a736c849c46368ed8'] = 'Voulez vous restaurer votre boutique';
|
||||
$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_6b3930a184368a458be6e4429f409877'] = 'Mise à jour terminée. Vérifiez votre boutique (essayez de faire une commande, vérifier le thème)';
|
||||
$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_a498f9476a893d51ee02b3601678d318'] = 'Cliquez pour restaurer la base de donnée';
|
||||
$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_f34d5debb2bba76aa3e077937a07e373'] = 'Cliquez pour restaurer les fichiers';
|
||||
$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_60283aa37e2063b2ada2f99216e1332a'] = 'Votre serveur ne peut pas télécharger le fichier. S\'il vous plaît le télécharger d\'abord par ftp dans votre répertoire admin/autoupgrade';
|
||||
|
||||
Reference in New Issue
Block a user