diff --git a/core/upgrade/app_languages.php b/core/upgrade/app_languages.php
index 0dac3a2f49..97f9766a51 100644
--- a/core/upgrade/app_languages.php
+++ b/core/upgrade/app_languages.php
@@ -900,6 +900,81 @@ $text['header-database_type']['zh-cn'] = "数据库类型";
$text['header-database_type']['ja-jp'] = "データベースタイプ";
$text['header-database_type']['ko-kr'] = "데이터베이스 유형";
+$text['header-source_code_upgrade_preview']['en-us'] = "Source Code Upgrade Preview";
+$text['header-source_code_upgrade_preview']['en-gb'] = "Source Code Upgrade Preview";
+$text['header-source_code_upgrade_preview']['ar-eg'] = "معاينة ترقية كود المصدر";
+$text['header-source_code_upgrade_preview']['de-at'] = "Vorschau des Quellcode-Upgrades";
+$text['header-source_code_upgrade_preview']['de-ch'] = "Vorschau des Quellcode-Upgrades";
+$text['header-source_code_upgrade_preview']['de-de'] = "Vorschau des Quellcode-Upgrades";
+$text['header-source_code_upgrade_preview']['el-gr'] = "Προεπισκόπηση αναβάθμισης πηγαίου κώδικα";
+$text['header-source_code_upgrade_preview']['es-cl'] = "Vista previa de actualización del código fuente";
+$text['header-source_code_upgrade_preview']['es-mx'] = "Vista previa de actualización del código fuente";
+$text['header-source_code_upgrade_preview']['fr-ca'] = "Aperçu de la mise à niveau du code source";
+$text['header-source_code_upgrade_preview']['fr-fr'] = "Aperçu de la mise à niveau du code source";
+$text['header-source_code_upgrade_preview']['he-il'] = "תצוגה מקדימה של שדרוג קוד מקור";
+$text['header-source_code_upgrade_preview']['it-it'] = "Anteprima dell'aggiornamento del codice sorgente";
+$text['header-source_code_upgrade_preview']['nl-nl'] = "Voorbeeld van broncode-upgrade";
+$text['header-source_code_upgrade_preview']['pl-pl'] = "Podgląd aktualizacji kodu źródłowego";
+$text['header-source_code_upgrade_preview']['pt-br'] = "Visualização da atualização do código-fonte";
+$text['header-source_code_upgrade_preview']['pt-pt'] = "Visualização da atualização do código-fonte";
+$text['header-source_code_upgrade_preview']['ro-ro'] = "Previzualizare upgrade cod sursă";
+$text['header-source_code_upgrade_preview']['ru-ru'] = "Предварительный просмотр обновления исходного кода";
+$text['header-source_code_upgrade_preview']['sv-se'] = "Förhandsgranskning av källkodsuppgradering";
+$text['header-source_code_upgrade_preview']['uk-ua'] = "Попередній перегляд оновлення вихідного коду";
+$text['header-source_code_upgrade_preview']['zh-cn'] = "源代码升级预览";
+$text['header-source_code_upgrade_preview']['ja-jp'] = "ソースコードのアップグレードプレビュー";
+$text['header-source_code_upgrade_preview']['ko-kr'] = "소스 코드 업그레이드 미리보기";
+
+$text['description-source_code_changes_found']['en-us'] = "The following APP_NAME source code files have been changed since you last upgraded...";
+$text['description-source_code_changes_found']['en-gb'] = "The following APP_NAME source code files have been changed since you last upgraded...";
+$text['description-source_code_changes_found']['ar-eg'] = "تم تغيير ملفات كود مصدر APP_NAME التالية منذ آخر ترقية...";
+$text['description-source_code_changes_found']['de-at'] = "Die folgenden APP_NAME-Quellcodedateien wurden seit Ihrem letzten Upgrade geändert ...";
+$text['description-source_code_changes_found']['de-ch'] = "Die folgenden APP_NAME-Quellcodedateien wurden seit Ihrem letzten Upgrade geändert ...";
+$text['description-source_code_changes_found']['de-de'] = "Die folgenden APP_NAME-Quellcodedateien wurden seit Ihrem letzten Upgrade geändert ...";
+$text['description-source_code_changes_found']['el-gr'] = "Τα ακόλουθα αρχεία πηγαίου κώδικα της APP_NAME έχουν αλλάξει από την τελευταία αναβάθμιση...";
+$text['description-source_code_changes_found']['es-cl'] = "Los siguientes archivos de código fuente de APP_NAME se han modificado desde la última vez que actualizaste...";
+$text['description-source_code_changes_found']['es-mx'] = "Los siguientes archivos de código fuente de APP_NAME se han modificado desde la última vez que actualizaste...";
+$text['description-source_code_changes_found']['fr-ca'] = "Les fichiers de code source APP_NAME suivants ont été modifiés depuis votre dernière mise à niveau...";
+$text['description-source_code_changes_found']['fr-fr'] = "Les fichiers de code source APP_NAME suivants ont été modifiés depuis votre dernière mise à niveau...";
+$text['description-source_code_changes_found']['he-il'] = "I seguenti file del codice sorgente APP_NAME sono stati modificati dall'ultimo aggiornamento...";
+$text['description-source_code_changes_found']['it-it'] = "I seguenti file del codice sorgente APP_NAME sono stati modificati dall'ultimo aggiornamento...";
+$text['description-source_code_changes_found']['nl-nl'] = "De volgende broncodebestanden van APP_NAME zijn gewijzigd sinds u voor het laatst een upgrade heeft uitgevoerd...";
+$text['description-source_code_changes_found']['pl-pl'] = "Następujące pliki kodu źródłowego aplikacji APP_NAME zostały zmienione od czasu ostatniej aktualizacji...";
+$text['description-source_code_changes_found']['pt-br'] = "Os seguintes arquivos de código-fonte APP_NAME foram alterados desde a última atualização...";
+$text['description-source_code_changes_found']['pt-pt'] = "Os seguintes arquivos de código-fonte APP_NAME foram alterados desde a última atualização...";
+$text['description-source_code_changes_found']['ro-ro'] = "Următoarele fișiere de cod sursă APP_NAME au fost modificate de la ultima actualizare...";
+$text['description-source_code_changes_found']['ru-ru'] = "Следующие файлы исходного кода приложения APP_NAME были изменены с момента последнего обновления...";
+$text['description-source_code_changes_found']['sv-se'] = "Följande källkodsfiler för APP_NAME har ändrats sedan du senast uppgraderade...";
+$text['description-source_code_changes_found']['uk-ua'] = "Наступні файли вихідного коду APP_NAME було змінено після останнього оновлення...";
+$text['description-source_code_changes_found']['zh-cn'] = "自您上次升级以来,以下 APP_NAME 源代码文件已更改...";
+$text['description-source_code_changes_found']['ja-jp'] = "次の APP_NAME ソース コード ファイルは、最後にアップグレードしてから変更されています...";
+$text['description-source_code_changes_found']['ko-kr'] = "마지막 업그레이드 이후 다음 APP_NAME 소스 코드 파일이 변경되었습니다.";
+
+$text['description-source_code_no_changes_found']['en-us'] = "No APP_NAME source code changes were detected.";
+$text['description-source_code_no_changes_found']['en-gb'] = "No APP_NAME source code changes were detected.";
+$text['description-source_code_no_changes_found']['ar-eg'] = "لم يتم اكتشاف أي تغييرات في كود مصدر APP_NAME.";
+$text['description-source_code_no_changes_found']['de-at'] = "Es wurden keine Änderungen am APP_NAME-Quellcode festgestellt.";
+$text['description-source_code_no_changes_found']['de-ch'] = "Es wurden keine Änderungen am APP_NAME-Quellcode festgestellt.";
+$text['description-source_code_no_changes_found']['de-de'] = "Es wurden keine Änderungen am APP_NAME-Quellcode festgestellt.";
+$text['description-source_code_no_changes_found']['el-gr'] = "Δεν εντοπίστηκαν αλλαγές στον πηγαίο κώδικα της εφαρμογής APP_NAME.";
+$text['description-source_code_no_changes_found']['es-cl'] = "No se detectaron cambios en el código fuente de APP_NAME.";
+$text['description-source_code_no_changes_found']['es-mx'] = "No se detectaron cambios en el código fuente de APP_NAME.";
+$text['description-source_code_no_changes_found']['fr-ca'] = "Aucune modification du code source de APP_NAME n'a été détectée.";
+$text['description-source_code_no_changes_found']['fr-fr'] = "Aucune modification du code source de APP_NAME n'a été détectée.";
+$text['description-source_code_no_changes_found']['he-il'] = "לא זוהו שינויים בקוד המקור של APP_NAME.";
+$text['description-source_code_no_changes_found']['it-it'] = "Non è stata rilevata alcuna modifica al codice sorgente APP_NAME.";
+$text['description-source_code_no_changes_found']['nl-nl'] = "Er zijn geen wijzigingen in de broncode van APP_NAME gedetecteerd.";
+$text['description-source_code_no_changes_found']['pl-pl'] = "Nie wykryto żadnych zmian w kodzie źródłowym aplikacji APP_NAME.";
+$text['description-source_code_no_changes_found']['pt-br'] = "Nenhuma alteração no código-fonte do APP_NAME foi detectada.";
+$text['description-source_code_no_changes_found']['pt-pt'] = "Nenhuma alteração no código-fonte do APP_NAME foi detectada.";
+$text['description-source_code_no_changes_found']['ro-ro'] = "Nu au fost detectate modificări ale codului sursă APP_NAME.";
+$text['description-source_code_no_changes_found']['ru-ru'] = "Никаких изменений исходного кода приложения APP_NAME не обнаружено.";
+$text['description-source_code_no_changes_found']['sv-se'] = "Inga ändringar av källkoden för APP_NAME upptäcktes.";
+$text['description-source_code_no_changes_found']['uk-ua'] = "Змін вихідного коду APP_NAME не виявлено.";
+$text['description-source_code_no_changes_found']['zh-cn'] = "未检测到 APP_NAME 源代码更改。";
+$text['description-source_code_no_changes_found']['ja-jp'] = "APP_NAME ソース コードの変更は検出されませんでした。";
+$text['description-source_code_no_changes_found']['ko-kr'] = "APP_NAME 소스 코드 변경사항이 감지되지 않았습니다.";
+
$text['description-upgrade_source']['en-us'] = "Updates FusionPBX source files from the repository.";
$text['description-upgrade_source']['en-gb'] = "Updates FusionPBX source files from the repository.";
$text['description-upgrade_source']['ar-eg'] = "(أحدث ملفات مصادر (فيوس بي إكس من المستودع";
@@ -1275,4 +1350,30 @@ $text['title-cli_upgrade']['zh-cn'] = "";
$text['title-cli_upgrade']['ja-jp'] = "";
$text['title-cli_upgrade']['ko-kr'] = "";
-?>
+$text['button-preview']['en-us'] = "Preview";
+$text['button-preview']['en-gb'] = "Preview";
+$text['button-preview']['ar-eg'] = "معاينة";
+$text['button-preview']['de-at'] = "Vorschau";
+$text['button-preview']['de-ch'] = "Vorschau";
+$text['button-preview']['de-de'] = "Vorschau";
+$text['button-preview']['el-gr'] = "Προεπισκόπηση";
+$text['button-preview']['es-cl'] = "Prevista";
+$text['button-preview']['es-mx'] = "Prevista";
+$text['button-preview']['fr-ca'] = "Aperçu";
+$text['button-preview']['fr-fr'] = "Aperçu";
+$text['button-preview']['he-il'] = "תצוגה מקדימה";
+$text['button-preview']['it-it'] = "Anteprima";
+$text['button-preview']['nl-nl'] = "preview";
+$text['button-preview']['pl-pl'] = "Podgląd";
+$text['button-preview']['pt-br'] = "Visualização";
+$text['button-preview']['pt-pt'] = "Pré-Visualização";
+$text['button-preview']['ro-ro'] = "previzualizare";
+$text['button-preview']['ru-ru'] = "Предпросмотр";
+$text['button-preview']['sv-se'] = "Förhandsgranska";
+$text['button-preview']['uk-ua'] = "Огляд";
+$text['button-preview']['tr-tr'] = "Ön izleme";
+$text['button-preview']['zh-cn'] = "预览";
+$text['button-preview']['ja-jp'] = "プレビュー";
+$text['button-preview']['ko-kr'] = "시사";
+
+?>
\ No newline at end of file
diff --git a/core/upgrade/index.php b/core/upgrade/index.php
index a83dbb2349..33b3131681 100644
--- a/core/upgrade/index.php
+++ b/core/upgrade/index.php
@@ -160,6 +160,57 @@
if (is_array($updateable_repos)) { $repos_count = @sizeof($updateable_repos); }
$repos_count++;
+//process the http get (source preview)
+ if (!empty($_GET['preview'])) {
+ if (!empty($updateable_repos)) {
+ foreach ($updateable_repos as $app_path => $app) {
+ $repo_info = git_repo_info($app_path);
+ if (empty($repo_info)) { continue; }
+ $source_code[$app['app']] = $app_path;
+ }
+ }
+ if ($_GET['preview'] == 'core') {
+ $command = 'cd '.$_SERVER['PROJECT_ROOT'].' && git fetch && git diff --name-only @ @{u}';
+ }
+ else if (array_key_exists($_GET['preview'], $source_code)) {
+ $command = 'cd '.$source_code[$_GET['preview']].' && git fetch && git diff --name-only @ @{u}';
+ }
+ if (!empty($command)) {
+ $response = explode(PHP_EOL, shell_exec($command));
+ // simplify response
+ if (!empty($response)) {
+ foreach ($response as $l => $line) {
+ if (empty($line)) { unset($response[$l]); }
+ if (substr($line, 0, 8) == 'remote: ') { unset($response[$l]); }
+ if (substr($line, 0, 8) == 'remote: ') { unset($response[$l]); }
+ if (substr($line, 0, 19) == 'Unpacking objects: ') { unset($response[$l]); }
+ if (substr($line, 0, 5) == 'From ') { unset($response[$l]); }
+ if (substr($line, 0, 3) == ' ') { unset($response[$l]); }
+ }
+ }
+ echo "\n";
+ echo "".$text['header-source_code_upgrade_preview']."\n";
+ echo "
\n";
+ if (!empty($response) && is_array($response)) {
+ echo str_replace('APP_NAME', (!empty($_GET['title']) ? "".$_GET['title']."" : null), $text['description-source_code_changes_found']);
+ echo "
\n";
+ echo "