function oqc_getUserVariables() { global $current_user; $contractData = array(); $userData = sanatizeBeanArrayForLatex($current_user->toArray(true)); $email_address = $current_user->getEmailInfo(); $firstName = $current_user->first_name; $lastName = $current_user->last_name; $emailBean = new EmailAddress(); //Trying to find Contacts by email addresss or names, maybe we will be lucky $relatedId = $emailBean->getRelatedId($email_address['email'], 'Contacts'); //$GLOBALS['log']->error('Search Contact id: '. var_export($relatedId[0],true)); $userContact = new Contact(); //We have unique id and can proceed to retrieve all required information //$GLOBALS['log']->error('User variables: count output is: '. var_export(count($relatedId),true)); if (count($relatedId) == 1 && $relatedId[0]) { //$GLOBALS['log']->error('User variables: email recovery OK: '); if ($userContact->retrieve($relatedId[0])) { $contractData['userContact'] = sanatizeBeanArrayForLatex($userContact->toArray(true)); $userAccount = new Account(); if ($userAccount->retrieve($userContact->account_id)) { $contractData['userContact']['account'] = sanatizeBeanArrayForLatex($userAccount->toArray(true)); } } } else { //$GLOBALS['log']->error('Account variables: variables transferred to latex template: '. var_export($clientAccount->toArray(true),true)); $where_clause = "first_name='{$firstName}' AND last_name='{$lastName}' AND deleted=0"; $query = "SELECT id FROM contacts WHERE {$where_clause}"; $r = $userContact->db->query($query, true); $retArr = array(); while ($a = $userContact->db->fetchByAssoc($r)) { $retArr[] = $a['id']; } //$GLOBALS['log']->error('User variables: retrieved from db: '. var_export($retArr,true)); if (count($retArr) == 1 && $retArr[0]) { if ($userContact->retrieve($retArr[0])) { $contractData['userContact'] = sanatizeBeanArrayForLatex($userContact->toArray(true)); $userAccount = new Account(); if ($userAccount->retrieve($userContact->account_id)) { $contractData['userContact']['account'] = sanatizeBeanArrayForLatex($userAccount->toArray(true)); } } } else { $contractData['userContact'] = $userData; } } $contractData['userContact']['email_address'] = $email_address['email']; return $contractData; }
function syncticket($session, $data) { $GLOBALS['log']->error("syncticket"); if (!self::$helperObject->checkSessionAndModuleAccess($session, 'invalid_session', 'Cases', 'write', 'no_access', new SoapError())) { echo "No access"; return; } $admin = new Administration(); $admin->retrieveSettings('system'); $ticket = new SimpleXMLElement(str_replace('!AMP!', '&', $data)); $GLOBALS['log']->error("find or create case"); $case = new aCase(); $nice_id = (int) $ticket->{'nice-id'}; if ($case = $case->retrieve_by_string_fields(array('zendesk_ticket_id_c' => $nice_id))) { $GLOBALS['log']->error("found case " . $case->id); } else { $GLOBALS['log']->error("creating new case"); $case = new aCase(); } $case->zendesk_ticket_id_c = $nice_id; $case->name = $ticket->subject; if ($admin->settings['system_zendesk_status_map']) { $mapped_to = $admin->settings['system_zendesk_status_map']; $mapped_field = 'system_zendesk_status_map_' . $ticket->{'status-id'}; $case->{$mapped_to} = $admin->settings[$mapped_field]; } if ($admin->settings['system_zendesk_priority_map']) { $mapped_to = $admin->settings['system_zendesk_priority_map']; $mapped_field = 'system_zendesk_priority_map_' . $ticket->{'priority-id'}; $case->{$mapped_to} = $admin->settings[$mapped_field]; } if ($admin->settings['system_zendesk_type_map']) { $mapped_to = $admin->settings['system_zendesk_type_map']; $mapped_field = 'system_zendesk_type_map_' . $ticket->{'ticket-type-id'}; $case->{$mapped_to} = $admin->settings[$mapped_field]; } $requester = $ticket->requester; if ($requester->organization) { $account = new Account(); if ($account = $account->retrieve_by_string_fields(array('name' => $requester->organization->name))) { $GLOBALS['log']->error("found account " . $account->id); } else { $account = new Account(); $account->name = $requester->organization->name; $account->save(); $GLOBALS['log']->error("created account " . $account->id); } $case->account_id = $account->id; } $GLOBALS['log']->error("save case with zendesk_ticket_id_c " . $case->zendesk_ticket_id_c); $case->save(); $GLOBALS['log']->error("associate contacts"); if ($case->load_relationship('contacts')) { $ea = new EmailAddress(); $ids = $ea->getRelatedId($requester->email, 'contacts'); if (!empty($ids)) { $case->contacts->add($ids); } else { $contact = new Contact(); $contact->email1 = $requester->email; $names = split(' ', $requester->name); $contact->last_name = $names[count($names) - 1]; $contact->first_name = join(' ', array_slice($names, 0, -1)); $contact->save(); $case->contacts->add(array($contact->id)); } } $GLOBALS['log']->error("syncticket done"); echo "OK " . $case->id; }