/** * Form init * */ public function init() { $this->setMethod('post'); $this->addElement('text', 'summary', array('label' => 'Summary of applicant', 'placeholder' => 'e.g. summarize applicant qualities', 'class' => 'input', 'required' => false, 'filters' => array('StringTrim'))); $seniorities = array('' => 'Select an ideal position...'); foreach (My_Model::get('Positions')->fetchAll() as $position) { $seniorities[$position->getId()] = $position->getName(); } $this->addElement('select', 'ideal_for', array('label' => 'Ideal for*', 'class' => 'input', 'required' => false, 'filters' => array('StringTrim'), 'multiOptions' => $seniorities)); $this->addElement('text', 'starting_date', array('label' => 'Starting date', 'icon' => 'calendar', 'placeholder' => 'e.g. 15. 02. 2016', 'class' => 'datepicker', 'required' => false)); $dateValidator = new Zend_Validate_Date('YYYY-MM-DD'); $this->getElement('starting_date')->addValidator($dateValidator); $contractForms = array('' => 'Select an ideal position...'); foreach (My_Model::get('ContractForms')->fetchAll() as $contractForm) { $contractForms[$contractForm->getId()] = $contractForm->getName(); } $this->addElement('select', 'contract_form_id', array('label' => 'Contract form ID', 'placeholder' => 'e.g. ID of contract form', 'class' => 'input', 'required' => false, 'multiOptions' => $contractForms)); $this->addElement('text', 'salary', array('label' => 'Salary', 'placeholder' => 'e.g. Salary', 'class' => 'input', 'required' => false, 'filters' => array('StringTrim'))); $numberValidator = new Zend_Validate_Digits(); $this->getElement('salary')->addValidator($numberValidator); $result = array('invitedtointerview' => 'Invited to interview', 'waitingforresponse' => 'Waiting for response', 'accepted' => 'Accepted', 'rejected' => 'Rejected', 'hired' => 'Hired', 'offerdeclined' => 'Offer declined', 'assigned' => 'Assigned', 'submitted' => 'Submitted', 'evaluated' => 'Evaluated'); $this->addElement('select', 'result', array('label' => 'Application status*', 'class' => 'input', 'required' => true, 'filters' => array('StringTrim'), 'multiOptions' => $result)); $this->addElement('submit', 'submit', array('ignore' => true, 'class' => 'submit', 'label' => 'Save')); }
public function registrationAction() { // Only for administrators if (!$this->getUser() || !$this->getUser()->isAdmin()) { // Redirects $this->_helper->redirector->gotoRoute(array('controller' => 'admin', 'action' => 'login'), 'default', true); return; } $this->view->title = 'Registrace administrátora'; $form = new RegistrationForm(); if ($this->_request->isPost()) { if ($form->isValid($this->_request->getPost())) { $formValues = $form->getValues(); if ($formValues["heslo"] != $formValues["heslo2"]) { //todo barevne zvyrazeni chybnych poli + kontrola formatu //neni stejne heslo } else { //pokud už uživatel není v databázi $formValues["heslo"] = sha1("interview" . $formValues["heslo"]); $user = My_Model::get('Users')->createRow(); $user->updateFromArray($formValues); $this->_helper->redirector->gotoRoute(array('controller' => 'candidate', 'action' => 'index'), 'default', true); } } } $this->view->registrationform = $form; }
/** * Vrati objekt prave prihlaseneho uzivatele */ protected function getUser() { //Zjištění zda je uživatel admin (kvůli viditelnosti registrace) $login = Zend_Auth::getInstance()->getIdentity(); $user = My_Model::get('Users')->getUserByEmail($login); return $user; }
/** * * @param Zend_Controller_Request_Abstract $request */ public function preDispatch(Zend_Controller_Request_Abstract $request) { $options = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getApplication()->getOptions(); $config = new Zend_Config($options); $acl = new My_Acl($config); $role = 'guest'; if (Zend_Auth::getInstance()->hasIdentity()) { $role = 'user'; if (Zend_Auth::getInstance()->hasIdentity()) { return; } else { $login = Zend_Auth::getInstance()->getIdentity(); $user = My_Model::get('Users')->getUserByEmail($login); if ($user->admin == 1) { $role = 'admin'; } } } $controller = $request->getControllerName(); $action = $request->getActionName(); $resource = $controller; $privilege = $action; if (!$acl->has($resource)) { $resource = null; } if (is_null($privilege)) { $privilege = 'index'; } if (!$acl->isAllowed($role, $resource, $privilege)) { // $flash = Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger'); // $flash->addMessage('Access Denied'); $redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('Redirector'); $redirector->gotoSimpleAndExit('login', 'admin'); } }
/** * * @param Zend_Controller_Request_Abstract $request */ public function preDispatch(Zend_Controller_Request_Abstract $request) { $options = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getApplication()->getOptions(); $config = new Zend_Config($options); $acl = new My_Acl($config); Zend_Registry::set('ACL', $acl); $role = 'guest'; if (Zend_Auth::getInstance()->hasIdentity()) { $foundUser = My_Model::get('Users')->fetchRow(array('username = ?' => Zend_Auth::getInstance()->getIdentity())); $role = $foundUser->getRole(); } Zend_Registry::set('ROLE', $role); $controller = $request->getControllerName(); $action = $request->getActionName(); $resource = $controller; $privilege = $action; if (!$acl->has($resource)) { $resource = null; } if (is_null($privilege)) { $privilege = 'index'; } if (!$acl->isAllowed($role, $resource, $privilege)) { $flash = Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger'); $flash->clearMessages(); $flash->addMessage('Access Denied'); $redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('Redirector'); //throw new Exception("Insufficient privilages (".$role.",".$resource.",".$privilege.")"); $redirector->gotoSimpleAndExit('login', 'admin'); } }
/** * Form init * */ public function init() { $this->setMethod('post'); $this->setDisplayForm(false); $this->addElement('text', 'interviewed_on', array('label' => 'Interviewed on*', 'icon' => 'calendar', 'placeholder' => 'e.g. 01. 01. 2016', 'class' => 'datepicker', 'required' => false)); $dateValidator = new Zend_Validate_Date('YYYY-MM-DD'); $this->getElement('interviewed_on')->addValidator($dateValidator); $users = array('' => 'Select an interviewer...'); foreach (My_Model::get('Users')->fetchAll() as $user) { $users[$user->getId()] = $user->getFirstName() . " " . $user->getLastName(); } $this->addElement('select', 'interviewed_by', array('label' => 'Interviewed by', 'class' => 'input', 'required' => false, 'multiOptions' => $users)); $this->addElement('select', 'interviewed_by2', array('label' => 'Interviewed by', 'class' => 'input', 'required' => false, 'multiOptions' => $users)); $this->addElement('select', 'interviewed_by3', array('label' => 'Interviewed by', 'class' => 'input', 'required' => false, 'multiOptions' => $users)); $this->addElement('text', 'education', array('label' => 'Education', 'placeholder' => 'e.g. High school', 'class' => 'input', 'required' => false, 'filters' => array('StringTrim'))); $this->addElement('text', 'motivation', array('label' => 'Motivation', 'placeholder' => 'e.g. Working on great product', 'class' => 'input', 'required' => false, 'filters' => array('StringTrim'))); $this->addElement('text', 'preferred_work', array('label' => 'Preferred work', 'placeholder' => 'e.g. Backend programmer', 'class' => 'input', 'required' => false, 'filters' => array('StringTrim'))); $this->addElement('text', 'ambitions', array('label' => 'Ambitions', 'placeholder' => 'e.g. John', 'class' => 'input', 'required' => false, 'filters' => array('StringTrim'))); $this->addElement('text', 'languages', array('label' => 'Languages', 'placeholder' => 'e.g. English, German', 'class' => 'input', 'required' => false, 'filters' => array('StringTrim'))); $this->addElement('text', 'travelling', array('label' => 'Travelling', 'placeholder' => 'e.g. USA, Great Britain', 'class' => 'input', 'required' => false, 'filters' => array('StringTrim'))); $this->addElement('submit', 'submit', array('ignore' => true, 'class' => 'submit', 'label' => 'Save')); $this->removeDecorator('form'); // the bit you are looking for :) Zend_Debug::dump($this->render()); }
/** * Uvodni stranka * */ public function indexAction() { $username = Zend_Auth::getInstance()->getIdentity(); $this->view->userId = $username; //->User_ID; $users = My_Model::get('Users'); $rowset = $users->fetchAll($users->select()->where('username = ?', $username)); $row = $rowset->current(); $userNamespace = new Zend_Session_Namespace('User'); $userNamespace->user = $row; $this->_helper->redirector("index", "index"); }
/** * Form init * */ public function init() { $this->setMethod('post'); $this->addElement('text', 'interviewed_on', array('label' => 'Date of interview', 'icon' => 'calendar', 'placeholder' => 'e.g. 2016-02-03', 'class' => 'datepicker', 'required' => false)); $dateValidator = new Zend_Validate_Date('YYYY-MM-DD'); $this->getElement('interviewed_on')->addValidator($dateValidator); $result = array('invitedtointerview' => 'Invited to interview', 'waitingforresponse' => 'Waiting for response', 'accepted' => 'Accepted', 'rejected' => 'Rejected', 'hired' => 'Hired', 'offerdeclined' => 'Offer declined', 'assigned' => 'Assigned', 'submitted' => 'Submitted', 'evaluated' => 'Evaluated'); $this->addElement('select', 'result', array('label' => 'Application status*', 'class' => 'input', 'required' => true, 'filters' => array('StringTrim'), 'multiOptions' => $result)); $users = array('' => 'Select an interviewer...'); foreach (My_Model::get('Users')->fetchAll() as $user) { $users[$user->getId()] = $user->getFirstName() . " " . $user->getLastName(); } $this->addElement('select', 'interviewed_by', array('label' => 'Interviewed by', 'class' => 'input', 'required' => false, 'multiOptions' => $users)); $this->addElement('select', 'interviewed_by2', array('label' => 'Interviewed by', 'class' => 'input', 'required' => false, 'multiOptions' => $users)); $this->addElement('select', 'interviewed_by3', array('label' => 'Interviewed by', 'class' => 'input', 'required' => false, 'multiOptions' => $users)); $this->addElement('text', 'education', array('label' => 'Education', 'placeholder' => 'e.g. High school', 'class' => 'input', 'required' => false, 'filters' => array('StringTrim'))); $this->addElement('textarea', 'motivation', array('label' => 'Motivation to change', 'placeholder' => 'e.g. Working on great product', 'class' => 'col-md-7 col-xs-1 form-control input textarea', 'required' => false, 'filters' => array('StringTrim'))); $this->addElement('textarea', 'preferred_work', array('label' => 'Kind of work preferred', 'placeholder' => 'e.g. Backend programmer', 'class' => 'col-md-7 col-xs-1 form-control input textarea', 'required' => false, 'filters' => array('StringTrim'))); $this->addElement('textarea', 'ambitions', array('label' => 'Ambitions', 'placeholder' => 'e.g. John', 'class' => 'col-md-7 col-xs-1 form-control input textarea', 'required' => false, 'filters' => array('StringTrim'))); $this->addElement('text', 'languages', array('label' => 'Languages', 'placeholder' => 'e.g. English, German', 'class' => 'col-md-7 col-xs-1 form-control input textarea', 'required' => false, 'filters' => array('StringTrim'))); $this->addElement('text', 'travelling', array('label' => 'Travelling', 'placeholder' => 'e.g. USA, Great Britain', 'class' => 'input', 'required' => false, 'filters' => array('StringTrim'))); $this->addElement('textarea', 'pluses_minuses', array('label' => 'Pluses/minuses', 'placeholder' => 'e.g. +hard working ', 'class' => 'col-md-7 col-xs-1 form-control input textarea', 'required' => false, 'filters' => array('StringTrim'))); $this->addElement('textarea', 'team_experience', array('label' => 'Team work experience', 'placeholder' => 'e.g. Team 10+ ppl ', 'class' => 'col-md-7 col-xs-1 form-control input textarea', 'required' => false, 'filters' => array('StringTrim'))); $this->addElement('textarea', 'domain', array('label' => 'Main domain/areas of work', 'placeholder' => 'e.g. Backend project', 'class' => 'col-md-7 col-xs-1 form-control input textarea', 'required' => false, 'filters' => array('StringTrim'))); $this->addElement('textarea', 'knowhow', array('label' => 'Skills and technologies knowhow', 'placeholder' => 'e.g. SQL, JS', 'class' => 'col-md-7 col-xs-1 form-control input textarea', 'required' => false, 'filters' => array('StringTrim'))); $this->addElement('textarea', 'other', array('label' => 'Other information', 'placeholder' => 'e.g. makes great coffee', 'class' => 'col-md-7 col-xs-1 form-control input textarea', 'required' => false, 'filters' => array('StringTrim'))); $this->addElement('textarea', 'summary', array('label' => 'Summary of the interview', 'placeholder' => 'e.g. summarize applicant qualities', 'class' => 'col-md-7 col-xs-1 form-control input textarea', 'required' => false, 'filters' => array('StringTrim'))); $seniorities = array('' => 'Select an ideal position...'); foreach (My_Model::get('Positions')->fetchAll() as $position) { $seniorities[$position->getId()] = $position->getName(); } $this->addElement('text', 'ideal_for', array('label' => 'Ideal for position/project', 'class' => 'input', 'required' => false, 'filters' => array('StringTrim'))); $this->addElement('text', 'starting_date', array('label' => 'Possible starting date', 'icon' => 'calendar', 'placeholder' => 'e.g. 2016-02-04', 'class' => 'datepicker', 'required' => false)); $dateValidator = new Zend_Validate_Date('YYYY-MM-DD'); $this->getElement('starting_date')->addValidator($dateValidator); $contractForms = array('' => 'Select an ideal position...'); foreach (My_Model::get('ContractForms')->fetchAll() as $contractForm) { $contractForms[$contractForm->getId()] = $contractForm->getName(); } $this->addElement('select', 'contract_form_id', array('label' => 'Contract form', 'class' => 'input', 'required' => false, 'multiOptions' => $contractForms)); $this->addElement('text', 'salary', array('label' => 'Salary', 'placeholder' => 'e.g. Salary', 'class' => 'input', 'required' => false, 'filters' => array('StringTrim'))); $numberValidator = new Zend_Validate_Digits(); $this->getElement('salary')->addValidator($numberValidator); $salaryCurrencies = array('czk' => 'CZK', 'eur' => 'EUR'); //TODO $this->addElement('select', 'salary_currency', array('label' => 'Currency', 'class' => 'input', 'required' => false, 'multiOptions' => $salaryCurrencies)); $this->addElement('text', 'contact_date', array('label' => 'Next contact date', 'icon' => 'calendar', 'placeholder' => 'e.g. 2016-02-04', 'class' => 'datepicker', 'required' => false)); $dateValidator = new Zend_Validate_Date('YYYY-MM-DD'); $this->getElement('starting_date')->addValidator($dateValidator); $this->addElement('submit', 'submit', array('ignore' => true, 'class' => 'submit', 'label' => 'Save')); }
public function __construct(array $params = array()) { if (array_key_exists('questionId', $params)) { $this->_question = My_Model::get('Questions')->getById($params['questionId']); } if (array_key_exists('count', $params) && intval($params['count']) > -1) { $this->_count = intval($params['count']); } $languages = My_Model::get('Languages')->fetchAll(); $this->_languages[0] = "None"; foreach ($languages as $l) { $this->_languages[$l->getid_jazyk()] = $l->getnazev(); } parent::__construct(); }
public function deleteAction() { // only POST request if ($this->_request->isPost()) { $id = $this->_getParam('id'); if (!empty($id)) { $test = My_Model::get('Tests')->getById($id); if ($test) { $test->deleteTest(); $this->_helper->flashMessenger->setNamespace("success")->addMessage("Test was deleted!"); } } $this->_helper->redirector->gotoUrl('/test/'); } }
/** * Metoda ukládá soubory (file). * * Nelze rozlišit, co je čím nahrazováno. * Vše smazáno a nahráno znovu. * IDEAL: Do formuláře načíst naše data a vše při každé úpravě nahrávat znovu a znovu. * * @param unknown $files */ public function setFiles($files) { $service = My_Model::get('Files'); // smazeme prirazene rubriky $service->delete(array('applicant_id = ?' => $this->getId())); // nastavime nove foreach ($files as $file) { $name = basename($file->getFileName()); $bindata = file_get_contents($file->getFileName()); unlink($file->getFileName()); //echo '<br />----------$file --------------------------------<br />'; //Zend_Debug::dump($file); $service->insert(array('applicant_id' => $this->getId(), 'name' => $name, 'file' => $bindata, 'created_at' => date("Y-m-d H:i:s"))); } return $this; }
/** * Form init * */ public function init() { $this->setMethod('post'); $this->addElement('text', 'first_name', array('label' => 'First Name*', 'placeholder' => 'e.g. John', 'class' => 'input', 'required' => true, 'filters' => array('StringTrim'))); $this->addElement('text', 'last_name', array('label' => 'Last Name*', 'placeholder' => 'e.g. Smith', 'class' => 'input', 'required' => true, 'filters' => array('StringTrim'))); $this->addElement('text', 'birth_date', array('label' => 'Birth Date*', 'icon' => 'calendar', 'placeholder' => 'e.g. 1982-10-01', 'class' => 'datepicker', 'required' => true)); $dateValidator = new Zend_Validate_Date('YYYY-MM-DD'); $this->getElement('birth_date')->addValidator($dateValidator); $seniorities = array('' => 'Select a seniority...'); foreach (My_Model::get('Seniorities')->fetchAll() as $seniority) { $seniorities[$seniority->getId()] = $seniority->getName(); } $this->addElement('select', 'seniority_id', array('label' => 'Seniority*', 'class' => 'input', 'required' => true, 'filters' => array('StringTrim'), 'multiOptions' => $seniorities)); $technologies = array('' => 'Select a technology...'); foreach (My_Model::get('Technologies')->fetchAll() as $technology) { $technologies[$technology->getId()] = $technology->getName(); } $this->addElement('select', 'technology_id', array('label' => 'Technology*', 'class' => 'input', 'required' => true, 'filters' => array('StringTrim'), 'multiOptions' => $technologies)); $positions = array('' => 'Select a position...'); foreach (My_Model::get('Positions')->fetchAll() as $position) { $positions[$position->getId()] = $position->getName(); } $this->addElement('select', 'position_id', array('label' => 'Position*', 'class' => 'input', 'required' => true, 'filters' => array('StringTrim'), 'multiOptions' => $positions)); $fileUploader = new Zend_Form_Element_File('photo'); $fileUploader->setLabel('Photo (max 2MB, JPEG)')->setAttrib('class', 'input')->setDestination(Zend_Registry::get('uploadPath')); $fileUploader->addValidator('Count', false, 1); $fileUploader->addValidator('Size', false, 2048000); $fileUploader->addValidator('Extension', false, 'jpg,jpeg'); $this->addElement($fileUploader, 'photo'); $this->addElement('textarea', 'note', array('label' => 'Note', 'placeholder' => 'Interesting facts about the applicant...', 'class' => 'col-md-7 col-xs-1 form-control input textarea', 'filters' => array('StringTrim'))); $fileUploader = new Zend_Form_Element_File('attach1'); $fileUploader->setLabel('Attachment (max 15MB)')->setAttrib('class', 'input')->setDestination(Zend_Registry::get('uploadPath')); $fileUploader->addValidator('Count', false, 1); $fileUploader->addValidator('Size', false, 15728640); $this->addElement($fileUploader, 'attach1'); $fileUploader = new Zend_Form_Element_File('attach2'); $fileUploader->setLabel('Attachment (max 15MB)')->setAttrib('class', 'input')->setDestination(Zend_Registry::get('uploadPath')); $fileUploader->addValidator('Count', false, 1); $fileUploader->addValidator('Size', false, 15728640); $this->addElement($fileUploader, 'attach2'); $fileUploader = new Zend_Form_Element_File('attach3'); $fileUploader->setLabel('Attachment (max 15MB)')->setAttrib('class', 'input')->setDestination(Zend_Registry::get('uploadPath')); $fileUploader->addValidator('Count', false, 1); $fileUploader->addValidator('Size', false, 15728640); $this->addElement($fileUploader, 'attach3'); $this->addElement('submit', 'submit', array('ignore' => true, 'class' => 'submit', 'label' => 'Add Applicant')); }
public function indexAction() { $attachmentId = $this->_request->getParam('id'); // Disables view script call $this->_helper->viewRenderer->setNoRender(true); // Disables layout to action mapping $this->_helper->layout->disableLayout(); // Loads attachment $att = My_Model::get('Attachments')->getById($attachmentId); // Reads attachment extension $fileExtenstion = array_pop(explode(".", $att->getnazev())); // Loads mime types $mimeTypes = $this->mimeTypes(); // Sets Content type $this->_response->setHeader('Content-Type', $mimeTypes[$fileExtenstion]); // Prints mediablob echo $att->priloha; }
/** * Inicializace formulare * */ public function init() { // nastaveni metody odeslani $this->setMethod('post'); // nastaveni polozek formulare $manufacturers = array('' => '...'); foreach (My_Model::get('Manufacturers')->fetchAll() as $manufacturer) { $manufacturers[$manufacturer->getId()] = $manufacturer->getName(); } $this->addElement('select', 'manufacturer_id', array('label' => 'Výrobce:', 'class' => 'input', 'required' => true, 'filters' => array('StringTrim'), 'multiOptions' => $manufacturers)); $this->addElement('text', 'title', array('label' => 'Název:', 'class' => 'input', 'required' => true, 'filters' => array('StringTrim'))); $this->addElement('text', 'price', array('label' => 'Cena:', 'class' => 'input', 'required' => true, 'filters' => array('Digits'), 'validators' => array('Digits', array('validator' => 'GreaterThan', 'options' => array(0))))); $this->addElement('select', 'currency', array('label' => 'Měna:', 'class' => 'input', 'required' => true, 'filters' => array('StringTrim'), 'multiOptions' => array('czk' => 'CZK', 'eur' => 'EUR'))); $this->addElement('textarea', 'description', array('label' => 'Popis:', 'class' => 'textarea', 'required' => true, 'filters' => array('StringTrim'))); $folders = array(); foreach (My_Model::get('Folders')->fetchAll() as $folder) { $folders[$folder->getId()] = $folder->getName(); } $this->addElement('multiCheckbox', 'folders', array('label' => 'Rubrika:', 'required' => true, 'filters' => array('StringTrim'), 'multiOptions' => $folders)); $this->addElement('submit', 'submit', array('ignore' => true, 'class' => 'submit', 'label' => 'Přidat')); }
public function init() { $this->setMethod('post'); $this->addElement('text', 'name', array('label' => 'Name*', 'class' => 'input', 'required' => true, 'filters' => array('StringTrim'))); $this->addElement('textarea', 'description', array('label' => 'Description', 'class' => 'col-md-7 col-xs-1 form-control input textarea', 'required' => false, 'filters' => array('StringTrim'))); $seniorities = array('' => 'Select a seniority...'); foreach (My_Model::get('Seniorities')->fetchAll() as $seniority) { $seniorities[$seniority->getId()] = $seniority->getName(); } $this->addElement('select', 'seniority_id', array('label' => 'Seniority*', 'class' => 'input', 'required' => true, 'filters' => array('StringTrim'), 'multiOptions' => $seniorities)); $technologies = array('' => 'Select a technology...'); foreach (My_Model::get('Technologies')->fetchAll() as $technology) { $technologies[$technology->getId()] = $technology->getName(); } $this->addElement('select', 'technology_id', array('label' => 'Technology*', 'class' => 'input', 'required' => true, 'filters' => array('StringTrim'), 'multiOptions' => $technologies)); $positions = array('' => 'Select a position...'); foreach (My_Model::get('Positions')->fetchAll() as $position) { $positions[$position->getId()] = $position->getName(); } $this->addElement('select', 'position_id', array('label' => 'Position*', 'class' => 'input', 'required' => true, 'filters' => array('StringTrim'), 'multiOptions' => $positions)); $this->addElement('submit', 'submit', array('ignore' => true, 'class' => 'submit', 'label' => 'Add Test')); }
/** * Vrací true pokud existují odpovědi k této otázce. */ public function isAnswered() { $r = My_Model::get('Responses'); $responses = $r->fetchAll($r->select()->where('id_otazka = ?', $this->getid_otazka())); return $responses->count() > 0; }
public function testGetApplicants() { $seniority = My_Model::get('Seniority')->getById(3); $applicants = $seniority->getApplicants(); $this->asserEquals('1', $applicants[0]->getId()); }
public function testGetFullName() { $applicants = My_Model::get('Applicants')->getById(1); $fullName = $applicants->get(0)->getFullName(); $this->assertEquals('Tom Riddle', $fullName); }
public function testGetApplicants() { $position = My_Model::get('Position')->getById(2); $applicants = $position->getApplicants(); $this->asserEquals('1', $applicants[0]->getId()); }
public function saveAction() { $isAdmin = Zend_Registry::get('ACL')->isAllowed(Zend_Registry::get('ROLE'), "applicant", "detail"); //TODO $testSessionHash = $this->_getParam('id'); $sessionTest = My_Model::get('SessionTests')->fetchRow(array('hash = ?' => $testSessionHash)); if (!$sessionTest) { throw new Zend_Controller_Action_Exception('The test was not found', 404); } //TODO: add condition allowing editing by admin if ($sessionTest->getStatus() != "Assigned" && $sessionTest->getStatus() != "Started") { // throw new Zend_Controller_Action_Exception('The test was already finished', 404); } if ($sessionTest->getStatus() == "Assigned") { $sessionTest->updateFromArray(array("status" => "Started"), false); } $isTempSave = $this->_getParam('temp'); if (!$isTempSave && !$isAdmin) { $sessionTest->updateFromArray(array("status" => "Submitted"), false); } $requestParams = $this->getRequest()->getParams(); $correct = 0; $incorrect = 0; foreach ($sessionTest->getSessionQuestions() as $sessionQuestion) { $sessionQuestionUpdateArray = array(); switch ($sessionQuestion->getQuestion()->getType()) { case "MultipleChoice": case "CodeMultipleChoice": $questionAnswers = $this->_request->getParam("question" . $sessionQuestion->getId()); if (is_array($questionAnswers)) { foreach ($questionAnswers as $selectedAnswer) { $found = false; foreach ($sessionQuestion->getSessionAnswers() as $existingSessionAnswer) { if ($existingSessionAnswer->getAnswer()->getId() == $selectedAnswer) { $found = true; break; } } if (!$found) { $createdSessionAnswer = My_Model::get('SessionAnswers')->createRow(); $createdSessionAnswer->updateFromArray(array('session_question_id' => $sessionQuestion->getId(), 'answer_id' => $selectedAnswer), true); } } foreach ($sessionQuestion->getSessionAnswers() as $existingSessionAnswer) { $found = false; foreach ($questionAnswers as $selectedAnswer) { if ($selectedAnswer == $existingSessionAnswer->getAnswer()->getId()) { $found = true; } } if (!$found) { $existingSessionAnswer->delete(); } } } break; case "Text": case "CodeText": $answerText = trim($this->_request->getParam("question" . $sessionQuestion->getId())); $sessionQuestionUpdateArray = array_merge($sessionQuestionUpdateArray, array("answer" => trim($answerText))); if ($isAdmin && isset($requestParams["correct" . $sessionQuestion->getId()])) { $sessionQuestionUpdateArray = array_merge($sessionQuestionUpdateArray, array("score" => $requestParams["correct" . $sessionQuestion->getId()] == "1" ? 1 : 0)); if ($sessionQuestionUpdateArray["score"] == 1) { $correct++; } else { $incorrect++; } } break; } if ($isAdmin && isset($requestParams["note" . $sessionQuestion->getId()])) { $sessionQuestionUpdateArray = array_merge($sessionQuestionUpdateArray, array("note" => trim($requestParams["note" . $sessionQuestion->getId()]))); } $sessionQuestion->updateFromArray($sessionQuestionUpdateArray, true); } if ($isTempSave) { $this->_helper->viewRenderer->setNoRender(true); } else { foreach ($sessionTest->getSessionQuestions() as $sessionQuestion) { $question = My_Model::get('Questions')->getById($sessionQuestion->getQuestion()->getId()); switch ($question->getType()) { case "MultipleChoice": case "CodeMultipleChoice": $correctAnswers = 0; $incorrectAnswers = 0; foreach ($question->getAnswers() as $answer) { $found = false; foreach ($sessionQuestion->getSessionAnswers() as $sessionAnswer) { if ($sessionAnswer->getAnswer()->getId() == $answer->getId()) { $found = true; } } if ($answer->getIsCorrect() && !$found || !$answer->getIsCorrect() && $found) { $incorrectAnswers++; } else { $correctAnswers++; } } if ($incorrectAnswers == 0) { $correct++; } else { $incorrect++; } $sessionQuestion->updateFromArray(array("score" => $incorrectAnswers == 0 ? 1 : 0), true); break; } } $sessionTest->updateFromArray(array("score" => $correct / ($correct + $incorrect == 0 ? 1 : $correct + $incorrect)), true); if ($isAdmin) { $sessionTest->updateFromArray(array("status" => "Reviewed"), false); } if ($isAdmin) { $this->_helper->redirector("detail", "applicant", null, array('id' => $sessionTest->getApplicantId())); } } }
/** * Enter description here... * * @param Zend_Controller_Request_Abstract $request */ public function preDispatch(Zend_Controller_Request_Abstract $request) { // ziskame instanci redirector helperu, ktery ma starosti presmerovani $redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('Redirector'); $auth = Zend_Auth::getInstance(); // Stav o autentifikaci uzivatele (prihlaseni) se musi nekde udrzovat, vychozi zpusob je session // u session lze nastavit namespace, vychozi je Zend_Auth //$auth->setStorage(new Zend_Auth_Storage_Session('My_Auth')); if ($request->getParam('logout')) { // detekovano odhlaseni $auth->clearIdentity(); // kvuli bezpecnosti provedeme presmerovani $redirector->gotoSimpleAndExit($this->failedAction, $this->failedController); } if ($request->getPost('login')) { $db = Zend_Db_Table::getDefaultAdapter(); // Vytvarime instance adapteru pro autentifikaci // nastavime parametry podle naseho nazvu tabulky a sloupcu // treatment obsahuje pripadne pouzitou hashovaci funkci pro heslo, napr. SHA1 $adapter = new Zend_Auth_Adapter_DbTable($db, $this->tableName, $this->identityColumn, $this->credentialColumn, $this->treatment); $form = new LoginForm(); // validace se nezdari, napr. prazdny formular if (!$form->isValid($request->getPost())) { // FlashMessenger slouzi k uchovani zprav v session $flash = Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger'); $flash->clearMessages(); $flash->setNamespace("error")->addMessage("Please fill the login form!"); $redirector->gotoSimpleAndExit($this->failedAction, $this->failedController, null, array('login-failed' => 1)); } $username = $form->getValue($this->loginField); $password = $form->getValue($this->passwordField); // jmeno a heslo predame adapteru $adapter->setIdentity($username); $user = My_Model::get('Users')->fetchRow(array("username = ?" => $username)); if ($user == null) { $redirector->gotoSimpleAndExit($this->failedAction, $this->failedController, null, array('login-failed' => 1)); } $salt = $user->getSalt(); $adapter->setCredential($password . $salt); // obecny proces autentifikace s libovolnym adapterem $result = $auth->authenticate($adapter); if ($auth->hasIdentity()) { // Uzivatel byl uspesne overen a je prihlasen $identity = $auth->getIdentity(); // identity obsahuje v nasem pripade ID uzivatele z databaze // muzeme napr. ulozit IP adresu, cas posledniho prihlaseni atd. $db->update($this->tableName, array('lognum' => new Zend_Db_Expr('lognum + 1'), 'ip' => $request->getServer('REMOTE_ADDR'), 'last_login' => new Zend_Db_Expr('NOW()'), 'browser' => $request->getServer('HTTP_USER_AGENT')), $this->identityColumn . " = '{$identity}'"); $flash = Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger'); $flash->clearMessages(); $flash->setNamespace("success")->addMessage("Success! You are logged in!"); // presmerujeme $redirector->gotoSimpleAndExit($this->successAction, $this->successController); } else { // autentifikace byla neuspesna // FlashMessenger slouzi k uchovani zprav v session $flash = Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger'); $flash->clearMessages(); // vlozime do session rovnou chybove hlasky, ktere pak predame do view foreach ($result->getMessages() as $msg) { $flash->setNamespace("error")->addMessage("Login failed, please try again!"); } /* // nicmene muzeme je nastavit podle konkretniho chyboveho kodu if ($result == Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID) { // neplatne heslo } else if ($result == Zend_Auth_Result::FAILURE_IDENTITY_AMBIGUOUS) { // nalezeno vice uzivatelskych identit } else if ($result == Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND) { // identita uzivatele nenalezena } * */ $redirector->gotoSimpleAndExit($this->failedAction, $this->failedController, null, array('login-failed' => 1)); } } }
public function testDeleteQuestion() { My_Model::get('Questions')->getById(1)->deleteQuestion(); $question = My_Model::get('Questions')->getById(1); $this->assertNull($question); }
public function editAction() { $this->view->title = 'Edit user profile'; $this->view->messages = $this->_helper->flashMessenger->getMessages(); $form = new UserForm(); $this->view->form = $form; $userId = $this->_request->getParam('id'); if ($this->getUser()->getid_uzivatel() !== $userId && !$this->getUser()->isAdmin()) { // Redirects $this->_helper->redirector->gotoRoute(array('controller' => 'candidate', 'action' => 'index'), 'default', true); return; } if (!empty($userId)) { $user = My_Model::get('Users')->getById($userId); if ($user !== NULL) { $form->setDefaults($user->get_data()); $avatar = $user->getFoto(); if ($avatar !== NULL) { $base64 = base64_encode($avatar->getfoto()); $form->avatar->setAttrib('src', "data:image/gif;base64," . $base64); } } } // ########################### POST ########################### // Handles form submission if ($this->_request->isPost()) { if ($this->_request->getPost('saveButton', false)) { if ($form->isValid($this->_request->getPost())) { $formValues = $form->getValues(); // Profile photo $photo; if ($form->profilePhoto->isUploaded()) { if (!$form->profilePhoto->receive()) { print "Error receiving the file"; } // Reads location and creates blob $profilePhotoLocation = $form->profilePhoto->getFileName(); $profilePhotoBlob = file_get_contents($profilePhotoLocation); if (!empty($profilePhotoBlob)) { // Creates photo object $photo = My_Model::get('Photos')->createRow(); $photo->foto = $profilePhotoBlob; $photo->nazev = array_pop(explode("/", $profilePhotoLocation)); $photo->save(); } // Deletes file from directory (is already in DB) unlink($profilePhotoLocation); } // Adds photo id if (!empty($photo)) { $formValues['id_fotografie'] = $photo->getid_foto(); } if ($user === NULL) { $user = My_Model::get('Users')->createRow(); } if (!empty($formValues["heslo"])) { $formValues["heslo"] = sha1("interview" . $formValues["heslo"]); } else { unset($formValues["heslo"]); } $user->updateFromArray($formValues); $this->_helper->redirector->gotoRoute(array('controller' => 'user', 'action' => 'detail', 'id' => $userId), 'default', true); } } else { if ($this->_request->getPost('closeButton', false)) { if (!empty($userId)) { $this->_helper->redirector->gotoRoute(array('controller' => 'user', 'action' => 'detail', 'id' => $userId), 'default', true); } else { $this->_helper->redirector->gotoRoute(array('controller' => 'user', 'action' => 'index'), 'default', true); } } else { if ($this->_request->getPost('deleteButton', false)) { if (!empty($userId)) { My_Model::get('Users')->getById($userId)->delete(); } $this->_helper->redirector->gotoRoute(array('controller' => 'user', 'action' => 'index'), 'default', true); } } } } }
public function testGetApplicants() { $technology = My_Model::get('Technologies')->getById(4); $applicants = $technology->getApplicants(); $this->asserEquals('1', $applicants[0]->getId()); }
public function evaluateAction() { // kontrola, zda existuje prirazeny test, netestuje se vyplneni (byl uz vyplnen) $link = $this->getParam('link'); $assignment = $this->verifyLink($link, FALSE, TRUE); $form = new TestCommentForm(); $assignmentData = $assignment->get_data(); $form->setDefaults($assignmentData); $this->view->form = $form; //pro kandidata nastavi jiny view $auth = Zend_Auth::getInstance(); if ($auth->hasIdentity()) { $this->_helper->viewRenderer('evaluate-internal'); } else { $this->_helper->viewRenderer('evaluate-external'); } $this->view->messages = $this->_helper->flashMessenger->getMessages(); $this->view->title = 'Evaluation of submitted test'; $this->view->assignment = $assignment; $this->view->test = My_Model::get('Tests')->getById($assignment->getid_test()); $this->view->status = My_Model::get('Statuses')->getById($assignment->getid_status()); $candidate = My_Model::get('Candidates')->getById($assignment->getid_kandidat()); $this->view->candidate = $candidate->getFullName(); // ########################### POST ########################### // Handles form submission if ($this->_request->isPost()) { if ($this->_request->isXmlHttpRequest()) { //ajax call request $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(TRUE); $postData = $this->getRequest()->getPost(); $question_id = 0; $isCorrect = null; if (array_key_exists('question_id', $postData)) { $question_id = intval($postData['question_id']); } if (array_key_exists('isCorrect', $postData)) { $isCorrect = filter_var($postData['isCorrect'], FILTER_VALIDATE_BOOLEAN); } //check request if ($question_id > 0 & is_bool($isCorrect)) { // if valid reevaluate $responses = $assignment->getResponses(); foreach ($responses as $r) { if ($r->getid_otazka() == $question_id) { $r->setspravne($isCorrect); $r->save(); } } } else { //deny response when invalid $this->_response->clearBody(); $this->_response->clearHeaders(); $this->_response->setHttpResponseCode(403); } } else { //form request - Save deetails if ($form->isValid($this->_request->getPost())) { $formValues = $form->getValues(); // Updates test object in DB $assignment->setkomentar($formValues["komentar"]); // prepocitani spravnych odpovedi - pocita skore pro jednotlive odpovedi, potom se udela prumer // je to takova haluz, protoze odpovedi nejsou v db rozdelene po otazkach $last_question_id = 0; $question_options = 1; //zerodivision hack $question_options_correct = 0; $question_score = 0; $questions_count = 0; $total_score = 0; $responses = $assignment->getResponses(); foreach ($responses as $r) { //reset count on new question if ($r->getid_otazka() != $last_question_id) { $questions_count++; $question_score = (int) round($question_options_correct / $question_options * 100); $total_score += $question_score; $question_options = 0; $question_options_correct = 0; } // count correct answers $question_options++; $last_question_id = $r->getid_otazka(); if (filter_var($r->getspravne(), FILTER_VALIDATE_BOOLEAN)) { $question_options_correct++; } } //include last question $question_score = (int) round($question_options_correct / $question_options * 100); $total_score += $question_score; $result = (int) round($total_score / $questions_count); $assignment->sethodnoceni($result); //changte status to evaluated $statuses = new Statuses(); $statusID = $statuses->getStatusID('EVALUATED'); $assignment->setid_status($statusID); $assignment->save(); //dokonci evaluaci - zalezi na uzivatelske roli $this->_helper->flashMessenger->addMessage("Test has been successfully evaluated."); $auth = Zend_Auth::getInstance(); if ($auth->hasIdentity()) { // prihlaseneho presmeruje na stranku kandidata $this->_helper->redirector->gotoRoute(array('controller' => 'candidate', 'action' => 'detail', 'id' => $assignment->getid_kandidat()), 'default', true); } else { // bez prihlaseni skonci $this->_helper->redirector->gotoRoute(array('controller' => 'assignment', 'action' => 'index'), 'default', true); } } } } }
/** * Show photo. */ public function photoAction() { $userId = $this->_getParam('id'); $user = My_Model::get('Users')->getById($userId); $file = Zend_Registry::get('uploadPath') . '/' . $user->getPhotoFilename(); if (is_file($file)) { header('Content-Type: image/jpeg'); //FIXME: pevně nastaveno na jpeg, i když uploader i cesta by zvládli obecné typy readfile($file); // disable layout and view $this->view->layout()->disableLayout(); $this->_helper->viewRenderer->setNoRender(true); } else { $file = APPLICATION_PATH . '/../public/images/user.png'; header('Content-Type: image/png'); readfile($file); // disable layout and view $this->view->layout()->disableLayout(); $this->_helper->viewRenderer->setNoRender(true); //throw new Zend_Controller_Action_Exception('The requested page does not exist', 404); } }
public function testGetQuestions() { $question = My_Model::get('Tests')->getById(1)->getQuestions()[0]; $this->assertNotNull($question); }
public function __construct(array $params = array()) { $this->_test = My_Model::get('Tests')->getById($params['testId']); parent::__construct(); }
/** * Inicializace formulare * */ public function init() { $this->setMethod(self::METHOD_POST); // ################## FIRST COLUMN ################### // Photo (id_foto) // File picker $profilePhotoPicker = new Zend_Form_Element_File('profilePhoto'); $profilePhotoPicker->setDestination(PUBLIC_PATH . '/temp'); $profilePhotoPicker->addValidator('Count', false, 1); $profilePhotoPicker->addValidator('Size', false, 2097152); $profilePhotoPicker->removeDecorator('Label'); $this->addElement($profilePhotoPicker, 'profilePhoto'); $avatar = new Zend_Form_Element_Image('avatar'); $avatar->setAttrib('class', array("profile-user-img", "img-responsive", "img-circle")); $this->addElement($avatar, 'avatar'); // First name (jmeno) $firstName = $this->createElement('text', 'jmeno'); $firstName->addFilter('StringTrim'); $firstName->setRequired(true); $firstName->setAttrib('class', 'form-control'); $firstName->setAttrib('placeholder', 'First name'); $firstName->removeDecorator('Label'); $this->addElement($firstName); // Last name (prijmeni) $lastName = $this->createElement('text', 'prijmeni'); $lastName->addFilter('StringTrim'); $lastName->setRequired(true); $lastName->setAttrib('class', 'form-control'); $lastName->setAttrib('placeholder', 'Surname'); $lastName->removeDecorator('Label'); $this->addElement($lastName); // E-mail (email) $lastName = $this->createElement('text', 'email'); $lastName->addFilter('StringTrim'); $lastName->setRequired(true); $lastName->setAttrib('class', 'form-control'); $lastName->setAttrib('placeholder', 'E-mail'); $lastName->removeDecorator('Label'); $this->addElement($lastName); //heslo $pass = $this->createElement('password', 'heslo'); $pass->setAttrib('class', 'form-control'); $pass->setAttrib('placeholder', 'Password'); $pass->removeDecorator('Label'); $login = Zend_Auth::getInstance()->getIdentity(); $user = My_Model::get('Users')->getUserByEmail($login); if ($user !== NULL) { $this->addElement($pass); } // ###################### BUTTON ###################### $close = new Zend_Form_Element_Submit('closeButton'); $close->setLabel('Back'); $close->setAttrib('class', 'btn btn-default'); $close->setDecorators(array('ViewHelper')); $this->addElement($close, 'closeButton'); $save = new Zend_Form_Element_Submit('saveButton'); $save->setLabel('Save'); $save->setAttrib('class', 'btn btn-success'); $save->setDecorators(array('ViewHelper')); $this->addElement($save, 'saveButton'); $delete = new Zend_Form_Element_Submit('deleteButton'); $delete->setLabel('Delete'); $delete->setAttrib('class', 'btn btn-danger'); $delete->setAttrib('onclick', 'if (confirm("Are you sure?")) { document.form.submit(); } return false;'); $delete->setDecorators(array('ViewHelper')); $this->addElement($delete, 'deleteButton'); }
/** * All current questions. */ public function getCurrentQuestions() { $questions = My_Model::get('Questions')->fetchAll(array('test_id = ?' => $this->getId(), 'deleted_at IS NULL')); return $questions; }