From 33bb4e600c5da63b260d5348a728fa774efe706c Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 28 Aug 2012 12:35:19 -0400 Subject: [PATCH 01/10] cc-4274: implemented james' hack to fix this issue. --- airtime_mvc/application/controllers/ApiController.php | 3 ++- airtime_mvc/application/models/StoredFile.php | 9 ++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/airtime_mvc/application/controllers/ApiController.php b/airtime_mvc/application/controllers/ApiController.php index 0e0f0fd2d..2711825f1 100644 --- a/airtime_mvc/application/controllers/ApiController.php +++ b/airtime_mvc/application/controllers/ApiController.php @@ -689,7 +689,8 @@ class ApiController extends Zend_Controller_Action $request = $this->getRequest(); $dir_id = $request->getParam('dir_id'); - $this->view->files = Application_Model_StoredFile::listAllFiles($dir_id); + $this->view->files = + Application_Model_StoredFile::listAllFiles($dir_id, $all=true); } public function listAllWatchedDirsAction() diff --git a/airtime_mvc/application/models/StoredFile.php b/airtime_mvc/application/models/StoredFile.php index 3f6152696..f392d7b19 100644 --- a/airtime_mvc/application/models/StoredFile.php +++ b/airtime_mvc/application/models/StoredFile.php @@ -1003,19 +1003,22 @@ class Application_Model_StoredFile * @param $dir_id - if this is not provided, it returns all files with full path constructed. * @param $propelObj - if this is true, it returns array of proepl obj */ - public static function listAllFiles($dir_id=null, $propelObj=false) + public static function listAllFiles($dir_id=null, $propelObj=false, + $all=false) { $con = Propel::getConnection(); + $file_exists = $all ? "" : "and f.file_exists = 'TRUE'"; + if ($propelObj) { $sql = "SELECT m.directory || f.filepath as fp" ." FROM CC_MUSIC_DIRS m" ." LEFT JOIN CC_FILES f" - ." ON m.id = f.directory WHERE m.id = $dir_id and f.file_exists = 'TRUE'"; + ." ON m.id = f.directory WHERE m.id = $dir_id $file_exists"; } else { $sql = "SELECT filepath as fp" ." FROM CC_FILES" - ." WHERE directory = $dir_id and file_exists = 'TRUE'"; + ." WHERE directory = $dir_id $file_exists"; } $rows = $con->query($sql)->fetchAll(); From 05908d121f347a1a29178e5859ccd72fb3d18459 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 28 Aug 2012 13:15:02 -0400 Subject: [PATCH 02/10] cc-4274: Fixed bad table name. --- airtime_mvc/application/controllers/ApiController.php | 5 +++-- airtime_mvc/application/models/StoredFile.php | 7 +++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/airtime_mvc/application/controllers/ApiController.php b/airtime_mvc/application/controllers/ApiController.php index 2711825f1..f8752aa66 100644 --- a/airtime_mvc/application/controllers/ApiController.php +++ b/airtime_mvc/application/controllers/ApiController.php @@ -690,7 +690,7 @@ class ApiController extends Zend_Controller_Action $dir_id = $request->getParam('dir_id'); $this->view->files = - Application_Model_StoredFile::listAllFiles($dir_id, $all=true); + Application_Model_StoredFile::listAllFiles($dir_id,$all=true); } public function listAllWatchedDirsAction() @@ -863,7 +863,8 @@ class ApiController extends Zend_Controller_Action $watchDir = Application_Model_MusicDir::getDirByPath($rd); // get all the files that is under $dirPath - $files = Application_Model_StoredFile::listAllFiles($dir->getId(), true); + $files = Application_Model_StoredFile::listAllFiles( + $dir->getId(),$all=false, true); foreach ($files as $f) { // if the file is from this mount if (substr($f->getFilePath(), 0, strlen($rd)) === $rd) { diff --git a/airtime_mvc/application/models/StoredFile.php b/airtime_mvc/application/models/StoredFile.php index f392d7b19..6dac96734 100644 --- a/airtime_mvc/application/models/StoredFile.php +++ b/airtime_mvc/application/models/StoredFile.php @@ -1003,8 +1003,7 @@ class Application_Model_StoredFile * @param $dir_id - if this is not provided, it returns all files with full path constructed. * @param $propelObj - if this is true, it returns array of proepl obj */ - public static function listAllFiles($dir_id=null, $propelObj=false, - $all=false) + public static function listAllFiles($dir_id=null, $all, $propelObj=false) { $con = Propel::getConnection(); @@ -1017,8 +1016,8 @@ class Application_Model_StoredFile ." ON m.id = f.directory WHERE m.id = $dir_id $file_exists"; } else { $sql = "SELECT filepath as fp" - ." FROM CC_FILES" - ." WHERE directory = $dir_id $file_exists"; + ." FROM CC_FILES as f" + ." WHERE f.directory = $dir_id $file_exists"; } $rows = $con->query($sql)->fetchAll(); From 5b5ac3e38f38949cda1076c0fbab84ebb7e110da Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 28 Aug 2012 16:22:35 -0400 Subject: [PATCH 03/10] cc-4274: Added scaffolding to implement this feature. --- airtime_mvc/application/models/User.php | 13 +++++++++++++ airtime_mvc/application/models/airtime/CcFiles.php | 3 +++ 2 files changed, 16 insertions(+) diff --git a/airtime_mvc/application/models/User.php b/airtime_mvc/application/models/User.php index 524a8df19..dc674aa3b 100644 --- a/airtime_mvc/application/models/User.php +++ b/airtime_mvc/application/models/User.php @@ -230,6 +230,19 @@ class Application_Model_User $this->_userInstance->delete(); } } + public function getOwnedFiles() + { + $user = $this->_userInstance; + return $user->getCcFilessRelatedByDbOwnerId(); + } + + public function donateFilesTo($user) + { + $my_files = $this->getOwnedFiles(); + foreach ($my_files as $file) { + $file->reassignTo($user); + } + } private function createUser() { diff --git a/airtime_mvc/application/models/airtime/CcFiles.php b/airtime_mvc/application/models/airtime/CcFiles.php index 58f79ee67..0e17aef74 100644 --- a/airtime_mvc/application/models/airtime/CcFiles.php +++ b/airtime_mvc/application/models/airtime/CcFiles.php @@ -40,5 +40,8 @@ class CcFiles extends BaseCcFiles { return $this; } + public function reassignTo($user) { + $this->setDbOwnerId( $user->getDbId() ); + } } // CcFiles From 6487072a4ef7c2ed88cbfafd4103984e83c06ddc Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 28 Aug 2012 17:24:55 -0400 Subject: [PATCH 04/10] cc-4274: added stub --- airtime_mvc/application/models/User.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/airtime_mvc/application/models/User.php b/airtime_mvc/application/models/User.php index dc674aa3b..ed67641b5 100644 --- a/airtime_mvc/application/models/User.php +++ b/airtime_mvc/application/models/User.php @@ -233,6 +233,7 @@ class Application_Model_User public function getOwnedFiles() { $user = $this->_userInstance; + // do we need a find call at the end here? return $user->getCcFilessRelatedByDbOwnerId(); } @@ -244,6 +245,11 @@ class Application_Model_User } } + public function deleteAllFiles() + { + $my_files = $this->getOwnedFiles(); + } + private function createUser() { $user = new CcSubjs(); From ee54ef2b81317e042026c2b8d1f904a7583badf5 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 28 Aug 2012 17:26:33 -0400 Subject: [PATCH 05/10] mm2: checking for null value --- python_apps/media-monitor2/media/monitor/manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python_apps/media-monitor2/media/monitor/manager.py b/python_apps/media-monitor2/media/monitor/manager.py index 0a0fcfec3..4b1356291 100644 --- a/python_apps/media-monitor2/media/monitor/manager.py +++ b/python_apps/media-monitor2/media/monitor/manager.py @@ -93,7 +93,7 @@ class Manager(Loggable): ( listener.__class__.__name__, path) ) wd = self.wm.add_watch(path, pyinotify.ALL_EVENTS, rec=True, auto_add=True, proc_fun=listener) - self.__wd_path[path] = wd.values()[0] + if wd: self.__wd_path[path] = wd.values()[0] def __create_organizer(self, target_path, recorded_path): """ From 3d20ded1701e39f19c31eaeb4b502b8f0723b0ba Mon Sep 17 00:00:00 2001 From: denise Date: Tue, 28 Aug 2012 17:30:34 -0400 Subject: [PATCH 06/10] CC-4307: Add "Never show again" to the pop-up registration prompt -done --- .../controllers/UsersettingsController.php | 8 ++++++++ airtime_mvc/application/models/Preference.php | 18 +++++++++++++----- .../public/js/airtime/nowplaying/register.js | 12 ++++++++++++ 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/airtime_mvc/application/controllers/UsersettingsController.php b/airtime_mvc/application/controllers/UsersettingsController.php index b999b8ed1..2050961e0 100644 --- a/airtime_mvc/application/controllers/UsersettingsController.php +++ b/airtime_mvc/application/controllers/UsersettingsController.php @@ -13,6 +13,7 @@ class UsersettingsController extends Zend_Controller_Action ->addActionContext('get-timeline-datatable', 'json') ->addActionContext('set-timeline-datatable', 'json') ->addActionContext('remindme', 'json') + ->addActionContext('remindme-never', 'json') ->addActionContext('donotshowregistrationpopup', 'json') ->initContext(); } @@ -88,6 +89,13 @@ class UsersettingsController extends Zend_Controller_Action Zend_Session::namespaceUnset('referrer'); Application_Model_Preference::SetRemindMeDate(); } + + public function remindmeNeverAction() + { + Zend_Session::namespaceUnset('referrer'); + //pass in true to indicate 'Remind me never' was clicked + Application_Model_Preference::SetRemindMeDate(true); + } public function donotshowregistrationpopupAction() { diff --git a/airtime_mvc/application/models/Preference.php b/airtime_mvc/application/models/Preference.php index 48506660e..0541ba153 100644 --- a/airtime_mvc/application/models/Preference.php +++ b/airtime_mvc/application/models/Preference.php @@ -587,10 +587,14 @@ class Application_Model_Preference } } - public static function SetRemindMeDate() + public static function SetRemindMeDate($p_never = false) { - $weekAfter = mktime(0, 0, 0, gmdate("m"), gmdate("d")+7, gmdate("Y")); - self::setValue("remindme", $weekAfter); + if ($p_never) { + self::setValue("remindme", -1); + } else { + $weekAfter = mktime(0, 0, 0, gmdate("m"), gmdate("d")+7, gmdate("Y")); + self::setValue("remindme", $weekAfter); + } } public static function GetRemindMeDate() @@ -1105,9 +1109,13 @@ class Application_Model_Preference { $today = mktime(0, 0, 0, gmdate("m"), gmdate("d"), gmdate("Y")); $remindDate = Application_Model_Preference::GetRemindMeDate(); - if ($remindDate == NULL || $today >= $remindDate) { - return true; + $retVal = false; + + if ($remindDate == NULL || ($remindDate != -1 && $today >= $remindDate)) { + $retVal = true; } + + return $retVal; } public static function getCurrentLibraryTableSetting(){ diff --git a/airtime_mvc/public/js/airtime/nowplaying/register.js b/airtime_mvc/public/js/airtime/nowplaying/register.js index fc3b98a51..3d13367f1 100644 --- a/airtime_mvc/public/js/airtime/nowplaying/register.js +++ b/airtime_mvc/public/js/airtime/nowplaying/register.js @@ -26,6 +26,18 @@ $(document).ready(function(){ $(this).dialog("close"); } }, + { + id: "remind_never", + text: "Remind me never", + click: function() { + var url ='/Usersettings/remindme-never'; + $.ajax({ + url: url, + data: {format:"json"} + }); + $(this).dialog("close"); + } + }, { id: "help_airtime", text: "Yes, help Airtime", From 21bad35c39e85fd01b1b703bdd5d9e60f2b242ea Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 28 Aug 2012 17:32:48 -0400 Subject: [PATCH 07/10] cc-4309: possible fix --- python_apps/media-monitor2/media/monitor/manager.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/python_apps/media-monitor2/media/monitor/manager.py b/python_apps/media-monitor2/media/monitor/manager.py index 4b1356291..e3c1c6243 100644 --- a/python_apps/media-monitor2/media/monitor/manager.py +++ b/python_apps/media-monitor2/media/monitor/manager.py @@ -91,9 +91,10 @@ class Manager(Loggable): def __add_watch(self,path,listener): self.logger.info("Adding listener '%s' to '%s'" % ( listener.__class__.__name__, path) ) - wd = self.wm.add_watch(path, pyinotify.ALL_EVENTS, rec=True, - auto_add=True, proc_fun=listener) - if wd: self.__wd_path[path] = wd.values()[0] + if not self.has_watch(path): + wd = self.wm.add_watch(path, pyinotify.ALL_EVENTS, rec=True, + auto_add=True, proc_fun=listener) + if wd: self.__wd_path[path] = wd.values()[0] def __create_organizer(self, target_path, recorded_path): """ From 416bb5fb2bef242724e312b3e7b30d04b2b842c2 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 28 Aug 2012 17:39:25 -0400 Subject: [PATCH 08/10] MM2: added some docstrings to Manager.py --- python_apps/media-monitor2/media/monitor/manager.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/python_apps/media-monitor2/media/monitor/manager.py b/python_apps/media-monitor2/media/monitor/manager.py index e3c1c6243..fcceb153f 100644 --- a/python_apps/media-monitor2/media/monitor/manager.py +++ b/python_apps/media-monitor2/media/monitor/manager.py @@ -79,9 +79,16 @@ class Manager(Loggable): watch_dir) self.remove_watch_directory(normpath(watch_dir)) - def watch_signal(self): return self.watch_listener.signal + def watch_signal(self): + """ + Return the signal string our watch_listener is reading events from + """ + return self.watch_listener.signal def __remove_watch(self,path): + """ + Remove path from being watched (first will check if 'path' is watched) + """ # only delete if dir is actually being watched if path in self.__wd_path: wd = self.__wd_path[path] @@ -89,6 +96,10 @@ class Manager(Loggable): del(self.__wd_path[path]) def __add_watch(self,path,listener): + """ + Start watching 'path' using 'listener'. First will check if directory + is being watched before adding another watch + """ self.logger.info("Adding listener '%s' to '%s'" % ( listener.__class__.__name__, path) ) if not self.has_watch(path): From 2536c28a01c067619c37ccbd810f1a90d7c02d05 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 28 Aug 2012 17:51:48 -0400 Subject: [PATCH 09/10] MM2: more robust handling of bit rate --- python_apps/media-monitor2/media/monitor/pure.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/python_apps/media-monitor2/media/monitor/pure.py b/python_apps/media-monitor2/media/monitor/pure.py index 97645a15b..25a0add28 100644 --- a/python_apps/media-monitor2/media/monitor/pure.py +++ b/python_apps/media-monitor2/media/monitor/pure.py @@ -14,8 +14,8 @@ from configobj import ConfigObj from media.monitor.exceptions import FailedToSetLocale, FailedToCreateDir -supported_extensions = [u"mp3", u"ogg", u"oga"] -#supported_extensions = [u"mp3", u"ogg", u"oga", u"flac", u"aac", u"bwf"] +#supported_extensions = [u"mp3", u"ogg", u"oga"] +supported_extensions = [u"mp3", u"ogg", u"oga", u"flac", u"aac", u"bwf"] unicode_unknown = u'unknown' path_md = ['MDATA_KEY_TITLE', 'MDATA_KEY_CREATOR', 'MDATA_KEY_SOURCE', @@ -285,11 +285,11 @@ def organized_path(old_path, root_path, orig_md): # MDATA_KEY_BITRATE is in bytes/second i.e. (256000) we want to turn this # into 254kbps normal_md = default_to_f(orig_md, path_md, unicode_unknown, default_f) - if normal_md['MDATA_KEY_BITRATE']: + try: formatted = str(int(normal_md['MDATA_KEY_BITRATE']) / 1000) normal_md['MDATA_KEY_BITRATE'] = formatted + 'kbps' - else: normal_md['MDATA_KEY_BITRATE'] = unicode_unknown - + except: + normal_md['MDATA_KEY_BITRATE'] = unicode_unknown if is_airtime_recorded(normal_md): title_re = re.match("(?P.+)-(?P\d+-\d+-\d+-\d+:\d+:\d+)$", From f188cfbba2b3aaaff67950861ba4c56e636d16cc Mon Sep 17 00:00:00 2001 From: denise Date: Wed, 29 Aug 2012 10:56:47 -0400 Subject: [PATCH 10/10] CC-4300: System -> Preference: Please add a option let user choose if the SMTP server requires User Authentication -small fix --- airtime_mvc/application/models/Email.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airtime_mvc/application/models/Email.php b/airtime_mvc/application/models/Email.php index 79455002d..a510eea81 100644 --- a/airtime_mvc/application/models/Email.php +++ b/airtime_mvc/application/models/Email.php @@ -35,7 +35,7 @@ class Application_Model_Email ); } else { $config = array( - 'ssl' => 'ssl' + 'ssl' => 'tls' ); }