diff --git a/private/lib/media/HasMediaInterface.php b/private/lib/media/HasMediaInterface.php
index 5df27ab..f56c91f 100644
--- a/private/lib/media/HasMediaInterface.php
+++ b/private/lib/media/HasMediaInterface.php
@@ -27,13 +27,13 @@ interface HasMediaInterface{
public function getMediaReferences();
/**
- * Setta il media principale
- * @param MediaModel $media
+ * Setta la reference del media principale
+ * @param MediaInterface $media
*/
- public function setMainMedia(MediaInterface $media);
+ public function setMainMedia(MediaInterface $media=null);
/**
- * Restituisce la reference (id) del main media
+ * Restituisce la reference (id) del main media, se non esiste ritorna null
* @return MongoId
*/
public function getMainMediaReference();
diff --git a/private/lib/media/HasMediaModel.php b/private/lib/media/HasMediaModel.php
index 6429268..40397c6 100644
--- a/private/lib/media/HasMediaModel.php
+++ b/private/lib/media/HasMediaModel.php
@@ -43,7 +43,7 @@ abstract class HasMediaModel extends Model implements HasMediaInterface{
* @see HasMediaInterface::getMediaReferences()
*/
public function getMediaReferences(){
- if($this->hasProperty("mediaReferences")){
+ if(!$this->hasProperty("mediaReferences")){
$this->mediaReferences = array();
}
return $this->mediaReferences;
@@ -53,8 +53,13 @@ abstract class HasMediaModel extends Model implements HasMediaInterface{
* (non-PHPdoc)
* @see HasMediaInterface::setMainMedia()
*/
- public function setMainMedia(MediaInterface $media){
- $this->mainMedia = $media->getReference();
+ public function setMainMedia(MediaInterface $media=null){
+ if(!is_null($media)){
+ $this->mainMedia = $media->getReference();
+ }
+ else{
+ $this->mainMedia=null;
+ }
}
/**
@@ -62,6 +67,9 @@ abstract class HasMediaModel extends Model implements HasMediaInterface{
* @see HasMediaInterface::getMainMediaReference()
*/
public function getMainMediaReference(){
+ if(!$this->hasProperty("mainMedia")){
+ $this->mainMedia = null;
+ }
return $this->mainMedia;
}
diff --git a/private/lib/media/MediaHandler.php b/private/lib/media/MediaHandler.php
index 1dd9208..bff1d76 100644
--- a/private/lib/media/MediaHandler.php
+++ b/private/lib/media/MediaHandler.php
@@ -10,12 +10,12 @@ class MediaHandler{
*
* Ritorna un array coi le reference dei media della news
*/
- public static function getMedias(HasMediaInterface $model,MediaInterface $media){
+ public static function getMedias(HasMediaInterface $model){
$newsReference = $model->getMediaReferences();
$rval = array();
-
- $rval = $dao->query("MediaModel",array($newsReference["id"]),array());
-
+// var_dump($newsReference);
+ $rval = GlobalVariables::get("dao")->query("MediaModel",array('id'=>array('$in'=>$newsReference)),array());
+// var_dump($rval);
return $rval;
}
@@ -44,7 +44,8 @@ class MediaHandler{
GlobalVariables::get("dao")->save($model);
- $media->setOwnerReference($model);
+ MediaHandler::setOwnerToMedia($model, $media);
+// $media->setOwnerReference($model);
GlobalVariables::get("dao")->save($media);
}
}catch(CoreException $ex){
@@ -66,13 +67,18 @@ class MediaHandler{
$mediaArr = $model->getMediaReferences();
$mediaId = $media->getReference();
- var_dump($mediaArr);
+// var_dump($mediaArr);
if(sizeof($mediaArr)>0){
$key = array_search($mediaId, $mediaArr);
if($key !== false){
unset($mediaArr[$key]);
$model->setMediaReferences($mediaArr);
+ if($model->getMainMediaReference() == $mediaId){
+// echo "UGUALE!";
+ $model->setMainMedia(null);
+ }
+
GlobalVariables::get("dao")->save($model);
GlobalVariables::get("dao")->delete($media);
@@ -134,21 +140,16 @@ class MediaHandler{
* Prende in ingresso un HasMediaInterface ritorna un array di un elemento array("mainMedia"=>"&value");
*
* @param HasMediaInterface $model
- * @return array
+ * @return MediaModel
*/
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;
+ $tmp = null;
+ if(!is_null($mainMedia)){
+ $tmp = GlobalVariables::get("dao")->getFirst("MediaModel",array("id"=>$mainMedia));
}
-
- return $rval;
+// var_dump($tmp);
+ return $tmp;
}
}
diff --git a/public/index.php b/public/index.php
index 874001b..3e7e4fc 100644
--- a/public/index.php
+++ b/public/index.php
@@ -13,6 +13,7 @@ try {
$prova->link = "www.pene.com";
$media = new MediaModel($prova);
+ $media2= new MediaModel($prova);
// $media->renderMedia();
$news = new NotiziaModel();
@@ -20,22 +21,45 @@ try {
GlobalVariables::get("dao")->save($news);
GlobalVariables::get("dao")->save($media);
+
+ GlobalVariables::get("dao")->save($media2);
MediaHandler::addMedia($news, $media);
+
+ MediaHandler::addMedia($news, $media2);
+// var_dump($news);
+// echo "
";
+// var_dump($media);
+// echo "
";
+
+ $medias = MediaHandler::getMedias($news);
+
+// echo "medias "; PHP_EOL.var_dump($medias).PHP_EOL;
+ MediaHandler::setMainMediaToModel($news, $media);
+
+ echo "
";
var_dump($news);
+ echo "
";
- echo "
";
- var_dump($media);
- echo "
";
+
+ $mainmedia = MediaHandler::getMainMediaFromModel($news);
+// echo "
";
+
+// var_dump($mainmedia);
+// echo "
";
MediaHandler::deleteMedia($news,$media);
+ echo "
";
+ var_dump($news);
+
+ MediaHandler::deleteMedia($news,$media2);
echo "
";
var_dump($news);
- echo "
";
- var_dump($media);
+// echo "
";
+// var_dump($media);
// TestTask::setActive(false);
// echo "
";