Forráskód Böngészése

Added update check for folder permissions

causefx 7 éve
szülő
commit
5a8b27f191
2 módosított fájl, 101 hozzáadás és 88 törlés
  1. 57 52
      api/functions/update-functions.php
  2. 44 36
      js/functions.js

+ 57 - 52
api/functions/update-functions.php

@@ -2,61 +2,66 @@
 // Upgrade the installation
 function upgradeInstall($branch = 'v2-master', $stage)
 {
-	ini_set('max_execution_time', 0);
-	set_time_limit(0);
-	$url = 'https://github.com/causefx/Organizr/archive/' . $branch . '.zip';
-	$file = "upgrade.zip";
-	$source = dirname(__DIR__, 2) . DIRECTORY_SEPARATOR . 'upgrade' . DIRECTORY_SEPARATOR . 'Organizr-' . str_replace('v2', '2', $branch) . DIRECTORY_SEPARATOR;
-	$cleanup = dirname(__DIR__, 2) . DIRECTORY_SEPARATOR . "upgrade" . DIRECTORY_SEPARATOR;
-	$destination = dirname(__DIR__, 2) . DIRECTORY_SEPARATOR;
-	switch ($stage) {
-		case '1':
-			writeLog('success', 'Update Function -  Started Upgrade Process', $GLOBALS['organizrUser']['username']);
-			if (downloadFile($url, $file)) {
-				writeLog('success', 'Update Function -  Downloaded Update File for Branch: ' . $branch, $GLOBALS['organizrUser']['username']);
-				return true;
-			} else {
-				writeLog('error', 'Update Function -  Downloaded Update File Failed  for Branch: ' . $branch, $GLOBALS['organizrUser']['username']);
-				return false;
-			}
-			break;
-		case '2':
-			if (unzipFile($file)) {
-				writeLog('success', 'Update Function -  Unzipped Update File for Branch: ' . $branch, $GLOBALS['organizrUser']['username']);
-				return true;
-			} else {
-				writeLog('error', 'Update Function -  Unzip Failed for Branch: ' . $branch, $GLOBALS['organizrUser']['username']);
-				return false;
-			}
-			break;
-		case '3':
-			if (rcopy($source, $destination)) {
-				writeLog('success', 'Update Function -  Overwrited Files using Updated Files from Branch: ' . $branch, $GLOBALS['organizrUser']['username']);
-				$updateComplete = $GLOBALS['dbLocation'] . 'completed.txt';
-				if (!file_exists($updateComplete)) {
-					touch($updateComplete);
+	$notWritable = array_search(false, pathsWritable($GLOBALS['paths']));
+	if ($notWritable) {
+		ini_set('max_execution_time', 0);
+		set_time_limit(0);
+		$url = 'https://github.com/causefx/Organizr/archive/' . $branch . '.zip';
+		$file = "upgrade.zip";
+		$source = dirname(__DIR__, 2) . DIRECTORY_SEPARATOR . 'upgrade' . DIRECTORY_SEPARATOR . 'Organizr-' . str_replace('v2', '2', $branch) . DIRECTORY_SEPARATOR;
+		$cleanup = dirname(__DIR__, 2) . DIRECTORY_SEPARATOR . "upgrade" . DIRECTORY_SEPARATOR;
+		$destination = dirname(__DIR__, 2) . DIRECTORY_SEPARATOR;
+		switch ($stage) {
+			case '1':
+				writeLog('success', 'Update Function -  Started Upgrade Process', $GLOBALS['organizrUser']['username']);
+				if (downloadFile($url, $file)) {
+					writeLog('success', 'Update Function -  Downloaded Update File for Branch: ' . $branch, $GLOBALS['organizrUser']['username']);
+					return true;
+				} else {
+					writeLog('error', 'Update Function -  Downloaded Update File Failed  for Branch: ' . $branch, $GLOBALS['organizrUser']['username']);
+					return false;
 				}
-				return true;
-			} else {
-				writeLog('error', 'Update Function -  Overwrite Failed for Branch: ' . $branch, $GLOBALS['organizrUser']['username']);
-				return false;
-			}
-			break;
-		case '4':
-			if (rrmdir($cleanup)) {
-				writeLog('success', 'Update Function -  Deleted Update Files from Branch: ' . $branch, $GLOBALS['organizrUser']['username']);
-				writeLog('success', 'Update Function -  Update Completed', $GLOBALS['organizrUser']['username']);
-				return true;
-			} else {
-				writeLog('error', 'Update Function -  Removal of Update Files Failed for Branch: ' . $branch, $GLOBALS['organizrUser']['username']);
+				break;
+			case '2':
+				if (unzipFile($file)) {
+					writeLog('success', 'Update Function -  Unzipped Update File for Branch: ' . $branch, $GLOBALS['organizrUser']['username']);
+					return true;
+				} else {
+					writeLog('error', 'Update Function -  Unzip Failed for Branch: ' . $branch, $GLOBALS['organizrUser']['username']);
+					return false;
+				}
+				break;
+			case '3':
+				if (rcopy($source, $destination)) {
+					writeLog('success', 'Update Function -  Overwrited Files using Updated Files from Branch: ' . $branch, $GLOBALS['organizrUser']['username']);
+					$updateComplete = $GLOBALS['dbLocation'] . 'completed.txt';
+					if (!file_exists($updateComplete)) {
+						touch($updateComplete);
+					}
+					return true;
+				} else {
+					writeLog('error', 'Update Function -  Overwrite Failed for Branch: ' . $branch, $GLOBALS['organizrUser']['username']);
+					return false;
+				}
+				break;
+			case '4':
+				if (rrmdir($cleanup)) {
+					writeLog('success', 'Update Function -  Deleted Update Files from Branch: ' . $branch, $GLOBALS['organizrUser']['username']);
+					writeLog('success', 'Update Function -  Update Completed', $GLOBALS['organizrUser']['username']);
+					return true;
+				} else {
+					writeLog('error', 'Update Function -  Removal of Update Files Failed for Branch: ' . $branch, $GLOBALS['organizrUser']['username']);
+					return false;
+				}
+				break;
+			default:
 				return false;
-			}
-			break;
-		default:
-			return false;
-			break;
+				break;
+		}
+	} else {
+		return 'permissions';
 	}
-	return false;
+	
 }
 
 function downloadFile($url, $path)

+ 44 - 36
js/functions.js

@@ -2859,42 +2859,50 @@ function updateNow(){
 	messageSingle(window.lang.translate('[DO NOT CLOSE WINDOW]'),window.lang.translate('Starting Update Process'),activeInfo.settings.notifications.position,'#FFF','success','60000');
 	organizrAPI('POST','api/?v1/update', {branch:activeInfo.branch,stage:1}).success(function(data) {
 		var json = JSON.parse(data);
-		if(json.data == true){
-			updateUpdateBar('Starting Unzip','50%');
-			messageSingle(window.lang.translate('[DO NOT CLOSE WINDOW]'),window.lang.translate('Update File Downloaded'),activeInfo.settings.notifications.position,'#FFF','success','60000');
-			organizrAPI('POST','api/?v1/update', {branch:activeInfo.branch,stage:2}).success(function(data) {
-				var json = JSON.parse(data);
-				if(json.data == true){
-					updateUpdateBar('Starting Copy','70%');
-					messageSingle(window.lang.translate('[DO NOT CLOSE WINDOW]'),window.lang.translate('Update File Unzipped'),activeInfo.settings.notifications.position,'#FFF','success','60000');
-					organizrAPI('POST','api/?v1/update', {branch:activeInfo.branch,stage:3}).success(function(data) {
-						var json = JSON.parse(data);
-						if(json.data == true){
-							updateUpdateBar('Starting Cleanup','90%');
-							messageSingle(window.lang.translate('[DO NOT CLOSE WINDOW]'),window.lang.translate('Update Files Copied'),activeInfo.settings.notifications.position,'#FFF','success','60000');
-							organizrAPI('POST','api/?v1/update', {branch:activeInfo.branch,stage:4}).success(function(data) {
-								var json = JSON.parse(data);
-								if(json.data == true){
-									updateUpdateBar('Restarting Organizr in','100%', true);
-									messageSingle(window.lang.translate('[DO NOT CLOSE WINDOW]'),window.lang.translate('Update Cleanup Finished'),activeInfo.settings.notifications.position,'#FFF','success','60000');
-								}else{
-									message('',window.lang.translate('Update Cleanup Failed'),activeInfo.settings.notifications.position,'#FFF','error','10000');
-								}
-							}).fail(function(xhr) {
-								console.error("Organizr Function: API Connection Failed");
-							});
-						}else{
-							message('',window.lang.translate('Update File Copy Failed'),activeInfo.settings.notifications.position,'#FFF','error','10000');
-						}
-					}).fail(function(xhr) {
-						console.error("Organizr Function: API Connection Failed");
-					});
-				}else{
-					message('',window.lang.translate('Update File Unzip Failed'),activeInfo.settings.notifications.position,'#FFF','error','10000');
-				}
-			}).fail(function(xhr) {
-				console.error("Organizr Function: API Connection Failed");
-			});
+		if(json.data == true) {
+            updateUpdateBar('Starting Unzip', '50%');
+            messageSingle(window.lang.translate('[DO NOT CLOSE WINDOW]'), window.lang.translate('Update File Downloaded'), activeInfo.settings.notifications.position, '#FFF', 'success', '60000');
+            organizrAPI('POST', 'api/?v1/update', {branch: activeInfo.branch, stage: 2}).success(function (data) {
+                var json = JSON.parse(data);
+                if (json.data == true) {
+                    updateUpdateBar('Starting Copy', '70%');
+                    messageSingle(window.lang.translate('[DO NOT CLOSE WINDOW]'), window.lang.translate('Update File Unzipped'), activeInfo.settings.notifications.position, '#FFF', 'success', '60000');
+                    organizrAPI('POST', 'api/?v1/update', {
+                        branch: activeInfo.branch,
+                        stage: 3
+                    }).success(function (data) {
+                        var json = JSON.parse(data);
+                        if (json.data == true) {
+                            updateUpdateBar('Starting Cleanup', '90%');
+                            messageSingle(window.lang.translate('[DO NOT CLOSE WINDOW]'), window.lang.translate('Update Files Copied'), activeInfo.settings.notifications.position, '#FFF', 'success', '60000');
+                            organizrAPI('POST', 'api/?v1/update', {
+                                branch: activeInfo.branch,
+                                stage: 4
+                            }).success(function (data) {
+                                var json = JSON.parse(data);
+                                if (json.data == true) {
+                                    updateUpdateBar('Restarting Organizr in', '100%', true);
+                                    messageSingle(window.lang.translate('[DO NOT CLOSE WINDOW]'), window.lang.translate('Update Cleanup Finished'), activeInfo.settings.notifications.position, '#FFF', 'success', '60000');
+                                } else {
+                                    message('', window.lang.translate('Update Cleanup Failed'), activeInfo.settings.notifications.position, '#FFF', 'error', '10000');
+                                }
+                            }).fail(function (xhr) {
+                                console.error("Organizr Function: API Connection Failed");
+                            });
+                        } else {
+                            message('', window.lang.translate('Update File Copy Failed'), activeInfo.settings.notifications.position, '#FFF', 'error', '10000');
+                        }
+                    }).fail(function (xhr) {
+                        console.error("Organizr Function: API Connection Failed");
+                    });
+                } else {
+                    message('', window.lang.translate('Update File Unzip Failed'), activeInfo.settings.notifications.position, '#FFF', 'error', '10000');
+                }
+            }).fail(function (xhr) {
+                console.error("Organizr Function: API Connection Failed");
+            });
+        }else if(json.data == 'permissions'){
+            message('',window.lang.translate('Organizr does not have permissions to download the update'),activeInfo.settings.notifications.position,'#FFF','error','10000');
 		}else{
 			message('',window.lang.translate('Update File Download Failed'),activeInfo.settings.notifications.position,'#FFF','error','10000');
 		}