Browse Source

Improved updating mechanism

Tobias Reich 10 years ago
parent
commit
f0065bbebc

+ 8 - 3
assets/js/lychee.js

@@ -7,7 +7,7 @@
 
 var lychee = {
 
-	version: "2.1 b3",
+	version: "2.1 b4",
 
 	api_path: "php/api.php",
 	update_path: "http://lychee.electerious.com/version/index.php",
@@ -26,6 +26,7 @@ var lychee = {
 	sorting: "",
 
 	dropbox: false,
+	dropboxKey: '',
 
 	loadingBar: $("#loading"),
 	header: $("header"),
@@ -35,13 +36,17 @@ var lychee = {
 
 	init: function() {
 
-		lychee.api("init", function(data) {
+		var params;
+
+		params = "init&version=" + escape(lychee.version);
+		lychee.api(params, function(data) {
 
 			if (data.loggedIn!==true) {
 				lychee.setMode("public");
 			} else {
 				lychee.username = data.config.username;
 				lychee.sorting = data.config.sorting;
+				lychee.dropboxKey = data.config.dropboxKey;
 			}
 
 			// No configuration
@@ -300,7 +305,7 @@ var lychee = {
 			g.id = "dropboxjs";
 			g.type = "text/javascript";
 			g.async = "true";
-			g.setAttribute("data-app-key", "iq7lioj9wu0ieqs");
+			g.setAttribute("data-app-key", lychee.dropboxKey);
 			g.onload = g.onreadystatechange = function() {
 				var rs = this.readyState;
 				if (rs&&rs!=="complete"&&rs!=="loaded") return;

+ 2 - 2
assets/js/settings.js

@@ -26,7 +26,7 @@ var settings = {
 				if (dbHost.length<1) dbHost = "localhost";
 				if (dbName.length<1) dbName = "lychee";
 
-				params = "dbCreateConfig&dbName=" + escape(dbName) + "&dbUser=" + escape(dbUser) + "&dbPassword=" + escape(dbPassword) + "&dbHost=" + escape(dbHost);
+				params = "dbCreateConfig&dbName=" + escape(dbName) + "&dbUser=" + escape(dbUser) + "&dbPassword=" + escape(dbPassword) + "&dbHost=" + escape(dbHost) + "&version=" + escape(lychee.version);
 				lychee.api(params, function(data) {
 
 					if (data!==true) {
@@ -71,7 +71,7 @@ var settings = {
 					} else {
 
 						// Configuration successful
-						lychee.api("update", function(data) { window.location.reload() });
+						window.location.reload();
 
 					}
 

+ 1 - 3
php/access/admin.php

@@ -101,7 +101,7 @@ switch ($_POST['function']) {
 
 	// Session Function
 
-	case 'init':			echo json_encode(init('admin'));
+	case 'init':			echo json_encode(init('admin', $_POST['version']));
 							break;
 
 	case 'login':			if (isset($_POST['user'])&&isset($_POST['password']))
@@ -124,8 +124,6 @@ switch ($_POST['function']) {
 
 	// Miscellaneous
 
-	case 'update':			echo update();
-
 	default:				switch ($_GET['function']) {
 
 								case 'getFeed':				if (isset($_GET['albumID']))

+ 1 - 1
php/access/guest.php

@@ -56,7 +56,7 @@ switch ($_POST['function']) {
 
 	// Session Functions
 
-	case 'init':			echo json_encode(init('public'));
+	case 'init':			echo json_encode(init('public', $_POST['version']));
 							break;
 
 	case 'login':			if (isset($_POST['user'])&&isset($_POST['password']))

+ 2 - 2
php/access/installation.php

@@ -11,8 +11,8 @@ if (!defined('LYCHEE_ACCESS_INSTALLATION')) exit('Error: You are not allowed to
 
 switch ($_POST['function']) {
 
-	case 'dbCreateConfig':	if (isset($_POST['dbHost'])&&isset($_POST['dbUser'])&&isset($_POST['dbPassword'])&&isset($_POST['dbName']))
-								echo dbCreateConfig($_POST['dbHost'], $_POST['dbUser'], $_POST['dbPassword'], $_POST['dbName']);
+	case 'dbCreateConfig':	if (isset($_POST['dbHost'])&&isset($_POST['dbUser'])&&isset($_POST['dbPassword'])&&isset($_POST['dbName'])&&isset($_POST['version']))
+								echo dbCreateConfig($_POST['dbHost'], $_POST['dbUser'], $_POST['dbPassword'], $_POST['dbName'], $_POST['version']);
 							break;
 
 	default:				echo 'Warning: No configuration!';

+ 1 - 1
php/api.php

@@ -58,7 +58,7 @@ if (!empty($_POST['function'])||!empty($_GET['function'])) {
 	// Fallback for switch statement
 	if (!isset($_POST['function']))	$_POST['function'] = '';
 	if (!isset($_GET['function']))	$_GET['function'] = '';
-
+	
 	if (isset($_SESSION['login'])&&$_SESSION['login']==true) {
 
 		/**

+ 5 - 4
php/modules/db.php

@@ -30,7 +30,7 @@ function dbConnect() {
 
 }
 
-function dbCreateConfig($dbHost = 'localhost', $dbUser, $dbPassword, $dbName = 'lychee') {
+function dbCreateConfig($dbHost = 'localhost', $dbUser, $dbPassword, $dbName = 'lychee', $version) {
 
 	$dbPassword	= urldecode($dbPassword);
 	$database	= new mysqli($dbHost, $dbUser, $dbPassword);
@@ -43,13 +43,13 @@ $config = "<?php
 /**
  * @name		Config
  * @author		Tobias Reich
- * @copyright	2014 by Philipp Maurer, Tobias Reich
+ * @copyright	2014 Tobias Reich
 */
 
 if(!defined('LYCHEE')) exit('Error: Direct access is not allowed!');
 
 // Config version
-\$configVersion = '2.1';
+\$configVersion = '$version';
 
 // Database configurations
 \$dbHost = '$dbHost'; //Host of the Database
@@ -101,7 +101,8 @@ function dbCreateTables($database) {
 			('password',''),
 			('thumbQuality','90'),
 			('checkForUpdates','1'),
-			('sorting','ORDER BY id DESC');
+			('sorting','ORDER BY id DESC'),
+			('dropboxKey','');
 
 		";
 

+ 15 - 2
php/modules/misc.php

@@ -80,19 +80,32 @@ function search($term) {
 
 }
 
-function update() {
+function update($version = '') {
 
-	global $database;
+	global $database, $configVersion;
 
+	// Albums
 	if(!$database->query("SELECT `public` FROM `lychee_albums` LIMIT 1;"))		$database->query("ALTER TABLE `lychee_albums` ADD `public` TINYINT( 1 ) NOT NULL DEFAULT	'0'");
 	if(!$database->query("SELECT `password` FROM `lychee_albums` LIMIT 1;"))	$database->query("ALTER TABLE `lychee_albums` ADD `password` VARCHAR( 100 ) NULL DEFAULT ''");
 	if(!$database->query("SELECT `description` FROM `lychee_albums` LIMIT 1;"))	$database->query("ALTER TABLE `lychee_albums` ADD `description` VARCHAR( 1000 ) NULL DEFAULT ''");
 	if($database->query("SELECT `password` FROM `lychee_albums` LIMIT 1;"))		$database->query("ALTER TABLE `lychee_albums` CHANGE `password` `password` VARCHAR( 100 ) NULL DEFAULT ''");
 
+	// Photos
 	if($database->query("SELECT `description` FROM `lychee_photos` LIMIT 1;"))	$database->query("ALTER TABLE `lychee_photos` CHANGE `description` `description` VARCHAR( 1000 ) NULL DEFAULT ''");
 	if(!$database->query("SELECT `tags` FROM `lychee_photos` LIMIT 1;"))		$database->query("ALTER TABLE `lychee_photos` ADD `tags` VARCHAR( 1000 ) NULL DEFAULT ''");
 	$database->query("UPDATE `lychee_photos` SET url = replace(url, 'uploads/big/', ''), thumbUrl = replace(thumbUrl, 'uploads/thumb/', '')");
 
+	// Settings
+	$result = $database->query("SELECT `key` FROM `lychee_settings` WHERE `key` = 'dropboxKey' LIMIT 1;");
+	if ($result->num_rows===0) $database->query("INSERT INTO `lychee_settings` (`key`, `value`) VALUES ('dropboxKey', '')");
+
+	// Config
+	if ($version!==''&&$configVersion!==$version) {
+		$data = file_get_contents('../data/config.php');
+		$data = preg_replace('/\$configVersion = \'[\w. ]*\';/', "\$configVersion = '$version';", $data);
+		file_put_contents('../data/config.php', $data);
+	}
+
 	return true;
 
 }

+ 6 - 2
php/modules/session.php

@@ -9,9 +9,13 @@
 
 if (!defined('LYCHEE')) exit('Error: Direct access is not allowed!');
 
-function init($mode) {
+function init($mode, $version) {
 
-	global $settings;
+	global $settings, $configVersion;
+
+	// Update
+	if ($configVersion!==$version)
+		if (!update($version)) exit('Error: Updating the database failed!');
 
 	$return['config'] = $settings;
 	unset($return['config']['password']);