Example #1
0
 public function _createUser($form, $sendEmail = false)
 {
     $values = $form->getValues();
     $user = new User();
     $logic = new Logic_User();
     $dbAdapter = $user->getAdapter();
     $dbAdapter->beginTransaction();
     try {
         $loginArrayRows = $user->fetchAll($user->select()->from(array('u' => 'user'), array('login')));
         $loginArray = array();
         if ($loginArrayRows) {
             foreach ($loginArrayRows as $value) {
                 $loginArray[] = $value->login;
             }
         }
         if (!in_array(strtoupper($values['login']), $loginArray)) {
             $pass = Base_PasswordGenerator::generate();
             $values['password'] = $pass['hashed'];
             if (isset($values['symbol'])) {
                 unset($values['symbol']);
             }
             if (isset($values['rola'])) {
                 unset($values['rola']);
             }
             if (!$values['valid_until'] || strlen($values['valid_until']) == 0) {
                 $values['valid_until'] = date('c', strtotime('+ 20 year'));
             }
             //                $clientModel = new Wsclient();
             //
             //                $clientData = array(
             //                    'client_name' => $values['login'],
             //                    'pm_name'     => $values['first_name'].' '.$values['surname'],
             //                    'pm_email'    => $values['email'],
             ////                    'user_id'     => $id_user,
             //                    'ip_address'  => array()
             //                );
             //
             //                $values['ws_client_id'] = $clientModel->createClient($clientData);
             $userLdapData = $logic->getLdapData($values['login'], $values['ldapPassword']);
             $values['first_name'] = $userLdapData['givenname'][0];
             $values['surname'] = $userLdapData['sn'][0];
             if (!empty($userLdapData['mail'][0])) {
                 $values['email'] = $userLdapData['mail'][0];
             }
             $row = $user->createRow($values);
             $id_user = $row->save();
             $params = $row->getBussinesData();
             $profileModel = new Profile();
             $branchModel = new Branch();
             $branchId = $branchRow->id;
             $profileRow = $profileModel->createRow(array('id_user' => $id_user, 'id_branch' => 1));
             $profileRow->save();
             $passwordData['id_user'] = $id_user;
             $passwordData['password'] = $pass['hashed'];
             $userPassword = new UserPassword();
             $rowPassword = $userPassword->createRow($passwordData);
             $rowPassword->save();
             if ($sendEmail == true) {
                 try {
                     $mailer = new Logic_Mailer(Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view'), $translate);
                     $user_row = $user->findOne($id_user);
                     $mailer->userPass($pass['clean'], $user_row);
                 } catch (Exception $e) {
                     $logger = Zend_Registry::get('logger');
                     $logger['messages']['User'][$id_user] = 'User ' . $userRow['surname'] . ' ' . $userRow['first_name'] . ' added successful. Mail not sended.';
                     Zend_Registry::set('logger', $logger);
                     throw new Exception($e->getMessage());
                 }
             }
             $logger = Zend_Registry::get('logger');
             $logger['messages']['User'][$id_user] = 'User ' . $userRow['surname'] . ' ' . $userRow['first_name'] . ' added successful.';
             Zend_Registry::set('logger', $logger);
             $dbAdapter->commit();
             $log = Zend_Registry::get('admin_log');
             $log->profileadd(array('new' => $profileRow));
             return true;
         } else {
             throw new Logic_User_Exception('Użytkownik o podanym loginie już istnieje');
         }
     } catch (Exception $e) {
         $dbAdapter->rollBack();
         throw new Logic_User_Exception($e->getMessage());
     }
 }