function installFTP($ftp_root) { $ftp_root = "/" . trim($ftp_root, "/") . "/"; // Create backups folder $this->Connection->createDirectory($ftp_root . "backups/"); // Doing a core upgrade if ($this->Extension === false) { // Backup database BigTreeAdmin::backupDatabase(SERVER_ROOT . "cache/backup.sql"); $this->Connection->rename($ftp_root . "cache/backup.sql", $ftp_root . "backups/core-" . BIGTREE_VERSION . "/backup.sql"); // Backup old core $this->Connection->rename($ftp_root . "core/", $ftp_root . "backups/core-" . BIGTREE_VERSION . "/"); // Move new core into place $this->Connection->rename($ftp_root . "cache/update/core/", $ftp_root . "core/"); // Doing an extension upgrade } else { $extension = $this->Extension; // Create a backups folder for this extension $this->Connection->createDirectory($ftp_root . "backups/extensions/"); $this->Connection->createDirectory($ftp_root . "backups/extensions/{$extension}/"); // Read manifest file for current version $current_manifest = json_decode(file_get_contents(SERVER_ROOT . "extensions/{$extension}/manifest.json"), true); $old_version = $current_manifest["version"]; // Get a unique directory name $old_version = BigTree::getAvailableFileName(SERVER_ROOT . "backups/extensions/{$extension}/", $old_version); // Move old extension into backups $this->Connection->rename($ftp_root . "extensions/{$extension}/", $ftp_root . "backups/extensions/{$extension}/{$old_version}/"); // Move new extension into place $this->Connection->rename($ftp_root . "cache/update/", $ftp_root . "extensions/{$extension}/"); } $this->cleanup(); }