diff --git a/airtime_mvc/application/controllers/ApiController.php b/airtime_mvc/application/controllers/ApiController.php index 1e3cee844..6572774cc 100644 --- a/airtime_mvc/application/controllers/ApiController.php +++ b/airtime_mvc/application/controllers/ApiController.php @@ -313,7 +313,7 @@ class ApiController extends Zend_Controller_Action } //used by caller to determine if the airtime they are running or widgets in use is out of date. - $result['AIRTIME_API_VERSION'] = AIRTIME_API_VERSION; + $result['AIRTIME_API_VERSION'] = AIRTIME_API_VERSION; header("Content-type: text/javascript"); // If a callback is not given, then just provide the raw JSON. echo isset($_GET['callback']) ? $_GET['callback'].'('.json_encode($result).')' : json_encode($result); @@ -830,8 +830,8 @@ class ApiController extends Zend_Controller_Action if ($djtype == 'master') { //check against master - if ($username == Application_Model_Preference::GetLiveSteamMasterUsername() - && $password == Application_Model_Preference::GetLiveSteamMasterPassword()) { + if ($username == Application_Model_Preference::GetLiveStreamMasterUsername() + && $password == Application_Model_Preference::GetLiveStreamMasterPassword()) { $this->view->msg = true; } else { $this->view->msg = false; diff --git a/airtime_mvc/application/controllers/PreferenceController.php b/airtime_mvc/application/controllers/PreferenceController.php index 49ce2a4a1..5c375deab 100644 --- a/airtime_mvc/application/controllers/PreferenceController.php +++ b/airtime_mvc/application/controllers/PreferenceController.php @@ -220,8 +220,8 @@ class PreferenceController extends Zend_Controller_Action // this goes into cc_pref table Application_Model_Preference::SetStreamLabelFormat($values['streamFormat']); - Application_Model_Preference::SetLiveSteamMasterUsername($values["master_username"]); - Application_Model_Preference::SetLiveSteamMasterPassword($values["master_password"]); + Application_Model_Preference::SetLiveStreamMasterUsername($values["master_username"]); + Application_Model_Preference::SetLiveStreamMasterPassword($values["master_password"]); Application_Model_Preference::SetDefaultTransitionFade($values["transition_fade"]); Application_Model_Preference::SetAutoTransition($values["auto_transition"]); Application_Model_Preference::SetAutoSwitch($values["auto_switch"]); diff --git a/airtime_mvc/application/controllers/ShowbuilderController.php b/airtime_mvc/application/controllers/ShowbuilderController.php index 23c3fd55b..a31119cdb 100644 --- a/airtime_mvc/application/controllers/ShowbuilderController.php +++ b/airtime_mvc/application/controllers/ShowbuilderController.php @@ -186,13 +186,13 @@ class ShowbuilderController extends Zend_Controller_Action $menu["preview"] = array("name"=> "Preview", "icon" => "play"); //select the cursor - $menu["selCurs"] = array("name"=> "Select Cursor","icon" => "select-cursor"); - $menu["delCurs"] = array("name"=> "Remove Cursor","icon" => "select-cursor"); + $menu["selCurs"] = array("name"=> "Select cursor","icon" => "select-cursor"); + $menu["delCurs"] = array("name"=> "Remove cursor","icon" => "select-cursor"); if ($now < floatval($item->getDbEnds("U.u")) && $user->canSchedule($instance->getDbShowId())) { //remove/truncate the item from the schedule - $menu["del"] = array("name"=> "Delete", "icon" => "delete", "url" => "/showbuilder/schedule-remove"); + $menu["del"] = array("name"=> "Remove from show", "icon" => "delete", "url" => "/showbuilder/schedule-remove"); } $this->view->items = $menu; diff --git a/airtime_mvc/application/forms/AddShowWhen.php b/airtime_mvc/application/forms/AddShowWhen.php index eb4e68a35..a3d445796 100644 --- a/airtime_mvc/application/forms/AddShowWhen.php +++ b/airtime_mvc/application/forms/AddShowWhen.php @@ -247,15 +247,8 @@ class Application_Form_AddShowWhen extends Zend_Form_SubForm $overlapping = Application_Model_Schedule::checkOverlappingShows($show_start, $show_end, $update, $instanceId); if (!$overlapping) { + $durationToAdd = "PT".$hours."H".$minutes."M"; for ($i = 1; $i <= 10; $i++) { - $hours = ltrim($hours, '0'); - if ($minutes != "00") { - $minutes = ltrim($minutes, '0'); - $durationToAdd = "PT".$hours."H".$minutes."I"; - } else { - $minutes = "0"; - $durationToAdd = "PT".$hours."H"; - } if (empty($formData["add_show_rebroadcast_date_absolute_".$i])) break; diff --git a/airtime_mvc/application/forms/EditAudioMD.php b/airtime_mvc/application/forms/EditAudioMD.php index ba7b1c4ef..2dc9e1f0f 100644 --- a/airtime_mvc/application/forms/EditAudioMD.php +++ b/airtime_mvc/application/forms/EditAudioMD.php @@ -32,9 +32,7 @@ class Application_Form_EditAudioMD extends Zend_Form $this->addElement('text', 'track_number', array( 'label' => 'Track:', 'class' => 'input_text', - 'filters' => array('StringTrim'), - 'validators' => array('Int'), - 'required' => true + 'filters' => array('StringTrim') )); // Add genre field diff --git a/airtime_mvc/application/forms/LiveStreamingPreferences.php b/airtime_mvc/application/forms/LiveStreamingPreferences.php index 8f7ac95c0..e66976c8b 100644 --- a/airtime_mvc/application/forms/LiveStreamingPreferences.php +++ b/airtime_mvc/application/forms/LiveStreamingPreferences.php @@ -45,7 +45,7 @@ class Application_Form_LiveStreamingPreferences extends Zend_Form_SubForm ->setAllowEmpty(true) ->setLabel('Master Username') ->setFilters(array('StringTrim')) - ->setValue(Application_Model_Preference::GetLiveSteamMasterUsername()) + ->setValue(Application_Model_Preference::GetLiveStreamMasterUsername()) ->setDecorators(array('ViewHelper')); $this->addElement($master_username); @@ -59,7 +59,7 @@ class Application_Form_LiveStreamingPreferences extends Zend_Form_SubForm $master_password->setAttrib('autocomplete', 'off') ->setAttrib('renderPassword','true') ->setAllowEmpty(true) - ->setValue(Application_Model_Preference::GetLiveSteamMasterPassword()) + ->setValue(Application_Model_Preference::GetLiveStreamMasterPassword()) ->setLabel('Master Password') ->setFilters(array('StringTrim')) ->setDecorators(array('ViewHelper')); diff --git a/airtime_mvc/application/models/PlayoutHistory.php b/airtime_mvc/application/models/PlayoutHistory.php index ba845fa33..7da1ff2c2 100644 --- a/airtime_mvc/application/models/PlayoutHistory.php +++ b/airtime_mvc/application/models/PlayoutHistory.php @@ -16,12 +16,12 @@ class Application_Model_PlayoutHistory private $opts; private $mDataPropMap = array( - "artist" => "file.artist_name", - "title" => "file.track_title", - "played" => "playout.played", - "length" => "file.length", - "composer" => "file.composer", - "copyright" => "file.copyright", + "artist" => "artist_name", + "title" => "track_title", + "played" => "played", + "length" => "length", + "composer" => "composer", + "copyright" => "copyright", ); public function __construct($p_startDT, $p_endDT, $p_opts) diff --git a/airtime_mvc/application/models/Preference.php b/airtime_mvc/application/models/Preference.php index 8f08e385e..e65151ce4 100644 --- a/airtime_mvc/application/models/Preference.php +++ b/airtime_mvc/application/models/Preference.php @@ -892,22 +892,22 @@ class Application_Model_Preference return (strlen($val) == 0) ? 0 : $val; } - public static function SetLiveSteamMasterUsername($value) + public static function SetLiveStreamMasterUsername($value) { self::setValue("live_stream_master_username", $value, false); } - public static function GetLiveSteamMasterUsername() + public static function GetLiveStreamMasterUsername() { return self::getValue("live_stream_master_username"); } - public static function SetLiveSteamMasterPassword($value) + public static function SetLiveStreamMasterPassword($value) { self::setValue("live_stream_master_password", $value, false); } - public static function GetLiveSteamMasterPassword() + public static function GetLiveStreamMasterPassword() { return self::getValue("live_stream_master_password"); } @@ -1093,7 +1093,7 @@ class Application_Model_Preference - public static function getOrderingMap($pref_param) + public static function getOrderingMap($pref_param) { $v = self::getValue($pref_param, true); diff --git a/airtime_mvc/application/models/StoredFile.php b/airtime_mvc/application/models/StoredFile.php index cd75da2d1..2300f4eb7 100644 --- a/airtime_mvc/application/models/StoredFile.php +++ b/airtime_mvc/application/models/StoredFile.php @@ -196,6 +196,10 @@ class Application_Model_StoredFile if (isset($this->_dbMD[$dbColumn])) { $propelColumn = $this->_dbMD[$dbColumn]; $method = "set$propelColumn"; + + /* We need to set track_number to null if it is an empty string + * because propel defaults empty strings to zeros */ + if ($dbColumn == "track_number" && empty($mdValue)) $mdValue = null; $this->_file->$method($mdValue); } } diff --git a/airtime_mvc/application/models/airtime/CcBlockcontents.php b/airtime_mvc/application/models/airtime/CcBlockcontents.php index 5fcfbbf24..7c307610a 100644 --- a/airtime_mvc/application/models/airtime/CcBlockcontents.php +++ b/airtime_mvc/application/models/airtime/CcBlockcontents.php @@ -5,7 +5,7 @@ /** * Skeleton subclass for representing a row from the 'cc_blockcontents' table. * - * + * * * You should add additional methods to this class to meet the * application requirements. This class will only be generated as @@ -44,11 +44,16 @@ class CcBlockcontents extends BaseCcBlockcontents { */ public function setDbFadein($v) { + $microsecond = 0; if ($v instanceof DateTime) { $dt = $v; } else if (preg_match('/^[0-9]{1,2}(\.\d{1,6})?$/', $v)) { - $dt = DateTime::createFromFormat("s.u", $v); + // in php 5.3.2 createFromFormat() with "u" is not supported(bug) + // Hence we need to do parsing. + $info = explode('.', $v); + $microsecond = $info[1]; + $dt = DateTime::createFromFormat("s", $info[0]); } else { try { @@ -58,7 +63,7 @@ class CcBlockcontents extends BaseCcBlockcontents { } } - $this->fadein = $dt->format('H:i:s.u'); + $this->fadein = $dt->format('H:i:s').".".$microsecond; $this->modifiedColumns[] = CcBlockcontentsPeer::FADEIN; return $this; @@ -72,11 +77,16 @@ class CcBlockcontents extends BaseCcBlockcontents { */ public function setDbFadeout($v) { + $microsecond = 0; if ($v instanceof DateTime) { $dt = $v; } else if (preg_match('/^[0-9]{1,2}(\.\d{1,6})?$/', $v)) { - $dt = DateTime::createFromFormat("s.u", $v); + // in php 5.3.2 createFromFormat() with "u" is not supported(bug) + // Hence we need to do parsing. + $info = explode('.', $v); + $microsecond = $info[1]; + $dt = DateTime::createFromFormat("s", $info[0]); } else { try { @@ -86,7 +96,7 @@ class CcBlockcontents extends BaseCcBlockcontents { } } - $this->fadeout = $dt->format('H:i:s.u'); + $this->fadeout = $dt->format('H:i:s').".".$microsecond; $this->modifiedColumns[] = CcBlockcontentsPeer::FADEOUT; return $this; diff --git a/airtime_mvc/application/models/airtime/CcPlaylistcontents.php b/airtime_mvc/application/models/airtime/CcPlaylistcontents.php index b5125de32..1b0abe796 100644 --- a/airtime_mvc/application/models/airtime/CcPlaylistcontents.php +++ b/airtime_mvc/application/models/airtime/CcPlaylistcontents.php @@ -43,11 +43,16 @@ class CcPlaylistcontents extends BaseCcPlaylistcontents { */ public function setDbFadein($v) { + $microsecond = 0; if ($v instanceof DateTime) { $dt = $v; } else if (preg_match('/^[0-9]{1,2}(\.\d{1,6})?$/', $v)) { - $dt = DateTime::createFromFormat("s.u", $v); + // in php 5.3.2 createFromFormat() with "u" is not supported(bug) + // Hence we need to do parsing. + $info = explode('.', $v); + $microsecond = $info[1]; + $dt = DateTime::createFromFormat("s", $info[0]); } else { try { @@ -57,7 +62,7 @@ class CcPlaylistcontents extends BaseCcPlaylistcontents { } } - $this->fadein = $dt->format('H:i:s.u'); + $this->fadein = $dt->format('H:i:s').".".$microsecond; $this->modifiedColumns[] = CcPlaylistcontentsPeer::FADEIN; return $this; @@ -71,11 +76,16 @@ class CcPlaylistcontents extends BaseCcPlaylistcontents { */ public function setDbFadeout($v) { + $microsecond = 0; if ($v instanceof DateTime) { $dt = $v; } else if (preg_match('/^[0-9]{1,2}(\.\d{1,6})?$/', $v)) { - $dt = DateTime::createFromFormat("s.u", $v); + // in php 5.3.2 createFromFormat() with "u" is not supported(bug) + // Hence we need to do parsing. + $info = explode('.', $v); + $microsecond = $info[1]; + $dt = DateTime::createFromFormat("s", $info[0]); } else { try { @@ -85,7 +95,7 @@ class CcPlaylistcontents extends BaseCcPlaylistcontents { } } - $this->fadeout = $dt->format('H:i:s.u'); + $this->fadeout = $dt->format('H:i:s').".".$microsecond; $this->modifiedColumns[] = CcPlaylistcontentsPeer::FADEOUT; return $this; diff --git a/airtime_mvc/application/models/airtime/CcSchedule.php b/airtime_mvc/application/models/airtime/CcSchedule.php index 75a01e758..4230c54b8 100644 --- a/airtime_mvc/application/models/airtime/CcSchedule.php +++ b/airtime_mvc/application/models/airtime/CcSchedule.php @@ -107,11 +107,16 @@ class CcSchedule extends BaseCcSchedule { */ public function setDbFadeIn($v) { + $microsecond = 0; if ($v instanceof DateTime) { $dt = $v; } else if (preg_match('/^[0-9]{1,2}(\.\d{1,6})?$/', $v)) { - $dt = DateTime::createFromFormat("s.u", $v); + // in php 5.3.2 createFromFormat() with "u" is not supported(bug) + // Hence we need to do parsing. + $info = explode('.', $v); + $microsecond = $info[1]; + $dt = DateTime::createFromFormat("s", $info[0]); } else { try { @@ -120,7 +125,7 @@ class CcSchedule extends BaseCcSchedule { throw new PropelException('Error parsing date/time value: ' . var_export($v, true), $x); } } - $this->fade_in = $dt->format('H:i:s.u'); + $this->fade_in = $dt->format('H:i:s').".".$microsecond; $this->modifiedColumns[] = CcSchedulePeer::FADE_IN; return $this; @@ -134,11 +139,16 @@ class CcSchedule extends BaseCcSchedule { */ public function setDbFadeOut($v) { + $microsecond = 0; if ($v instanceof DateTime) { $dt = $v; } else if (preg_match('/^[0-9]{1,2}(\.\d{1,6})?$/', $v)) { - $dt = DateTime::createFromFormat("s.u", $v); + // in php 5.3.2 createFromFormat() with "u" is not supported(bug) + // Hence we need to do parsing. + $info = explode('.', $v); + $microsecond = $info[1]; + $dt = DateTime::createFromFormat("s", $info[0]); } else { try { @@ -148,7 +158,7 @@ class CcSchedule extends BaseCcSchedule { } } - $this->fade_out = $dt->format('H:i:s.u'); + $this->fade_in = $dt->format('H:i:s').".".$microsecond; $this->modifiedColumns[] = CcSchedulePeer::FADE_OUT; return $this; diff --git a/airtime_mvc/application/views/scripts/audiopreview/audio-preview.phtml b/airtime_mvc/application/views/scripts/audiopreview/audio-preview.phtml index b4ec52bdf..f76249b9f 100644 --- a/airtime_mvc/application/views/scripts/audiopreview/audio-preview.phtml +++ b/airtime_mvc/application/views/scripts/audiopreview/audio-preview.phtml @@ -4,8 +4,8 @@ playlistID" ?> playlistIndex" ?> blockId)): ?> - blockId" ?> - blockIndex" ?> + + uri)): ?> @@ -51,7 +51,7 @@
unmute -
+
diff --git a/airtime_mvc/application/views/scripts/playlist/update.phtml b/airtime_mvc/application/views/scripts/playlist/update.phtml index a51fd37db..70176ff9e 100644 --- a/airtime_mvc/application/views/scripts/playlist/update.phtml +++ b/airtime_mvc/application/views/scripts/playlist/update.phtml @@ -21,7 +21,7 @@ if ($item['type'] == 2) { -
"> +
" blocktype="">
diff --git a/airtime_mvc/public/js/airtime/audiopreview/preview_jplayer.js b/airtime_mvc/public/js/airtime/audiopreview/preview_jplayer.js index 0f5a0b0fe..e7435ee2e 100644 --- a/airtime_mvc/public/js/airtime/audiopreview/preview_jplayer.js +++ b/airtime_mvc/public/js/airtime/audiopreview/preview_jplayer.js @@ -123,6 +123,7 @@ function buildplaylist(p_url, p_playIndex) { var media; var index; var total = 0; + var skipped = 0; for(index in data) { if (data[index]['type'] == 0) { if (data[index]['element_mp3'] != undefined){ @@ -145,22 +146,30 @@ function buildplaylist(p_url, p_playIndex) { artist: data[index]['element_artist'], wav:data[index]['uri'] }; - } + } else { + // skip this track since it's not supported + console.log("continue"); + skipped++; + continue; + } } else if (data[index]['type'] == 1) { media = {title: data[index]['element_title'], artist: data[index]['element_artist'], mp3:data[index]['uri'] }; } + console.log(data[index]); if (media && isAudioSupported(data[index]['mime'])) { - myPlaylist[index] = media; + // javascript doesn't support associative array with numeric key + // so we need to remove the gap if we skip any of tracks due to + // browser incompatibility. + myPlaylist[index-skipped] = media; } // we should create a map according to the new position in the // player itself total is the index on the player _idToPostionLookUp[data[index]['element_id']] = total; total++; } - _playlist_jplayer.setPlaylist(myPlaylist); _playlist_jplayer.option("autoPlay", true); play(p_playIndex); diff --git a/airtime_mvc/public/js/airtime/common/common.js b/airtime_mvc/public/js/airtime/common/common.js index aa449dddf..3125d8d55 100644 --- a/airtime_mvc/public/js/airtime/common/common.js +++ b/airtime_mvc/public/js/airtime/common/common.js @@ -54,7 +54,7 @@ function open_audio_preview(type, id, audioFileTitle, audioFileArtist) { audioFileTitle = audioFileTitle.substring(0,index); } - openPreviewWindow('audiopreview/audio-preview/audioFileID/'+id+'/audioFileArtist/'+audioFileArtist+'/audioFileTitle/'+audioFileTitle+'/type/'+type); + openPreviewWindow('audiopreview/audio-preview/audioFileID/'+id+'/audioFileArtist/'+encodeURIComponent(audioFileArtist)+'/audioFileTitle/'+encodeURIComponent(audioFileTitle)+'/type/'+type); _preview_window.focus(); } diff --git a/airtime_mvc/public/js/airtime/library/spl.js b/airtime_mvc/public/js/airtime/library/spl.js index a5937820d..e79678201 100644 --- a/airtime_mvc/public/js/airtime/library/spl.js +++ b/airtime_mvc/public/js/airtime/library/spl.js @@ -366,7 +366,7 @@ var AIRTIME = (function(AIRTIME){ //and verify whether they can be previewed by the browser or not. If not //then the playlist element is greyed out mod.validatePlaylistElements = function(){ - $.each($(".big_play ui-icon-play"), function(index, value){ + $.each($("div .big_play"), function(index, value){ if ($(value).attr('blockId') === undefined) { var mime = $(value).attr("data-mime-type"); if (isAudioSupported(mime)) { @@ -393,6 +393,31 @@ var AIRTIME = (function(AIRTIME){ }, }) } + } else { + if ($(value).attr('blocktype') === 'dynamic') { + $(value).attr("class", "big_play_disabled dark_class"); + $(value).qtip({ + content: 'Dynamic block is not previewable', + show: 'mouseover', + hide: { + delay: 500, + fixed: true + }, + style: { + border: { + width: 0, + radius: 4 + }, + classes: "ui-tooltip-dark ui-tooltip-rounded" + }, + position: { + my: "left bottom", + at: "right center" + }, + }) + } else { + $(value).bind("click", openAudioPreview); + } } }); } diff --git a/install_minimal/upgrades/airtime-2.1.0/propel/airtime/CcPlaylistcontents.php b/install_minimal/upgrades/airtime-2.1.0/propel/airtime/CcPlaylistcontents.php index b5125de32..1b0abe796 100644 --- a/install_minimal/upgrades/airtime-2.1.0/propel/airtime/CcPlaylistcontents.php +++ b/install_minimal/upgrades/airtime-2.1.0/propel/airtime/CcPlaylistcontents.php @@ -43,11 +43,16 @@ class CcPlaylistcontents extends BaseCcPlaylistcontents { */ public function setDbFadein($v) { + $microsecond = 0; if ($v instanceof DateTime) { $dt = $v; } else if (preg_match('/^[0-9]{1,2}(\.\d{1,6})?$/', $v)) { - $dt = DateTime::createFromFormat("s.u", $v); + // in php 5.3.2 createFromFormat() with "u" is not supported(bug) + // Hence we need to do parsing. + $info = explode('.', $v); + $microsecond = $info[1]; + $dt = DateTime::createFromFormat("s", $info[0]); } else { try { @@ -57,7 +62,7 @@ class CcPlaylistcontents extends BaseCcPlaylistcontents { } } - $this->fadein = $dt->format('H:i:s.u'); + $this->fadein = $dt->format('H:i:s').".".$microsecond; $this->modifiedColumns[] = CcPlaylistcontentsPeer::FADEIN; return $this; @@ -71,11 +76,16 @@ class CcPlaylistcontents extends BaseCcPlaylistcontents { */ public function setDbFadeout($v) { + $microsecond = 0; if ($v instanceof DateTime) { $dt = $v; } else if (preg_match('/^[0-9]{1,2}(\.\d{1,6})?$/', $v)) { - $dt = DateTime::createFromFormat("s.u", $v); + // in php 5.3.2 createFromFormat() with "u" is not supported(bug) + // Hence we need to do parsing. + $info = explode('.', $v); + $microsecond = $info[1]; + $dt = DateTime::createFromFormat("s", $info[0]); } else { try { @@ -85,7 +95,7 @@ class CcPlaylistcontents extends BaseCcPlaylistcontents { } } - $this->fadeout = $dt->format('H:i:s.u'); + $this->fadeout = $dt->format('H:i:s').".".$microsecond; $this->modifiedColumns[] = CcPlaylistcontentsPeer::FADEOUT; return $this; diff --git a/install_minimal/upgrades/airtime-2.1.0/propel/airtime/CcSchedule.php b/install_minimal/upgrades/airtime-2.1.0/propel/airtime/CcSchedule.php index 75a01e758..6108e48af 100644 --- a/install_minimal/upgrades/airtime-2.1.0/propel/airtime/CcSchedule.php +++ b/install_minimal/upgrades/airtime-2.1.0/propel/airtime/CcSchedule.php @@ -107,11 +107,16 @@ class CcSchedule extends BaseCcSchedule { */ public function setDbFadeIn($v) { + $microsecond = 0; if ($v instanceof DateTime) { $dt = $v; } else if (preg_match('/^[0-9]{1,2}(\.\d{1,6})?$/', $v)) { - $dt = DateTime::createFromFormat("s.u", $v); + // in php 5.3.2 createFromFormat() with "u" is not supported(bug) + // Hence we need to do parsing. + $info = explode('.', $v); + $microsecond = $info[1]; + $dt = DateTime::createFromFormat("s", $info[0]); } else { try { @@ -120,7 +125,7 @@ class CcSchedule extends BaseCcSchedule { throw new PropelException('Error parsing date/time value: ' . var_export($v, true), $x); } } - $this->fade_in = $dt->format('H:i:s.u'); + $this->fade_in = $dt->format('H:i:s').".".$microsecond; $this->modifiedColumns[] = CcSchedulePeer::FADE_IN; return $this; @@ -134,11 +139,16 @@ class CcSchedule extends BaseCcSchedule { */ public function setDbFadeOut($v) { + $microsecond = 0; if ($v instanceof DateTime) { $dt = $v; } else if (preg_match('/^[0-9]{1,2}(\.\d{1,6})?$/', $v)) { - $dt = DateTime::createFromFormat("s.u", $v); + // in php 5.3.2 createFromFormat() with "u" is not supported(bug) + // Hence we need to do parsing. + $info = explode('.', $v); + $microsecond = $info[1]; + $dt = DateTime::createFromFormat("s", $info[0]); } else { try { @@ -148,7 +158,7 @@ class CcSchedule extends BaseCcSchedule { } } - $this->fade_out = $dt->format('H:i:s.u'); + $this->fade_out = $dt->format('H:i:s').".".$microsecond; $this->modifiedColumns[] = CcSchedulePeer::FADE_OUT; return $this; diff --git a/python_apps/media-monitor2/media/monitor/events.py b/python_apps/media-monitor2/media/monitor/events.py index 932c78d69..a8ccc3b54 100644 --- a/python_apps/media-monitor2/media/monitor/events.py +++ b/python_apps/media-monitor2/media/monitor/events.py @@ -43,7 +43,7 @@ class EventRegistry(object): methods") -class EventProxy(object): +class EventProxy(Loggable): """ A container object for instances of BaseEvent (or it's subclasses) used for event contractor diff --git a/python_apps/media-monitor2/media/monitor/metadata.py b/python_apps/media-monitor2/media/monitor/metadata.py index 8ceaf2aa9..bd42e434c 100644 --- a/python_apps/media-monitor2/media/monitor/metadata.py +++ b/python_apps/media-monitor2/media/monitor/metadata.py @@ -182,7 +182,7 @@ class Metadata(Loggable): that does not exist. Setting metadata to {}") self.__metadata = {} return - # TODO : Simplify the way all of these rules are handled right not it's + # TODO : Simplify the way all of these rules are handled right now it's # extremely unclear and needs to be refactored. #if full_mutagen is None: raise BadSongFile(fpath) if full_mutagen is None: full_mutagen = FakeMutagen(fpath) @@ -190,7 +190,6 @@ class Metadata(Loggable): # Now we extra the special values that are calculated from the mutagen # object itself: - # Hickity Hackity for .wav files. Properly do this later if mmp.extension(fpath) == 'wav': full_mutagen.set_length(mmp.read_wave_duration(fpath)) diff --git a/python_apps/media-monitor2/media/monitor/watchersyncer.py b/python_apps/media-monitor2/media/monitor/watchersyncer.py index 61146326a..e7a2cf9c0 100644 --- a/python_apps/media-monitor2/media/monitor/watchersyncer.py +++ b/python_apps/media-monitor2/media/monitor/watchersyncer.py @@ -126,7 +126,8 @@ class WatchSyncer(ReportHandler,Loggable): try: # If there is a strange bug anywhere in the code the next line # should be a suspect - if self.contractor.register(EventProxy(event)): self.push_queue( event ) + ev = EventProxy(event) + if self.contractor.register(ev): self.push_queue(ev) #self.push_queue( event ) except BadSongFile as e: self.fatal_exception("Received bas song file '%s'" % e.path, e) diff --git a/python_apps/media-monitor2/tests/test_pure.py b/python_apps/media-monitor2/tests/test_pure.py index 5dfaaedc2..64d09dc62 100644 --- a/python_apps/media-monitor2/tests/test_pure.py +++ b/python_apps/media-monitor2/tests/test_pure.py @@ -39,7 +39,7 @@ class TestMMP(unittest.TestCase): orig = Metadata.airtime_dict({ 'date' : [u'2012-08-21'], 'tracknumber' : [u'2'], - 'title' : [u'11-29-00-record'], + 'title' : [u'record-2012-08-21-11:29:00'], 'artist' : [u'Airtime Show Recorder'] }) orga = Metadata.airtime_dict({ @@ -57,7 +57,7 @@ class TestMMP(unittest.TestCase): self.assertEqual( orga, normalized ) - organized_base_name = "2012-08-21-11-29-00-record-256kbps.ogg" + organized_base_name = "11:29:00-record-256kbps.ogg" base = "/srv/airtime/stor/" organized_path = mmp.organized_path(old_path,base, normalized) self.assertEqual(os.path.basename(organized_path), organized_base_name)