function _createMessageRecipient($account_id, $message_id, $message_text) { $logger = DevblocksPlatform::getConsoleLog(); $current_time = time(); $status = TRUE; // Return TRUE status unless something sets it to false // Now we grab the Customer Recipient and create Message Recipients if ($account_id) { // This isn't really needed but you can never be two safe $ids_cr = DAO_CustomerRecipient::getWhere(sprintf("%s = %d", DAO_CustomerRecipient::ACCOUNT_ID, $account_id)); foreach ($ids_cr as $cr_id => $cr) { if ($cr->type == 255) { $ids_slave_cr = DAO_CustomerRecipient::getWhere(sprintf("%s = %d", DAO_CustomerRecipient::ACCOUNT_ID, $cr->address)); foreach ($ids_slave_cr as $cr_slave_id => $cr_slave) { $this->_createIndividualMessageRecipient($cr_slave_id, $account_id, $message_id, $message_text, $current_time); } } else { $this->_createIndividualMessageRecipient($cr_id, $account_id, $message_id, $message_text, $current_time); } } } return $status; }
/** * @param Model_DevblocksEvent $event */ function handleEvent(Model_DevblocksEvent $event) { $translate = DevblocksPlatform::getTranslationService(); switch ($event->id) { case 'cron.maint': DAO_MessageAuditLog::maint(); break; case 'cron.import': // Is a worker around to invoke this change? 0 = automatic /* @$worker_id = (null != ($active_worker = FegApplication::getActiveWorker()) && !empty($active_worker->id)) ? $active_worker->id : 0; $fields = array( DAO_MessageAuditLog::WORKER_ID => $worker_id, DAO_MessageAuditLog::ACCOUNT_ID => 0, DAO_MessageAuditLog::RECIPIENT_ID => 0, DAO_MessageAuditLog::MESSAGE_ID => 0, DAO_MessageAuditLog::MESSAGE_RECIPIENT_ID => 0, DAO_MessageAuditLog::CHANGE_DATE => time(), DAO_MessageAuditLog::CHANGE_FIELD => 'auditlog.cron.import', DAO_MessageAuditLog::CHANGE_VALUE => 'Cron Importer Ran', ); $log_id = DAO_MessageAuditLog::create($fields); */ break; case 'cron.reprocessing.accounts': @($account_id = $event->params['account_id']); @($message_id = $event->params['message_id']); @($import_source = $event->params['import_source']); if ($account_id == 0) { break; } // Is a worker around to invoke this change? 0 = automatic @($worker_id = null != ($active_worker = FegApplication::getActiveWorker()) && !empty($active_worker->id) ? $active_worker->id : 0); $fields = array(DAO_MessageAuditLog::WORKER_ID => $worker_id, DAO_MessageAuditLog::ACCOUNT_ID => $account_id, DAO_MessageAuditLog::RECIPIENT_ID => 0, DAO_MessageAuditLog::MESSAGE_ID => $message_id, DAO_MessageAuditLog::MESSAGE_RECIPIENT_ID => 0, DAO_MessageAuditLog::CHANGE_DATE => time(), DAO_MessageAuditLog::CHANGE_FIELD => 'auditlog.cf.message.status', DAO_MessageAuditLog::CHANGE_VALUE => sprintf("Message ID %d assocated to Account ID %d", $message_id, $account_id)); $log_id = DAO_MessageAuditLog::create($fields); break; case 'cron.export': // Is a worker around to invoke this change? 0 = automatic /* @$worker_id = (null != ($active_worker = FegApplication::getActiveWorker()) && !empty($active_worker->id)) ? $active_worker->id : 0; $fields = array( DAO_MessageAuditLog::WORKER_ID => $worker_id, DAO_MessageAuditLog::ACCOUNT_ID => 0, DAO_MessageAuditLog::RECIPIENT_ID => 0, DAO_MessageAuditLog::MESSAGE_ID => 0, DAO_MessageAuditLog::MESSAGE_RECIPIENT_ID => 0, DAO_MessageAuditLog::CHANGE_DATE => time(), DAO_MessageAuditLog::CHANGE_FIELD => 'auditlog.cron.export', DAO_MessageAuditLog::CHANGE_VALUE => 'Cron Exporter Ran', ); $log_id = DAO_MessageAuditLog::create($fields); */ break; case 'cron.send.email': @($recipient = $event->params['recipient']); @($message = $event->params['message']); @($message_recipient = $event->params['message_recipient']); @($message_text = $event->params['message_text']); @($send_status = $event->params['send_status']); $fields = array(DAO_MessageAuditLog::WORKER_ID => 0, DAO_MessageAuditLog::ACCOUNT_ID => $message_recipient->account_id, DAO_MessageAuditLog::RECIPIENT_ID => $message_recipient->recipient_id, DAO_MessageAuditLog::MESSAGE_ID => $message_recipient->message_id, DAO_MessageAuditLog::MESSAGE_RECIPIENT_ID => $message_recipient->id, DAO_MessageAuditLog::CHANGE_DATE => time(), DAO_MessageAuditLog::CHANGE_FIELD => 'auditlog.cs.message.email.send', DAO_MessageAuditLog::CHANGE_VALUE => $send_status ? "Successful Sent" : "Failed to Send"); $log_id = DAO_MessageAuditLog::create($fields); break; case 'cron.queue.fax': @($recipient = $event->params['recipient']); @($message = $event->params['message']); @($message_recipient = $event->params['message_recipient']); @($message_text = $event->params['message_text']); @($queue_status = $event->params['queue_status']); @($fax_id = $event->params['fax_id']); $fields = array(DAO_MessageAuditLog::WORKER_ID => 0, DAO_MessageAuditLog::ACCOUNT_ID => $message_recipient->account_id, DAO_MessageAuditLog::RECIPIENT_ID => $message_recipient->recipient_id, DAO_MessageAuditLog::MESSAGE_ID => $message_recipient->message_id, DAO_MessageAuditLog::MESSAGE_RECIPIENT_ID => $message_recipient->id, DAO_MessageAuditLog::CHANGE_DATE => time(), DAO_MessageAuditLog::CHANGE_FIELD => 'auditlog.cs.message.fax.queue', DAO_MessageAuditLog::CHANGE_VALUE => $queue_status ? "Fax successful queue with ID: " . $fax_id : "Failed to Queue"); $log_id = DAO_MessageAuditLog::create($fields); break; case 'cron.send.snpp': @($recipient = $event->params['recipient']); @($message = $event->params['message']); @($message_recipient = $event->params['message_recipient']); @($message_text = $event->params['message_text']); @($send_status = $event->params['send_status']); $fields = array(DAO_MessageAuditLog::WORKER_ID => 0, DAO_MessageAuditLog::ACCOUNT_ID => $message_recipient->account_id, DAO_MessageAuditLog::RECIPIENT_ID => $message_recipient->recipient_id, DAO_MessageAuditLog::MESSAGE_ID => $message_recipient->message_id, DAO_MessageAuditLog::MESSAGE_RECIPIENT_ID => $message_recipient->id, DAO_MessageAuditLog::CHANGE_DATE => time(), DAO_MessageAuditLog::CHANGE_FIELD => 'auditlog.cs.message.snpp.send', DAO_MessageAuditLog::CHANGE_VALUE => $send_status ? "Successful Sent" : "Failed to Send"); $log_id = DAO_MessageAuditLog::create($fields); break; case 'dao.customer.account.update': @($objects = $event->params['objects']); foreach ($objects as $object_id => $object) { $model = $object['model']; $changes = $object['changes']; // Filter out any changes we could care less about //unset($changes[DAO_CustomerAccount::IS_DISABLED]); // Is a worker around to invoke this change? 0 = automatic @($worker_id = null != ($active_worker = FegApplication::getActiveWorker()) && !empty($active_worker->id) ? $active_worker->id : 0); if (!empty($changes)) { foreach ($changes as $key => $change) { $value = $change['to']; if (is_array($value)) { $value = implode("\r\n", $value); } $fields = array(DAO_MessageAuditLog::WORKER_ID => $worker_id, DAO_MessageAuditLog::ACCOUNT_ID => $model['id'], DAO_MessageAuditLog::RECIPIENT_ID => 0, DAO_MessageAuditLog::MESSAGE_ID => 0, DAO_MessageAuditLog::MESSAGE_RECIPIENT_ID => 0, DAO_MessageAuditLog::CHANGE_DATE => time(), DAO_MessageAuditLog::CHANGE_FIELD => "auditlog.ca." . $key, DAO_MessageAuditLog::CHANGE_VALUE => substr($value, 0, 128)); $log_id = DAO_MessageAuditLog::create($fields); } } } break; case 'dao.customer.recipient.update': @($objects = $event->params['objects']); foreach ($objects as $object_id => $object) { $model = $object['model']; $changes = $object['changes']; // Filter out any changes we could care less about //unset($changes[DAO_CustomerAccount::IS_DISABLED]); // Is a worker around to invoke this change? 0 = automatic @($worker_id = null != ($active_worker = FegApplication::getActiveWorker()) && !empty($active_worker->id) ? $active_worker->id : 0); if (!empty($changes)) { foreach ($changes as $key => $change) { $value = $change['to']; if (is_array($value)) { $value = implode("\r\n", $value); } if ($key == 'cr.type') { $value = $translate->_('auditlog.cr.type_' . $value); if ($value == "") { $value = $translate->_('auditlog.cr.type_unknown'); } } $fields = array(DAO_MessageAuditLog::WORKER_ID => $worker_id, DAO_MessageAuditLog::ACCOUNT_ID => $model['account_id'], DAO_MessageAuditLog::RECIPIENT_ID => $model['id'], DAO_MessageAuditLog::MESSAGE_ID => 0, DAO_MessageAuditLog::MESSAGE_RECIPIENT_ID => 0, DAO_MessageAuditLog::CHANGE_DATE => time(), DAO_MessageAuditLog::CHANGE_FIELD => "auditlog.cr." . $key, DAO_MessageAuditLog::CHANGE_VALUE => substr($value, 0, 128)); $log_id = DAO_MessageAuditLog::create($fields); } } } break; case 'message.account.assign': @($account_id = $event->params['account_id']); @($message_id = $event->params['message_id']); // Is a worker around to invoke this change? 0 = automatic @($worker_id = null != ($active_worker = FegApplication::getActiveWorker()) && !empty($active_worker->id) ? $active_worker->id : 0); $account = DAO_CustomerAccount::get($account_id); $assign_text = "Message id: " . $message_id . " assigned to account: " . $account->account_number; $fields = array(DAO_MessageAuditLog::WORKER_ID => $worker_id, DAO_MessageAuditLog::ACCOUNT_ID => $account_id, DAO_MessageAuditLog::RECIPIENT_ID => 0, DAO_MessageAuditLog::MESSAGE_ID => $message_id, DAO_MessageAuditLog::MESSAGE_RECIPIENT_ID => 0, DAO_MessageAuditLog::CHANGE_DATE => time(), DAO_MessageAuditLog::CHANGE_FIELD => 'auditlog.cf.message.assign', DAO_MessageAuditLog::CHANGE_VALUE => $assign_text); $log_id = DAO_MessageAuditLog::create($fields); break; case 'message.create': @($account_id = $event->params['account_id']); @($message_id = $event->params['message_id']); @($message_text = $event->params['message_text']); $fields = array(DAO_MessageAuditLog::WORKER_ID => 0, DAO_MessageAuditLog::ACCOUNT_ID => $account_id, DAO_MessageAuditLog::RECIPIENT_ID => 0, DAO_MessageAuditLog::MESSAGE_ID => $message_id, DAO_MessageAuditLog::MESSAGE_RECIPIENT_ID => 0, DAO_MessageAuditLog::CHANGE_DATE => time(), DAO_MessageAuditLog::CHANGE_FIELD => 'auditlog.cf.message.created', DAO_MessageAuditLog::CHANGE_VALUE => sprintf("Message created for account %d", $account_id)); $log_id = DAO_MessageAuditLog::create($fields); break; case 'message.recipient.create': @($account_id = $event->params['account_id']); @($recipient_id = $event->params['recipient_id']); @($message_id = $event->params['message_id']); @($message_recipient_id = $event->params['message_recipient_id']); @($message_text = $event->params['message_text']); $cr_id = array_shift(DAO_CustomerRecipient::getWhere(sprintf("%s = %d", DAO_CustomerRecipient::ID, $recipient_id))); switch ($cr_id->type) { case 0: // Email @($send_type = "Email"); break; case 1: // Fax @($send_type = "Fax"); break; case 2: // SNPP @($send_type = "Page"); break; default: @($send_type = "Unknown"); break; } @($change_value = sprintf("%s Scheduled for %s <'%s'>", $send_type, $cr_id->address_to, $cr_id->address)); $fields = array(DAO_MessageAuditLog::WORKER_ID => 0, DAO_MessageAuditLog::ACCOUNT_ID => $account_id, DAO_MessageAuditLog::RECIPIENT_ID => $recipient_id, DAO_MessageAuditLog::MESSAGE_ID => $message_id, DAO_MessageAuditLog::MESSAGE_RECIPIENT_ID => $message_recipient_id, DAO_MessageAuditLog::CHANGE_DATE => time(), DAO_MessageAuditLog::CHANGE_FIELD => 'auditlog.cf.message.recipient.created', DAO_MessageAuditLog::CHANGE_VALUE => $change_value); $log_id = DAO_MessageAuditLog::create($fields); break; case 'message.recipient.status': @($message_recipient_id = $event->params['message_recipient_id']); @($account_id = $event->params['account_id']); @($recipient_id = $event->params['recipient_id']); @($message_id = $event->params['message_id']); @($send_status = $event->params['send_status']); // Is a worker around to invoke this change? 0 = automatic @($worker_id = null != ($active_worker = FegApplication::getActiveWorker()) && !empty($active_worker->id) ? $active_worker->id : 0); $status_text = $translate->_('feg.message_recipient.status_' . $send_status); if ($status_text == "") { $status_text = $translate->_('feg.core.send_status.unknown'); } $fields = array(DAO_MessageAuditLog::WORKER_ID => $worker_id, DAO_MessageAuditLog::ACCOUNT_ID => $account_id, DAO_MessageAuditLog::RECIPIENT_ID => $recipient_id, DAO_MessageAuditLog::MESSAGE_ID => $message_id, DAO_MessageAuditLog::MESSAGE_RECIPIENT_ID => $message_recipient_id, DAO_MessageAuditLog::CHANGE_DATE => time(), DAO_MessageAuditLog::CHANGE_FIELD => 'auditlog.cf.message.recipient.status', DAO_MessageAuditLog::CHANGE_VALUE => $status_text); $log_id = DAO_MessageAuditLog::create($fields); break; case 'message.status': @($account_id = $event->params['account_id']); @($message_id = $event->params['message_id']); @($import_status = $event->params['import_status']); // Is a worker around to invoke this change? 0 = automatic @($worker_id = null != ($active_worker = FegApplication::getActiveWorker()) && !empty($active_worker->id) ? $active_worker->id : 0); $status_text = $translate->_('feg.message.import_status_' . $import_status); if ($status_text == "") { $status_text = $translate->_('feg.core.send_status.unknown'); } $fields = array(DAO_MessageAuditLog::WORKER_ID => $worker_id, DAO_MessageAuditLog::ACCOUNT_ID => $account_id, DAO_MessageAuditLog::RECIPIENT_ID => 0, DAO_MessageAuditLog::MESSAGE_ID => $message_id, DAO_MessageAuditLog::MESSAGE_RECIPIENT_ID => 0, DAO_MessageAuditLog::CHANGE_DATE => time(), DAO_MessageAuditLog::CHANGE_FIELD => 'auditlog.cf.message.status', DAO_MessageAuditLog::CHANGE_VALUE => $status_text); $log_id = DAO_MessageAuditLog::create($fields); break; } }