本文整理汇总了PHP中DAO_Worker::getAgent方法的典型用法代码示例。如果您正苦于以下问题:PHP DAO_Worker::getAgent方法的具体用法?PHP DAO_Worker::getAgent怎么用?PHP DAO_Worker::getAgent使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DAO_Worker
的用法示例。
在下文中一共展示了DAO_Worker::getAgent方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: _newTicketComment
private function _newTicketComment($event)
{
@($comment_id = $event->params['comment_id']);
@($ticket_id = $event->params['ticket_id']);
@($address_id = $event->params['address_id']);
@($comment = $event->params['comment']);
if (empty($ticket_id) || empty($address_id) || empty($comment)) {
return;
}
// Resolve the address ID
if (null == ($address = DAO_Address::get($address_id))) {
return;
}
// Try to associate the author with a worker
if (null == ($worker_addy = DAO_AddressToWorker::getByAddress($address->email))) {
return;
}
if (null == ($worker = DAO_Worker::getAgent($worker_addy->worker_id))) {
return;
}
$url_writer = DevblocksPlatform::getUrlService();
$mail_service = DevblocksPlatform::getMailService();
$mailer = null;
// lazy load
$settings = DevblocksPlatform::getPluginSettingsService();
$default_from = $settings->get('cerberusweb.core', CerberusSettings::DEFAULT_REPLY_FROM, '');
$default_personal = $settings->get('cerberusweb.core', CerberusSettings::DEFAULT_REPLY_PERSONAL, '');
if (null == ($ticket = DAO_Ticket::getTicket($ticket_id))) {
return;
}
// Find all our matching filters
if (empty($ticket) || false == ($matches = Model_WatcherMailFilter::getMatches($ticket, 'ticket_comment'))) {
return;
}
// Remove any matches from the author
if (is_array($matches)) {
foreach ($matches as $idx => $filter) {
if ($filter->worker_id == $worker_addy->worker_id) {
unset($matches[$idx]);
}
}
}
// (Action) Send Notification
$this->_sendNotifications($matches, $url_writer->write('c=display&mask=' . $ticket->mask, true, false), sprintf("[Ticket] %s", $ticket->subject));
// (Action) Forward E-mail:
// Sanitize and combine all the destination addresses
$notify_emails = $this->_getMailingListFromMatches($matches);
if (empty($notify_emails)) {
return;
}
if (null == @($last_message = end($ticket->getMessages()))) {
/* @var $last_message CerberusMessage */
continue;
}
if (null == @($last_headers = $last_message->getHeaders())) {
continue;
}
$reply_to = $default_from;
$reply_personal = $default_personal;
// See if we need a group-specific reply-to
if (!empty($ticket->team_id)) {
@($group_from = DAO_GroupSettings::get($ticket->team_id, DAO_GroupSettings::SETTING_REPLY_FROM));
if (!empty($group_from)) {
$reply_to = $group_from;
}
@($group_personal = DAO_GroupSettings::get($ticket->team_id, DAO_GroupSettings::SETTING_REPLY_PERSONAL));
if (!empty($group_personal)) {
$reply_personal = $group_personal;
}
}
if (is_array($notify_emails)) {
foreach ($notify_emails as $send_to) {
try {
if (null == $mailer) {
$mailer = $mail_service->getMailer(CerberusMail::getMailerDefaults());
}
// Create the message
$mail = $mail_service->createMessage();
$mail->setTo(array($send_to));
$mail->setFrom(array($reply_to => $reply_personal));
$mail->setReplyTo($reply_to);
$mail->setSubject(sprintf("[comment #%s]: %s [comment]", $ticket->mask, $ticket->subject));
$headers = $mail->getHeaders();
if (false !== @($in_reply_to = $last_headers['in-reply-to'])) {
$headers->addTextHeader('References', $in_reply_to);
$headers->addTextHeader('In-Reply-To', $in_reply_to);
}
// Build the body
$comment_text = sprintf("%s (%s) comments:\r\n%s\r\n", $worker->getName(), $address->email, $comment);
$headers->addTextHeader('X-Mailer', 'Cerberus Helpdesk (Build ' . APP_BUILD . ')');
$headers->addTextHeader('Precedence', 'List');
$headers->addTextHeader('Auto-Submitted', 'auto-generated');
$mail->setBody($comment_text);
$result = $mailer->send($mail);
} catch (Exception $e) {
//
}
}
}
}
示例2: showWorkerPeekAction
function showWorkerPeekAction()
{
@($id = DevblocksPlatform::importGPC($_REQUEST['id'], 'integer', 0));
@($view_id = DevblocksPlatform::importGPC($_REQUEST['view_id'], 'string', ''));
$tpl = DevblocksPlatform::getTemplateService();
$tpl->assign('path', $this->_TPL_PATH);
$tpl->assign('view_id', $view_id);
$worker = DAO_Worker::getAgent($id);
$tpl->assign('worker', $worker);
$teams = DAO_Group::getAll();
$tpl->assign('teams', $teams);
// Custom Fields
$custom_fields = DAO_CustomField::getBySource(ChCustomFieldSource_Worker::ID);
$tpl->assign('custom_fields', $custom_fields);
$custom_field_values = DAO_CustomFieldValue::getValuesBySourceIds(ChCustomFieldSource_Worker::ID, $id);
if (isset($custom_field_values[$id])) {
$tpl->assign('custom_field_values', $custom_field_values[$id]);
}
$tpl->display('file:' . $this->_TPL_PATH . 'configuration/tabs/workers/peek.tpl');
}
示例3: getWorkerAction
function getWorkerAction()
{
$translate = DevblocksPlatform::getTranslationService();
$worker = CerberusApplication::getActiveWorker();
if (!$worker || !$worker->is_superuser) {
echo $translate->_('common.access_denied');
return;
}
@($id = DevblocksPlatform::importGPC($_REQUEST['id']));
$tpl = DevblocksPlatform::getTemplateService();
$tpl->cache_lifetime = "0";
$tpl->assign('path', $this->_TPL_PATH);
$worker = DAO_Worker::getAgent($id);
$tpl->assign('worker', $worker);
$teams = DAO_Group::getAll();
$tpl->assign('teams', $teams);
$tpl->display('file:' . $this->_TPL_PATH . 'configuration/tabs/workers/edit_worker.tpl');
}
示例4: authenticate
function authenticate($params = array())
{
$server = $params['server'];
$port = $params['port'];
$dn = $params['dn'];
$password = $params['password'];
$worker_id = null;
// attempt login
$conn = ldap_connect($server, $port);
ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
if ($conn) {
$auth = ldap_bind($conn, $dn, $password);
if ($auth) {
// search for this user
$search_results = ldap_search($conn, $dn, '(objectclass=*)', array('mail'));
if ($search_results) {
$user_entry = ldap_first_entry($conn, $search_results);
if ($user_entry) {
// get email addresses for this user
$emails = ldap_get_values($conn, $user_entry, 'mail');
if ($emails) {
foreach ($emails as $email) {
if (is_null($worker_id)) {
$worker_id = DAO_Worker::lookupAgentEmail($email);
}
}
}
}
}
}
}
// we found a worker, continue login
if (!is_null($worker_id)) {
$worker = DAO_Worker::getAgent($worker_id);
$session = DevblocksPlatform::getSessionService();
$visit = new CerberusVisit();
$visit->setWorker($worker);
$session->setVisit($visit);
return true;
} else {
return false;
}
}
示例5: getRenderedContent
public function getRenderedContent($message_id)
{
$raw = $this->content;
$replace = array();
$with = array();
$replace[] = '#timestamp#';
$with[] = date('r');
if (!empty($message_id)) {
$message = DAO_Ticket::getMessage($message_id);
$ticket = DAO_Ticket::getTicket($message->ticket_id);
$sender = DAO_Address::get($message->address_id);
$sender_org = DAO_ContactOrg::get($sender->contact_org_id);
$replace[] = '#sender_first_name#';
$replace[] = '#sender_last_name#';
$replace[] = '#sender_org#';
$with[] = $sender->first_name;
$with[] = $sender->last_name;
$with[] = !empty($sender_org) ? $sender_org->name : "";
$replace[] = '#ticket_id#';
$replace[] = '#ticket_mask#';
$replace[] = '#ticket_subject#';
$with[] = $ticket->id;
$with[] = $ticket->mask;
$with[] = $ticket->subject;
}
if (null != ($active_worker = CerberusApplication::getActiveWorker())) {
$worker = DAO_Worker::getAgent($active_worker->id);
// most recent info (not session)
$replace[] = '#worker_first_name#';
$replace[] = '#worker_last_name#';
$replace[] = '#worker_title#';
$with[] = $worker->first_name;
$with[] = $worker->last_name;
$with[] = $worker->title;
}
return str_replace($replace, $with, $raw);
}
示例6: getComposeSignatureAction
function getComposeSignatureAction()
{
@($group_id = DevblocksPlatform::importGPC($_REQUEST['group_id'], 'integer', 0));
$settings = DevblocksPlatform::getPluginSettingsService();
$group = DAO_Group::getTeam($group_id);
$active_worker = CerberusApplication::getActiveWorker();
$worker = DAO_Worker::getAgent($active_worker->id);
// Use the most recent info (not session)
$sig = $settings->get('cerberusweb.core', CerberusSettings::DEFAULT_SIGNATURE, '');
if (!empty($group->signature)) {
$sig = $group->signature;
}
/*
* [TODO] This is the 3rd place this replace happens, we really need
* to move the signature translation into something like CerberusApplication
*/
echo sprintf("\r\n%s\r\n", str_replace(array('#first_name#', '#last_name#', '#title#'), array($worker->first_name, $worker->last_name, $worker->title), $sig));
}
示例7: sendTicketMessage
static function sendTicketMessage($properties = array())
{
$settings = DevblocksPlatform::getPluginSettingsService();
$helpdesk_senders = CerberusApplication::getHelpdeskSenders();
@($from_addy = $settings->get('cerberusweb.core', CerberusSettings::DEFAULT_REPLY_FROM, $_SERVER['SERVER_ADMIN']));
@($from_personal = $settings->get('cerberusweb.core', CerberusSettings::DEFAULT_REPLY_PERSONAL, ''));
// [TODO] If we still don't have a $from_addy we need a graceful failure.
/*
* [TODO] Move these into constants?
'message_id'
-----'ticket_id'
'subject'
'to'
'cc'
'bcc'
'content'
'files'
'closed'
'ticket_reopen'
'unlock_date'
'bucket_id'
'agent_id',
'is_autoreply',
'dont_send',
'dont_save_copy'
*/
$mail_succeeded = true;
try {
// objects
$mail_service = DevblocksPlatform::getMailService();
$mailer = $mail_service->getMailer(CerberusMail::getMailerDefaults());
$mail = $mail_service->createMessage();
// properties
@($reply_message_id = $properties['message_id']);
@($content = $properties['content']);
@($files = $properties['files']);
@($forward_files = $properties['forward_files']);
@($worker_id = $properties['agent_id']);
@($subject = $properties['subject']);
$message = DAO_Ticket::getMessage($reply_message_id);
$message_headers = DAO_MessageHeader::getAll($reply_message_id);
$ticket_id = $message->ticket_id;
$ticket = DAO_Ticket::getTicket($ticket_id);
// [TODO] Check that message|ticket isn't NULL
// If this ticket isn't spam trained and our outgoing message isn't an autoreply
if ($ticket->spam_training == CerberusTicketSpamTraining::BLANK && (!isset($properties['is_autoreply']) || !$properties['is_autoreply'])) {
CerberusBayes::markTicketAsNotSpam($ticket_id);
}
// Allow teams to override the default from/personal
@($group_reply = DAO_GroupSettings::get($ticket->team_id, DAO_GroupSettings::SETTING_REPLY_FROM, ''));
@($group_personal = DAO_GroupSettings::get($ticket->team_id, DAO_GroupSettings::SETTING_REPLY_PERSONAL, ''));
@($group_personal_with_worker = DAO_GroupSettings::get($ticket->team_id, DAO_GroupSettings::SETTING_REPLY_PERSONAL_WITH_WORKER, 0));
if (!empty($group_reply)) {
$from_addy = $group_reply;
}
if (!empty($group_personal)) {
$from_personal = $group_personal;
}
// Prefix the worker name on the personal line?
if (!empty($group_personal_with_worker) && null != ($reply_worker = DAO_Worker::getAgent($worker_id))) {
$from_personal = $reply_worker->getName() . (!empty($from_personal) ? ', ' . $from_personal : "");
}
// Headers
$mail->setFrom(array($from_addy => $from_personal));
$mail->generateId();
$headers = $mail->getHeaders();
$headers->addTextHeader('X-Mailer', 'Cerberus Helpdesk (Build ' . APP_BUILD . ')');
// Subject
if (empty($subject)) {
$subject = $ticket->subject;
}
if (!empty($properties['to'])) {
// forward
$mail->setSubject($subject);
} else {
// reply
@($group_has_subject = intval(DAO_GroupSettings::get($ticket->team_id, DAO_GroupSettings::SETTING_SUBJECT_HAS_MASK, 0)));
@($group_subject_prefix = DAO_GroupSettings::get($ticket->team_id, DAO_GroupSettings::SETTING_SUBJECT_PREFIX, ''));
$prefix = sprintf("[%s#%s] ", !empty($group_subject_prefix) ? $group_subject_prefix . ' ' : '', $ticket->mask);
$mail->setSubject(sprintf('Re: %s%s', $group_has_subject ? $prefix : '', $subject));
}
// References
if (!empty($message) && false !== @($in_reply_to = $message_headers['message-id'])) {
$headers->addTextHeader('References', $in_reply_to);
$headers->addTextHeader('In-Reply-To', $in_reply_to);
}
// Auto-reply handling (RFC-3834 compliant)
if (isset($properties['is_autoreply']) && $properties['is_autoreply']) {
$headers->addTextHeader('Auto-Submitted', 'auto-replied');
if (null == ($first_address = DAO_Address::get($ticket->first_wrote_address_id))) {
return;
}
// Don't send e-mail to ourselves
if (isset($helpdesk_senders[$first_address->email])) {
return;
}
// Make sure we haven't mailed this address an autoreply within 5 minutes
if ($first_address->last_autoreply > 0 && $first_address->last_autoreply > time() - 300) {
return;
}
//.........这里部分代码省略.........
示例8: _sendForwards
private function _sendForwards($event, $is_inbound)
{
@($ticket_id = $event->params['ticket_id']);
@($send_worker_id = $event->params['worker_id']);
$url_writer = DevblocksPlatform::getUrlService();
$ticket = DAO_Ticket::getTicket($ticket_id);
// (Action) Forward Email To:
// Sanitize and combine all the destination addresses
$next_worker = DAO_Worker::getAgent($ticket->next_worker_id);
$notify_emails = $next_worker->email;
if (empty($notify_emails)) {
return;
}
// [TODO] This could be more efficient
$messages = DAO_Ticket::getMessagesByTicket($ticket_id);
$message = end($messages);
// last message
unset($messages);
$headers = $message->getHeaders();
// The whole flipping Swift section needs wrapped to catch exceptions
try {
$settings = CerberusSettings::getInstance();
$reply_to = $settings->get(CerberusSettings::DEFAULT_REPLY_FROM, '');
// See if we need a group-specific reply-to
if (!empty($ticket->team_id)) {
@($group_from = DAO_GroupSettings::get($ticket->team_id, DAO_GroupSettings::SETTING_REPLY_FROM, ''));
if (!empty($group_from)) {
$reply_to = $group_from;
}
}
$sender = DAO_Address::get($message->address_id);
$sender_email = strtolower($sender->email);
$sender_split = explode('@', $sender_email);
if (!is_array($sender_split) || count($sender_split) != 2) {
return;
}
// If return-path is blank
if (isset($headers['return-path']) && $headers['return-path'] == '<>') {
return;
}
// Ignore bounces
if ($sender_split[0] == "postmaster" || $sender_split[0] == "mailer-daemon") {
return;
}
// Ignore autoresponses autoresponses
if (isset($headers['auto-submitted']) && $headers['auto-submitted'] != 'no') {
return;
}
// Attachments
$attachments = $message->getAttachments();
$mime_attachments = array();
if (is_array($attachments)) {
foreach ($attachments as $attachment) {
if (0 == strcasecmp($attachment->display_name, 'original_message.html')) {
continue;
}
$attachment_path = APP_STORAGE_PATH . '/attachments/';
// [TODO] This is highly redundant in the codebase
if (!file_exists($attachment_path . $attachment->filepath)) {
continue;
}
$attach = Swift_Attachment::fromPath($attachment_path . $attachment->filepath);
if (!empty($attachment->display_name)) {
$attach->setFilename($attachment->display_name);
}
$mime_attachments[] = $attach;
}
}
// Send copies
$mail_service = DevblocksPlatform::getMailService();
$mailer = $mail_service->getMailer(CerberusMail::getMailerDefaults());
$mail = $mail_service->createMessage();
/* @var $mail Swift_Message */
$mail->setTo(array($notify_emails));
$mail->setFrom(array($sender->email));
$mail->setReplyTo($reply_to);
$mail->setReturnPath($reply_to);
$mail->setSubject(sprintf("[RW: %s #%s]: %s", $is_inbound ? 'inbound' : 'outbound', $ticket->mask, $ticket->subject));
$hdrs = $mail->getHeaders();
if (null !== @($msgid = $headers['message-id'])) {
$hdrs->addTextHeader('Message-Id', $msgid);
}
if (null !== @($in_reply_to = $headers['in-reply-to'])) {
$hdrs->addTextHeader('References', $in_reply_to);
$hdrs->addTextHeader('In-Reply-To', $in_reply_to);
}
$hdrs->addTextHeader('X-Mailer', 'Cerberus Helpdesk (Build ' . APP_BUILD . ')');
$hdrs->addTextHeader('Precedence', 'List');
$hdrs->addTextHeader('Auto-Submitted', 'auto-generated');
$mail->setBody($message->getContent());
// Send message attachments with watcher
if (is_array($mime_attachments)) {
foreach ($mime_attachments as $mime_attachment) {
$mail->attach($mime_attachment);
}
}
$result = $mailer->send($mail);
} catch (Exception $e) {
if (!empty($message_id)) {
$fields = array(DAO_MessageNote::MESSAGE_ID => $message_id, DAO_MessageNote::CREATED => time(), DAO_MessageNote::WORKER_ID => 0, DAO_MessageNote::CONTENT => 'Exception thrown while sending watcher email: ' . $e->getMessage(), DAO_MessageNote::TYPE => Model_MessageNote::TYPE_ERROR);
//.........这里部分代码省略.........
示例9: doContactSendAction
function doContactSendAction()
{
@($sFrom = DevblocksPlatform::importGPC($_POST['from'], 'string', ''));
@($sSubject = DevblocksPlatform::importGPC($_POST['subject'], 'string', ''));
@($sContent = DevblocksPlatform::importGPC($_POST['content'], 'string', ''));
@($sCaptcha = DevblocksPlatform::importGPC($_POST['captcha'], 'string', ''));
@($aFieldIds = DevblocksPlatform::importGPC($_POST['field_ids'], 'array', array()));
@($aFollowUpQ = DevblocksPlatform::importGPC($_POST['followup_q'], 'array', array()));
$fields = DAO_CustomField::getBySource('cerberusweb.fields.source.ticket');
// Load the answers to any situational questions
$aFollowUpA = array();
if (is_array($aFollowUpQ)) {
foreach ($aFollowUpQ as $idx => $q) {
// Only form values we were passed
if (!isset($_POST['followup_a_' . $idx])) {
continue;
}
if (is_array($_POST['followup_a_' . $idx])) {
@($answer = DevblocksPlatform::importGPC($_POST['followup_a_' . $idx], 'array', array()));
$aFollowUpA[$idx] = implode(', ', $answer);
} else {
@($answer = DevblocksPlatform::importGPC($_POST['followup_a_' . $idx], 'string', ''));
$aFollowUpA[$idx] = $answer;
}
// Translate field values into something human-readable (if needed)
if (isset($aFieldIds[$idx]) && !empty($aFieldIds[$idx])) {
// Were we given a legit field id?
if (null != @($field = $fields[$aFieldIds[$idx]])) {
switch ($field->type) {
// Translate 'worker' fields into worker name (not ID)
case Model_CustomField::TYPE_WORKER:
if (null != ($worker = DAO_Worker::getAgent($answer))) {
$aFollowUpA[$idx] = $worker->getName();
}
break;
}
// switch
}
// if
}
// if
}
}
$umsession = UmPortalHelper::getSession();
$active_user = $umsession->getProperty('sc_login', null);
$fingerprint = UmPortalHelper::getFingerprint();
$settings = CerberusSettings::getInstance();
$default_from = $settings->get(CerberusSettings::DEFAULT_REPLY_FROM);
$umsession->setProperty('support.write.last_from', $sFrom);
$umsession->setProperty('support.write.last_subject', $sSubject);
$umsession->setProperty('support.write.last_content', $sContent);
$umsession->setProperty('support.write.last_followup_a', $aFollowUpA);
$sNature = $umsession->getProperty('support.write.last_nature', '');
$captcha_enabled = DAO_CommunityToolProperty::get(UmPortalHelper::getCode(), self::PARAM_CAPTCHA_ENABLED, 1);
$captcha_session = $umsession->getProperty(UmScApp::SESSION_CAPTCHA, '***');
// Subject is required if the field is on the form
if (isset($_POST['subject']) && empty($sSubject)) {
$umsession->setProperty('support.write.last_error', 'A subject is required.');
DevblocksPlatform::setHttpResponse(new DevblocksHttpResponse(array('portal', UmPortalHelper::getCode(), 'contact', 'step2')));
return;
}
// Sender and CAPTCHA required
if (empty($sFrom) || $captcha_enabled && 0 != strcasecmp($sCaptcha, $captcha_session)) {
if (empty($sFrom)) {
$umsession->setProperty('support.write.last_error', 'Invalid e-mail address.');
} else {
$umsession->setProperty('support.write.last_error', 'What you typed did not match the image.');
}
// Need to report the captcha didn't match and redraw the form
DevblocksPlatform::setHttpResponse(new DevblocksHttpResponse(array('portal', UmPortalHelper::getCode(), 'contact', 'step2')));
return;
}
// Dispatch
$to = $default_from;
$subject = 'Contact me: Other';
$sDispatch = DAO_CommunityToolProperty::get(UmPortalHelper::getCode(), self::PARAM_SITUATIONS, '');
$dispatch = !empty($sDispatch) ? unserialize($sDispatch) : array();
foreach ($dispatch as $k => $v) {
if (md5($k) == $sNature) {
$to = $v['to'];
$subject = 'Contact me: ' . strip_tags($k);
break;
}
}
if (!empty($sSubject)) {
$subject = $sSubject;
}
$fieldContent = '';
if (!empty($aFollowUpQ)) {
$fieldContent = "\r\n\r\n";
$fieldContent .= "--------------------------------------------\r\n";
if (!empty($sNature)) {
$fieldContent .= $subject . "\r\n";
$fieldContent .= "--------------------------------------------\r\n";
}
foreach ($aFollowUpQ as $idx => $q) {
$answer = isset($aFollowUpA[$idx]) ? $aFollowUpA[$idx] : '';
$fieldContent .= "Q) " . $q . "\r\n" . "A) " . $answer . "\r\n";
if ($idx + 1 < count($aFollowUpQ)) {
$fieldContent .= "\r\n";
//.........这里部分代码省略.........