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;
 }