diff --git a/airtime_mvc/application/controllers/ApiController.php b/airtime_mvc/application/controllers/ApiController.php index 4b967d5a1..a02183492 100644 --- a/airtime_mvc/application/controllers/ApiController.php +++ b/airtime_mvc/application/controllers/ApiController.php @@ -451,6 +451,9 @@ class ApiController extends Zend_Controller_Action } } + // update import timestamp + Application_Model_Preference::SetImportTimestamp(); + if ($mode == "create") { $filepath = $md['MDATA_KEY_FILEPATH']; $filepath = str_replace("\\", "", $filepath); @@ -508,7 +511,6 @@ class ApiController extends Zend_Controller_Action $file->delete(); } } - $this->view->id = $file->getId(); } diff --git a/airtime_mvc/application/controllers/PreferenceController.php b/airtime_mvc/application/controllers/PreferenceController.php index f4c106fe7..94b4f2681 100644 --- a/airtime_mvc/application/controllers/PreferenceController.php +++ b/airtime_mvc/application/controllers/PreferenceController.php @@ -13,6 +13,7 @@ class PreferenceController extends Zend_Controller_Action ->addActionContext('change-stor-directory', 'json') ->addActionContext('reload-watch-directory', 'json') ->addActionContext('remove-watch-directory', 'json') + ->addActionContext('is-import-in-progress', 'json') ->initContext(); } @@ -157,6 +158,15 @@ class PreferenceController extends Zend_Controller_Action $watched_dirs_form = new Application_Form_WatchedDirPreferences(); $this->view->subform = $watched_dirs_form->render(); } + + public function isImportInProgressAction(){ + $now = time(); + $res = false; + if(Application_Model_Preference::GetImportTimestamp()+5 > $now){ + $res = true; + } + die(json_encode($res)); + } } diff --git a/airtime_mvc/application/models/Preference.php b/airtime_mvc/application/models/Preference.php index 19fd6da1f..18fe4a919 100644 --- a/airtime_mvc/application/models/Preference.php +++ b/airtime_mvc/application/models/Preference.php @@ -356,5 +356,14 @@ class Application_Model_Preference public static function GetRemindMeDate(){ return Application_Model_Preference::GetValue("remindme"); } + + public static function SetImportTimestamp(){ + $now = time(); + Application_Model_Preference::SetValue("import_timestamp", $now); + } + + public static function GetImportTimestamp(){ + return Application_Model_Preference::GetValue("import_timestamp"); + } } diff --git a/airtime_mvc/public/js/airtime/library/library.js b/airtime_mvc/public/js/airtime/library/library.js index 820373752..6e61075e0 100644 --- a/airtime_mvc/public/js/airtime/library/library.js +++ b/airtime_mvc/public/js/airtime/library/library.js @@ -55,6 +55,19 @@ function confirmDeletePlaylist(params){ } } +function checkImportStatus(){ + $.getJSON('/Preference/is-import-in-progress', function(data){ + var div = $('#library_display_processing'); + if(data == true){ + div.html("Import is being processed"); + div.css('visibility', 'visible'); + }else{ + div.css('visibility', 'hidden'); + div.html("Processing..."); + } + }) +} + function deletePlaylist(json) { if(json.message) { alert(json.message); @@ -172,4 +185,7 @@ $(document).ready(function() { "sSearch": "" } }).fnSetFilteringDelay(350); + + checkImportStatus() + setInterval( "checkImportStatus()", 2000 ); }); diff --git a/install_minimal/include/AirtimeInstall.php b/install_minimal/include/AirtimeInstall.php index 149741a90..79d741007 100644 --- a/install_minimal/include/AirtimeInstall.php +++ b/install_minimal/include/AirtimeInstall.php @@ -293,6 +293,21 @@ class AirtimeInstall } return true; } + + public static function SetImportTimestamp() + { + global $CC_DBC; + + $now = time(); + + $sql = "INSERT INTO cc_pref (keystr, valstr) VALUES ('import_timestamp', '$now')"; + $result = $CC_DBC->query($sql); + if (PEAR::isError($result)) { + return false; + } + return true; + } + public static function GetAirtimeVersion() { diff --git a/install_minimal/include/airtime-db-install.php b/install_minimal/include/airtime-db-install.php index 7f008b1fe..c2fd837b0 100644 --- a/install_minimal/include/airtime-db-install.php +++ b/install_minimal/include/airtime-db-install.php @@ -47,7 +47,9 @@ if (isset($argv[1]) && $argv[1] == 'y') { echo "* Setting Airtime version".PHP_EOL; AirtimeInstall::SetAirtimeVersion(AIRTIME_VERSION); +// set up some keys in DB AirtimeInstall::SetUniqueId(); +AirtimeInstall::SetImportTimestamp(); if (AirtimeInstall::$databaseTablesCreated) { diff --git a/install_minimal/upgrades/airtime-1.9.0/airtime-upgrade.php b/install_minimal/upgrades/airtime-1.9.0/airtime-upgrade.php index ce1a49ab9..b308e1614 100644 --- a/install_minimal/upgrades/airtime-1.9.0/airtime-upgrade.php +++ b/install_minimal/upgrades/airtime-1.9.0/airtime-upgrade.php @@ -352,6 +352,34 @@ class AirtimeInstall{ echo "* Inserting data into country table".PHP_EOL; Airtime190Upgrade::execSqlQuery($sql); } + + public static function SetUniqueId() + { + global $CC_DBC; + + $uniqueId = md5(uniqid("", true)); + + $sql = "INSERT INTO cc_pref (keystr, valstr) VALUES ('uniqueId', '$uniqueId')"; + $result = $CC_DBC->query($sql); + if (PEAR::isError($result)) { + return false; + } + return true; + } + + public static function SetImportTimestamp() + { + global $CC_DBC; + + $now = time(); + + $sql = "INSERT INTO cc_pref (keystr, valstr) VALUES ('import_timestamp', '$now')"; + $result = $CC_DBC->query($sql); + if (PEAR::isError($result)) { + return false; + } + return true; + } } class AirtimeIni{ @@ -783,6 +811,10 @@ AirtimeInstall::MigrateTablesToVersion(__DIR__, '20110713161043'); AirtimeInstall::InsertCountryDataIntoDatabase(); +// set up some keys in DB +AirtimeInstall::SetUniqueId(); +AirtimeInstall::SetImportTimestamp(); + AirtimeIni::CreateMonitFile(); AirtimeInstall::CreateSymlinksToUtils(); diff --git a/install_minimal/upgrades/airtime-1.9.0/airtimefilemonitor/mediamonitorcommon.py b/install_minimal/upgrades/airtime-1.9.0/airtimefilemonitor/mediamonitorcommon.py index 9f0bcfd72..9d449c154 100644 --- a/install_minimal/upgrades/airtime-1.9.0/airtimefilemonitor/mediamonitorcommon.py +++ b/install_minimal/upgrades/airtime-1.9.0/airtimefilemonitor/mediamonitorcommon.py @@ -8,7 +8,7 @@ from airtimemetadata import AirtimeMetadata def encode_to(obj, encoding='utf-8'): if isinstance(obj, basestring): - if not isinstance(obj, string): + if not isinstance(obj, str): obj = obj.encode(encoding) return obj