]> git.wh0rd.org - tt-rss.git/blobdiff - plugins/updater/init.php
remove $link
[tt-rss.git] / plugins / updater / init.php
index 4f9ee86bdff91257a2acefb46a3d68d42468f10e..856a0cbf9a7977e42744e437535d07b398829b21 100644 (file)
@@ -1,7 +1,6 @@
 <?php
 class Updater extends Plugin {
 
-       private $link;
        private $host;
 
        function about() {
@@ -12,7 +11,6 @@ class Updater extends Plugin {
        }
 
        function init($host) {
-               $this->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 "<div dojoType=\"dijit.layout.AccordionPane\" title=\"".__('Update Tiny Tiny RSS')."\">";
 
                        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).", "<b>$version</b>"));
 
-                               print "<p><button dojoType=\"dijit.form.Button\" onclick=\"return updateSelf()\">".
+                               $details = "http://tt-rss.org/redmine/versions/$version_id";
+
+                               print "<p><button onclick=\"window.open('$details')\" dojoType=\"dijit.form.Button\">".__("See the release notes")."</button>";
+
+                               print " <button dojoType=\"dijit.form.Button\" onclick=\"return updateSelf()\">".
                                        __('Update Tiny Tiny RSS')."</button></p>";
 
                        } else {
@@ -314,11 +346,18 @@ class Updater extends Plugin {
        }
 
        function updateSelf() {
+               print_warning(__("Do not close this dialog until updating is finished."));
+
                print "<form style='display : block' name='self_update_form' id='self_update_form'>";
 
-               print "<div class='error'>".__("Do not close this dialog until updating is finished. Backup your tt-rss directory before continuing.")."</div>";
+               print "<style type='text/css'>
+                       li.notice { font-style : italic; color : red; }
+               </style>";
 
                print "<ul class='selfUpdateList' id='self_update_log'>";
+               print "<li class='notice'>" .__("It is suggested to backup your tt-rss directory first.") . "</li>";
+               print "<li class='notice'>" . __("Your database will not be modified.") . "</li>";
+               print "<li class='notice'>" . __("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.") . "</li>";
                print "<li>" . __("Ready to update.") . "</li>";
                print "</ul>";
 
@@ -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));
                }
        }