/** * Nadpisana metoda update'u wiersza tabeli z uwzględnieniem mailera * @param array $data * @return type */ public function setFromArray(array $data) { $headerMappings = $this->getHeaderMappings(); if (isset($data['send_mail'])) { $this->send_mail = $data['send_mail']; unset($data['send_mail']); } foreach ($data as $key => $value) { if (isset($headerMappings[$key]['format'])) { switch ($headerMappings[$key]['format']) { case 'currency': $data[$key] = Zend_Locale_Format::getFloat($value); break; } } if ($value == null) { $data[$key] = null; } } parent::setFromArray($data); if (isset($data['id_state']) && $this->send_mail) { $mailer = new Logic_Mailer(Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view'), $translate); $userModel = new User(); //receiver data if (get_called_class() === 'Row_DelegationSettlement') { if ($data['id_state'] == Logic_Settlements::STATE_APPROVED_2) { $receiverRow = $userModel->findOne($this->settlement_by); } elseif (!is_null($this->created_by)) { $receiverRow = $userModel->findOne($this->created_by); } else { $receiverRow = $userModel->findOne($this->settlement_by); } $delegation = $this->findParentRow('Delegation'); } else { if (get_called_class() === 'Row_Delegation') { if ($data['id_state'] == Logic_Settlements::STATE_APPROVED) { $receiverRow = $userModel->findOne($this->acceptance_by); } else { $receiverRow = $userModel->findOne($this->created_by); } $params['deleg_no'] = $this->deleg_no; } else { return $this; } } $params['email'] = $receiverRow->email; //diee($params['email']); //sender data $senderRow = Zend_Auth::getInstance()->getIdentity(); $params['user_full_name'] = $senderRow->first_name . ' ' . $senderRow->surname; $params['departament'] = $senderRow->department; $params['KOD_MPK'] = $senderRow->jednostka['symbol']; //email body data $params['id'] = $this->id; if (isset($data['deleg_no'])) { $params['deleg_no'] = $data['deleg_no']; } elseif (isset($this->deleg_no)) { $params['deleg_no'] = $this->deleg_no; } elseif (isset($delegation->deleg_no)) { $params['deleg_no'] = $delegation->deleg_no; } try { switch ($data['id_state']) { case Logic_Settlements::STATE_ACCEPTED: $mailer->acceptedByDelegation($params); break; case Logic_Settlements::STATE_APPROVED: $mailer->acceptDelegation($params); break; case Logic_Settlements::STATE_APPROVED_2: $mailer->settleDelegation($params); break; case Logic_Settlements::STATE_CORRECTION: $mailer->correctDelegation($params); break; case Logic_Settlements::STATE_SETTLED: $mailer->settledDelegation($params); break; case Logic_Settlements::STATE_APPROVED_ACCOUNTING: $mailer->approvedDelegation($params); break; // case Logic_Settlements::STATE_SETTLED } } catch (Exception $e) { $messenger = new Base_View_Helper_Messenger(); $messenger->error($e->getMessage()); } } return $this; }