diff --git a/private/lib/dao/DaoSaveableDefaultImplementation.php b/private/lib/dao/DaoSaveableDefaultImplementation.php index 8b10c44..7aafaf1 100644 --- a/private/lib/dao/DaoSaveableDefaultImplementation.php +++ b/private/lib/dao/DaoSaveableDefaultImplementation.php @@ -16,8 +16,10 @@ abstract class DaoSaveableDefaultImplementation implements DaoSaveable { } public function __set($attr,$value){ - if (strcmp($attr,"id")==0){ - $attr = "_id"; + if (strcmp($attr,"id")==0 || strcmp($attr,"_id")==0){ + if (strcmp($attr,"id")==0){ + $attr = "_id"; + } if (!($value instanceof MongoId)){ $value = new MongoId($value); } @@ -26,10 +28,23 @@ abstract class DaoSaveableDefaultImplementation implements DaoSaveable { } public function &__get($attr){ - if (strcmp($attr,"id")==0){ - $attr = "_id"; + $rval = null; + if (strcmp($attr,"id")==0 || strcmp($attr,"_id")==0){ + if (strcmp($attr,"id")==0){ + $attr = "_id"; + } + if ($this->hasProperty($attr)){ + $idf = '$id'; + $rval = &$this->saveableObject->$attr->$idf; + } + else { + $rval = null; + } } - $rval = &$this->saveableObject->$attr; + else { + $rval = &$this->saveableObject->$attr; + } + return $rval; } diff --git a/private/lib/dao/GenericDao.php b/private/lib/dao/GenericDao.php index c2bb5b9..2dc0973 100644 --- a/private/lib/dao/GenericDao.php +++ b/private/lib/dao/GenericDao.php @@ -58,6 +58,10 @@ class GenericDao{ unset($useFilter["id"]); } + if (array_key_exists("_id",$useFilter) && is_string($useFilter["_id"])){ + $useFilter["_id"] = new MongoId($useFilter["_id"]); + } + $cursor = $collection->find($useFilter); if (array_key_exists("sort",$options)){ diff --git a/private/lib/dao/mediaModels/DaoMediaHandler.php b/private/lib/dao/mediaModels/DaoMediaHandler.php index 34f569e..ab6677b 100644 --- a/private/lib/dao/mediaModels/DaoMediaHandler.php +++ b/private/lib/dao/mediaModels/DaoMediaHandler.php @@ -1,7 +1,6 @@ paths->media; + $info = pathinfo($filePath); + $media = new MediaModel($saveableObj); + $media->extension = $info["extension"]; + GlobalVariables::get("dao")->save($media); + SFSManager::copyFile($filePath, $basepath."/".$media->id.".".$media->extension); + return $media; + } + } ?> \ No newline at end of file diff --git a/private/lib/dao/mediaModels/MediaModel.php b/private/lib/dao/mediaModels/MediaModel.php index 855aeea..00db583 100644 --- a/private/lib/dao/mediaModels/MediaModel.php +++ b/private/lib/dao/mediaModels/MediaModel.php @@ -21,22 +21,31 @@ class MediaModel extends Model implements MediaInterface{ public function __construct($saveableObject = null){ parent::__construct($saveableObject); + $this->setMediaRenderer(); + } + + public function setMediaRenderer(){ if($this->hasProperty("mediaType")){ if ($this->mediaType == self::TYPE_HTML5){ - $this->mediaRenderer = new MediaHtml5($this); + if ($this->hasProperty("code")){ + $this->mediaRenderer = new MediaHtml5($this->code); + } + else { + throw new MediaException("Media of type 'HTML5' has no code field"); + } } if ($this->mediaType == self::TYPE_LOCALVIDEO){ $this->mediaRenderer = new MediaLocalVideo($this); } if ($this->mediaType == self::TYPE_IMAGE){ - $this->mediaRenderer = new MediaImage($this); + $this->mediaRenderer = new MediaImage($this->id); } if ($this->mediaType == self::TYPE_PDF){ $this->mediaRenderer = new MediaPdf($this); } if ($this->mediaType == self::TYPE_YOUTUBE){ $this->mediaRenderer = new MediaYoutube($this); - } + } } else{ throw new MediaException("Missing mediatype for Media in MediaModel construct"); @@ -72,6 +81,9 @@ class MediaModel extends Model implements MediaInterface{ return $this->id; } - + public function updateFromSaveableObj($saveableObject){ + parent::updateFromSaveableObj($saveableObject); + $this->setMediaRenderer(); + } } ?> \ No newline at end of file diff --git a/private/lib/media/mediaRenderers/MediaHtml5.php b/private/lib/media/mediaRenderers/MediaHtml5.php index e3fcd13..a0555b1 100644 --- a/private/lib/media/mediaRenderers/MediaHtml5.php +++ b/private/lib/media/mediaRenderers/MediaHtml5.php @@ -1,14 +1,14 @@ modelRef = $model; + public function __construct($code){ + $this->code = $code; } public function asText(){ - return $this->modelRef->code; + return $this->code; } public function render(){ diff --git a/private/lib/media/mediaRenderers/MediaImage.php b/private/lib/media/mediaRenderers/MediaImage.php index 8171d10..768132d 100644 --- a/private/lib/media/mediaRenderers/MediaImage.php +++ b/private/lib/media/mediaRenderers/MediaImage.php @@ -1,13 +1,15 @@ modelRef = $model; + public function __construct($id){ + $this->id = $id; } public function asText(){ - return $this->modelRef->path; + return ''. + ''. + ''; } public function render(){ diff --git a/public/getImage.php b/public/getImage.php new file mode 100644 index 0000000..76cc0c2 --- /dev/null +++ b/public/getImage.php @@ -0,0 +1,54 @@ +getFirst("MediaModel",array("id"=>$_GET['id'])); + + if (!is_null($img)){ + $basepath = GlobalVariables::get("config")->paths->media; + $thumb = new Imagick($basepath."/".$img->id.".".$img->extension); + + if ($size == "small"){ + $thumb->thumbnailimage(0, 100); + } + + header('Content-type: image/png'); + echo $thumb; + + +// switch ($size){ +// case "big": +// $img = ThumbnailGenerator::renderBigThumbnail($content); +// break; +// case "med": +// $img = ThumbnailGenerator::renderMediumThumbnail($content); +// break; +// case "small": +// $img = ThumbnailGenerator::renderSmallThumbnail($content); +// break; +// case "mini": +// $img = ThumbnailGenerator::renderMiniThumbnail($content); +// break; +// case "topbar": +// header("Cache-Control: no-cache, must-revalidate"); +// $img = ThumbnailGenerator::renderThumbnail($content,150,0); +// break; +// default: +// $img = ThumbnailGenerator::renderOriginal($content); +// break; +// } + } +} +?> \ No newline at end of file diff --git a/public/index.php b/public/index.php index ac7bc3a..356d69f 100644 --- a/public/index.php +++ b/public/index.php @@ -57,6 +57,8 @@ try { DaoMediaHandler::deleteMedia($news,$media2); echo "

"; var_dump($news); + +// var_dump($media->id); // echo "

"; // var_dump($media);