CC-2065: Fade times longer than Airtime supports can be set in Playlist Builder and Preferences
- didn't change much fixed two bugs and changed formating. - I introduced a but in Playlist.changeFadeInfo because for the general playlist fade in and out I didn't realize that these values are being set to the first and last elements. So I added a guard. - I also updated the logic for Playlist.moveAudioClip so if new and old position are the same we just return
This commit is contained in:
parent
7317b1d5af
commit
d6bf95500c
|
@ -163,23 +163,24 @@ class PlaylistController extends Zend_Controller_Action
|
|||
public function moveItemAction()
|
||||
{
|
||||
$oldPos = $this->_getParam('oldPos');
|
||||
$newPos = $this->_getParam('newPos');
|
||||
|
||||
$pl = $this->getPlaylist();
|
||||
$newPos = $this->_getParam('newPos');
|
||||
|
||||
|
||||
$pl = $this->getPlaylist();
|
||||
if($pl === false){
|
||||
$this->view->playlist_error = true;
|
||||
return false;
|
||||
}
|
||||
|
||||
$pl->moveAudioClip($oldPos, $newPos);
|
||||
$pl->moveAudioClip($oldPos, $newPos);
|
||||
|
||||
$this->view->pl = $pl;
|
||||
$this->view->html = $this->view->render('playlist/update.phtml');
|
||||
$this->view->name = $pl->getName();
|
||||
$this->view->length = $pl->getLength();
|
||||
$this->view->pl = $pl;
|
||||
$this->view->html = $this->view->render('playlist/update.phtml');
|
||||
$this->view->name = $pl->getName();
|
||||
$this->view->length = $pl->getLength();
|
||||
$this->view->description = $pl->getDescription();
|
||||
|
||||
unset($this->view->pl);
|
||||
unset($this->view->pl);
|
||||
}
|
||||
|
||||
public function deleteItemAction()
|
||||
|
@ -294,19 +295,19 @@ class PlaylistController extends Zend_Controller_Action
|
|||
|
||||
public function setFadeAction()
|
||||
{
|
||||
$pos = $this->_getParam('pos');
|
||||
$pl = $this->getPlaylist();
|
||||
$pos = $this->_getParam('pos');
|
||||
$pl = $this->getPlaylist();
|
||||
|
||||
if($pl === false){
|
||||
$this->view->playlist_error = true;
|
||||
return false;
|
||||
}
|
||||
|
||||
$fadeIn = $this->_getParam('fadeIn', null);
|
||||
$fadeOut = $this->_getParam('fadeOut', null);
|
||||
|
||||
$response = $pl->changeFadeInfo($pos, $fadeIn, $fadeOut);
|
||||
|
||||
$this->view->response = $response;
|
||||
$fadeIn = $this->_getParam('fadeIn', null);
|
||||
$fadeOut = $this->_getParam('fadeOut', null);
|
||||
|
||||
$response = $pl->changeFadeInfo($pos, $fadeIn, $fadeOut);
|
||||
$this->view->response = $response;
|
||||
|
||||
if(!isset($response["error"])) {
|
||||
$this->view->pl = $pl;
|
||||
|
@ -369,33 +370,39 @@ class PlaylistController extends Zend_Controller_Action
|
|||
$this->view->html = $this->view->render('playlist/index.phtml');
|
||||
}
|
||||
|
||||
/**
|
||||
* The playlist fades are stored in the elements themselves.
|
||||
* The fade in is set to the first elements fade in and
|
||||
* the fade out is set to the last elments fade out.
|
||||
**/
|
||||
public function setPlaylistFadesAction()
|
||||
{
|
||||
$request = $this->getRequest();
|
||||
$pl = $this->getPlaylist();
|
||||
$pl = $this->getPlaylist();
|
||||
if($pl === false){
|
||||
$this->view->playlist_error = true;
|
||||
return false;
|
||||
}
|
||||
|
||||
if($request->isPost()) {
|
||||
$fadeIn = $this->_getParam('fadeIn', null);
|
||||
$fadeOut = $this->_getParam('fadeOut', null);
|
||||
if($request->isPost()) {
|
||||
$fadeIn = $this->_getParam('fadeIn', null);
|
||||
$fadeOut = $this->_getParam('fadeOut', null);
|
||||
|
||||
if($fadeIn)
|
||||
$response = $pl->changeFadeInfo(0, $fadeIn, $fadeOut);
|
||||
$response = $pl->changeFadeInfo(0, $fadeIn, $fadeOut);
|
||||
else if($fadeOut)
|
||||
$response = $pl->changeFadeInfo($pl->getSize(), $fadeIn, $fadeOut);
|
||||
|
||||
$this->view->response = $response;
|
||||
return;
|
||||
}
|
||||
$this->view->response = $response;
|
||||
|
||||
$fades = $pl->getFadeInfo(0);
|
||||
$this->view->fadeIn = $fades[0];
|
||||
return;
|
||||
}
|
||||
|
||||
$fades = $pl->getFadeInfo($pl->getSize());
|
||||
$this->view->fadeOut = $fades[1];
|
||||
$fades = $pl->getFadeInfo(0);
|
||||
$this->view->fadeIn = $fades[0];
|
||||
|
||||
$fades = $pl->getFadeInfo($pl->getSize());
|
||||
$this->view->fadeOut = $fades[1];
|
||||
}
|
||||
|
||||
public function setPlaylistNameAction()
|
||||
|
|
|
@ -219,7 +219,6 @@ class Application_Model_Playlist {
|
|||
|
||||
if($pl === NULL)
|
||||
return FALSE;
|
||||
|
||||
$pl->setDbDescription($p_description);
|
||||
$pl->setDbMtime(new DateTime("now"), new DateTimeZone("UTC"));
|
||||
$pl->save();
|
||||
|
@ -428,18 +427,20 @@ class Application_Model_Playlist {
|
|||
* will normalize the fade so that it looks like 00.000000 to the user.
|
||||
**/
|
||||
public function normalizeFade($fade) {
|
||||
//First get rid of the first six characters 00:00: which will be added back later for db update
|
||||
$fade = substr($fade, 6);
|
||||
|
||||
//First get rid of the first six characters 00:00: which will be added back later for db update
|
||||
$fade = substr($fade, 6);
|
||||
|
||||
//Second add .000000 if the fade does't have milliseconds format already
|
||||
$dbFadeStrPos = strpos( $fade, '.' );
|
||||
if ( $dbFadeStrPos === False )
|
||||
$fade .= '.000000';
|
||||
else
|
||||
while( strlen( $fade ) < 9 )
|
||||
$fade .= '0';
|
||||
//done, just need to set back the formated values
|
||||
return $fade;
|
||||
//Second add .000000 if the fade does't have milliseconds format already
|
||||
$dbFadeStrPos = strpos( $fade, '.' );
|
||||
if ( $dbFadeStrPos === False )
|
||||
$fade .= '.000000';
|
||||
else
|
||||
while( strlen( $fade ) < 9 )
|
||||
$fade .= '0';
|
||||
|
||||
//done, just need to set back the formated values
|
||||
return $fade;
|
||||
}
|
||||
|
||||
public function getLength() {
|
||||
|
@ -610,7 +611,7 @@ class Application_Model_Playlist {
|
|||
*/
|
||||
public function moveAudioClip($oldPos, $newPos)
|
||||
{
|
||||
if($newPos < 0 || $newPos >= $this->getNextPos() || $oldPos < 0 || $oldPos >= $this->getNextPos())
|
||||
if($newPos < 0 || $newPos >= $this->getNextPos() || $oldPos < 0 || $oldPos >= $this->getNextPos() || $oldPos === $newPos)
|
||||
return FALSE;
|
||||
|
||||
$row = $this->delAudioClip($oldPos);
|
||||
|
@ -630,21 +631,17 @@ class Application_Model_Playlist {
|
|||
|
||||
public function getFadeInfo($pos) {
|
||||
|
||||
$row = CcPlaylistcontentsQuery::create()
|
||||
$row = CcPlaylistcontentsQuery::create()
|
||||
->joinWith(CcFilesPeer::OM_CLASS)
|
||||
->filterByDbPlaylistId($this->id)
|
||||
->filterByDbPosition($pos)
|
||||
->findOne();
|
||||
|
||||
$fadeIn = $row->getDbFadein();
|
||||
$fadeOut = $row->getDbFadeout();
|
||||
|
||||
#For issue CC-2065, fade in and out values are for the Playlist itself and must be
|
||||
#modified from the db default format of 00:00:00 to the more practical
|
||||
#00.000000 format which is for only seconds.
|
||||
$fadeIn = $this->normalizeFade($fadeIn);
|
||||
$fadeOut = $this->normalizeFade($fadeOut);
|
||||
|
||||
$fadeIn = $this->normalizeFade($row->getDbFadein());
|
||||
$fadeOut = $this->normalizeFade($row->getDbFadeout());
|
||||
return array($fadeIn, $fadeOut);
|
||||
}
|
||||
|
||||
|
@ -661,9 +658,11 @@ class Application_Model_Playlist {
|
|||
*/
|
||||
public function changeFadeInfo($pos, $fadeIn, $fadeOut)
|
||||
{
|
||||
#See issue CC-2065, pad the fadeIn and fadeOut so that it is TIME compatable with the DB schema
|
||||
$fadeIn = '00:00:'.$fadeIn;
|
||||
$fadeOut = '00:00:'.$fadeOut;
|
||||
//See issue CC-2065, pad the fadeIn and fadeOut so that it is TIME compatable with the DB schema
|
||||
//For the top level PlayList either fadeIn or fadeOut will sometimes be Null so need a gaurd against
|
||||
//setting it to nonNull for checks down below
|
||||
$fadeIn = $fadeIn?'00:00:'.$fadeIn:$fadeIn;
|
||||
$fadeOut = $fadeOut?'00:00:'.$fadeOut:$fadeOut;
|
||||
|
||||
$errArray= array();
|
||||
$con = Propel::getConnection(CcPlaylistPeer::DATABASE_NAME);
|
||||
|
|
Loading…
Reference in New Issue