Esempio n. 1
0
 private function saveExistedEmployee($urlParameters, \Core\Http $http, \Core\Application $app, \Core\Database $db, \DBMappers\EmpItem $empMapper)
 {
     $isOwnAccount = isset($urlParameters[0]) && $urlParameters[0] == $app->getEmpId();
     $empItem = $empMapper->getById($urlParameters[0], $db);
     $empItem->fromArray(array('login' => $http->post()['login'], 'email' => $http->post()['email'], 'hour_mode' => $http->post()['hour_mode'], 'first_day' => $http->post()['first_day'], 'name' => $http->post()['name']));
     // check for is_admin field
     if ($app->isAdmin()) {
         $empItem->fromArray(array('is_admin' => $http->post()['is_admin_proxy']));
     }
     $emp_err = array();
     $emp_err['login'] = $this->validateLogin($empItem->getLogin());
     $emp_err['name'] = $this->validateName($empItem->getName());
     $emp_err['email'] = $this->validateEmail($empItem->getEmail());
     // пароль редактируется только если для своего аккаунта, в противном случае мы только можем сбросить пароль
     if ($isOwnAccount) {
         $emp_err['password'] = $this->validatePassword($empItem, $http->post()['password']);
         // check for new password setting
         // 1) check if we must setup new password
         if ($empItem->isPasswordEqual(null) && empty($http->post()['new_password']) && empty($http->post()['new_password_retype'])) {
             $emp_err['password'] = '******';
         } else {
             if (!(empty($http->post()['new_password']) && empty($http->post()['new_password_retype']))) {
                 if ($http->post()['new_password'] != $http->post()['new_password_retype']) {
                     $emp_err['password'] = '******';
                 } else {
                     $empItem->setPwd($http->post()['new_password']);
                     $emp_err['password'] = '';
                 }
             }
         }
     } else {
         // we may drop password
         if ($http->post()['is_admin_proxy'] == 1) {
             $empItem->dropPwd();
             $emp_err['password'] = '';
         }
     }
     // success or reenter form
     if ($this->isEmptyValues($emp_err)) {
         $empMapper->save($empItem, $db);
         $app->setMessage('Employee ' . $empItem->getName() . ' modified successfully.');
         if ($isOwnAccount) {
             $app->setStateRedirect(BROWSE_URL);
         } else {
             $app->setStateRedirect(EMPLOYEE_LIST_URL);
         }
         //error_log("\nredirect to:" . print_r(BROWSE_URL, true), 3, 'my_errors.txt');
     } else {
         $app->setStateEmployee(array('emp_edit' => array('item' => $empItem, 'edit_own' => true, 'add_new' => false), 'emp_err' => $emp_err));
     }
 }