CC-84: Smart Playlists

- started storing last played time in cc_files
- db column (lptime) already existed but was not being used before this
- will use this as a criteria for smart playlists
This commit is contained in:
denise 2012-07-19 18:07:39 -04:00
parent 9fcc851523
commit 647de9ed39
3 changed files with 35 additions and 7 deletions

View File

@ -349,6 +349,18 @@ class ApiController extends Zend_Controller_Action
$schedule_group_id = $this->_getParam("schedule_id");
$media_id = $this->_getParam("media_id");
$result = Application_Model_Schedule::UpdateMediaPlayedStatus($media_id);
//set a 'last played' timestamp for media item
//needed for smart playlists
try{
$file_id = Application_Model_Schedule::GetFileId($media_id);
$file = Application_Model_StoredFile::Recall($file_id);
$now = new DateTime("now", new DateTimeZone("UTC"));
$file->setLastPlayedTime($now);
}catch(Exception $e){
Logging::log($e);
}
echo json_encode(array("status"=>1, "message"=>""));
}

View File

@ -966,4 +966,10 @@ class Application_Model_Schedule
return $overlapping;
}
public static function GetFileId($p_scheduleId)
{
$scheduledItem = CcScheduleQuery::create()->findPK($p_scheduleId);
return $scheduledItem->getDbFileId();
}
}

View File

@ -79,6 +79,19 @@ class Application_Model_StoredFile
{
$this->_file->setDbFtype($p_format);
}
/* This function is only called after liquidsoap
* has notified that a track has started playing.
*/
public function setLastPlayedTime($p_now)
{
$this->_file->setDbLPtime($p_now);
/* Normally we would only call save after all columns have been set
* like in setDbColMetadata(). But since we are only setting one
* column in this case it is OK.
*/
$this->_file->save();
}
/**
* Set multiple metadata values using defined metadata constants.
@ -120,9 +133,6 @@ class Application_Model_StoredFile
}
$this->setDbColMetadata($dbMd);
}
$this->_file->setDbMtime(new DateTime("now"), new DateTimeZone("UTC"));
$this->_file->save();
}
/**
@ -152,8 +162,8 @@ class Application_Model_StoredFile
}
}
}
$this->_file->setDbMtime(new DateTime("now"), new DateTimeZone("UTC"));
Logging::log(new DateTime("now", new DateTimeZone("UTC")));
$this->_file->setDbMtime(new DateTime("now", new DateTimeZone("UTC")));
$this->_file->save();
}
@ -476,8 +486,8 @@ Logging::log("getting media! - 2");
{
$file = new CcFiles();
$file->setDbGunid(md5(uniqid("", true)));
$file->setDbUtime(new DateTime("now"), new DateTimeZone("UTC"));
$file->setDbMtime(new DateTime("now"), new DateTimeZone("UTC"));
$file->setDbUtime(new DateTime("now", new DateTimeZone("UTC")));
$file->setDbMtime(new DateTime("now", new DateTimeZone("UTC")));
$storedFile = new Application_Model_StoredFile();
$storedFile->_file = $file;