Exemple #1
0
 public function editAction()
 {
     $request = $this->getRequest();
     $id = $this->_getParam('id', 0);
     $activeTab = $request->getCookie('tab', null);
     $contactDb = new Contacts_Model_DbTable_Contact();
     $contact = $contactDb->getContact($id);
     if (false) {
         $this->_helper->redirector->gotoSimple('view', 'contact', null, array('id' => $id));
     } elseif ($this->isLocked($contact['locked'], $contact['lockedtime'])) {
         if ($request->isPost()) {
             header('Content-type: application/json');
             $this->_helper->viewRenderer->setNoRender();
             $this->_helper->getHelper('layout')->disableLayout();
             echo Zend_Json::encode(array('message' => $this->view->translate('MESSAGES_LOCKED')));
         } else {
             $this->_flashMessenger->addMessage('MESSAGES_LOCKED');
             $this->_helper->redirector('index');
         }
     } else {
         $contactDb->lock($id, $this->_user['id'], $this->_date);
         $form = new Contacts_Form_Contact();
         $options = $this->_helper->Options->getOptions($form, $this->_user['clientid']);
         if ($request->isPost()) {
             $this->_helper->viewRenderer->setNoRender();
             $this->_helper->getHelper('layout')->disableLayout();
             $data = $request->getPost();
             $element = key($data);
             if ($element == 'contactinfo') {
                 $data['info'] = $data['contactinfo'];
                 unset($data['contactinfo']);
                 $element = 'info';
             }
             if ($element == 'customerinfo') {
                 $data['info'] = $data['customerinfo'];
                 unset($data['customerinfo']);
                 $element = 'info';
             }
             if (isset($form->{$element}) && $form->isValidPartial($data)) {
                 $data['modified'] = $this->_date;
                 $data['modifiedby'] = $this->_user['id'];
                 $contactDb = new Contacts_Model_DbTable_Contact();
                 $contactDb->updateContact($id, $data);
             } else {
                 throw new Exception('Form is invalid');
             }
         } else {
             if ($id > 0) {
                 $data = $contact;
                 $form->populate($data);
                 //Phone
                 $phoneDb = new Contacts_Model_DbTable_Phone();
                 $phone = $phoneDb->getPhone($id);
                 //Email
                 $emailDb = new Contacts_Model_DbTable_Email();
                 $email = $emailDb->getEmail($id);
                 //Internet
                 $internetDb = new Contacts_Model_DbTable_Internet();
                 $internet = $internetDb->getInternet($id);
                 $addressDb = new Application_Model_DbTable_Address();
                 //Primary Address
                 $primaryAddress = $addressDb->fetchRow($addressDb->select()->where('contactid = ?', $id)->where('type = ?', 'primaryAddress')->where('clientid = ?', $this->_user['clientid']));
                 $formPrimaryAddress = new Contacts_Form_Address();
                 $formPrimaryAddress->country->addMultiOptions($options['countries']);
                 $formPrimaryAddress->populate($primaryAddress->toArray());
                 foreach ($formPrimaryAddress as $element) {
                     $element->setAttrib('data-id', $primaryAddress['id']);
                     $element->setAttrib('data-controller', 'address');
                 }
                 //Shipping address
                 $shippingAddress = $addressDb->fetchRow($addressDb->select()->where('contactid = ?', $id)->where('type = ?', 'shippingAddress')->where('clientid = ?', $this->_user['clientid']));
                 $formShippingAddress = new Contacts_Form_Address();
                 $formShippingAddress->populate($shippingAddress->toArray());
                 foreach ($formShippingAddress as $element) {
                     $element->setAttrib('data-id', $shippingAddress['id']);
                     $element->setAttrib('data-controller', 'address');
                 }
                 $formShippingAddress->country->addMultiOptions($options['countries']);
                 //History
                 $history = $this->getHistory($id);
                 //Files
                 $files = array();
                 //Create contact folder if does not already exists
                 if (!file_exists(BASE_PATH . '/files/contacts/' . $id . '/')) {
                     mkdir(BASE_PATH . '/files/contacts/' . $id . '/');
                     chmod(BASE_PATH . '/files/contacts/' . $id . '/', 0777);
                 }
                 if ($handle = opendir(BASE_PATH . '/files/contacts/' . $id . '/')) {
                     $files['contactSpecific'] = array();
                     while (false !== ($entry = readdir($handle))) {
                         if (substr($entry, 0, strlen('.')) !== '.') {
                             array_push($files['contactSpecific'], $entry);
                         }
                     }
                     closedir($handle);
                 }
                 //Toolbar
                 $toolbar = new Contacts_Form_Toolbar();
                 $this->view->form = $form;
                 $this->view->formPrimaryAddress = $formPrimaryAddress;
                 $this->view->formShippingAddress = $formShippingAddress;
                 $this->view->history = $history;
                 $this->view->files = $files;
                 $this->view->phone = $phone;
                 $this->view->email = $email;
                 $this->view->internet = $internet;
                 $this->view->activeTab = $activeTab;
                 $this->view->toolbar = $toolbar;
             }
         }
         //Create contact folder if does not already exists
         if (!file_exists(BASE_PATH . '/files/contacts/' . $id . '/')) {
             mkdir(BASE_PATH . '/files/contacts/' . $id . '/');
             chmod(BASE_PATH . '/files/contacts/' . $id . '/', 0777);
         }
     }
     $this->view->messages = $this->_flashMessenger->getMessages();
 }