diff --git a/private/lib/dao/DaoSaveableInterface.php b/private/lib/dao/DaoSaveableInterface.php index 8e9c76a..d54fe3b 100644 --- a/private/lib/dao/DaoSaveableInterface.php +++ b/private/lib/dao/DaoSaveableInterface.php @@ -28,6 +28,7 @@ interface DaoSaveable { * @param stdClass $obj dati raw di mongo */ public function updateFromSaveableObj($obj); + } ?> \ No newline at end of file diff --git a/private/lib/dao/GenericDao.php b/private/lib/dao/GenericDao.php index 4499af7..7b0790c 100644 --- a/private/lib/dao/GenericDao.php +++ b/private/lib/dao/GenericDao.php @@ -5,6 +5,7 @@ Creation Date: 22/dic/2015 */ class GenericDao{ + private static $MODEL_REGISTRY = array(); private $mongoObj; private $database; @@ -113,6 +114,17 @@ class GenericDao{ self::$defaultReturnClass = $retClass; } + + public static function registerModel($model){ + if(is_subclass_of($model, "Model",true)){ + $collectionName = $model::getCollectionName(); + self::$MODEL_REGISTRY[$collectionName] = $model; + + } + else{ + throw new CoreException("Invalid model passed to GenericDao::registerModel ($model)"); + } + } } ?> \ No newline at end of file diff --git a/private/lib/dao/MediaHandlerInterface.php b/private/lib/dao/MediaHandlerInterface.php deleted file mode 100644 index 465f820..0000000 --- a/private/lib/dao/MediaHandlerInterface.php +++ /dev/null @@ -1,11 +0,0 @@ - \ No newline at end of file diff --git a/private/lib/dao/MediaModelHtml5.php b/private/lib/dao/MediaModelHtml5.php deleted file mode 100644 index 27c115f..0000000 --- a/private/lib/dao/MediaModelHtml5.php +++ /dev/null @@ -1,16 +0,0 @@ -link = $link; - } - -} -?> \ No newline at end of file diff --git a/private/lib/dao/MediaModelImage.php b/private/lib/dao/MediaModelImage.php deleted file mode 100644 index 43d5752..0000000 --- a/private/lib/dao/MediaModelImage.php +++ /dev/null @@ -1,30 +0,0 @@ -path = $origin; - $this->destination = $config->paths->media; - $this->destination .= $this->_id; - } - - public function onSave(){ - try{ - if(!is_dir($this->destination)){ - SFSManager::createDirectory($this->destination); - } - SFSManager::copyFile($this->path, $this->destination.=$this->_id); - - }catch(SFSException $ex){ - throw new CoreException("Error while saving model with id '".$this->_id. "' ".$ex->getMessage()); - } - } -} -?> \ No newline at end of file diff --git a/private/lib/dao/MediaModelLocalVideo.php b/private/lib/dao/MediaModelLocalVideo.php deleted file mode 100644 index d472e96..0000000 --- a/private/lib/dao/MediaModelLocalVideo.php +++ /dev/null @@ -1,30 +0,0 @@ -path = $origin; - $this->destination = $config->paths->media; - $this->destination .= $this->_id; - } - - public function onSave(){ - try{ - if(!is_dir($this->destination)){ - SFSManager::createDirectory($this->destination); - } - SFSManager::copyFile($this->path, $this->destination.=$this->_id); - - }catch(SFSException $ex){ - throw new CoreException("Error while saving model with id '".$this->_id. "' ".$ex->getMessage()); - } - } -} -?> \ No newline at end of file diff --git a/private/lib/dao/MediaModelPdf.php b/private/lib/dao/MediaModelPdf.php deleted file mode 100644 index 72edbe3..0000000 --- a/private/lib/dao/MediaModelPdf.php +++ /dev/null @@ -1,30 +0,0 @@ -path = $origin; - $this->destination = $config->paths->media; - $this->destination .= $this->_id; - } - - public function onSave(){ - try{ - if(!is_dir($this->destination)){ - SFSManager::createDirectory($this->destination); - } - SFSManager::copyFile($this->path, $this->destination.=$this->_id); - - }catch(SFSException $ex){ - throw new CoreException("Error while saving model with id '".$this->_id. "' ".$ex->getMessage()); - } - } -} -?> \ No newline at end of file diff --git a/private/lib/dao/MediaModelYoutube.php b/private/lib/dao/MediaModelYoutube.php deleted file mode 100644 index 6ca3bdc..0000000 --- a/private/lib/dao/MediaModelYoutube.php +++ /dev/null @@ -1,16 +0,0 @@ -link = $link; - } - -} -?> \ No newline at end of file diff --git a/private/lib/dao/Model.php b/private/lib/dao/Model.php index b5d1d30..68fb669 100644 --- a/private/lib/dao/Model.php +++ b/private/lib/dao/Model.php @@ -4,7 +4,14 @@ Author: Riccardo Di Dato Creation Date: 22/dic/2015 */ -class Model extends DaoSaveableDefaultImplementation{ +abstract class Model extends DaoSaveableDefaultImplementation{ + + public function __construct($saveableObject){ + parent::__construct(static::getCollectionName(),$saveableObject); + + } + + abstract public static function getCollectionName(); } diff --git a/private/lib/dao/lib.inclusion.php b/private/lib/dao/lib.inclusion.php index 82a60ac..9b7b76c 100644 --- a/private/lib/dao/lib.inclusion.php +++ b/private/lib/dao/lib.inclusion.php @@ -14,7 +14,7 @@ require_once(dirname(__FILE__)."/GenericDao.php"); require_once(dirname(__FILE__)."/Model.php"); require_once(dirname(__FILE__)."/models/NotiziaModel.php"); +GenericDao::registerModel("NotiziaModel"); $dao = new GenericDao($database->dbName,$database->connectionString); - ?> \ No newline at end of file diff --git a/private/lib/dao/models/MediaHandlerModel.php b/private/lib/dao/models/MediaHandlerModel.php deleted file mode 100644 index d27052c..0000000 --- a/private/lib/dao/models/MediaHandlerModel.php +++ /dev/null @@ -1,7 +0,0 @@ - \ No newline at end of file diff --git a/private/lib/dao/models/MediaModel.php b/private/lib/dao/models/MediaModel.php deleted file mode 100644 index dffcde1..0000000 --- a/private/lib/dao/models/MediaModel.php +++ /dev/null @@ -1,36 +0,0 @@ -array("label"=>"Youtube"), - self::TYPE_IMAGE=>array("label"=>"Image"), - self::TYPE_HTML5=>array("label"=>"Html5"), - self::TYPE_PDF=>array("label"=>"Pdf"), - self::TYPE_LOCALVIDEO=>array("label"=>"Local Video") - ); - - public function __construct($mediaType){ - if(array_key_exists($mediaType, self::$MEDIA_TYPES)){ - $this->type = $mediaType; - } - else{ - throw new MediaException("Invalid media type for Media; mediatype '".$mediaType."'"); - } - } - - - abstract public function onSave(); - -} - -?> \ No newline at end of file diff --git a/private/lib/media/HasMediaInterface.php b/private/lib/media/HasMediaInterface.php new file mode 100644 index 0000000..cc8eab3 --- /dev/null +++ b/private/lib/media/HasMediaInterface.php @@ -0,0 +1,15 @@ + \ No newline at end of file diff --git a/private/lib/media/HasMediaModel.php b/private/lib/media/HasMediaModel.php new file mode 100644 index 0000000..d38665c --- /dev/null +++ b/private/lib/media/HasMediaModel.php @@ -0,0 +1,36 @@ +collection = static::getCollectionName(); + $rval->id = $this->id; + return $rval; + } + + public function setMediaReferences(array $medias){ + $this->mediaReferences = array(); + if(sizeof($medias)>0){ + foreach ($medias as $media){ + if ($media instanceof MediaInterface){ + $this->mediaReferences[] = $media->getReference(); + } + } + } + } + + public function getMediaReferences(){ + if(!property_exists($this, "mediaReferences")){ + $this->mediaReferences = array(); + } + return $this->mediaReferences; + } + +} +?> \ No newline at end of file diff --git a/private/lib/media/Media.php b/private/lib/media/Media.php deleted file mode 100644 index 03395ee..0000000 --- a/private/lib/media/Media.php +++ /dev/null @@ -1,31 +0,0 @@ -type = $mediaType; - } - else{ - throw new MediaException("Invalid media type for Media; mediatype '".$mediaType."'"); - } - } - - abstract public function asText(); - - public function renderMedia(){ - echo $this->asText(); - } - - public function getType(){ - return $this->type; - } - - public function getTitle(){ - return $this->details; - } -} -?> \ No newline at end of file diff --git a/private/lib/media/MediaHandler.php b/private/lib/media/MediaHandler.php new file mode 100644 index 0000000..ad406de --- /dev/null +++ b/private/lib/media/MediaHandler.php @@ -0,0 +1,47 @@ +getReference(); + $rval = array(); + + $rval = $dao->query(MediaModel::COLLECTION_NAME,array($newsReference->id),array(),"MediaModel"); + + return $rval; + } + + + /** + * + * @param HasMediaModel $news + * @param MediaModel $media + * + */ + public function addMedia(HasMediaModel $news, MediaModel $media){ + $newsReference = $news->getReference(); + $media->newsReference = $newsReference; + + $news->media = array($media->getType=>$media->id); + $dao->save($media); + $dao->save($news); + } + + public function deleteMedia(HasMediaModel $model, MediaModel $media){ + $newsReference = $model->getReference(); + $mediaId = $media->id; + + $newsArr = $dao->query($model->getCollectionName(),array("media"=>$media->id)); + } + + +} + +?> \ No newline at end of file diff --git a/private/lib/media/MediaInterface.php b/private/lib/media/MediaInterface.php index 54b9531..e9001da 100644 --- a/private/lib/media/MediaInterface.php +++ b/private/lib/media/MediaInterface.php @@ -1,5 +1,5 @@ \ No newline at end of file diff --git a/private/lib/media/MediaModel.php b/private/lib/media/MediaModel.php new file mode 100644 index 0000000..c3dded2 --- /dev/null +++ b/private/lib/media/MediaModel.php @@ -0,0 +1,49 @@ +type == self::TYPE_HTML5){ + $this->mediaRenderer = new MediaHtml5($this); + } + } + else{ + throw new MediaException("Invalid media type for Media; mediatype '".$mediaType."'"); + } + } + + private function asText(){ + return $this->mediaRenderer->asText(); + } + + public function renderMedia(){ + $this->mediaRenderer->render(); + } + + public function getType(){ + return $this->type; + } + + public function getTitle(){ + return $this->details; + } + + public static function getCollectionName(){ + return "media"; + } + + public function setOwner(HasMediaInterface $model){ + $this->owner = $model->getReference(); + } + public function getOwnerReference(){ + return $this->owner; + } + + public function getReference(){ + return $this->id; + } +} +?> \ No newline at end of file diff --git a/private/lib/media/MediaRendererInterface.php b/private/lib/media/MediaRendererInterface.php new file mode 100644 index 0000000..577f248 --- /dev/null +++ b/private/lib/media/MediaRendererInterface.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/private/lib/media/lib.inclusion.php b/private/lib/media/lib.inclusion.php index 926bd8f..ec207e2 100644 --- a/private/lib/media/lib.inclusion.php +++ b/private/lib/media/lib.inclusion.php @@ -8,12 +8,13 @@ Creation Date: 08/gen/2016 require_once(dirname(__FILE__)."/MediaException.php"); require_once(dirname(__FILE__)."/MediaInterface.php"); -require_once(dirname(__FILE__)."/Media.php"); -require_once(dirname(__FILE__)."/../dao/MediaModel.php"); -require_once(dirname(__FILE__)."/mediaTypes/MediaYoutube.php"); -require_once(dirname(__FILE__)."/mediaTypes/MediaImage.php"); -require_once(dirname(__FILE__)."/mediaTypes/MediaHTML5.php"); -require_once(dirname(__FILE__)."/mediaTypes/MediaPDF.php"); -require_once(dirname(__FILE__)."/mediaTypes/MediaLocalVideo.php"); +require_once(dirname(__FILE__)."/MediaModel.php"); +require_once(dirname(__FILE__)."/HasMediaInterface.php"); +require_once(dirname(__FILE__)."/HasMediaModel.php"); +require_once(dirname(__FILE__)."/MediaRendererInterface.php"); +require_once(dirname(__FILE__)."/mediaRenderers/MediaHtml5.php"); +require_once(dirname(__FILE__)."/MediaHandler.php"); + +GenericDao::registerModel("MediaModel"); ?> \ No newline at end of file diff --git a/private/lib/media/mediaRenderers/MediaHtml5.php b/private/lib/media/mediaRenderers/MediaHtml5.php new file mode 100644 index 0000000..e3fcd13 --- /dev/null +++ b/private/lib/media/mediaRenderers/MediaHtml5.php @@ -0,0 +1,18 @@ +modelRef = $model; + } + + public function asText(){ + return $this->modelRef->code; + } + + public function render(){ + echo $this->asText(); + } +} +?> \ No newline at end of file diff --git a/private/lib/media/mediaTypes/MediaImage.php b/private/lib/media/mediaRenderers/MediaImage.php similarity index 100% rename from private/lib/media/mediaTypes/MediaImage.php rename to private/lib/media/mediaRenderers/MediaImage.php diff --git a/private/lib/media/mediaTypes/MediaPdf.php b/private/lib/media/mediaRenderers/MediaPdf.php similarity index 100% rename from private/lib/media/mediaTypes/MediaPdf.php rename to private/lib/media/mediaRenderers/MediaPdf.php diff --git a/private/lib/media/mediaTypes/MediaYoutube.php b/private/lib/media/mediaRenderers/MediaYoutube.php similarity index 100% rename from private/lib/media/mediaTypes/MediaYoutube.php rename to private/lib/media/mediaRenderers/MediaYoutube.php diff --git a/private/lib/media/mediaTypes/MediaHtml5.php b/private/lib/media/mediaTypes/MediaHtml5.php deleted file mode 100644 index 57309ee..0000000 --- a/private/lib/media/mediaTypes/MediaHtml5.php +++ /dev/null @@ -1,15 +0,0 @@ -code = $code; - } - - public function asText(){ - echo $this->code; - } -} -?> \ No newline at end of file