* @version SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $ */ class usersActions extends sfActions { public function executeAgency(sfWebRequest $request) { $this->userFilter = new sfGuardUserFormFilter(); unset($this->userFilter['profile_type_id']); $this->userFilter->bind($request->getParameter($this->userFilter->getName())); $this->pager = new sfDoctrinePager('sfGuardUser'); $this->pager->setMaxPerPage($request->getParameter('pagesize', sfConfig::get('app_default_pagesize'))); $this->pager->setPage($request->getParameter('page', 1)); $query = $this->userFilter->getQuery(); // instituce maji pouze p.name, admini jen u.first_name a last_name a osoby maji oboji $query->select('u.*, IFNULL(p.name, CONCAT(p.first_name, p.last_name)) as sort') ->addWhere('p.type_id = ?', ProfileType::AGENCY) ->orderBy('sort ASC'); $this->pager->setQuery($query); $this->pager->init(); $this->url = $this->generateUrl('users_list_agency'); $this->setTemplate('list'); } public function executePerson(sfWebRequest $request) { $this->userFilter = new sfGuardUserFormFilter(); unset($this->userFilter['profile_type_id']); unset($this->userFilter['prepayment_type_id']); unset($this->userFilter['prepayment_request']); $this->userFilter->bind($request->getParameter($this->userFilter->getName())); $this->pager = new sfDoctrinePager('sfGuardUser'); $this->pager->setMaxPerPage($request->getParameter('pagesize', sfConfig::get('app_default_pagesize'))); $this->pager->setPage($request->getParameter('page', 1)); $query = $this->userFilter->getQuery(); // instituce maji pouze p.name, admini jen u.first_name a last_name a osoby maji oboji $query->select('u.*, IFNULL(p.name, CONCAT(p.first_name, p.last_name)) as sort') ->addWhere('p.type_id = ?', ProfileType::PERSON) ->orderBy('sort ASC'); $this->pager->setQuery($query); $this->pager->init(); $this->url = $this->generateUrl('users_list_person'); $this->setTemplate('list'); } public function executeAdmin(sfWebRequest $request) { $this->userFilter = new sfGuardUserFormFilter(); unset($this->userFilter['profile_type_id']); unset($this->userFilter['prepayment_type_id']); unset($this->userFilter['prepayment_request']); $this->userFilter->bind($request->getParameter($this->userFilter->getName())); $this->pager = new sfDoctrinePager('sfGuardUser'); $this->pager->setMaxPerPage($request->getParameter('pagesize', sfConfig::get('app_default_pagesize'))); $this->pager->setPage($request->getParameter('page', 1)); $query = $this->userFilter->getQuery(); // instituce maji pouze p.name, admini jen u.first_name a last_name a osoby maji oboji $query->select('u.*, CONCAT(u.first_name, u.last_name) as sort') ->addWhere('u.is_super_admin = ?', true) ->orderBy('sort ASC'); $this->pager->setQuery($query); $this->pager->init(); $this->url = $this->generateUrl('users_list_admin'); $this->setTemplate('list'); } public function executeList(sfWebRequest $request) { $this->userFilter = new sfGuardUserFormFilter(); $this->userFilter->bind($request->getParameter($this->userFilter->getName())); $this->pager = new sfDoctrinePager('sfGuardUser'); $this->pager->setMaxPerPage($request->getParameter('pagesize', sfConfig::get('app_default_pagesize'))); $this->pager->setPage($request->getParameter('page', 1)); $query = $this->userFilter->getQuery(); // instituce maji pouze p.name, admini jen u.first_name a last_name a osoby maji oboji $query->select('u.*, IFNULL(p.name, IFNULL(CONCAT(u.first_name, u.last_name), CONCAT(p.first_name, p.last_name))) as sort') ->orderBy('sort ASC'); $this->pager->setQuery($query); $this->pager->init(); $this->url = $this->generateUrl('users_list'); } public function executeAgencyCreate(sfWebRequest $request) { $this->userForm = new SimpleUserForm(); $this->profileForm = new AgencyProfileForm(); unset($this->profileForm['agree']); $this->processForms($request); $this->setTemplate('edit'); } public function executePersonCreate(sfWebRequest $request) { $this->userForm = new SimpleUserForm(); $this->profileForm = new PersonProfileForm(); unset($this->profileForm['agree']); $this->processForms($request); $this->setTemplate('edit'); } public function executeAdminCreate(sfWebRequest $request) { $this->userForm = new AdminUserForm(); $this->processForms($request); $this->setTemplate('edit'); } public function executeUpdate(sfWebRequest $request) { $this->forward404Unless($this->user = $this->getRoute()->getObject()); if($this->user->hasProfile()) { $this->profile = $this->user->getProfile(); if($this->profile->isPerson()) { $this->profileForm = new PersonProfileForm($this->profile); } elseif($this->profile->isAgency()) { $this->profileForm = new AgencyProfileForm($this->profile); } unset($this->profileForm['agree']); $this->userForm = new SimpleUserForm($this->user); } else { $this->userForm = new AdminUserForm($this->user); } $this->processForms($request); $this->setTemplate('edit'); } protected function processForms(sfWebRequest $request) { if($request->isMethod('post') || $request->isMethod('put')) { if($this->userForm instanceof AdminUserForm) { $this->userForm->bind($request->getParameter($this->userForm->getName())); if($this->userForm->isValid()) { $this->user = $this->userForm->save(); $this->getUser()->addMessage('Uživatel uložen.'); $this->redirect($this->generateUrl('users_list')); } } else { $userData = $request->getParameter($this->userForm->getName()); $profileData = $request->getParameter($this->profileForm->getName()); $userData['email_address'] = $profileData['mail']; $this->userForm->bind($userData); $this->profileForm->bind($profileData, $request->getFiles($this->profileForm->getName())); if($this->userForm->isValid() && $this->profileForm->isValid()) { $this->user = $this->userForm->save(); $profileData['user_id'] = $this->user->getId(); $this->profileForm->bind($profileData, $request->getFiles($this->profileForm->getName())); $this->profile = $this->profileForm->save(); $this->getUser()->addMessage('Uživatel uložen.'); $this->redirect($this->generateUrl('users_list')); } } } } public function executeDelete(sfWebRequest $request) { $this->forward404Unless($this->user = $this->getRoute()->getObject()); if($this->user->hasProfile()) { $this->user->getProfile()->delete(); } $this->user->delete(); $this->getUser()->addMessage('Uživatel odstraněn.'); $this->redirect($this->generateUrl('users_list')); } public function executePrepaymentEdit(sfWebRequest $request) { $this->forward404Unless($this->profile = $this->getRoute()->getObject()); $this->form = new PrepayProfileForm($this->profile, array('backend' => true)); if($request->isMethod('put')) { $this->form->bind($request->getParameter($this->form->getName())); if($this->form->isValid()) { $this->form->save(); $this->getUser()->addMessage('Předplatná nastaveno.'); $this->redirect($this->generateUrl('users_list_agency')); } } } /** * Nastaví základní typ předplatného * * @param sfWebRequest $request */ public function executePrepaymentDelete(sfWebRequest $request) { $this->forward404Unless($this->profile = $this->getRoute()->getObject()); $this->profile->setPrepaymentTypeId(PrepaymentType::TYPE_BASIC); $this->profile->setPrepaymentActive(false); $this->profile->save(); $this->getUser()->addMessage('Předplatné vymazáno.'); $this->redirect($this->generateUrl('users_list')); } public function executeDataJson(sfWebRequest $request) { $this->forward404Unless($profile = $this->getRoute()->getObject()); $data = array('name' => $profile->getName(), 'street' => $profile->getStreet(), 'city' => $profile->getCity(), 'zip' => $profile->getZip(), ); print(json_encode($data)); return sfView::NONE; } public function executeAuthorizeRequest(sfWebRequest $request) { $this->forward404Unless($this->profile = $this->getRoute()->getObject()); foreach($this->profile->getPrepaymentCounts() as $pc) { $pc->authorizeRequest(); $pc->save(); } $this->getUser()->addMessage('Předplatné nastaveno.'); $this->redirect($request->getReferer()); } public function executeRejectRequest(sfWebRequest $request) { $this->forward404Unless($this->profile = $this->getRoute()->getObject()); foreach($this->profile->getPrepaymentCounts() as $pc) { $pc->rejectRequest(); $pc->save(); } $this->getUser()->addMessage('Předplatné zamítnuto.'); $this->redirect($request->getReferer()); } }