CustomerController.php 7.89 KB
<?php
/**
 * @package  anc_image
 * @category magento
 * @mailto	code [at] netz.coop
 * @author	netz.coop eG* 
 * @copyright (c) 2014, netz.coop eG
 * 
 *   This program is free software: you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 * 
 */ 
class Anc_Image_CustomerController extends Mage_Core_Controller_Front_Action {
    protected function _initAction() {
		$this->loadLayout();
		return $this;
    }	
	/**
	 * Block/Template Funktion
	 * 
	 * fnc ist in "mein Benutzerkonto" laut @see app/design/frontend/layout/anc_image.xml als link aufrufbar,
	 * * durch selbige anc_image.xml bekommt die fnc das template @see app/design/frontend/template/ancimage/customer_galleriesmanager.phtml beigesteuert
	 */
	public function galleriesmanagerAction() {
		$this->loadLayout();
		$this->getLayout()->getBlock('root')->setTemplate('page/2columns-right.phtml');
		$this->renderLayout();
	}
	
	/**
	 * param - $this->getRequest()->getParams()['id'] -- id des zu bearbeiteten ncimage
	 * 
	 * Block/Template Funktion
	 * 
	 */
	public function showncimageformAction() {
			
		if (Mage::getSingleton('customer/session')->isLoggedIn()) {
			$params=$this->getRequest()->getParams();
			if(is_array($params) && array_key_exists('id', $params)) {
				
				$ncimage = Mage::helper('anc_image/ncmodel')->getNcImage($params['id']);

				if(is_object($ncimage)) {
					
					if(array_key_exists('name', $params)) {
						$ncimage->setName($params['name']);
					}					
					if(array_key_exists('comment', $params)) {
						$ncimage->setComment($params['comment']);
					}	
					
					$ncimage = Mage::helper('anc_image/ncmodel')->saveNcImage($ncimage);
					D::compareFe($ncimage,$params, '$ncimage, $this->getParams()');

				}

			}
			
			$this->loadLayout();
			$this->getLayout()->getBlock('root')->setTemplate('page/empty.phtml');
//			$this->getLayout()->getBlock('content')->append(
//				$this->getLayout()->createBlock('anc_image/galleriesmanager')->setTemplate('anc/image/customer_showNcImageForm.phtml')
//			);	
			$this->renderLayout();
		} else {
			echo('nicht eingeloggt');
		}
		
	}
	
	public function gallerysimpleAction() {
		$this->loadLayout();
		$this->getLayout()->getBlock('root')->setTemplate('page/empty.phtml');
		$this->renderLayout();
	}
	
	/**
	 * @param _POST[id] => $this->getRequest()->getParams()[id] -- anc_image/ncimage id
	 * 
	 */
	public function deleteNcImageAction() {
		$params=$this->getRequest()->getParams();
		$json_rueckgabe = array();		
		if(array_key_exists('id', $params) && $params['id']) {
			$param_id = $params['id'];

			$ncimage = Mage::helper('anc_image/ncmodel')->getNcImage($param_id);
			
			if(Mage::helper('anc_image/ncmodel')->deleteNcImage($ncimage)) {
				$json_rueckgabe['status'] = 'OK';
				$json_rueckgabe['message'] = 'Das Bild ('.$ncimage->getId().' wurde gelöscht)!';								

			} else {
				$json_rueckgabe['status'] = 'ERROR';
				$json_rueckgabe['message'] = 'Es ist beim Löschen ein Fehler aufgetreten!';								
			}			
			
		} else {
			$json_rueckgabe['status'] = 'ERROR';
			$json_rueckgabe['message'] = 'Keine ID angegeben!';								
		}

		echo json_encode($json_rueckgabe);	
	}
	
	/**
	 * @param optional _POST[id] => $this->getRequest()->getParams()[id] -- anc_image/ncimage id
	 * 
	 * fnc wird übers formular von galleriesmanagerAction() bzw customer_galleriesmanager.phtml 
	 * bei einem datei upload aufgerufen und verarbeitet die post werte 
	 * * kopiert datei in entsprechendes kunden verzeichniss
	 * * speichert dateiname im model / in tabelle
	 */
	public function uploadImageAction() {
		$params=$this->getRequest()->getParams();
		if(array_key_exists('id', $params)) {
			$param_id = $params['id'];
		} else {
			$param_id = false;
		}

		if(array_key_exists('ncalbum_id', $params)) {
			$param_ncalbum_id = $params['ncalbum_id'];
		} else {
			$param_ncalbum_id = false;
		}		

		$json_rueckgabe = array();

		/* Get the customer data */
		$customer = Mage::getSingleton('customer/session')->getCustomer();

		if(isset($_FILES['file']['name']) && $_FILES['file']['name'] != '') {

			try
			{      
				$path = Mage::helper('anc_image/ncimage')->getPathForNewNcImage('original');
				$fname = $_FILES['file']['name']; //file name                       
				$uploader = new Varien_File_Uploader('file'); //load class
				$uploader->setAllowedExtensions(array('jpg','jpeg','gif','png')); //Allowed extension for file
				$uploader->setAllowCreateFolders(true); //for creating the directory if not exists
				$uploader->setAllowRenameFiles(true); //if true, uploaded file's name will be changed, if file with the same name already exists directory.
				$uploader->setFilesDispersion(false);
				$uploader->save($path,$fname); //save the file on the specified path

				// den modifizierten namen, falls datei schon existierte
				$fname = $uploader->getUploadedFileName(); 

				if(is_file($path.DS.$fname)) {
					/**
					 * datei wird ersetzt
					 */
					if($param_id) {
						$ncimage = Mage::helper('anc_image/ncmodel')->getNcImage($param_id);

						if(Mage::helper('anc_image/ncmodel')->deleteNcImageFiles($ncimage)) {

						} else {
							$json_rueckgabe['status'] = 'ERROR';
							$json_rueckgabe['message'] = 'Sie habe nicht die Berechtigung!';								
							echo json_encode($json_rueckgabe);
							return;
						}

					} else {
						$ncimage = Mage::getModel('anc_image/ncimage');
					}

					$ncimage->setData('customer_id',$customer->getId());
					$ncimage->setData('file',$fname);
					$ncimage->save();

					if($ncimage->getId()) {
						
						if($param_ncalbum_id === false) {
							if($customer->getId()) {
								$ncalbum = Mage::getModel('anc_album/ncalbum')->load($customer->getId(), 'customer_id');
								$param_ncalbum_id = $ncalbum->getId();
								
								if(!$param_ncalbum_id) {
									$ncalbum->setData('name','Album: '.$customer->getName());
									$ncalbum->setData('customer_id',$customer->getId());
									$ncalbum->setData('isplaylist',false);
									$ncalbum->setData('iscategory',false);
									$ncalbum->save();
									$param_ncalbum_id = $ncalbum->getId();
								}
 							} else {
								$param_ncalbum_id = 0;
							}
						}

						$ncimage->setData('path', Mage::helper('anc_image/ncimage')->getNcImagePath($ncimage->getId(), 'relative', 'original'));
						$ncimage->setData('ncalbum_id', $param_ncalbum_id);
						$ncimage->save();						
						
						$json_rueckgabe['model'] = 'anc_image/ncimage';
						$json_rueckgabe['file'] = $fname;
						$json_rueckgabe['id'] = $ncimage->getId();						
						$json_rueckgabe['path'] = $ncimage->getPath();
						$json_rueckgabe['status'] = 'OK';
						$json_rueckgabe['message'] = 'upload erfolgreich !! ('.$ncimage->getId().'/'.$uploader->getUploadedFileName().')';
					} else {
						$json_rueckgabe['status'] = 'ERROR';
						$json_rueckgabe['message'] = 'Datei konnte nicht in die Datenbank eingetragen werden';
					}

				} else {
					$json_rueckgabe['status'] = 'ERROR';
					$json_rueckgabe['message'] = 'Datei konnte nicht auf dem Server gespeichert werden';						
				}

			} catch (Exception $e) {
				$json_rueckgabe['status'] = 'ERROR';
				$json_rueckgabe['message'] = $e->getMessage();					
			}
		} else {
			$json_rueckgabe['status'] = 'ERROR';
			$json_rueckgabe['message'] = 'Übermittlungsprobleme: Datei konnte nicht gespeichert werden (vielleicht war die Datei größer als '.@ini_get('post_max_size').' MB)';									
		}		 			

		echo json_encode($json_rueckgabe);
	}
}