MediaHandler in lavorazione
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
MediaLocalVideo,MediaImage,Mediapdf {path}
|
||||
MediaYoutube {link}
|
||||
MediaHtml5 {code}
|
||||
@@ -3,13 +3,19 @@
|
||||
interface HasMediaInterface{
|
||||
|
||||
/**
|
||||
* Ritorna un oggetto reference contenente id e collection name
|
||||
* Ritorna un oggetto reference contenente id e class
|
||||
* @return stdClass
|
||||
*/
|
||||
public function getReference();
|
||||
|
||||
/**
|
||||
* Setta la referenza ai media
|
||||
* Setta la referenza partendo da un array di oggetti media
|
||||
* @param array $references
|
||||
*/
|
||||
public function setMedias(array $medias);
|
||||
|
||||
/**
|
||||
* Setta la referenza partendo da un array di id di media
|
||||
* @param array $references
|
||||
*/
|
||||
public function setMediaReferences(array $references);
|
||||
@@ -20,8 +26,16 @@ interface HasMediaInterface{
|
||||
*/
|
||||
public function getMediaReferences();
|
||||
|
||||
public function setMainMedia();
|
||||
/**
|
||||
* Setta il media principale
|
||||
* @param MediaModel $media
|
||||
*/
|
||||
public function setMainMedia(MediaModel $media);
|
||||
|
||||
public function getMainMedia();
|
||||
/**
|
||||
* Restituisce la reference (id) del main media
|
||||
* @return MongoId
|
||||
*/
|
||||
public function getMainMediaReference();
|
||||
}
|
||||
?>
|
||||
@@ -9,7 +9,7 @@ abstract class HasMediaModel extends Model implements HasMediaInterface{
|
||||
public function getReference(){
|
||||
$rval = new stdClass();
|
||||
|
||||
$rval->collection = static::getCollectionName();
|
||||
$rval->class = get_class($this);
|
||||
$rval->id = $this->id;
|
||||
return $rval;
|
||||
}
|
||||
@@ -18,7 +18,7 @@ abstract class HasMediaModel extends Model implements HasMediaInterface{
|
||||
* (non-PHPdoc)
|
||||
* @see HasMediaInterface::setMediaReferences()
|
||||
*/
|
||||
public function setMediaReferences(array $medias){
|
||||
public function setMedias(array $medias){
|
||||
$this->mediaReferences = array();
|
||||
if(sizeof($medias)>0){
|
||||
foreach ($medias as $media){
|
||||
@@ -29,6 +29,15 @@ abstract class HasMediaModel extends Model implements HasMediaInterface{
|
||||
}
|
||||
}
|
||||
|
||||
public function setMediaReferences(array $references){
|
||||
$this->mediaReferences = array();
|
||||
if(sizeof($references)>0){
|
||||
foreach ($references as $reference){
|
||||
$this->mediaReferences[] = $reference;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* (non-PHPdoc)
|
||||
* @see HasMediaInterface::getMediaReferences()
|
||||
@@ -40,5 +49,21 @@ abstract class HasMediaModel extends Model implements HasMediaInterface{
|
||||
return $this->mediaReferences;
|
||||
}
|
||||
|
||||
/**
|
||||
* (non-PHPdoc)
|
||||
* @see HasMediaInterface::setMainMedia()
|
||||
*/
|
||||
public function setMainMedia(MediaInterface $media){
|
||||
$this->mainMedia = $media->getReference();
|
||||
}
|
||||
|
||||
/**
|
||||
* (non-PHPdoc)
|
||||
* @see HasMediaInterface::getMainMediaReference()
|
||||
*/
|
||||
public function getMainMediaReference(){
|
||||
return $this->mainMedia;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
@@ -2,14 +2,15 @@
|
||||
|
||||
class MediaHandler{
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @param HasMediaModel $news
|
||||
* @param MediaModel $media
|
||||
* @param HasMediaInterface $news
|
||||
* @param MediaInterface $media
|
||||
*
|
||||
* Ritorna un array coi i media della news
|
||||
* Ritorna un array coi le reference dei media della news
|
||||
*/
|
||||
public static function getMedias(HasMediaModel $model,MediaModel $media){
|
||||
public static function getMedias(HasMediaInterface $model,MediaInterface $media){
|
||||
$newsReference = $model->getMediaReferences();
|
||||
$rval = array();
|
||||
|
||||
@@ -20,27 +21,128 @@ class MediaHandler{
|
||||
|
||||
|
||||
/**
|
||||
* Aggiunge il media al model e controlla se il model ha un main media e se non lo ha glielo assegna
|
||||
*
|
||||
* @param HasMediaModel $news
|
||||
* @param MediaModel $media
|
||||
*
|
||||
* @param HasMediaInterface $model
|
||||
* @param MediaInterface $media
|
||||
* @throws MediaException
|
||||
*/
|
||||
public function addMedia(HasMediaModel $news, MediaModel $media){
|
||||
$newsReference = $news->getReference();
|
||||
$media->newsReference = $newsReference;
|
||||
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)");
|
||||
}
|
||||
|
||||
$news->media = array($media->getType=>$media->id);
|
||||
$dao->save($media);
|
||||
$dao->save($news);
|
||||
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().")");
|
||||
}
|
||||
}
|
||||
|
||||
public function deleteMedia(HasMediaModel $model, MediaModel $media){
|
||||
$newsReference = $model->getReference();
|
||||
$mediaId = $media->id;
|
||||
|
||||
$newsArr = $dao->query($model->getCollectionName(),array("media"=>$media->id));
|
||||
/**
|
||||
* 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){
|
||||
if($key = array_search($mediaId, $mediaArr) !== false){ /*:TODO check con riky*/
|
||||
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().")");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param MediaInterface $media
|
||||
* @throws MediaException
|
||||
* @return unknown
|
||||
*/
|
||||
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");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static function setMediaOwner(){
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @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 multitype:NULL
|
||||
*/
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ interface MediaInterface{
|
||||
|
||||
public function getTitle();
|
||||
|
||||
public function setOwner(HasMediaInterface $model);
|
||||
public function setOwnerReference(HasMediaInterface $model);
|
||||
public function getOwnerReference();
|
||||
|
||||
public function getReference();
|
||||
|
||||
@@ -47,7 +47,7 @@ class MediaModel extends Model implements MediaInterface{
|
||||
return "media";
|
||||
}
|
||||
|
||||
public function setOwner(HasMediaInterface $model){
|
||||
public function setOwnerReference(HasMediaInterface $model){
|
||||
$this->owner = $model->getReference();
|
||||
}
|
||||
public function getOwnerReference(){
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
class MediaLocalVideo implements MediaRendererInterface{
|
||||
private $modelRef;
|
||||
|
||||
public function __construct(MediaModel $model){
|
||||
$this->modelRef = $model;
|
||||
}
|
||||
|
||||
public function asText(){
|
||||
return $this->modelRef->path;
|
||||
}
|
||||
|
||||
public function render(){
|
||||
echo $this->asText();
|
||||
}
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user