Explorar o código

Added Backup Option

causefx %!s(int64=8) %!d(string=hai) anos
pai
achega
c055fcd144
Modificáronse 10 ficheiros con 109 adicións e 2 borrados
  1. 3 0
      ajax.php
  2. 51 1
      functions.php
  3. 1 1
      homepage.php
  4. 4 0
      lang/en.ini
  5. 4 0
      lang/es.ini
  6. 4 0
      lang/fr.ini
  7. 4 0
      lang/it.ini
  8. 4 0
      lang/nl.ini
  9. 4 0
      lang/pl.ini
  10. 30 0
      settings.php

+ 3 - 0
ajax.php

@@ -122,6 +122,9 @@ switch ($_SERVER['REQUEST_METHOD']) {
                         break;
 					case 'check-url':
                         sendResult(frameTest($_POST['checkurl']), "flask", $_POST['checkurl'], "IFRAME_CAN_BE_FRAMED", "IFRAME_CANNOT_BE_FRAMED");
+                        break;
+					case 'backup-now':
+                        sendResult(backupDB(), "database", "Backup", "BACKUP_CREATED", "BACKUP_ERROR");
                         break;
                     case 'upload-images':
                         uploadFiles('images/', array('jpg', 'png', 'svg', 'jpeg', 'bmp', 'gif'));

+ 51 - 1
functions.php

@@ -3368,7 +3368,7 @@ function searchPlex($query){
 				$link = PLEXURL."/web/index.html#!/server/$server/details?key=/library/metadata/".$results['ratingkey'];
 			}
 			
-            $items .= '<tr style="cursor: pointer;" class="openTab" openTab="'.$openTab.'" href="'.$link.'">
+            $items .= '<tr style="cursor: pointer;" class="openTab" extraTitle="'.$results['title'].'" extraType="'.$child['type'].'" openTab="'.$openTab.'" href="'.$link.'">
             <th scope="row"><img src="'.$image_url.'"></th>
             <td class="col-xs-2 nzbtable nzbtable-row"'.$style.'>'.$results['title'].'</td>
             <td class="col-xs-3 nzbtable nzbtable-row"'.$style.'>'.$results['genre'].'</td>
@@ -3864,6 +3864,14 @@ function getLogs(){
     return $logs;
 }
 
+function getBackups(){
+    $path = __DIR__ ."/backups/";
+	@mkdir($path, 0770, true);
+    $backups = array();
+    $files = array_diff(scandir($path), array('.', '..'));
+    return array_reverse($files);
+}
+
 function getExtension($string) {
     return preg_replace("#(.+)?\.(\w+)(\?.+)?#", "$2", $string);
 }
@@ -3931,6 +3939,48 @@ function localURL($url){
 	return $result;
 }
 
+function fileArray($files){
+	foreach($files as $file){
+		if(file_exists($file)){
+			$list[] = $file;
+		}
+	}
+	if(!empty($list)){ return $list; } 
+}
+
+function backupDB(){
+	if (extension_loaded('ZIP')) {
+		$directory = getcwd()."/backups/";
+		@mkdir($directory, 0770, true);
+		$orgFiles = array(
+			'css' => 'custom.css', 
+			'temp' => 'cus.sd', 
+			'orgLog' => 'org.log', 
+			'loginLog' => 'loginLog.json', 
+			'chatDB' => 'chatpack.db', 
+			'config' => 'config/config.php', 
+			'database' => DATABASE_LOCATION.'users.db'
+		);
+		$files = fileArray($orgFiles);
+		if(!empty($files)){
+			writeLog("success", "BACKUP: backup process started");
+			$zipname = $directory.'backup['.date('Y-m-d_H-i').']['.INSTALLEDVERSION.'].zip';
+			$zip = new ZipArchive;
+			$zip->open($zipname, ZipArchive::CREATE);
+			foreach ($files as $file) {
+				$zip->addFile($file);
+			}
+			$zip->close();
+			writeLog("success", "BACKUP: backup process finished");
+			return true;
+		}else{
+			return false;
+		}
+	}else{
+		return false;
+	}
+}
+
 function orgEmail($header = "Message From Admin", $title = "Important Message", $user = "Organizr User", $mainMessage = "", $button = null, $buttonURL = null, $subTitle = "", $subMessage = ""){
 	$path = getServerPath();
 	return '

+ 1 - 1
homepage.php

@@ -519,7 +519,7 @@ foreach(loadAppearance() as $key => $value) {
             var Type = $(this).attr("extraType");
             var openTab = $(this).attr("openTab");
             var location = $(this).attr("href");
-            if( Type === 'season' || Type === 'episode'){
+            if( Type === 'season' || Type === 'episode' || Type === 'show'){
                 Type = "tv";
                 SearchType = "show";
             }else if( Type === 'movie'){

+ 4 - 0
lang/en.ini

@@ -312,3 +312,7 @@ CHECK_FRAME = "Test Frame"
 GENERATE_API_KEY = "Generate API Key"
 ORGANIZR_API_KEY = "Organizr API Key"
 TEST_EMAIL = "Send Test E-Mail"
+BACKUP_CREATED = "Backup Created"
+BACKUP_ERROR = "Backup Creation Error"
+BACKUP_NOW = "Backup Now"
+BACKUP_LIST = "Backup List"

+ 4 - 0
lang/es.ini

@@ -312,3 +312,7 @@ CHECK_FRAME = "Test Frame"
 GENERATE_API_KEY = "Generate API Key"
 ORGANIZR_API_KEY = "Organizr API Key"
 TEST_EMAIL = "Send Test E-Mail"
+BACKUP_CREATED = "Backup Created"
+BACKUP_ERROR = "Backup Creation Error"
+BACKUP_NOW = "Backup Now"
+BACKUP_LIST = "Backup List"

+ 4 - 0
lang/fr.ini

@@ -312,3 +312,7 @@ CHECK_FRAME = "Test Frame"
 GENERATE_API_KEY = "Generate API Key"
 ORGANIZR_API_KEY = "Organizr API Key"
 TEST_EMAIL = "Send Test E-Mail"
+BACKUP_CREATED = "Backup Created"
+BACKUP_ERROR = "Backup Creation Error"
+BACKUP_NOW = "Backup Now"
+BACKUP_LIST = "Backup List"

+ 4 - 0
lang/it.ini

@@ -312,3 +312,7 @@ CHECK_FRAME = "Test Frame"
 GENERATE_API_KEY = "Generate API Key"
 ORGANIZR_API_KEY = "Organizr API Key"
 TEST_EMAIL = "Send Test E-Mail"
+BACKUP_CREATED = "Backup Created"
+BACKUP_ERROR = "Backup Creation Error"
+BACKUP_NOW = "Backup Now"
+BACKUP_LIST = "Backup List"

+ 4 - 0
lang/nl.ini

@@ -312,3 +312,7 @@ CHECK_FRAME = "Test Frame"
 GENERATE_API_KEY = "Generate API Key"
 ORGANIZR_API_KEY = "Organizr API Key"
 TEST_EMAIL = "Send Test E-Mail"
+BACKUP_CREATED = "Backup Created"
+BACKUP_ERROR = "Backup Creation Error"
+BACKUP_NOW = "Backup Now"
+BACKUP_LIST = "Backup List"

+ 4 - 0
lang/pl.ini

@@ -312,3 +312,7 @@ CHECK_FRAME = "Test Frame"
 GENERATE_API_KEY = "Generate API Key"
 ORGANIZR_API_KEY = "Organizr API Key"
 TEST_EMAIL = "Send Test E-Mail"
+BACKUP_CREATED = "Backup Created"
+BACKUP_ERROR = "Backup Creation Error"
+BACKUP_NOW = "Backup Now"
+BACKUP_LIST = "Backup List"

+ 30 - 0
settings.php

@@ -1573,6 +1573,30 @@ echo buildSettings(
 					),
 				),
 			),
+            array(
+				'title' => 'Backup Settings',
+				'id' => 'backup_settings',
+				'image' => 'images/backup.png',
+				'fields' => array(
+					array(
+                        array(
+							'type' => 'button',
+							'labelTranslate' => 'BACKUP_NOW',
+							'id' => 'backupNow',
+							'icon' => 'database',
+                            'style' =>  (extension_loaded("ZIP")) ? "" : "display : none",
+						),
+					),
+                    array(
+						'type' => 'textarea',
+						'labelTranslate' => 'BACKUP_LIST',
+						'name' => 'backupList',
+						'value' => (extension_loaded("ZIP")) ? implode("\n",getBackups()) : "PLEASE ENABLE PHP ZIP",
+						'rows' => 15,
+						'style' => 'background: #000; color: #FFF;pointer-events: none',
+					),
+				),
+			),
 		),
 	)
 );
@@ -2830,6 +2854,12 @@ echo buildSettings(
             });
         </script>
         <script>
+            //Backup
+            $('#backupNow').on('click', function () {
+                console.log("starting backup now");
+                ajax_request('POST', 'backup-now');
+                console.log("ajax backup done");
+            });
             //TestEmail
             function isUpperCase(str) {
                 return str === str.toUpperCase();