%PDF- %PDF-
Direktori : /var/www/html/bbw/farmaci/kritik-portale/module/Backend/src/Backend/Controller/ |
Current File : /var/www/html/bbw/farmaci/kritik-portale/module/Backend/src/Backend/Controller/UserController.php |
<?php /** * Zend Framework (http://framework.zend.com/) * * @link http://github.com/zendframework/ZendSkeletonApplication for the canonical source repository * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ namespace Backend\Controller; use Basis\Model\User\UserFactory; use ReviewPharmacy\Model\PharmacyFactory; use Zend\Db\ResultSet\ResultSet; use Zend\Db\TableGateway\TableGateway; use Zend\Mvc\Controller\AbstractActionController; use Zend\View\Model\JsonModel; use Zend\View\Model\ViewModel; use ZfcRbac\Service\AuthorizationService; class UserController extends AbstractBackendController { /** * * @var AuthorizationService */ protected $authorizationService; protected $pharmacyFactory; /** * * @param AuthorizationService $authorizationService */ public function __construct(AuthorizationService $authorizationService, PharmacyFactory $pharmacyFactory) { $this->authorizationService = $authorizationService; $this->pharmacyFactory = $pharmacyFactory; } public function indexAction() { $model = new ViewModel(); $model->setTerminal(true); return $model; } public function adduserAction() { $form = $this->getServiceLocator()->get('FormElementManager') ->get('Backend\Form\User'); //new users created from backend should be active right from the start $form->get('active')->setValue(1); $model = new ViewModel(array("form" => $form, "type" => "anlegen")); $model->setTerminal('true'); return $model; } public function edituserAction() { $request = $this->getRequest()->getPost(); $factory = new \Basis\Model\User\UserFactory($this->getServiceLocator(), $this->getServiceLocator()->get("eventBus")); $user = $factory->getUser($request['userid']); $form = new \Backend\Form\User(); $form->setDefaultsByUser($user); $form->remove("password"); $form->remove("passwordVerify"); $model = new ViewModel(array("form" => $form, "type" => "bearbeiten")); $model->setTemplate("backend/user/adduser"); $model->setTerminal('true'); return $model; } public function removeuserAction() { $request = $this->getRequest()->getPost(); $factory = new \Basis\Model\User\UserFactory($this->getServiceLocator(), $this->getServiceLocator()->get("eventBus")); $result = $factory->delete($request['userid']); $this->flashMessenger()->addSuccessMessage("Benutzer wurde gelöscht!"); $view = new JsonModel(); return $view; } public function formAction() { $view = new ViewModel(); $view->setTerminal(true); $userId = $this->params("user", null); $factory = new \Basis\Model\User\UserFactory($this->getServiceLocator(), $this->getServiceLocator()->get("eventBus")); $user = $factory->getUser($userId); $pharmacies = []; $form = $this->getServiceLocator()->get('FormElementManager') ->get('Backend\Form\User'); if(!is_null($userId)) { $form->remove("password"); $form->remove("passwordVerify"); $form->getInputFilter()->remove('password'); $form->getInputFilter()->remove('passwordVerify'); $form->setDefaultsByUser($user); //retrieve all pharmacies currently managed by user $pharmacies = $this->pharmacyFactory->getRateableObjectsOwnedByUser($userId); } $view->setVariable("form", $form); $view->setVariable("user", $user); $view->setVariable("pharmacies", $pharmacies); $view->setTemplate("backend/user/adduser"); return $view; } public function saveAction() { $json = new JsonModel(); $view = new ViewModel(); $view->setTemplate("backend/user/adduser"); $viewRender = $this->getServiceLocator()->get('ViewRenderer'); $sm = $this->getServiceLocator(); $factory = new \Basis\Model\User\UserFactory($sm, $this->getServiceLocator()->get("eventBus")); $viewAdapter = $sm->get('viewsDB'); $request = $this->getRequest(); $error = false; $pharmacies = []; if (!$request->isPost()) { $this->redirect()->toUrlRoute('backend'); } $form = $this->getServiceLocator()->get('FormElementManager') ->get('Backend\Form\User'); //remove password fields & validator for editing users if($request->getPost('id') !== ""){ $form->remove("password"); $form->remove("passwordVerify"); $form->getInputFilter()->remove('password'); $form->getInputFilter()->remove('passwordVerify'); //retrieve all pharmacies currently managed by user $pharmacies = $this->pharmacyFactory->getRateableObjectsOwnedByUser($request->getPost('id')); } $user = $factory->getUser($request->getPost('id')); $form->setData($request->getPost()); $view->setVariable("form", $form); $view->setVariable("pharmacies", $pharmacies); $view->setVariable("user", $user); //check if email already exists $resultSet = new ResultSet(ResultSet::TYPE_ARRAYOBJECT, new \Basis\Entity\UserEntity()); $userTable = new TableGateway('user', $viewAdapter, null, $resultSet); $result = $userTable->select(array("email" => $request->getPost('email'))); $email = $result->current(); if($email !== false && $request->getPost('id') !== $email->entityid) { $elem = $form->get('email'); $elem->setMessages(array(0 => 'E-Mail Adresse ist bereits vergeben!')); $error = true; } //check if username already exists // if($factory->newUsernameExists($request->getPost("username"), $request->getPost("id"))) // { // $elem = $form->get("username"); // $elem->setMessages([0 => "Dieser Benutzername ist bereits vergeben."]); // $error = true; // } //return invalid form if (!$form->isValid() || $error) { $view->setTerminal('true'); $view->setVariable("form", $form); $this->flashMessenger()->addErrorMessage("Benutzer konnte nicht gespeichert werden!"); $html = $viewRender->render($view); $json->setVariable("html", $html); $json->setVariable("error", true); return $json; } try { $data = $request->getPost(); if($request->getPost('id') === ""){ $user = $factory->createUserFromForm($data); } else { $user = $factory->editUserFromForm($data); } if ($user->getVerifyMail() != $user->getEmail() && $user->getVerifyMail() == $data['email']) { $this->flashMessenger()->addWarningMessage("Sie erhalten in Kürze eine E-Mail von uns an " . $user->getVerifyMail() . " " . "Bitte klicken Sie in der E-Mail auf den Aktivierungs-Link, um " . "Ihre Registrierung abzuschließen und alle Funktionen nutzen zu können. " . "Diese Bestätigung ist notwendig um sicherzustellen, dass die " . "Registrierung von Ihnen stammt und die E-Mail-Adresse korrekt ist."); //show old Email as long as the new one is not confirmed $elem = $form->get("email"); $elem->setValue($user->getEmail()); $view->setVariable("user", $user); } $this->flashMessenger()->addSuccessMessage("Benutzer erfolgreich gespeichert!"); $view->setTemplate("backend/user/adduser"); $view->setVariable('form', $form); $html = $viewRender->render($view); $json->setVariable("html", $html); $json->setVariable("error", false); return $json; } catch (\Exception $e) { //var_dump($e->getMessage()); die; $json->setVariable("error", $e->getMessage()); return $json; } } public function usertableAction() { //check if email already exists $sm = $this->getServiceLocator(); $resultSet = new ResultSet(ResultSet::TYPE_ARRAYOBJECT, new \Basis\Entity\UserEntity()); $userTable = new TableGateway('user', $sm->get('viewsDB'), null, $resultSet); $model = new ViewModel(array("usertable" => $userTable->select())); if ($this->getRequest()->isXmlHttpRequest()) { $model->setTerminal(true); } return $model; } public function serverProcessingAction() { // Table $table = 'user'; // Table's primary key $primaryKey = 'id'; // Array of database columns which should be read and sent back to DataTables. // The `db` parameter represents the column name in the database, while the `dt` // parameter represents the DataTables column identifier - in this case object // parameter names $columns = array( array( 'db' => 'id', 'dt' => 'DT_RowId', 'formatter' => function( $d, $row ) { // Technically a DOM id cannot start with an integer, so we prefix // a string. This can also be useful if you have multiple tables // to ensure that the id is unique with a different prefix return 'user_row_'.$d; }, ), array( 'db' => 'id', 'dt' => 'DT_RowClass', 'formatter' => function( $d, $row ) { return 'edit'; }, ), array( 'db' => 'entityid', 'dt' => 'DT_RowData', 'formatter' => function( $d, $row ) { return array("data-entityid" => $d); //return "data-entityid=".$d; }, ), array( 'db' => 'id', 'dt' => 'id', 'formatter' => function( $d, $row ) { return utf8_encode($d);} ), array( 'db' => 'name', 'dt' => 'name', 'formatter' => function( $d, $row ) { return utf8_encode($d);} ), array( 'db' => 'surname', 'dt' => 'surname', 'formatter' => function( $d, $row ) { return utf8_encode($d);} ), // array( 'db' => 'username', 'dt' => 'username', 'formatter' => function( $d, $row ) { return utf8_encode($d);} ), array( 'db' => 'email', 'dt' => 'email', 'formatter' => function( $d, $row ) { return utf8_encode($d);} ), array( 'db' => 'role', 'dt' => 'role', 'formatter' => function( $d, $row ) { switch($d){ case "admin": $value = "Administrator"; break; case "owner": $value = "Apotheker"; break; case "user": $value = "Nutzer"; break; default: $value = ''; break; } return utf8_encode($value); }), array( 'db' => 'phone', 'dt' => 'phone', 'formatter' => function( $d, $row ) { return utf8_encode($d);}), array( 'db' => 'title', 'dt' => 'title', 'formatter' => function( $d, $row ) { return utf8_encode($d);}), array( 'db' => 'salutation', 'dt' => 'salutation', 'formatter' => function( $d, $row ) { return utf8_encode($d);}), array( 'db' => 'newsletter', 'dt' => 'newsletter', 'formatter' => function( $d, $row ) { $value = (!is_null($d) && $d > 0) ? "ja" : "nein"; return utf8_encode($value); }), array( 'db' => 'active', 'dt' => 'active', 'formatter' => function( $d, $row ) { $value = (!is_null($d) && $d > 0) ? "ja" : "nein"; return utf8_encode($value); })); $sm = $this->getServiceLocator(); /* @var $viewAdapter \Zend\Db\Adapter\Adapter */ $viewAdapter = $sm->get('viewsDB'); $config = $sm->get('config'); $dsn = explode(";", $config['db']['adapters']['viewsDB']['dsn']); foreach($dsn as $item){ if(preg_match("/host=/", $item)) { $host = explode("=", $dsn[1]); } } $sql_details = array( 'user' => $config['db']['adapters']['viewsDB']['username'], 'pass' => $config['db']['adapters']['viewsDB']['password'], 'db' => $viewAdapter->getCurrentSchema(), 'host' => $host[1] ); /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * If you just want to use the basic configuration for DataTables with PHP * server-side, there is no need to edit below this line. */ require_once './module/datatables/serverside/ssp.class.php'; // $old_error = error_reporting(); // error_reporting(0); $request = $_POST; $request['search']['value'] = utf8_decode($request['search']['value']); $json = \SSP::simple( $request, $sql_details, $table, $primaryKey, $columns ); return new JsonModel($json); } }