From df3c5f2710c0504862a4c7fa70d0b4c944c5ad85 Mon Sep 17 00:00:00 2001
From: pbarroca <pbarroca@afi-sa.fr>
Date: Mon, 23 Jun 2014 12:50:08 +0200
Subject: [PATCH] rel #13914 : never save category with id 0

---
 .../admin/controllers/MenusController.php     | 233 +++++++-----------
 1 file changed, 91 insertions(+), 142 deletions(-)

diff --git a/application/modules/admin/controllers/MenusController.php b/application/modules/admin/controllers/MenusController.php
index 41074539c77..cc4d326cd51 100644
--- a/application/modules/admin/controllers/MenusController.php
+++ b/application/modules/admin/controllers/MenusController.php
@@ -18,22 +18,16 @@
  * along with AFI-OPAC 2.0; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
  */
-//////////////////////////////////////////////////////////////////////////////////////////
-// OPAC3 - Propriétés des modules des menus
-//
-//////////////////////////////////////////////////////////////////////////////////////////
 
-require_once('AccueilController.php');
+require_once 'AccueilController.php';
 
 class Admin_MenusController extends Admin_AccueilController {
 	private $id_profil;							// Id_profil du menu
 	private $id_module;							// N° d'identifiant unique pour le javascript config_menus
 	private $type_menu;							// Type de menu
 
-//------------------------------------------------------------------------------------------------------
-// Initialisation des parametres et du layout
-//------------------------------------------------------------------------------------------------------
-	function init()	{
+
+	public function init()	{
 		// Changer le layout
 		$viewRenderer = $this->getHelper('ViewRenderer');
 		$viewRenderer->setLayoutScript('subModal.phtml');
@@ -53,7 +47,7 @@ class Admin_MenusController extends Admin_AccueilController {
 	}
 
 
-	function postDispatch(){
+	public function postDispatch() {
 		$modules_menu = new Class_Systeme_ModulesMenu();
 
 		$reload = (1 === (int)$this->_getParam('styles_reload'));
@@ -65,150 +59,122 @@ class Admin_MenusController extends Admin_AccueilController {
 		$this->renderScript('accueil/'.$action.'.phtml');
 	}
 
-//------------------------------------------------------------------------------------------------------
-// Fonctions sans préférences : uniquement picto et libelle
-//------------------------------------------------------------------------------------------------------
-	function indexAction()	{
-		if ($this->_request->isPost())
-		{
-			$enreg=$_POST;
+
+	public function indexAction()	{
+		if ($this->_request->isPost()) {
+			$enreg = $_POST;
 			$this->_updateEtRetour($enreg);
 		}
 	}
 	
-//------------------------------------------------------------------------------------------------------
-// Avis
-//------------------------------------------------------------------------------------------------------
-	function avisAction()
-	{
-		if ($this->_request->isPost())
-		{
-			$enreg=$_POST;
-			$nb=(int)($enreg["nb"]);
-			if($nb < 1 or $nb > 50) $this->retourErreur("Le nombre d'avis doit être compris entre 1 et 50");
-			else $this->_updateEtRetour($enreg);
+
+	public function avisAction() {
+		if ($this->_request->isPost()) {
+			$enreg = $_POST;
+			$nb = (int)($enreg['nb']);
+			($nb < 1 or $nb > 50) ?
+				$this->retourErreur("Le nombre d'avis doit être compris entre 1 et 50") :
+				$this->_updateEtRetour($enreg);
 		}
 	}
 
-//------------------------------------------------------------------------------------------------------
-// NEWS (articles cms)
-//------------------------------------------------------------------------------------------------------
-	function newsAction()
-	{	
-		if ($this->_request->isPost())
-		{
-			$enreg=$_POST;
+
+	public function newsAction() {	
+		if ($this->_request->isPost()) {
+			$enreg = $_POST;
 			$enreg["nb_aff"] = (int)$enreg["nb_aff"];
 			$enreg["nb_analyse"] = (int)$enreg["nb_analyse"];
 			$this->_updateEtRetour($enreg);
 		}
 	}
-//------------------------------------------------------------------------------------------------------
-// LAST_NEWS (derniers articles)
-//------------------------------------------------------------------------------------------------------
-	function lastnewsAction()
-	{
-		if ($this->_request->isPost())
-		{
-			$enreg=$_POST;
-			$nb=(int)($enreg["nb"]);
-			if($nb < 1 or $nb > 50) $this->retourErreur("Le nombre d'articles doit être compris entre 1 et 50");
-			else $this->_updateEtRetour($enreg);
+
+
+	public function lastnewsAction() {
+		if ($this->_request->isPost()) {
+			$enreg = $_POST;
+			$nb = (int)($enreg["nb"]);
+			($nb < 1 or $nb > 50) ?
+				$this->retourErreur("Le nombre d'articles doit être compris entre 1 et 50"):
+				$this->_updateEtRetour($enreg);
 		}
 	}
 
-//------------------------------------------------------------------------------------------------------
-// RSS 
-//------------------------------------------------------------------------------------------------------
-	function rssAction()
-	{
-		if ($this->_request->isPost())
-		{
-			$enreg=$_POST;
-			$nb=(int)($enreg["nb"]);
-			if($nb < 1 or $nb > 50) $this->retourErreur("Le nombre à afficher doit être compris entre 1 et 50");
-			else $this->_updateEtRetour($enreg);
+
+	public function rssAction() {
+		if ($this->_request->isPost()) {
+			$enreg = $_POST;
+			$nb = (int)($enreg["nb"]);
+			($nb < 1 or $nb > 50) ?
+				$this->retourErreur("Le nombre à afficher doit être compris entre 1 et 50"):
+				$this->_updateEtRetour($enreg);
 		}
 	}
 	
-//------------------------------------------------------------------------------------------------------
-// SITOTHEQUE 
-//------------------------------------------------------------------------------------------------------
-	function sitothequeAction()
-	{
-		if ($this->_request->isPost())
-		{
-			$enreg=$_POST;
-			$nb=(int)($enreg["nb"]);
-			if($nb < 1 or $nb > 50) $this->retourErreur("Le nombre à afficher doit être compris entre 1 et 50");
-			else $this->_updateEtRetour($enreg);
+
+	public function sitothequeAction() {
+		if ($this->_request->isPost()) {
+			$enreg = $_POST;
+			$nb = (int)($enreg["nb"]);
+			($nb < 1 or $nb > 50) ?
+				$this->retourErreur("Le nombre à afficher doit être compris entre 1 et 50"):
+				$this->_updateEtRetour($enreg);
 		}
 	}
 	
-//------------------------------------------------------------------------------------------------------
-// Lien vers une site (url libre)
-//------------------------------------------------------------------------------------------------------
-	function liensiteAction()
-	{
-		if ($this->_request->isPost())
-		{
-			$enreg=$_POST;
-			if(trim($enreg["url"])> "" and substr(strtolower($enreg["url"]),0,4) != "http") $this->retourErreur("L'url saisie n'est pas correcte");
-			else $this->_updateEtRetour($enreg);
+
+	public function liensiteAction() {
+		if ($this->_request->isPost()) {
+			$enreg = $_POST;
+			(trim($enreg["url"])> "" and substr(strtolower($enreg["url"]),0,4) != "http") ?
+				$this->retourErreur("L'url saisie n'est pas correcte"):
+				$this->_updateEtRetour($enreg);
 		}
 	}
 
-//------------------------------------------------------------------------------------------------------
-// Lien vers un profil du portail
-//------------------------------------------------------------------------------------------------------
-	function lienprofilAction()
-	{
-		if ($this->_request->isPost())
-		{
-			$enreg=$_POST;
+
+	public function lienprofilAction() {
+		if ($this->_request->isPost()) {
+			$enreg = $_POST;
 			$this->_updateEtRetour($enreg);
 		}
 	}
 
-//------------------------------------------------------------------------------------------------------
-// Google map
-//------------------------------------------------------------------------------------------------------
-	function googlemapAction()
-	{
-		if ($this->_request->isPost())
-		{
-			$enreg=$_POST;
-			$enreg["id_bib"]=$enreg["bib"];
+
+	public function googlemapAction() {
+		if ($this->_request->isPost()) {
+			$enreg = $_POST;
+			$enreg["id_bib"] = $enreg["bib"];
 			unset($enreg["bib"]);
 			$this->_updateEtRetour($enreg);
 		}
-		$bib=new Class_Bib();
-		$this->view->combo_bibs=$bib->getComboBib($this->view->preferences["id_bib"],false,false);
+
+		$bib = new Class_Bib();
+		$this->view->combo_bibs = $bib->getComboBib($this->view->preferences["id_bib"],false,false);
 	}
 
-//------------------------------------------------------------------------------------------------------
-// Catalogue
-//------------------------------------------------------------------------------------------------------
-	function catalogueAction()	{
+
+	public function catalogueAction()	{
 		$selected_panier = null;
 		if (array_key_exists('id_panier', $this->view->preferences) &&
 				array_key_exists('id_user', $this->view->preferences))
 			$selected_panier = Class_PanierNotice::getLoader()->findFirstBy(array( 'id_panier' => $this->view->preferences['id_panier'],
 																																						 'id_user' => $this->view->preferences['id_user']));
-		if ($selected_panier !== null) $this->view->preferences['id_panier'] = $selected_panier->getId();
+		if ($selected_panier !== null) 
+			$this->view->preferences['id_panier'] = $selected_panier->getId();
+
+		if ($this->_request->isPost()) 	{
+			$enreg = $_POST;
+			if(!$enreg["titre"]) 
+				$enreg["titre"]=$enreg["libelle"];
 
-		if ($this->_request->isPost())
-		{
-			$enreg=$_POST;
-			if(!$enreg["titre"]) $enreg["titre"]=$enreg["libelle"];
 			if($enreg["id_panier"]) {
 				$panier = Class_PanierNotice::getLoader()->find($enreg['id_panier']);
 				$enreg["id_catalogue"]=0;
 				$enreg['id_panier'] = $panier->getIdPanier();
-				$enreg["id_user"] = $panier->getIdUser();
-				
+				$enreg["id_user"] = $panier->getIdUser();				
+			} else {
+				$enreg["id_user"]=0;
 			}
-			else $enreg["id_user"]=0;
 			$this->_updateEtRetour($enreg);
 		}
 		
@@ -216,29 +182,18 @@ class Admin_MenusController extends Admin_AccueilController {
 		$this->view->paniers=Class_PanierNotice::getPaniersForCombo();
 	}
 
-//------------------------------------------------------------------------------------------------------
-// Etagère
-//------------------------------------------------------------------------------------------------------
-	function etagereAction()
-	{
-		if ($this->_request->isPost())
-		{
-			$enreg=$_POST;
-			if(!$enreg["titre"]) $enreg["titre"]=$enreg["libelle"];
+
+	public function etagereAction() {
+		if ($this->_request->isPost()) {
+			$enreg = $_POST;
+			if (!$enreg["titre"]) 
+				$enreg["titre"] = $enreg["libelle"];
 			$this->_updateEtRetour($enreg);
 		}
 	}
 
-	//------------------------------------------------------------------------------------------------------
-	// bibliotheque numerique
-	//------------------------------------------------------------------------------------------------------
-	function albumAction()	{
-		if (!Class_AlbumCategorie::find(0)) {
-			$cat=Class_AlbumCategorie::newInstanceWithId(0)
-				->setLibelle('Albums non classés')
-				->setSousCategories([])
-				->setAlbums(Class_Album::findAllBy(['cat_id' => 0]));
-			$cat->save();}
+
+	public function albumAction()	{
 		if ($this->_request->isPost())	{
 			$enreg=$_POST;
 			if(!$enreg["titre"]) $enreg["titre"]=$enreg["libelle"];
@@ -252,11 +207,8 @@ class Admin_MenusController extends Admin_AccueilController {
 		asort($this->view->albums);
 	}
 
-//------------------------------------------------------------------------------------------------------
-// Retour au formulaire pour erreurs
-//------------------------------------------------------------------------------------------------------
-	private function retourErreur($erreur)
-	{
+
+	private function retourErreur($erreur) {
 		$this->view->erreur=$erreur;
 		$this->view->libelle=$_POST["libelle"];
 		$this->view->picto=$_POST["picto"];
@@ -264,20 +216,16 @@ class Admin_MenusController extends Admin_AccueilController {
 	}
 
 	
-//------------------------------------------------------------------------------------------------------
-// Décompactage des proprietes si on vient la de config admin des menus
-//------------------------------------------------------------------------------------------------------
 	protected function extractProperties() {
 		$module = (new Class_Systeme_ModulesMenu())->getFonction($this->type_menu);
 		return $module->extractPreferences($this->_getParam("preferences"));
 	}
 	
-//------------------------------------------------------------------------------------------------------
-// Validation et retour config admin des menus
-//------------------------------------------------------------------------------------------------------
+
 	protected function _updateEtRetour($data) {
 		// Filtrage des données
-		foreach($data as $clef => $valeur) $enreg[$clef]=addslashes($valeur);
+		foreach($data as $clef => $valeur) 
+			$enreg[$clef] = addslashes($valeur);
 	
 		// Variables de vue
 		$this->view->libelle = isset($enreg['libelle']) ? $enreg['libelle'] : $enreg['titre'];
@@ -310,4 +258,5 @@ class Admin_MenusController extends Admin_AccueilController {
 			->setCfgMenuHorizontal(['menus' => $menu_horizontal->asCfgProfil()])
 			->save();
 	}
-}
\ No newline at end of file
+}
+?>
\ No newline at end of file
-- 
GitLab