diff --git a/airtime_mvc/application/models/Block.php b/airtime_mvc/application/models/Block.php index 2b88568fa..d7de15ca7 100644 --- a/airtime_mvc/application/models/Block.php +++ b/airtime_mvc/application/models/Block.php @@ -451,6 +451,10 @@ EOT; $this->block->save($this->con); $this->con->commit(); + + //check if block is in any playlists and update the playlist's length + Application_Model_Playlist::updatePlaylistsLengthWithBlock($this->id, $this->getLength()); + } catch (Exception $e) { $this->con->rollback(); throw $e; @@ -562,6 +566,11 @@ EOT; $this->block->save($this->con); $this->con->commit(); + + + //check if block is in any playlists and update the playlist's length + Application_Model_Playlist::updatePlaylistsLengthWithBlock($this->id, $this->getLength()); + } catch (Exception $e) { $this->con->rollback(); throw $e; diff --git a/airtime_mvc/application/models/Playlist.php b/airtime_mvc/application/models/Playlist.php index 5d716b107..17fc1907f 100644 --- a/airtime_mvc/application/models/Playlist.php +++ b/airtime_mvc/application/models/Playlist.php @@ -913,6 +913,26 @@ SQL; { CcPlaylistcontentsQuery::create()->findByDbPlaylistId($this->id)->delete(); } + + /** + * After items get deleted/added from/to a block + * this function updates the length of playlists + * that contain that block + */ + public static function updatePlaylistsLengthWithBlock($p_blockId, $p_blockLength) { + $playlists = CcPlaylistQuery::create()->find(); + foreach ($playlists as $pl) { + $contents = CcPlaylistcontentsQuery::create()->findByDbPlaylistId($pl->getDbId()); + //check if the block is in each playlist + foreach ($contents as $item) { + if ($item->getDbBlockId() == $p_blockId) { + $item->setDbCliplength($p_blockLength); + $con = Propel::getConnection(CcPlaylistPeer::DATABASE_NAME); + $item->save($con); + } + } + } + } } // class Playlist