last_response_at = current_time('mysql'); $customer->save(); $agent = Helper::getAgentByUserId(); if ($agent) { $description = sprintf( '%1$s created a %2$s on behalf of %3$s', $this->getPersonMarkup($agent), $this->getTicketMarkup($ticket), $this->getPersonMarkup($customer) ); $personId = $agent->id; $personType = $agent->person_type; } else { $description = sprintf('%1$s created a %2$s via %3$s', $this->getPersonMarkup($customer), $this->getTicketMarkup($ticket), $ticket->source); $personId = $customer->id; $personType = $customer->person_type; } $log = [ 'event_type' => 'fluent_support/ticket_created', 'person_id' => $personId, 'person_type' => $personType, 'object_id' => $ticket->id, 'object_type' => 'ticket', 'description' => $description ]; Activity::create($log); }, 20, 2); //Response added by customer in a ticket add_action('fluent_support/response_added_by_customer', function ($response, $ticket, $person) { $person->last_response_at = current_time('mysql'); $person->save(); $description = sprintf('Customer %1$s added a response on %2$s via %3$s', $this->getPersonMarkup($person), $this->getTicketMarkup($ticket), $response->source); $log = [ 'event_type' => 'fluent_support/response_added_by_customer', 'person_id' => $person->id, 'person_type' => $person->person_type, 'object_id' => $ticket->id, 'object_type' => 'ticket', 'description' => $description ]; Activity::create($log); }, 20, 3); //Response added by agent in a ticket add_action('fluent_support/response_added_by_agent', function ($response, $ticket, $person) { $description = sprintf('%1$s added a response on %2$s via %3$s', $this->getPersonMarkup($person), $this->getTicketMarkup($ticket), $response->source); $log = [ 'event_type' => 'fluent_support/response_added_by_agent', 'person_id' => $person->id, 'person_type' => $person->person_type, 'object_id' => $ticket->id, 'object_type' => 'ticket', 'description' => $description ]; Activity::create($log); }, 20, 3); //Note added by agent to a ticket add_action('fluent_support/note_added_by_agent', function ($response, $ticket, $person) { $description = sprintf('%1$s added a note on %2$s via %3$s', $this->getPersonMarkup($person), $this->getTicketMarkup($ticket), $response->source); $log = [ 'event_type' => 'fluent_support/note_added_by_agent', 'person_id' => $person->id, 'person_type' => $person->person_type, 'object_id' => $ticket->id, 'object_type' => 'ticket', 'description' => $description ]; Activity::create($log); }, 20, 3); //Ticket closed by customer or agent add_action('fluent_support/ticket_closed', function ($ticket, $person) { if ($person->person_type == 'customer') { $person->last_response_at = current_time('mysql'); $person->save(); } $description = sprintf('%1$s closed %2$s', $this->getPersonMarkup($person), $this->getTicketMarkup($ticket)); $log = [ 'event_type' => 'fluent_support/ticket_closed', 'person_id' => $person->id, 'person_type' => $person->person_type, 'object_id' => $ticket->id, 'object_type' => 'ticket', 'description' => $description ]; Activity::create($log); }, 20, 2); //Ticket reopen by customer or agent. add_action('fluent_support/ticket_reopen', function ($ticket, $person) { if ($person->person_type == 'customer') { $person->last_response_at = current_time('mysql'); $person->save(); } $description = sprintf('%1$s reopened on %2$s', $this->getPersonMarkup($person), $this->getTicketMarkup($ticket)); $log = [ 'event_type' => 'fluent_support/ticket_reopen', 'person_id' => $person->id, 'person_type' => $person->person_type, 'object_id' => $ticket->id, 'object_type' => 'ticket', 'description' => $description ]; Activity::create($log); }, 20, 2); // Ticket Assigned by agent add_action('fluent_support/agent_assigned_to_ticket', function ($assignedAgent, $ticket, $assigner) { $description = sprintf('Assign %1$s ticket to %2$s by %3$s', $this->getTicketMarkup($ticket), $this->getPersonMarkup($assignedAgent), $this->getPersonMarkup($assigner)); if($assigner && isset($assigner->id) && isset($assigner->person_type)){ $log = [ 'event_type' => 'fluent_support/agent_assigned_to_ticket', 'person_id' => $assigner->id, 'person_type' => $assigner->person_type, 'object_id' => $ticket->id, 'object_type' => 'ticket', 'description' => $description ]; Activity::create($log); } }, 20, 3); add_action('fluent_support/ticket_deleted', function($agent, $ticketData) { if (!$agent || !$agent->id) { return; } $description = sprintf('%s deleted %s(#%d) at %s', $this->getPersonMarkup($agent), esc_html($ticketData['title']), $ticketData['id'], current_time('mysql')); $log = [ 'event_type' => 'fluent_support/ticket_deleted', 'person_id' => $agent->id, 'person_type' => 'agent', 'object_id' => $ticketData['id'], 'object_type' => 'ticket', 'description' => $description ]; Activity::create($log); }, 20, 2); } /** * getTicketMarkup method will generate hyperlink to view the ticket details * @param $ticket * @param false $ticketText * @return string */ public function getTicketMarkup($ticket, $ticketText = false) { if (!$ticketText) { // translators: %s is the ticket title $ticketText = sprintf(__('Ticket: %s', 'fluent-support'), esc_html($ticket->title)); } return '' . $ticketText . ''; } /** * getPersonMarkup method will generate hyperlink to view a customer or agent * @param $person * @return string */ public function getPersonMarkup($person) { if (!$person) { return ''; } $route = 'view_agent'; if (isset($person->person_type) && $person->person_type == 'customer') { $route = 'view_customer'; } return '' . esc_html($person->full_name) . ''; } }