X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=plugins%2Fupdater%2Finit.php;h=856a0cbf9a7977e42744e437535d07b398829b21;hb=6322ac79a020ab584d412d782d62b2ee77d7c6cf;hp=4f9ee86bdff91257a2acefb46a3d68d42468f10e;hpb=05809dfdf7cbf7699be6408c0f49d325585726b5;p=tt-rss.git diff --git a/plugins/updater/init.php b/plugins/updater/init.php index 4f9ee86b..856a0cbf 100644 --- a/plugins/updater/init.php +++ b/plugins/updater/init.php @@ -1,7 +1,6 @@ link = $host->get_link(); $this->host = $host; $host->add_hook($host::HOOK_PREFS_TAB, $this); @@ -22,7 +20,7 @@ class Updater extends Plugin { $this); } - function update_self_step($link, $step, $params, $force = false) { + function update_self_step( $step, $params, $force = false) { // __FILE__ is in plugins/updater so we need to go one level up $work_dir = dirname(dirname(dirname(__FILE__))); $parent_dir = dirname($work_dir); @@ -42,7 +40,7 @@ class Updater extends Plugin { case 0: array_push($log, "Work directory: $work_dir"); - if (!is_writable($work_dir) && !is_writable("$parent_dir")) { + if (!is_writable($work_dir) || !is_writable("$parent_dir")) { $user = posix_getpwuid(posix_geteuid()); $user = $user["name"]; array_push($log, "Both tt-rss and parent directories should be writable as current user ($user)."); @@ -59,6 +57,10 @@ class Updater extends Plugin { $stop = true; break; } + // bah, also humbug + putenv("PATH=" . getenv("PATH") . PATH_SEPARATOR . "/bin" . + PATH_SEPARATOR . "/usr/bin"); + array_push($log, "Checking for tar..."); $system_rc = 0; @@ -230,6 +232,7 @@ class Updater extends Plugin { CACHE_DIR, CACHE_DIR . "/export", CACHE_DIR . "/images", + CACHE_DIR . "/js", CACHE_DIR . "/simplepie", ICONS_DIR, LOCK_DIRECTORY); @@ -239,6 +242,26 @@ class Updater extends Plugin { chmod($dir, 0777); } + if (ICONS_DIR == "feed-icons") { + array_push($log, "Migrating feed icons..."); + + $icons = glob("$old_dir/feed-icons/*.ico"); + $icons_copied = 0; + + foreach ($icons as $icon) { + $icon = basename($icon); + + if (copy("$old_dir/feed-icons/$icon", "$work_dir/feed-icons/$icon")) { + ++$icons_copied; + } + } + + array_push($log, "Done; $icons_copied files copied"); + + } else { + array_push($log, "Not migrating feed icons, ICONS_DIR modified."); + } + array_push($log, "Upgrade completed."); array_push($log, "Your old tt-rss directory is saved at $old_dir. ". "Please migrate locally modified files (if any) and remove it."); @@ -254,13 +277,13 @@ class Updater extends Plugin { return array("step" => $step, "stop" => $stop, "params" => $params, "log" => $log); } - function update_self_cli($link, $force = false) { + function update_self_cli( $force = false) { $step = 0; $stop = false; $params = array(); while (!$stop) { - $rc = $this->update_self_step($link, $step, $params, $force); + $rc = $this->update_self_step( $step, $params, $force); $params = $rc['params']; $stop = $rc['stop']; @@ -273,14 +296,18 @@ class Updater extends Plugin { } function update_self($args) { - _debug("Warning: self-updating is experimental. Use at your own risk."); - _debug("Please backup your tt-rss directory before continuing. Your database will not be modified."); + _debug("READ THE FOLLOWING BEFORE CONTINUING!"); + _debug("* It is suggested to backup your tt-rss directory first."); + _debug("* Your database will not be modified."); + _debug("* Your current tt-rss installation directory will not be modified. It will be renamed and left in the parent directory. You will be able to migrate all your customized files after update finishes."); _debug("Type 'yes' to continue."); - if (read_stdin() != 'yes') + $input = read_stdin(); + + if ($input != 'yes' && $input != 'force') exit; - $this->update_self_cli($link, in_array("-force", $args)); + $this->update_self_cli( $input == 'force'); } function get_prefs_js() { @@ -294,15 +321,20 @@ class Updater extends Plugin { print "
"; if ($_SESSION["pref_last_version_check"] + 86400 + rand(-1000, 1000) < time()) { - $_SESSION["version_data"] = @check_for_update($this->link); + $_SESSION["version_data"] = @check_for_update(); $_SESSION["pref_last_version_check"] = time(); } if (is_array($_SESSION["version_data"])) { $version = $_SESSION["version_data"]["version"]; + $version_id = $_SESSION["version_data"]["version_id"]; print_notice(T_sprintf("New version of Tiny Tiny RSS is available (%s).", "$version")); - print "

"; + + print "

"; } else { @@ -314,11 +346,18 @@ class Updater extends Plugin { } function updateSelf() { + print_warning(__("Do not close this dialog until updating is finished.")); + print "
"; - print "
".__("Do not close this dialog until updating is finished. Backup your tt-rss directory before continuing.")."
"; + print ""; print ""; @@ -337,7 +376,7 @@ class Updater extends Plugin { $force = (bool) $_REQUEST["force"]; if (($_SESSION["access_level"] >= 10 || SINGLE_USER_MODE) && CHECK_FOR_NEW_VERSION) { - print json_encode($this->update_self_step($this->link, $step, $params, $force)); + print json_encode($this->update_self_step( $step, $params, $force)); } }