diff options
author | patdenice <patdenice@piwigo.org> | 2008-11-15 21:10:05 +0000 |
---|---|---|
committer | patdenice <patdenice@piwigo.org> | 2008-11-15 21:10:05 +0000 |
commit | 59af44a8c2f4984e3d68321b5f4289833f8dddb1 (patch) | |
tree | d631241772ac50532f8329bbf1536110b857c7a7 | |
parent | 78edf1906c93af1bad409d4e7c59ab6921888f32 (diff) |
- Add fetchRemote function which allow to retrieve datas over HTTP protocol using cURL method, file_get_contents function or fsockopen method. This allow to retrieve datas or files even if allow_url_fopen is deactivated.
- Use fetchRemote function in plugins manager and in latest version checking.
- Add german translations for upgrade.lang.php.
- Remove empty line at the end of pclzip.lib.php.
- Change display of deactivated plugins after upgrade.
git-svn-id: http://piwigo.org/svn/trunk@2880 68402e56-0260-453c-a942-63ccdbb3a9ee
-rw-r--r-- | admin/include/functions.php | 108 | ||||
-rw-r--r-- | admin/include/functions_upgrade.php | 2 | ||||
-rw-r--r-- | admin/include/pclzip.lib.php | 2 | ||||
-rw-r--r-- | admin/include/plugins.class.php | 12 | ||||
-rw-r--r-- | admin/intro.php | 9 | ||||
-rw-r--r-- | admin/plugins_new.php | 6 | ||||
-rw-r--r-- | admin/plugins_update.php | 6 | ||||
-rw-r--r-- | language/de_DE/admin.lang.php | 2 | ||||
-rw-r--r-- | language/de_DE/upgrade.lang.php | 33 | ||||
-rw-r--r-- | language/en_UK/admin.lang.php | 2 | ||||
-rw-r--r-- | language/es_ES/admin.lang.php | 2 | ||||
-rw-r--r-- | language/fr_FR/admin.lang.php | 2 | ||||
-rw-r--r-- | language/it_IT/admin.lang.php | 2 | ||||
-rw-r--r-- | language/nl_NL/admin.lang.php | 2 |
14 files changed, 144 insertions, 46 deletions
diff --git a/admin/include/functions.php b/admin/include/functions.php index 658033e0c..e67925073 100644 --- a/admin/include/functions.php +++ b/admin/include/functions.php @@ -1922,4 +1922,112 @@ function cat_admin_access($category_id) return true; } +/** + * Retrieve data from external URL + * + * @param string $src: URL + * @param global $dest: can be a file ressource or string + * @return bool + */ +function fetchRemote($src, &$dest, $user_agent='Piwigo', $step=0) +{ + is_resource($dest) or $dest = ''; + + // Try curl to read remote file + if (function_exists('curl_init')) + { + $ch = @curl_init(); + @curl_setopt($ch, CURLOPT_URL, $src); + @curl_setopt($ch, CURLOPT_HEADER, 0); + @curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); + is_resource($dest) ? + @curl_setopt($ch, CURLOPT_FILE, $dest): + @curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + $content = @curl_exec($ch); + @curl_close($ch); + if ($content !== false) + { + is_resource($dest) or $dest = $content; + return true; + } + } + + // Try file_get_contents to read remote file + if (ini_get('allow_url_fopen')) + { + $content = @file_get_contents($src); + if ($content !== false) + { + is_resource($dest) ? @fwrite($dest, $content) : $dest = $content; + return true; + } + } + + // Try fsockopen to read remote file + if ($step > 3) + { + return false; + } + + $src = parse_url($src); + $host = $src['host']; + $path = isset($src['path']) ? $src['path'] : '/'; + $path .= isset($src['query']) ? '?'.$src['query'] : ''; + + if (($s = @fsockopen($host,80,$errno,$errstr,5)) === false) + { + return false; + } + + fwrite($s, + "GET ".$path." HTTP/1.0\r\n" + ."Host: ".$host."\r\n" + ."User-Agent: ".$user_agent."\r\n" + ."Accept: */*\r\n" + ."\r\n" + ); + + $i = 0; + $in_content = false; + while (!feof($s)) + { + $line = fgets($s); + + if (rtrim($line,"\r\n") == '' && !$in_content) + { + $in_content = true; + $i++; + continue; + } + if ($i == 0) + { + if (!preg_match('/HTTP\/(\\d\\.\\d)\\s*(\\d+)\\s*(.*)/',rtrim($line,"\r\n"), $m)) + { + fclose($s); + return false; + } + $status = (integer) $m[2]; + if ($status < 200 || $status >= 400) + { + fclose($s); + return false; + } + } + if (!$in_content) + { + if (preg_match('/Location:\s+?(.+)$/',rtrim($line,"\r\n"),$m)) + { + fclose($s); + return fetchRemote(trim($m[1]),$dest,$user_agent,$step+1); + } + $i++; + continue; + } + is_resource($dest) ? @fwrite($dest, $line) : $dest .= $line; + $i++; + } + fclose($s); + return true; +} + ?>
\ No newline at end of file diff --git a/admin/include/functions_upgrade.php b/admin/include/functions_upgrade.php index 80086c5c9..c80a01848 100644 --- a/admin/include/functions_upgrade.php +++ b/admin/include/functions_upgrade.php @@ -127,7 +127,7 @@ WHERE id IN ("' . implode('","', $plugins) . '") mysql_query($query); array_push($page['infos'], - l10n('deactivated plugins') . '<pre>' . implode(', ', $plugins) . '</pre>'); + l10n('deactivated plugins').'<br /><br /><i>'.implode(', ', $plugins).'</i><br />'); } } diff --git a/admin/include/pclzip.lib.php b/admin/include/pclzip.lib.php index adc5c1992..5acca70bd 100644 --- a/admin/include/pclzip.lib.php +++ b/admin/include/pclzip.lib.php @@ -3565,4 +3565,4 @@ function PclZipUtilTranslateWinPath($p_path, $p_remove_disk_letter=true) } return $p_path; } -?> +?>
\ No newline at end of file diff --git a/admin/include/plugins.class.php b/admin/include/plugins.class.php index ff478be83..13c2940a4 100644 --- a/admin/include/plugins.class.php +++ b/admin/include/plugins.class.php @@ -268,8 +268,7 @@ DELETE FROM ' . PLUGINS_TABLE . ' WHERE id="' . $plugin_id . '"'; $version = PHPWG_VERSION; $versions_to_check = array(); $url = PEM_URL . '/api/get_version_list.php?category_id=12&format=php'; - if ($source = @file_get_contents($url) - and $pem_versions = @unserialize($source)) + if (fetchRemote($url, $result) and $pem_versions = @unserialize($result)) { if (!preg_match('/^\d+\.\d+\.\d+/', $version)) { @@ -308,9 +307,9 @@ DELETE FROM ' . PLUGINS_TABLE . ' WHERE id="' . $plugin_id . '"'; $url .= $new ? '&extension_exclude=' : '&extension_include='; $url .= implode(',', $plugins_to_check); } - if ($source = @file_get_contents($url)) + if (fetchRemote($url, $result)) { - $pem_plugins = @unserialize($source); + $pem_plugins = @unserialize($result); if (!is_array($pem_plugins)) { return false; @@ -321,6 +320,7 @@ DELETE FROM ' . PLUGINS_TABLE . ' WHERE id="' . $plugin_id . '"'; } return true; } + return false; } /** @@ -357,8 +357,10 @@ DELETE FROM ' . PLUGINS_TABLE . ' WHERE id="' . $plugin_id . '"'; { $url = PEM_URL . '/download.php?rid=' . $revision; $url .= '&origin=piwigo_' . $action; - if (@copy($url, $archive)) + + if ($handle = @fopen($archive, 'wb') and fetchRemote($url, $handle)) { + fclose($handle); include(PHPWG_ROOT_PATH.'admin/include/pclzip.lib.php'); $zip = new PclZip($archive); if ($list = $zip->listContent()) diff --git a/admin/intro.php b/admin/intro.php index 1e1b75f45..f118aa678 100644 --- a/admin/intro.php +++ b/admin/intro.php @@ -42,17 +42,14 @@ check_status(ACCESS_ADMINISTRATOR); // Check for upgrade : code inspired from punbb if (isset($_GET['action']) and 'check_upgrade' == $_GET['action']) { - if (!ini_get('allow_url_fopen')) + if (!fetchRemote(PHPWG_URL.'/latest_version', $result)) { - array_push( - $page['errors'], - l10n('Unable to check for upgrade since allow_url_fopen is disabled.') - ); + array_push($page['errors'], l10n('Unable to check for upgrade.')); } else { $versions = array('current' => PHPWG_VERSION); - $lines = @file(PHPWG_URL.'/latest_version'); + $lines = @explode("\r\n", $result); // if the current version is a BSF (development branch) build, we check // the first line, for stable versions, we check the second line diff --git a/admin/plugins_new.php b/admin/plugins_new.php index d2c2ce52f..e86dc0a16 100644 --- a/admin/plugins_new.php +++ b/admin/plugins_new.php @@ -89,11 +89,7 @@ $template->assign('order_selected', $link.$order); // +-----------------------------------------------------------------------+ // | start template output | // +-----------------------------------------------------------------------+ -if (!ini_get('allow_url_fopen')) -{ - array_push($page['errors'], l10n('Unable to retrieve server informations since allow_url_fopen is disabled.')); -} -elseif ($plugins->get_server_plugins(true)) +if ($plugins->get_server_plugins(true)) { $plugins->sort_server_plugins($order); diff --git a/admin/plugins_update.php b/admin/plugins_update.php index 6040a26a3..944fd3b1a 100644 --- a/admin/plugins_update.php +++ b/admin/plugins_update.php @@ -97,11 +97,7 @@ set_plugins_tabsheet($page['page']); // +-----------------------------------------------------------------------+ // | start template output | // +-----------------------------------------------------------------------+ -if (!ini_get('allow_url_fopen')) -{ - array_push($page['errors'], l10n('Unable to connect to PEM server since allow_url_fopen is disabled.')); -} -elseif ($plugins->get_server_plugins()) +if ($plugins->get_server_plugins()) { foreach($plugins->fs_plugins as $plugin_id => $fs_plugin) { diff --git a/language/de_DE/admin.lang.php b/language/de_DE/admin.lang.php index fbbca9b6f..56cf48dc0 100644 --- a/language/de_DE/admin.lang.php +++ b/language/de_DE/admin.lang.php @@ -177,7 +177,7 @@ $lang['Tag selection'] = 'Auswahl von Tags'; $lang['Take selected elements out of caddie'] = 'Verlassen die ausgewählten Elemente im Warenkorb'; $lang['The %d following tag were deleted'] = 'Der folgende Tag wurde gelöscht'; $lang['The %d following tags were deleted'] = 'Die folgenden %d Tags wurden gestrichen'; -$lang['Unable to check for upgrade since allow_url_fopen is disabled.'] = 'Unmöglich die neueste Version, die Funktion allow_url_fopen deaktiviert ist.'; +$lang['Unable to check for upgrade.'] = 'Unmöglich die neueste Version.'; $lang['Uninstall'] = 'Deinstallieren'; $lang['Use default sort order']='Verwenden Sie die Sortierung der Bilder Standard (definiert in der Konfigurationsdatei)'; $lang['User comments validation'] = 'Validierung der Kommentare von Benutzern'; diff --git a/language/de_DE/upgrade.lang.php b/language/de_DE/upgrade.lang.php index a3d684ea4..d3419ae47 100644 --- a/language/de_DE/upgrade.lang.php +++ b/language/de_DE/upgrade.lang.php @@ -21,25 +21,24 @@ // | USA. | // +-----------------------------------------------------------------------+ -/* TODO */ $lang['Upgrade'] = 'Upgrade'; -$lang['introduction message'] = 'This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. -The upgrade assistant thinks you are currently running a <strong>release %s</strong> (or equivalent).'; -$lang['Upgrade from %s to %s'] = 'Upgrade from version %s to %s'; -$lang['Statistics'] = 'Statistics'; -$lang['total upgrade time'] = 'total upgrade time'; -$lang['total SQL time'] = 'total SQL time'; -$lang['SQL queries'] = 'SQL queries'; -$lang['Upgrade informations'] = 'Upgrade informations'; -$lang['perform a maintenance check'] = 'Perform a maintenance check in [Administration>Specials>Maintenance] if you encounter any problem.'; -$lang['deactivated plugins'] = 'As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'; -$lang['upgrade login message'] = 'Only administrator can run upgrade: please sign in below.'; -$lang['You do not have access rights to run upgrade'] = 'You do not have access rights to run upgrade'; -$lang['in include/mysql.inc.php, before ?>, insert:'] = 'In <i>include/mysql.inc.php</i>, before <b>?></b>, insert:'; +$lang['introduction message'] = 'Diese Seite schlägt vor aktualisieren Ihre Datenbank von Ihre alte Version von Piwigo auf die aktuelle Version. +Der Upgrade-Assistent denkt Sie derzeit ein <strong>Freigabe %s</strong> (oder gleichwertig).'; +$lang['Upgrade from %s to %s'] = 'Upgrade von Version %s bis %s'; +$lang['Statistics'] = 'Statistik'; +$lang['total upgrade time'] = 'insgesamt Upgrade-Zeit'; +$lang['total SQL time'] = 'insgesamt SQL-Zeit'; +$lang['SQL queries'] = 'SQL-Abfragen'; +$lang['Upgrade informations'] = 'Upgrade-Informationen'; +$lang['perform a maintenance check'] = 'Führen Sie einen Wartungs-Check am [Administration> Specials> Wartung], wenn Sie auf ein Problem stoßen'; +$lang['deactivated plugins'] = 'Als Vorsichtsmaßnahme folgenden Plugins wurden deaktiviert. Sie müssen prüfen, ob Plugins aktualisieren, bevor sie reactiving:'; +$lang['upgrade login message'] = 'Nur Administrator können Upgrade ausführen : Bitte melden Sie sich an unter.'; +$lang['You do not have access rights to run upgrade'] = 'Sie haben nicht das Recht auf Zugang zum Upgrade ausführen'; +$lang['in include/mysql.inc.php, before ?>, insert:'] = 'In <i>include/mysql.inc.php</i>, vor <b>?></b>, wird Folgendes eingefügt:'; // Upgrade informations from upgrade_1.3.1.php -$lang['all sub-categories of private categories become private'] = 'All sub-categories of private categories become private'; -$lang['user permissions and group permissions have been erased'] = 'User permissions and group permissions have been erased'; -$lang['only thumbnails prefix and webmaster mail saved'] = 'Only thumbnails prefix and webmaster mail address have been saved from previous configuration'; +$lang['all sub-categories of private categories become private'] = 'Alle Unter-Kategorien von privaten Gruppen wirden privaten'; +$lang['user permissions and group permissions have been erased'] = 'Benutzer und Gruppen Berechtigungen wurden gelöscht'; +$lang['only thumbnails prefix and webmaster mail saved'] = 'Nur Miniaturansichten Präfix und Webmaster Mail-Adresse gespeichert wurden aus früheren Konfiguration'; ?>
\ No newline at end of file diff --git a/language/en_UK/admin.lang.php b/language/en_UK/admin.lang.php index cbc4edd91..9c45f1d63 100644 --- a/language/en_UK/admin.lang.php +++ b/language/en_UK/admin.lang.php @@ -177,7 +177,7 @@ $lang['Tag selection'] = 'Tag selection'; $lang['Take selected elements out of caddie'] = 'Take selected elements out of caddie'; $lang['The %d following tag were deleted'] = 'The following tag were deleted'; $lang['The %d following tags were deleted'] = 'The %d following tags were deleted'; -$lang['Unable to check for upgrade since allow_url_fopen is disabled.'] = 'Unable to check for upgrade since allow_url_fopen is disabled.'; +$lang['Unable to check for upgrade.'] = 'Unable to check for upgrade.'; $lang['Uninstall'] = 'Uninstall'; $lang['Use default sort order']='Use the default image sort order (defined in the configuration file)'; $lang['User comments validation'] = 'User comments validation'; diff --git a/language/es_ES/admin.lang.php b/language/es_ES/admin.lang.php index 5dc4b84a7..f6ac154de 100644 --- a/language/es_ES/admin.lang.php +++ b/language/es_ES/admin.lang.php @@ -177,7 +177,7 @@ $lang['Tag selection'] = 'Selección de tags'; $lang['Take selected elements out of caddie'] = 'Sacar los elementos seleccionados de la cesta'; $lang['The %d following tag were deleted'] = 'El tag siguiente ha sido suprimido'; $lang['The %d following tags were deleted'] = 'Los %d tags siguientes han sido suprimidos'; -$lang['Unable to check for upgrade since allow_url_fopen is disabled.'] = 'Imposible conocer la última versión cat la función allow_url_fopen es desactivada.'; +$lang['Unable to check for upgrade.'] = 'Imposible conocer la última versión.'; $lang['Uninstall'] = 'Desinstalar'; $lang['Use default sort order']='Utilizar la orden de selección de las imágenes por defecto (definido en el fichero de configuración)'; $lang['User comments validation'] = 'Validación de los comentarios de utilizadores'; diff --git a/language/fr_FR/admin.lang.php b/language/fr_FR/admin.lang.php index 0ee213afb..6ef5eaf96 100644 --- a/language/fr_FR/admin.lang.php +++ b/language/fr_FR/admin.lang.php @@ -177,7 +177,7 @@ $lang['Tag selection'] = 'Sélection de tags'; $lang['Take selected elements out of caddie'] = 'Sortir les éléments sélectionnés du panier'; $lang['The %d following tag were deleted'] = 'Le tag suivant a été supprimé'; $lang['The %d following tags were deleted'] = 'Les %d tags suivants ont été supprimés'; -$lang['Unable to check for upgrade since allow_url_fopen is disabled.'] = 'Impossible de connaître la dernière version car la fonction allow_url_fopen est désactivée.'; +$lang['Unable to check for upgrade.'] = 'Impossible de connaître la dernière version.'; $lang['Uninstall'] = 'Désinstaller'; $lang['Use default sort order']='Utiliser l\'ordre de tri des images par défaut (défini dans le fichier de configuration)'; $lang['User comments validation'] = 'Validation des commentaires d\'utilisateurs'; diff --git a/language/it_IT/admin.lang.php b/language/it_IT/admin.lang.php index 1f5259b94..c73beb35c 100644 --- a/language/it_IT/admin.lang.php +++ b/language/it_IT/admin.lang.php @@ -177,7 +177,7 @@ $lang['Tag selection'] = 'Selezione dei tags'; $lang['Take selected elements out of caddie'] = 'Estrarre gli elementi selezionati dal cestino';
$lang['The %d following tag were deleted'] = 'Il tag seguente è stato cancellato';
$lang['The %d following tags were deleted'] = 'I %d tags seguenti sono stati cancellati';
-$lang['Unable to check for upgrade since allow_url_fopen is disabled.'] = 'Non è stato possibile identificare l\'ultima versione a causa della funzione allow_url_fopen tuttora disattiva.';
+$lang['Unable to check for upgrade.'] = 'Non è stato possibile identificare l\'ultima versione.';
$lang['Uninstall'] = 'Disinstallare';
$lang['Use default sort order']='Usare l\'ordinamento delle immagini di defaut (cosi come definito nel file di configurazione)';
$lang['User comments validation'] = 'Approvare i commenti degli utenti';
diff --git a/language/nl_NL/admin.lang.php b/language/nl_NL/admin.lang.php index 2371958f0..2f2f5e84f 100644 --- a/language/nl_NL/admin.lang.php +++ b/language/nl_NL/admin.lang.php @@ -177,7 +177,7 @@ $lang['Tag selection'] = 'Tag selectie'; $lang['Take selected elements out of caddie'] = 'Neem geselecteerde elementen uit de caddie'; $lang['The %d following tag were deleted'] = 'De volgende tag is verwijderd'; $lang['The %d following tags were deleted'] = 'De %d volgende tags zijn verwijderd'; -$lang['Unable to check for upgrade since allow_url_fopen is disabled.'] = 'Onnmoglijk om een controlle te doen voor een upgrade omdat allow_url_fopen is uitgeschakeld.'; +$lang['Unable to check for upgrade.'] = 'Onnmoglijk om een controlle te doen voor een upgrade.'; $lang['Uninstall'] = 'Deinstalleren'; $lang['Use default sort order']='Gebruik de standaard sortering (defineerd in de configuratie file)'; $lang['User comments validation'] = 'Gebruikers commentaar valideren'; |