aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2014-01-26 22:32:30 +0100
committerGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2014-01-26 22:32:30 +0100
commit311ea6f52f1bdff15b92078d94ddca2921ff808e (patch)
tree69050be0da91db15e84f5e6c9477f13895fd5d83
parent3fd1e051a736b26606b1f7118c0643102835a325 (diff)
Meilleure mise à jour avec les favicons
Implémente https://github.com/marienfressinaud/FreshRSS/issues/327#issuecomment-33329115
-rw-r--r--p/i/install.php74
1 files changed, 50 insertions, 24 deletions
diff --git a/p/i/install.php b/p/i/install.php
index 5addfb527..8002a45da 100644
--- a/p/i/install.php
+++ b/p/i/install.php
@@ -87,6 +87,8 @@ SET f.cache_nbEntries=x.nbEntries, f.cache_nbUnreads=x.nbUnreads
');
define('SQL_UPDATE_HISTORYv007b', 'UPDATE `%1$sfeed` SET keep_history = CASE WHEN keep_history = 0 THEN -2 WHEN keep_history = 1 THEN -1 ELSE keep_history END;');
+
+define('SQL_GET_FEEDS', 'SELECT id, url, website FROM `%1$sfeed`;');
//</updates>
// gestion internationalisation
@@ -310,14 +312,6 @@ function updateDatabase($perform = false) {
$stm->execute();
}
- $sql = sprintf(SQL_UPDATE_HISTORYv007b, $_SESSION['bd_prefix_user']);
- $stm = $c->prepare($sql);
- $stm->execute();
-
- $sql = sprintf(SQL_UPDATE_CACHED_VALUES, $_SESSION['bd_prefix_user']);
- $stm = $c->prepare($sql);
- $stm->execute();
-
$sql = sprintf(SQL_CONVERT_SELECTv006, $_SESSION['bd_prefix'], $_SESSION['bd_prefix_user']);
if (!$perform) {
$sql .= ' LIMIT 1';
@@ -339,6 +333,7 @@ function updateDatabase($perform = false) {
$content = unserialize(gzinflate(base64_decode($row['content'])));
$stm2->execute(array($content, $id));
}
+
return true;
} catch (PDOException $e) {
return false;
@@ -346,6 +341,51 @@ function updateDatabase($perform = false) {
return false;
}
+function newPdo() {
+ switch ($_SESSION['bd_type']) {
+ case 'mysql':
+ $str = 'mysql:host=' . $_SESSION['bd_host'] . ';dbname=' . $_SESSION['bd_base'];
+ $driver_options = array(
+ PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
+ );
+ break;
+ case 'sqlite':
+ $str = 'sqlite:' . DATA_PATH . $_SESSION['bd_base'] . '.sqlite';
+ $driver_options = null;
+ break;
+ default:
+ return false;
+ }
+ return new PDO($str, $_SESSION['bd_user'], $_SESSION['bd_password'], $driver_options);
+}
+
+function postUpdate() {
+ $c = newPdo();
+
+ $sql = sprintf(SQL_UPDATE_HISTORYv007b, $_SESSION['bd_prefix_user']);
+ $stm = $c->prepare($sql);
+ $stm->execute();
+
+ $sql = sprintf(SQL_UPDATE_CACHED_VALUES, $_SESSION['bd_prefix_user']);
+ $stm = $c->prepare($sql);
+ $stm->execute();
+
+ //<favicons>
+ $sql = sprintf(SQL_GET_FEEDS, $_SESSION['bd_prefix_user']);
+ $stm = $c->prepare($sql);
+ $stm->execute();
+ $res = $stm->fetchAll(PDO::FETCH_ASSOC);
+ foreach ($res as $feed) {
+ if (empty($feed['url'])) {
+ continue;
+ }
+ $hash = hash('crc32b', $_SESSION['salt'] . $feed['url']);
+ @file_put_contents(DATA_PATH . '/favicons/' . $hash . '.txt',
+ empty($feed['website']) ? $feed['url'] : $feed['website']);
+ }
+ //</favicons>
+}
+
function deleteInstall () {
$res = unlink (INDEX_PATH . '/install.php');
if ($res) {
@@ -360,22 +400,7 @@ function deleteInstall () {
}
try {
- switch ($_SESSION['bd_type']) {
- case 'mysql':
- $str = 'mysql:host=' . $_SESSION['bd_host'] . ';dbname=' . $_SESSION['bd_base'];
- $driver_options = array(
- PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
- );
- break;
- case 'sqlite':
- $str = 'sqlite:' . DATA_PATH . $_SESSION['bd_base'] . '.sqlite';
- $driver_options = null;
- break;
- default:
- return false;
- }
-
- $c = new PDO($str, $_SESSION['bd_user'], $_SESSION['bd_password'], $driver_options);
+ $c = newPdo();
$sql = sprintf(SQL_DROP_BACKUPv006, $_SESSION['bd_prefix']);
$stm = $c->prepare($sql);
$stm->execute();
@@ -987,6 +1012,7 @@ case 4:
}
break;
case 5:
+ postUpdate();
break;
case 6:
deleteInstall ();