/**
  * 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;
 }
Esempio n. 3
0
 /**
  * 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;
 }
Esempio n. 4
0
 /**
  *
  * @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');
     }
 }
Esempio n. 5
0
 /**
  *
  * @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/');
     }
 }
Esempio n. 11
0
 /**
  * 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;
 }
Esempio n. 12
0
 /**
  * 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;
 }
Esempio n. 14
0
 /**
  * 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'));
 }
Esempio n. 15
0
 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'));
 }
Esempio n. 16
0
 /**
  * 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;
 }
Esempio n. 17
0
 public function testGetApplicants()
 {
     $seniority = My_Model::get('Seniority')->getById(3);
     $applicants = $seniority->getApplicants();
     $this->asserEquals('1', $applicants[0]->getId());
 }
Esempio n. 18
0
 public function testGetFullName()
 {
     $applicants = My_Model::get('Applicants')->getById(1);
     $fullName = $applicants->get(0)->getFullName();
     $this->assertEquals('Tom Riddle', $fullName);
 }
Esempio n. 19
0
 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()));
         }
     }
 }
Esempio n. 21
0
 /**
  * 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));
         }
     }
 }
Esempio n. 22
0
 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);
     }
 }
Esempio n. 27
0
 public function testGetQuestions()
 {
     $question = My_Model::get('Tests')->getById(1)->getQuestions()[0];
     $this->assertNotNull($question);
 }
Esempio n. 28
0
 public function __construct(array $params = array())
 {
     $this->_test = My_Model::get('Tests')->getById($params['testId']);
     parent::__construct();
 }
Esempio n. 29
0
 /**
  * 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');
 }
Esempio n. 30
0
 /**
  * All current questions.
  */
 public function getCurrentQuestions()
 {
     $questions = My_Model::get('Questions')->fetchAll(array('test_id  = ?' => $this->getId(), 'deleted_at IS NULL'));
     return $questions;
 }