diff --git a/private/lib/dao/lib.inclusion.php b/private/lib/dao/lib.inclusion.php index 9ba578c..2a6df63 100644 --- a/private/lib/dao/lib.inclusion.php +++ b/private/lib/dao/lib.inclusion.php @@ -33,6 +33,9 @@ require_once(dirname(__FILE__)."/models/AccessModel.php"); require_once(dirname(__FILE__)."/models/LogModel.php"); require_once(dirname(__FILE__)."/models/StatisticModel.php"); + +require_once(dirname(__FILE__)."/models/BannerModel.php"); + $dao = new GenericDao($database->dbName,$database->connectionString); GlobalVariables::set("dao", $dao); ?> diff --git a/private/lib/dao/mediaModels/DaoMediaHandler.php b/private/lib/dao/mediaModels/DaoMediaHandler.php index 15b4886..fd9973f 100644 --- a/private/lib/dao/mediaModels/DaoMediaHandler.php +++ b/private/lib/dao/mediaModels/DaoMediaHandler.php @@ -5,22 +5,27 @@ class DaoMediaHandler implements MediaHandlerInterface{ /** * * @param HasMediaInterface $news - * @param MediaInterface $media - * - * Ritorna un array coi le reference dei media della news + * @return MediaInterface[] $media + * Ritorna un array con i media model della news */ public static function getMedias(HasMediaInterface $model){ $newsReference = $model->getMediaReferences(); + $referenceIds = array(); + if (sizeof($newsReference)>0){ + foreach ($newsReference as $ref){ + $referenceIds[] = new MongoId($ref); + } + } $rval = array(); // var_dump($newsReference); - $rval = GlobalVariables::get("dao")->query("MediaModel",array('id'=>array('$in'=>$newsReference)),array()); + $rval = GlobalVariables::get("dao")->query("MediaModel",array('id'=>array('$in'=>$referenceIds))); // var_dump($rval); return $rval; } /** - * Aggiunge il media al model e controlla se il model ha un main media e se non lo ha glielo assegna + * Aggiunge il media al model e controlla se il model ha un main media e se non lo ha glielo assegna (salva sia il media che la news) * * @param HasMediaInterface $model * @param MediaInterface $media diff --git a/private/lib/dao/mediaModels/MediaModel.php b/private/lib/dao/mediaModels/MediaModel.php index 6e10358..af50038 100644 --- a/private/lib/dao/mediaModels/MediaModel.php +++ b/private/lib/dao/mediaModels/MediaModel.php @@ -85,5 +85,14 @@ class MediaModel extends Model implements MediaInterface{ parent::updateFromSaveableObj($saveableObject); $this->setMediaRenderer(); } + + public function getPath(){ + if(($this->mediaType == self::TYPE_IMAGE) || ($this->mediaType == self::TYPE_PDF) || ($this->mediaType == self::TYPE_LOCALVIDEO)){ + return $this->mediaRenderer->getPath(); + } + else{ + return "questo media non è presente all'interno dell'applicativo"; + } + } } ?> \ No newline at end of file diff --git a/private/lib/dao/models/BannerModel.php b/private/lib/dao/models/BannerModel.php new file mode 100644 index 0000000..55e90cf --- /dev/null +++ b/private/lib/dao/models/BannerModel.php @@ -0,0 +1,19 @@ +array("label"=>"Image"), + self::TYPE_HTML=>array("label"=>"Html") + ); + + public static function getCollectionName(){ + return "banner"; + } + +} + +?> \ No newline at end of file diff --git a/private/lib/media/mediaRenderers/MediaImage.php b/private/lib/media/mediaRenderers/MediaImage.php index 55c83c4..f8fe545 100644 --- a/private/lib/media/mediaRenderers/MediaImage.php +++ b/private/lib/media/mediaRenderers/MediaImage.php @@ -17,5 +17,10 @@ class MediaImage implements MediaRendererInterface{ public function render(array $opt = array ()){ echo $this->asText($opt); } + + public function getPath(){ + $basepath = GlobalVariables::get("config")->paths->media; + return $basepath."/".$this->id.".".$this->extension; + } } ?> diff --git a/public/admin/addMultimedia.php b/public/admin/addMultimedia.php index cc676ec..ae079e4 100644 --- a/public/admin/addMultimedia.php +++ b/public/admin/addMultimedia.php @@ -41,7 +41,6 @@ try{ $media = DaoMediaHandler::createNewTextBasedMedia($saveable); } else { - $saveable->path = PostHandler::get("data"); $file = $_FILES['data']['tmp_name']; $info = pathinfo($_FILES['data']['name']); // $file = PostHandler::get("data"); @@ -61,7 +60,7 @@ try{ throw new Exception("Invalid mediaType '".$mediaType."' while trying to add the media in addMultimedia"); } - GUIHandler::redirectPost("admin/homeMultimedia.php",array("id"=>$notiziaId)); +// GUIHandler::redirectPost("admin/homeMultimedia.php",array("id"=>$notiziaId)); } } diff --git a/public/admin/deleteBanner.php b/public/admin/deleteBanner.php new file mode 100644 index 0000000..b4bacff --- /dev/null +++ b/public/admin/deleteBanner.php @@ -0,0 +1,66 @@ +hasRole(AdminModel::ADMIN_TYPE_BANNER_SUPERVISOR)){ + GUIHandler::redirect("admin/index.php"); +} + +MenuGenerator::generateMenu(); + +HTMLHelper::generateAdminHead(); + +$id = PostHandler::get("id"); +if (is_null($id) || strcmp("", $id)==0){ + GUIHandler::redirect("admin/listBanner.php"); +} + +$banner = GlobalVariables::get("dao")->getFirst("BannerModel",array("id"=>$id)); +if (is_null($banner)){ + GUIHandler::redirect("admin/listBanner.php"); +} + +$confirm = PostHandler::get("confirm"); +if (!is_null($confirm) && strcmp("", $confirm)!=0){ + if (strcmp("true", $confirm)==0){ + $medias = DaoMediaHandler::getMedias($banner); + $media = reset($medias); + +// $media = GlobalVariables::get("dao")->getFirst("MediaModel",array("id"=>$mediaId)); + + DaoMediaHandler::deleteMedia($banner, $media); + + GlobalVariables::get("dao")->delete($banner); + } + GUIHandler::redirect("admin/listBanner.php"); +} + +?> +
+ \ No newline at end of file diff --git a/public/admin/editBanner.php b/public/admin/editBanner.php new file mode 100644 index 0000000..7143d12 --- /dev/null +++ b/public/admin/editBanner.php @@ -0,0 +1,199 @@ +hasRole(AdminModel::ADMIN_TYPE_BANNER_SUPERVISOR)){ + GUIHandler::redirect("admin/index.php"); +} + +MenuGenerator::generateMenu(); + +HTMLHelper::generateAdminHead(); + +$bannerId = PostHandler::get("id"); + +try{ + $error=""; + $edit=false; + $banner = new BannerModel(); + $newMedia = null; + $mediaTypeSaved = PostHandler::get("mediaType"); + + if(!is_null($bannerId) && strcmp($bannerId, "")!=0){ + $edit = true; + $banner = GlobalVariables::get("dao")->getFirst("BannerModel",array("id"=>$bannerId)); + $newMedias = DaoMediaHandler::getMedias($banner); + if(sizeof($newMedias)>0){ + $newMedia = reset($newMedias); + } + if($banner->hasProperty("type") && !is_null($banner->type)){ + $mediaTypeSaved = $banner->type; + } + } + + if(array_key_exists("action", $_POST) && strcmp(PostHandler::get("action"), "save")==0){ + if(is_null($bannerId) || strcmp($bannerId, "")==0){ + $banner->customer = PostHandler::get("customer"); + $banner->type = PostHandler::get("mediaType"); + $banner->start = new Mongodate(strtotime(PostHandler::get("dateStart"))); + $banner->end = new Mongodate(strtotime(PostHandler::get("dateEnd"))); + GlobalVariables::get("dao")->save($banner); + $bannerId = $banner->id; + } + + if(!is_null($bannerId) && strcmp($bannerId, "")!=0){ + $edit=true; +// $banner = GlobalVariables::get("dao")->getFirst("BannerModel",array("id"=>$bannerId)); + $file = ""; + + $mediaType = PostHandler::get("mediaType"); + $banner->type=$mediaType; + if(strcmp($mediaType, "")!=0){ + $tmp = array(); + $saveable = new stdClass(); + $saveable->mediaType = $mediaType; + if(strcmp($mediaType,MediaModel::TYPE_HTML5)==0){ + $saveable->code = PostHandler::get("data"); + $media = DaoMediaHandler::createNewTextBasedMedia($saveable); + } + else if(strcmp($mediaType,MediaModel::TYPE_IMAGE)==0){ + $file = $_FILES['data']['tmp_name']; + $info = pathinfo($_FILES['data']['name']); +// $file = PostHandler::get("data"); + $media = DaoMediaHandler::createNewFileBasedMedia($saveable, $file,$info["extension"]); + } + + if(!is_null($media)){ + GlobalVariables::get("dao")->save($media); + DaoMediaHandler::addMedia($banner, $media); + GlobalVariables::get("dao")->save($banner); + } + else{ + throw new Exception("Cannot save a null media in the news with id '".$bannerId."'"); + } + } + else{ + throw new Exception("Invalid mediaType '".$mediaType."' while trying to add the media in editBanner"); + } + + GUIHandler::redirect("admin/listBanner.php"); + } + } +// else if(array_key_exists("action", $_POST) && strcmp(PostHandler::get("action"), "delete")==0){ +// if(!is_null($bannerId) && strcmp($bannerId, "")!=0){ +// $banner = GlobalVariables::get("dao")->getFirst("BannerModel",array("id"=>$bannerId)); +// $medias = DaoMediaHandler::getMedias($banner); +// // $media = reset($medias); +// // $media = GlobalVariables::get("dao")->getFirst("MediaModel",array("id"=>$mediaId)); +// foreach ($medias as $media){ +// DaoMediaHandler::deleteMedia($banner, $media); +// $banner->type = null; +// GlobalVariables::get("dao")->save($banner); +// } +// } +// GUIHandler::redirect("admin/listBanner.php"); +// } + if($edit && !is_null($newMedia)){ + $formFile = ' + '; + + $formHtml = 'Inserire html: '; + } + else{ + $formFile = ' + '; + + $formHtml = 'Inserire html: '; + } + +}catch(GUIException $ex){ + $error = $ex->getMessage(); +}catch (Exception $exec){ + LoggingFacilityManager::getLogger("gui")->log(LoggingFacility::$LEVEL_ERROR, $exec->getMessage()); + $error = "Si è verificato un errore inaspettato durante l'esecuzione della pagina. Se l'errore persiste contattare il supporto tecnico."; +} +?> + + \ No newline at end of file diff --git a/public/admin/editSondaggi.php b/public/admin/editSondaggi.php index 240d67a..e2561f5 100644 --- a/public/admin/editSondaggi.php +++ b/public/admin/editSondaggi.php @@ -24,6 +24,15 @@ try{ if(!is_null($notiziaId) && strcmp($notiziaId, "")!=0){ // $optArr = "è presente la chiave action in post"; $notizia = GlobalVariables::get("dao")->getFirst("NotiziaModel",array("id"=>$notiziaId)); + + /* Controllo non vi siano votanti per il sondaggio, se ci sono impedisce di editarlo */ + if($notizia->hasProperty("sondaggio") && is_array($notizia->sondaggio->votanti)){ + if(sizeof($notizia->sondaggio->votanti)>0){ + GUIHandler::redirectPost("admin/homeNotizie.php",array("id"=>$notiziaId)); + } + + } + // echo "pene"; if(is_null($notizia)){ diff --git a/public/admin/homeNotizie.php b/public/admin/homeNotizie.php index 668dc90..8e3d263 100644 --- a/public/admin/homeNotizie.php +++ b/public/admin/homeNotizie.php @@ -75,11 +75,13 @@ try{