function saveRequestersPanelAction() { @($ticket_id = DevblocksPlatform::importGPC($_POST['ticket_id'], 'integer')); @($msg_id = DevblocksPlatform::importGPC($_POST['msg_id'], 'integer')); // Dels @($req_deletes = DevblocksPlatform::importGPC($_POST['req_deletes'], 'array', array())); if (!empty($req_deletes)) { foreach ($req_deletes as $del_id) { DAO_Ticket::deleteRequester($ticket_id, $del_id); } } // Adds @($req_adds = DevblocksPlatform::importGPC($_POST['req_adds'], 'string', '')); $req_list = DevblocksPlatform::parseCrlfString($req_adds); $req_addys = array(); if (is_array($req_list) && !empty($req_list)) { foreach ($req_list as $req) { if (empty($req)) { continue; } $rfc_addys = imap_rfc822_parse_adrlist($req, 'localhost'); foreach ($rfc_addys as $rfc_addy) { $addy = $rfc_addy->mailbox . '@' . $rfc_addy->host; if (null != ($req_addy = CerberusApplication::hashLookupAddress($addy, true))) { DAO_Ticket::createRequester($req_addy->id, $ticket_id); } } } } $requesters = DAO_Ticket::getRequestersByTicket($ticket_id); $list = array(); foreach ($requesters as $requester) { $list[] = $requester->email; } echo implode(', ', $list); exit; }
public function savePropertiesAction() { @($ticket_id = DevblocksPlatform::importGPC($_POST['ticket_id'], 'integer', 0)); @($remove = DevblocksPlatform::importGPC($_POST['remove'], 'array', array())); @($next_worker_id = DevblocksPlatform::importGPC($_POST['next_worker_id'], 'integer', 0)); @($ticket_reopen = DevblocksPlatform::importGPC($_POST['ticket_reopen'], 'string', '')); @($unlock_date = DevblocksPlatform::importGPC($_POST['unlock_date'], 'string', '')); @($subject = DevblocksPlatform::importGPC($_POST['subject'], 'string', '')); @($closed = DevblocksPlatform::importGPC($_POST['closed'], 'closed', 0)); @($ticket = DAO_Ticket::getTicket($ticket_id)); if (empty($ticket_id) || empty($ticket)) { return; } $fields = array(); // Properties if (empty($next_worker_id)) { $unlock_date = ""; } // Status if (isset($closed)) { switch ($closed) { case 0: // open if (array(0, 0, 0) != array($ticket->is_waiting, $ticket->is_closed, $ticket->is_deleted)) { $fields[DAO_Ticket::IS_WAITING] = 0; $fields[DAO_Ticket::IS_CLOSED] = 0; $fields[DAO_Ticket::IS_DELETED] = 0; $fields[DAO_Ticket::DUE_DATE] = 0; } break; case 1: // closed if (array(0, 1, 0) != array($ticket->is_waiting, $ticket->is_closed, $ticket->is_deleted)) { $fields[DAO_Ticket::IS_WAITING] = 0; $fields[DAO_Ticket::IS_CLOSED] = 1; $fields[DAO_Ticket::IS_DELETED] = 0; } if (isset($ticket_reopen)) { @($time = intval(strtotime($ticket_reopen))); $fields[DAO_Ticket::DUE_DATE] = $time; } break; case 2: // waiting if (array(1, 0, 0) != array($ticket->is_waiting, $ticket->is_closed, $ticket->is_deleted)) { $fields[DAO_Ticket::IS_WAITING] = 1; $fields[DAO_Ticket::IS_CLOSED] = 0; $fields[DAO_Ticket::IS_DELETED] = 0; } if (isset($ticket_reopen)) { @($time = intval(strtotime($ticket_reopen))); $fields[DAO_Ticket::DUE_DATE] = $time; } break; case 3: // deleted if (array(0, 1, 1) != array($ticket->is_waiting, $ticket->is_closed, $ticket->is_deleted)) { $fields[DAO_Ticket::IS_WAITING] = 0; $fields[DAO_Ticket::IS_CLOSED] = 1; $fields[DAO_Ticket::IS_DELETED] = 1; } $fields[DAO_Ticket::DUE_DATE] = 0; break; } } if (isset($next_worker_id)) { $fields[DAO_Ticket::NEXT_WORKER_ID] = $next_worker_id; } if (isset($unlock_date)) { @($time = intval(strtotime($unlock_date))); $fields[DAO_Ticket::UNLOCK_DATE] = $time; } if (!empty($subject)) { $fields[DAO_Ticket::SUBJECT] = $subject; } if (!empty($fields)) { DAO_Ticket::updateTicket($ticket_id, $fields); } // Custom field saves @($field_ids = DevblocksPlatform::importGPC($_POST['field_ids'], 'array', array())); DAO_CustomFieldValue::handleFormPost(ChCustomFieldSource_Ticket::ID, $ticket_id, $field_ids); // Requesters @($req_list = DevblocksPlatform::importGPC($_POST['add'], 'string', '')); if (!empty($req_list)) { $req_list = DevblocksPlatform::parseCrlfString($req_list); $req_list = array_unique($req_list); // [TODO] This is redundant with the Requester Peek on Reply if (is_array($req_list) && !empty($req_list)) { foreach ($req_list as $req) { if (empty($req)) { continue; } $rfc_addys = imap_rfc822_parse_adrlist($req, 'localhost'); foreach ($rfc_addys as $rfc_addy) { $addy = $rfc_addy->mailbox . '@' . $rfc_addy->host; DAO_Ticket::createRequester($addy, $ticket_id); } } } } if (!empty($remove) && is_array($remove)) { foreach ($remove as $address_id) { $addy = DAO_Address::get($address_id); DAO_Ticket::deleteRequester($ticket_id, $address_id); } } DevblocksPlatform::redirect(new DevblocksHttpResponse(array('iphone', 'tickets', 'display', $ticket->id, 'properties'))); }