AdministratorController.php 7.53 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_Adminhtml_AdministratorController extends Mage_Adminhtml_Controller_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_owngallery.phtml beigesteuert
	 */
	public function owngalleryAction() {
		$this->loadLayout();
		$this->getLayout()->getBlock('root')->setTemplate('page/1column.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']);
//D::li($ncimage, '$ncimage'.$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/owngallery')->setTemplate('anc/image/customer_showNcImageForm.phtml')
//			);	
			$this->renderLayout();
		} else {
			echo('nicht eingeloggt');
		}
		
	}
	
	public function simpleowngalleryAction() {
		D::li('testme',1);
		$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 owngalleryAction() bzw customer_owngallery.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('album_id', $params)) {
			$param_album_id = $params['album_id'];
		} else {
			$param_album_id = false;
		}
		$user = Mage::getSingleton('admin/session');
		$userId = $user->getUser()->getUserId();
		D::ulli('Albumid: '.$param_album_id.' / Userid: '.$userId,1);
		$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('admin_user_id',$userId);
					$ncimage->setData('file',$fname);
					if($param_album_id){//ncalbum_id
						$ncimage->setData('ncalbum_id',$param_album_id);
					}
					$ncimage->save();

					$ncimage->setData('path', Mage::helper('anc_image/ncimage')->getNcImagePath($ncimage->getId(), 'relative', 'original'));
					$ncimage->save();

					if($ncimage->getId()) {
						$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);
	}
}