Files
fdn2/private/lib/media/MediaHandler.php
T

154 lines
4.2 KiB
PHP

<?php
class MediaHandler{
/**
*
* @param HasMediaInterface $news
* @param MediaInterface $media
*
* Ritorna un array coi le reference dei media della news
*/
public static function getMedias(HasMediaInterface $model,MediaInterface $media){
$newsReference = $model->getMediaReferences();
$rval = array();
$rval = $dao->query("MediaModel",array($newsReference["id"]),array());
return $rval;
}
/**
* Aggiunge il media al model e controlla se il model ha un main media e se non lo ha glielo assegna
*
* @param HasMediaInterface $model
* @param MediaInterface $media
* @throws MediaException
*/
public static function addMedia(HasMediaInterface $model, MediaInterface $media){
if(!$model->hasProperty("id")){
throw new MediaException("Invalid HasMediaInterface passed to MediaHandler::addMedia (no property ID)");
}
if(!$media->hasProperty("id")){
throw new MediaException("Invalid MediaInterface passed to MediaHandler::addMedia (no property ID)");
}
try{
$mediaArr = array();
$mediaArr = $model->getMediaReferences();
if(!in_array($media->getReference(), $mediaArr)){
$mediaArr[] = $media->getReference();
$model->setMediaReferences($mediaArr);
GlobalVariables::get("dao")->save($model);
$media->setOwner($model);
GlobalVariables::get("dao")->save($media);
}
}catch(CoreException $ex){
throw new MediaException("Error while saving in MediaHandler::addMedia (".$ex->getMessage().")");
}
}
/**
* Elimina l'id del media dal model e deleta il media
*
* @param HasMediaInterface $model
* @param MediaInterface $media
* @throws MediaException
*/
public static function deleteMedia(HasMediaInterface $model, MediaInterface $media){
try{
$mediaArr = array();
$mediaArr = $model->getMediaReferences();
$mediaId = $media->getReference();
if(sizeof($mediaArr)>0){
$key = array_search($mediaId, $mediaArr);
if($key !== false){
unset($mediaArr[$key]);
$model->setMediaReferences($mediaArr);
GlobalVariables::get("dao")->save($model);
GlobalVariables::get("dao")->delete($media);
}
else{
throw new MediaException("Trying to delete invalid media from a model in MediaHandler::deleteMedia");
}
}
else{
throw new MediaException("This HasMediaInterface has no media in it '".$model->id."' sizeof on mediaReference failed in MediaHandler::deleteMedia");
}
}catch(CoreException $ex){
throw new MediaException("Error while deleting in MediaHandler::deleteMedia (".$ex->getMessage().")");
}
}
/**
* Setta l'owner al MediaModel
* @param HasMediaInterface $model
* @param MediaModel $media
*/
public static function setOwnerToMedia(HasMediaInterface $model, MediaModel $media){
$media->setOwnerReference($model);
}
/**
*
* @param MediaInterface $media
* @throws MediaException
* @return DaoSaveable
*/
public static function getMediaOwnerFromMedia(MediaInterface $media){
$ownerRef = $media->getOwnerReference();
try{
$owner = GlobalVariables::get("dao")->getFirst($ownerRef->class,array("id"=>$ownerRef->id));
return $owner;
}catch(CoreException $ex){
throw new MediaException("Invalid Media Reference trying get Media Owner in MediaHandler::getMEdiaOwner");
}
}
/**
*
* @param HasMediaInterface $model
* @param MediaInterface $media
* @throws MediaException
*/
public static function setMainMediaToModel(HasMediaInterface $model, MediaInterface $media){
try{
$model->setMainMedia($media);
GlobalVariables::get("dao")->save($model);
}catch(CoreException $ex){
throw new MediaException("Error while trying to save an HasMediaInterface in ModelHandler::setMainMedia");
}
}
/**
* Prende in ingresso un HasMediaInterface ritorna un array di un elemento array("mainMedia"=>"&value");
*
* @param HasMediaInterface $model
* @return array
*/
public static function getMainMediaFromModel(HasMediaInterface $model){
$mainMedia = $model->getMainMediaReference();
$modelRef = $model->getReference();
$rval = array();
$tmp = GlobalVariables::get("dao")->getFirst($modelRef->class,array("id"=>$modelRef->id));
if(!is_null($tmp)){
$rval["mainMedia"] = $tmp->mainMedia;
}
return $rval;
}
}
?>