Current File : /home/karenpetzb/application/modules/backoffice/controllers/Category2Controller.php
<?php

class Backoffice_Category2Controller extends Modules_Backoffice_Controllers_MainController
{

	function init()
	{
		$this->view->title = "Administration";
		$this->view->currentMenu = "CategorySubs";
 
		$this->isConnectedWithRole('isCategory'); 
        
        
		$category = new Category2();
		$this->view->listallcategories2 = $category->getAllCategoriesByID(0);
	}
	function indexAction()
	{
		$this->_forward('/list');
	}
    
    /*
     * Duplicat de CategoryController
     */

	function listAction()
	{
		$this->view->titlePage = "Gestion des cat�gories subsidiaires";
        
		//Gestion des tris
		$table = 'NOM';
		$tri = 'ASC';
	}

	function delAction() {

		$this->view->messageSuccess = "";
		$this->view->messageError = "";
		if($this->_request->getParam('id')) {
			$id = (int)$this->_request->getParam('id');
			if ($id > 0) {
				try {
					$category = new Category2();
					if ($category->fetchRow('IDPARENT = '.$id)) {
						$this->view->messageError = 'Cette cat�gorie est parente';
					} else {
						$productCategory2 = new ProductCategory2();
						$select = $productCategory2->getAllProductsByCategoryID($id);
						if (isset($select) && !empty($select)) {
							$this->view->messageError = 'Cette cat�gorie est utilis�e par le produit : <b>'.$select[0]['NOM']."</b>";
						} else {

							$category->delete('ID = '.$id);

							$this->delete_directory('items/category2/'.$id);

							$this->view->messageSuccess = "La cat�gorie a et� supprim�e";
							$this->log("La cat�gorie a et� supprim�e",'info');

						}
					}
				}
                catch (Zend_Exception $e) {
					$this->view->messageError = $e->getMessage();
					$this->log($e->getMessage(),'err');
				}
			}
		}
		$this->_forward('/list');

	}

	function editAction() {
		$this->view->titlePage = "Modifier une cat�gorie subsidiaire";
		//populate form
		if ($this->_request->getParam('id')) { $id = (int)$this->_request->getParam('id'); }
		if ($this->_request->getParam('idCat')) { $id = (int)$this->_request->getParam('idCat'); }

		if ($id > 0) {
			$category = new Category2();
			$row = $category->fetchRow('ID = '.$id);
			if ($row) {
				$this->view->populateForm = $row->toArray();
                
				$listCat = array();
				$listCat = $category->getTreeCatsOf($id);
				if (!empty($listCat) && !$listCat['SUBS']) {
					$categoryTypeTri = new CategoryTypeTri();
					$this->view->listNavigationTri = $categoryTypeTri->getListTriByCategoryInOneRow($id);
				}
			} else { $this->_forward('/list'); }
		} else {
			$this->_forward('/list');
		}
	}

	function editcategoryAction()
	{
        
		$this->view->titlePage = "Modifier une cat�gorie subsidiaire";
		$id = 0;
		if ($this->_request->isPost()) {

			//filtres pour changer les chaines
			$filter = new Zend_Filter();
			$filter	->addFilter(new Zend_Filter_StripTags())
			->addFilter(new Zend_Filter_StringTrim());

			//valideurs pour les chaines
			$validator = new Zend_Validate();
			$validator -> addValidator(new Zend_Validate_NotEmpty());


			//get the form params
			$params = $this->_request->getPost();

			//Refractor the params
			$data = array (
			 		'NOM' => $filter->filter($params['nom']),
					'IDPARENT' => $filter->filter($params['idparent']),
			 		'DESCRIPTION' => $filter->filter($params['desc']), 
			 		'CHOICEDOC' => $filter->filter($params['docChoice'])
			);

			if ($validator->isValid($data['NOM'])) {

				try {

					$id = $params['id'];

					$category = new Category2();
					$category->update($data, 'ID = '.$id);

					$this->view->messageSuccess = "La cat�gorie a �t� modifi�e";
					if($this->uploadNewPics($id)) {
						$this->view->messageSuccess .= " , l'image aussi";
					}

					if($this->uploadNewChoicePics($id)) {
						$this->view->messageSuccess .= " , le comment choisir aussi";
					}
                    $nbSubs = $category->updateTreeInLineAsPathOfChilds($id, true);

					$this->view->messageSuccess .= " , ".$nbSubs." urls d'acc�s modifi�es.";

					$this->log("La cat�gorie a �t� modifi�e : ".$id,'info');

				}
                catch (Zend_Exception $e) {
					$this->log($e->getMessage(),'err');
					$this->view->messageError = "La cat�gorie existe d�j�";
				}
			} else {
				foreach ($validator->getErrors() as $errorCode) {
					$this->view->messageError =  $this->getErrorValidator($errorCode);
				}
			}

		}
		$this->_forward('/edit');
	}

	function customnavnomeditAction()
	{
		$this->view->titlePage = "Modifier une cat�gorie subsidiaire";
		$id = 0;
		if ($this->_request->isPost()) {

			//filtres pour changer les chaines
			$filter = new Zend_Filter();
			$filter	->addFilter(new Zend_Filter_StripTags())
			->addFilter(new Zend_Filter_StringTrim());

			//valideurs pour les chaines
			$validator = new Zend_Validate();
			$validator -> addValidator(new Zend_Validate_NotEmpty())
			-> addValidator(new Zend_Validate_StringLength(3));


			//get the form params
			$params = $this->_request->getPost();

			$navnom = $this->verifyNavigationString($filter->filter($params['navnom']), $params['nom'], '');

			$keywords = "";
			if (isset($params['keywords']) && !empty($params['keywords'])) {
				$keywords = $params['keywords'];
			} else {
				$navnomStrip =  explode("-", $navnom);
				for ($index = 0; $index < sizeof($navnomStrip); $index++) {
					$word = $navnomStrip[$index];
					if (empty($keywords)) {
						if (strlen($word) > 3){ $keywords .= $word; }
					} else {
						if (strlen($word) > 3){ $keywords .= ",".$word; }
					}
				}
			}

			//Refractor the params
			$data = array (
					'NAVTITRENOM' => $filter->filter($params['navtitrenom']),
			 		'NAVNOM' => $navnom,
					'KEYWORDS' => $keywords,
					'NAVDESCRIPTION' => $filter->filter($params['navdescription'])  
			);

			if ($validator->isValid($data['NAVNOM']) &&
			$validator->isValid($data['KEYWORDS'])) {
				if (empty($data['NAVTITRENOM'])) {
					$data['NAVTITRENOM'] = $filter->filter($params['nom']);
				}
				if (empty($data['NAVDESCRIPTION'])) {
					$data['NAVDESCRIPTION'] = "";
				}
				try {
					$id = $params['id'];

					$category = new Category2();
                    
                    if (isset($params['urlaccess']) && $params['idparent'] == 0) {
                        $data['NAVNOM_URLPARENTS'] = $this->verifyNavigationString('',$filter->filter($params['urlaccess']), '');
                    }
                    
                    if (empty($data['NAVNOM_URLPARENTS'])) {
                        $data['NAVNOM_URLPARENTS'] = $category->getTreeInLineAsPathOf($id);
                    }
                    
					$category->update($data, 'ID = '.$id);

                    $nbSubs = $category->updateTreeInLineAsPathOfChilds($id, false);
                    
					$this->view->messageSuccess = "La cat�gorie a �t� modifi�e, ".$nbSubs." urls d'acc�s modifi�es.";

				}
                catch (Zend_Exception $e) {
					$this->log($e->getMessage(),'err');
					$this->view->messageError = "La cat�gorie existe d�j�";
				}
			} else {
				foreach ($validator->getErrors() as $errorCode) {
					$this->view->messageError .=  $this->getErrorValidator($errorCode);
				}
			}

		}
		$this->_forward('/edit');
	}

	function editactiveAction()
	{
		$this->view->titlePage = "Modifier une cat�gorie subsidiaire";
		if ($this->_request->isPost()) {
			//get the form params
			$params = $this->_request->getPost();

			//Refractor the params
			$data = array (
			 		'isACTIVE' => $params['active']
			);

			try {

				$id = (int)$params['id'];

				$category = new Category2();
				$category->update($data, 'ID = '.$id);
                          
			}
            catch (Zend_Exception $e) {
                $this->log($e->getMessage(),'err');
				$this->log($e->getMessage(),'err');
			}
		}
		$this->_forward('/edit');
	}

	function addAction()
	{
        
		$this->view->titlePage = "Ajouter une cat�gorie subsidiaire";
		$this->view->messageSuccess = "";
		$this->view->messageError = "";
        
		if ($this->_request->isPost()) {

			//filtres pour changer les chaines
			$filter = new Zend_Filter();
			$filter	->addFilter(new Zend_Filter_StripTags())
			->addFilter(new Zend_Filter_StringTrim());

			//valideurs pour les chaines
			$validator = new Zend_Validate();
			$validator -> addValidator(new Zend_Validate_NotEmpty());

			//get the form params
			$params = $this->_request->getPost();

			$navnom = $this->verifyNavigationString($filter->filter($params['navnom']), $params['nom'], '');

			$keywords = "";
			if (isset($params['keywords']) && !empty($params['keywords'])) {
				$keywords = $params['keywords'];
			} else {

				$navnomStrip =  explode("-", $navnom);
				for ($index = 0; $index < sizeof($navnomStrip); $index++) {
					$word = $navnomStrip[$index];
					if (empty($keywords)) {
						if (strlen($word) > 3){ $keywords .= $word; }
					} else {
						if (strlen($word) > 3){ $keywords .= ",".$word; }
					}
				}
			}

			$data = array (
			 		'NOM' => $filter->filter($params['nom']),
					'NAVTITRENOM' => $filter->filter($params['nom']),
			 		'DESCRIPTION' => $filter->filter($params['desc']),
			 		'NAVDESCRIPTION' => $filter->filter($params['desc']),
			 		'NAVNOM' => $navnom,
			 		'KEYWORDS' => $keywords,
			 		'IDPARENT' => $filter->filter($params['idparent'])
			);
			if ($validator->isValid($data['NOM']) &&
			$validator->isValid($data['NAVNOM'])
			) {
				try {
					$category = new Category2();
                    $data['NAVNOM_URLPARENTS'] = $category->getTreeInLineAsPathOf($data['IDPARENT']);
					$category->insert($data);

					//create items folder for pics
					$lastid = $category->getAdapter()->lastInsertId();

					if ($lastid > 0) {
						mkdir ("items/category2/".$lastid, 0777);
						$this->view->messageSuccess = "La cat�gorie a �t� ajout�e";
						if($this->uploadNewPics($lastid)) {
							$this->view->messageSuccess .= " , l'image a �t� upload�";
						}

						$this->log("La cat�gorie a �t� ajout�e",'info');
					}
				}
                catch (Zend_Exception $e) {
					$this->view->messageError = "La cat�gorie existe d�j�";
					$this->log($e->getMessage(),'err');
					$this->view->populateForm = $data;
				}
			} else {
				foreach ($validator->getErrors() as $errorCode) {
					$this->view->messageError .=  $this->getErrorValidator($errorCode);
				}
				$this->view->populateForm = $data;
			}
		}
	}
	function uploadNewPics($idCat) {
		if(!empty($_FILES['picCat']) && !empty($_FILES['picCat']['name'])) {
			$nomOrigine = $_FILES['picCat']['name'];
			$elementsChemin = pathinfo($nomOrigine);
			$extensionFichier = strtolower($elementsChemin['extension']);
			$extensionsAutorisees = array("jpg", "jpeg",  "gif", "png");
			if (!(in_array($extensionFichier, $extensionsAutorisees))) {
				$this->view->messageError = "Le fichier n'a pas l'extension attendue";
			} else {
				// Copie dans le repertoire du script avec un nom
				// incluant l'heure a la seconde pres
				$repertoireDestination = 'items/category2/'.$idCat.'/';
				$this->checkDirectoryExist($repertoireDestination);
				
                $nomDestination = $this->generateNavigationString($elementsChemin['filename']).".".$extensionFichier;
                $fileoriginal = $repertoireDestination.$nomDestination;
				if (move_uploaded_file($_FILES["picCat"]["tmp_name"],$fileoriginal)) {
					try {
						$category = new Category2();
						$data = array (
					 		'URL' => $fileoriginal
						);
						$category->update($data,'ID = '.$idCat);

                         //Resize picture
                        $info = getimagesize($fileoriginal) ;
                        list($width_old, $height_old) = $info;
                        $maxwidth = $this->FeaturePictureResizeWidth;
                        $maxheight = $this->FeaturePictureResizeHeight;
                            
                        if ($width_old > $maxwidth || $height_old > $maxheight) {     
                            Utils_Tool::smart_resize_image($fileoriginal , null, $maxwidth , $maxheight , true , $fileoriginal , true , false ,50 );
                        }  
                        
						return true;
					}
                    catch (Exception $e) {
						$this->view->messageError = $e->getMessage();
						return false;
					}
				} else {
					$this->view->messageError = "Le fichier n'a pas �t� upload�";
				}
			}
		}

		return false;
	}

	function uploadNewChoicePics($idCat) {
		if(!empty($_FILES['picChoice']) && !empty($_FILES['picChoice']['name'])) {
			$nomOrigine = $_FILES['picChoice']['name'];
			$elementsChemin = pathinfo($nomOrigine);
			$extensionFichier = strtolower($elementsChemin['extension']);
			$extensionsAutorisees = array("jpg", "jpeg",  "gif", "png");
			if (!(in_array($extensionFichier, $extensionsAutorisees))) {
				$this->view->messageError = "Le fichier n'a pas l'extension attendue";
			} else {
				// Copie dans le repertoire du script avec un nom
				// incluant l'heure a la seconde pres
				$repertoireDestination = 'items/category_choice2/'.$idCat.'/';
				$this->checkDirectoryExist($repertoireDestination);
				
				$date = new Zend_Date();
                
				//$nomDestination = $date->toString('dd-MM-YYYY_HH-mm-ss').".".$extensionFichier;
                $nomDestination = $this->generateNavigationString($elementsChemin['filename']).".".$extensionFichier;
                
				if (move_uploaded_file($_FILES["picChoice"]["tmp_name"],$repertoireDestination.$nomDestination)) {
					try {
						$category = new Category2();
						$data = array (
					 		'CHOICEURL' => $repertoireDestination.$nomDestination
						);
						$category->update($data,'ID = '.$idCat);

						return true;
					}
                    catch (Exception $e) {
						$this->view->messageError = $e->getMessage();
						return false;
					}
				} else {
					$this->view->messageError = "Le fichier n'a pas �t� upload�";
				}
			}
		}

		return false;
	}
	function setpictureAction() {

		$this->view->messageSuccess = "";
		$this->view->messageError = "";

		if($this->_request->isPost()) {
			$params = $this->_request->getPost();
			try {
				$category = new Category2();
				$data = array (
				 		'URL' => $params['picture']
				);
				$category->update($data,'ID = '.$params['idCat']);
				$this->view->messageSuccess = "L'image a �t� modifi�e";
			}
            catch (Zend_Exception $e) {
                $this->log($e->getMessage(),'err');
				$this->view->messageError = $e->getMessage();
			}
		}
		$this->_forward('/edit');

	}

	function erasepictureAction() {

		$this->view->messageSuccess = "";
		$this->view->messageError = "";

		if($this->_request->isPost()) {
			$params = $this->_request->getPost();

			try {
				$category = new Category2();

				unlink($params['picture']);
				$data = array (
			 		'URL' => ''
			 		);
                $category->update($data,"ID = ".$params['idCat']." AND URL = '".$params['picture']."'");
                $this->view->messageSuccess = "L'image a �t� supprim�e d�finitivement";
			}
            catch (Zend_Exception $e) {
                $this->log($e->getMessage(),'err');
				$this->view->messageError = $e->getMessage();
			}
		}
		$this->_forward('/edit');

	}


	function setpicturechoiceAction() {

		$this->view->messageSuccess = "";
		$this->view->messageError = "";

		if($this->_request->isPost()) {
			$params = $this->_request->getPost();
			try {
				$category = new Category2();
				$data = array (
				 	'CHOICEURL' => $params['picture']
				);
				$category->update($data,'ID = '.$params['idCat']);
				$this->view->messageSuccess = "L'image a �t� modifi�e";
			}
            catch (Zend_Exception $e) {
                $this->log($e->getMessage(),'err');
				$this->view->messageError = $e->getMessage();
			}
		}
		$this->_forward('/edit');

	}

	function erasepicturechoiceAction() {

		$this->view->messageSuccess = "";
		$this->view->messageError = "";

		if($this->_request->isPost()) {
			$params = $this->_request->getPost();

			try {
				$category = new Category2();
				unlink($params['picture']);
				$data = array (
			 		'CHOICEURL' => ''
			 		);
                $category->update($data,"ID = ".$params['idCat']." AND CHOICEURL = '".$params['picture']."'");
                $this->view->messageSuccess = "L'image a �t� supprim�e d�finitivement";
			}
            catch (Zend_Exception $e) {
                $this->log($e->getMessage(),'err');
				$this->view->messageError = $e->getMessage();
			}
		}
		$this->_forward('/edit');

	}
}
?>