/** * @param string $api_key API ключ UserEcho * @param string $project_key Ключ UserEcho * @param array $user_info * * @return SSO KEY */ public static function get_sso_token($api_key, $project_key, $user_info) { $sso_key = ''; if ($uid = get_uid(false)) { $user = new users(); $user->GetUserByUID($uid); $iv = str_shuffle('memoKomo1234QWER'); $message = array('guid' => $uid, 'expires_date' => gmdate('Y-m-d H:i:s', time() + 86400), 'display_name' => $user->login, 'email' => $user->email, 'locale' => 'ru', 'verified_email' => true); // key hash, length = 16 $key_hash = substr(hash('sha1', $api_key . $project_key, true), 0, 16); $message_json = json_encode(encodeCharset('CP1251', 'UTF-8', $message)); // double XOR first block message_json for ($i = 0; $i < 16; ++$i) { $message_json[$i] = $message_json[$i] ^ $iv[$i]; } // fill tail of message_json by bytes equaled count empty bytes (to 16) $pad = 16 - strlen($message_json) % 16; $message_json = $message_json . str_repeat(chr($pad), $pad); // encode json $cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', 'cbc', ''); mcrypt_generic_init($cipher, $key_hash, $iv); $encrypted_bytes = mcrypt_generic($cipher, $message_json); mcrypt_generic_deinit($cipher); // encode bytes to url safe string $sso_key = urlencode(base64_encode($encrypted_bytes)); } return $sso_key; }
/** * Получить список корреспонденции. * * @param int $type Тип корреспонденции (Все, Исходящие, Входящие, В обработке, Архив) * @param array $filter Данные фильтра * @param int $page Номер страницы * @param int $nums Количество документов на странице (0 - все) * * @return object xajaxResponse */ function showLetters($type = 0, $filter = null, $page = 1, $nums = 0) { global $objLetters; // $objResponse = new xajaxResponse(); if (hasPermissions('letters') && hasPermissions('adm')) { $res = array(); $aData = array(); $pager_html = ''; $page = abs(intval($page)); $page = $page ? $page : 1; $nums = abs(intval($nums)); $filter = iconv('CP1251', 'UTF-8', $filter); $filter = stripcslashes($filter); $filter = json_decode($filter, true); if ($filter) { foreach ($filter as $k => $v) { $filter[$k] = encodeCharset('UTF-8', 'CP1251', $v); } } $letters = $objLetters->getLetters($type, $filter, $nums, ($page - 1) * $nums); $pages = $nums ? intval($objLetters->numsLetters / $nums) + 1 : 1; if ($letters) { $qstatuses = $objLetters->getStatuses(); foreach ($qstatuses as $qstatus) { $statuses[$qstatus['id']] = $qstatus['title']; } $statuses[0] = 'Добавить статус'; $html = ''; ob_start(); $letter_num = 1; $nn = 0; foreach ($letters as $key => $oletter) { if ($type == 2 || $type == 6) { $letter['number'] = $letter_num; $ukey = preg_split('/-/', $key); if ($ukey[2] == 't') { $letter['company'] = letters::getCompany($ukey[0]); } else { $letter['recipient'] = letters::getUserReqvs($ukey[0]); } $letter['is_company'] = $ukey[2]; $letter['rdelivery_title'] = $oletter[0]['delivery_title']; //require($_SERVER['DOCUMENT_ROOT'].'/siteadmin/letters/tpl.list.header.item.php'); foreach ($oletter as $letter) { $letter['number'] = $letter_num; ++$nn; if ($letter['is_user_1_company'] == 't') { $company = letters::getCompany($letter['user_1']); if ($company['frm_type']) { $company['name'] = $company['frm_type'] . ' "' . $company['name'] . '"'; } $letter['company1_name'] = $company['name']; $letter['company1'] = $company; } else { $user1 = new users(); $user1->GetUserByUID($letter['user_1']); $letter['user1_uname'] = $user1->uname; $letter['user1_usurname'] = $user1->usurname; $letter['user1_login'] = $user1->login; $letter['user1_i'] = letters::getUserReqvs($letter['user_1']); } if ($letter['is_user_2_company'] == 't') { $company = letters::getCompany($letter['user_2']); if ($company['frm_type']) { $company['name'] = $company['frm_type'] . ' "' . $company['name'] . '"'; } $letter['company2_name'] = $company['name']; $letter['company2'] = $company; } else { $user2 = new users(); $user2->GetUserByUID($letter['user_2']); $letter['user2_uname'] = $user2->uname; $letter['user2_usurname'] = $user2->usurname; $letter['user2_login'] = $user2->login; $letter['user2_i'] = letters::getUserReqvs($letter['user_2']); } if ($letter['user_3']) { if ($letter['is_user_3_company'] == 't') { $company = letters::getCompany($letter['user_3']); if ($company['frm_type']) { $company['name'] = $company['frm_type'] . ' "' . $company['name'] . '"'; } $letter['company3_name'] = $company['name']; $letter['company3'] = $company; } else { $user3 = new users(); $user3->GetUserByUID($letter['user_3']); $letter['user3_uname'] = $user3->uname; $letter['user3_usurname'] = $user3->usurname; $letter['user3_login'] = $user3->login; $letter['user3_i'] = letters::getUserReqvs($letter['user_3']); } } if ($letter['file_id']) { $cFile = new CFile($letter['file_id']); $file_link = WDCPREFIX . '/' . $cFile->path . $cFile->name; } else { $file_link = ''; } $aTmp = array('id' => iconv('CP1251', 'UTF-8', $letter['id']), 'nn' => iconv('CP1251', 'UTF-8', $nn), 'ukey0' => iconv('CP1251', 'UTF-8', $ukey[0]), 'delivery0' => iconv('CP1251', 'UTF-8', $oletter[0]['delivery']), 'user1_uname' => iconv('CP1251', 'UTF-8', $letter['user1_uname']), 'user1_usurname' => iconv('CP1251', 'UTF-8', $letter['user1_usurname']), 'user1_login' => iconv('CP1251', 'UTF-8', $letter['user1_login']), 'user2_uname' => iconv('CP1251', 'UTF-8', $letter['user2_uname']), 'user2_usurname' => iconv('CP1251', 'UTF-8', $letter['user2_usurname']), 'user2_login' => iconv('CP1251', 'UTF-8', $letter['user2_login']), 'user3_uname' => iconv('CP1251', 'UTF-8', $letter['user3_uname']), 'user3_usurname' => iconv('CP1251', 'UTF-8', $letter['user3_usurname']), 'user3_login' => iconv('CP1251', 'UTF-8', $letter['user3_login']), 'date_change_status' => iconv('CP1251', 'UTF-8', dateFormat('d.m.Y, H:i', $letter['date_change_status'])), 'user_status_1' => iconv('CP1251', 'UTF-8', $letter['user_status_1']), 'user_status_2' => iconv('CP1251', 'UTF-8', $letter['user_status_2']), 'user_status_3' => iconv('CP1251', 'UTF-8', $letter['user_status_3']), 'user_status_1_icon' => letters::$status_icons[intval($letter['user_status_1'])], 'user_status_2_icon' => letters::$status_icons[intval($letter['user_status_2'])], 'user_status_3_icon' => letters::$status_icons[intval($letter['user_status_3'])], 'user_status_1_color' => letters::$status_colors[intval($letter['user_status_1'])], 'user_status_2_color' => letters::$status_colors[intval($letter['user_status_2'])], 'user_status_3_color' => letters::$status_colors[intval($letter['user_status_3'])], 'is_user_1_company' => $letter['is_user_1_company'], 'is_user_2_company' => $letter['is_user_2_company'], 'is_user_3_company' => $letter['is_user_3_company'], 'number' => $letter['number'], 'group_title' => iconv('CP1251', 'UTF-8', reformat(htmlspecialchars($letter['group_title']), 20)), 'group_id' => $letter['group_id'], 'title' => iconv('CP1251', 'UTF-8', reformat(htmlspecialchars($letter['title']), 20)), 'user_1' => $letter['user_1'], 'user_2' => $letter['user_2'], 'user_3' => $letter['user_3'], 'company1_name' => iconv('CP1251', 'UTF-8', $letter['company1_name']), 'company2_name' => iconv('CP1251', 'UTF-8', $letter['company2_name']), 'company3_name' => iconv('CP1251', 'UTF-8', $letter['company3_name']), 'company1_index' => iconv('CP1251', 'UTF-8', $letter['company1']['index']), 'company1_country_title' => iconv('CP1251', 'UTF-8', $letter['company1']['country_title']), 'company1_city_title' => iconv('CP1251', 'UTF-8', $letter['company1']['city_title']), 'company1_address' => iconv('CP1251', 'UTF-8', $letter['company1']['address']), 'user1_i_form_type' => $letter['user1_i']['form_type'], 'user1_i_1_address' => iconv('CP1251', 'UTF-8', $letter['user1_i'][1]['address']), 'user1_i_2_address' => iconv('CP1251', 'UTF-8', $letter['user1_i'][2]['address']), 'user_status_date_1' => dateFormat('d.m.Y', $letter['user_status_date_1']), 'user1_i_1_fio' => iconv('CP1251', 'UTF-8', $letter['user1_i'][1]['fio']), 'user1_i_2_full_name' => iconv('CP1251', 'UTF-8', $letter['user1_i'][2]['full_name']), 'user2_i_1_fio' => iconv('CP1251', 'UTF-8', $letter['user2_i'][1]['fio']), 'user2_i_2_full_name' => iconv('CP1251', 'UTF-8', $letter['user2_i'][2]['full_name']), 'user3_i_1_fio' => iconv('CP1251', 'UTF-8', $letter['user3_i'][1]['fio']), 'user3_i_2_full_name' => iconv('CP1251', 'UTF-8', $letter['user3_i'][2]['full_name']), 'company2_index' => iconv('CP1251', 'UTF-8', $letter['company2']['index']), 'company2_country_title' => iconv('CP1251', 'UTF-8', $letter['company2']['country_title']), 'company2_city_title' => iconv('CP1251', 'UTF-8', $letter['company2']['city_title']), 'company2_address' => iconv('CP1251', 'UTF-8', $letter['company2']['address']), 'user2_i_form_type' => $letter['user2_i']['form_type'], 'user2_i_1_address' => iconv('CP1251', 'UTF-8', $letter['user2_i'][1]['address']), 'user2_i_2_address' => iconv('CP1251', 'UTF-8', $letter['user2_i'][2]['address']), 'user_status_date_2' => dateFormat('d.m.Y', $letter['user_status_date_2']), 'company3_index' => iconv('CP1251', 'UTF-8', $letter['company3']['index']), 'company3_country_title' => iconv('CP1251', 'UTF-8', $letter['company3']['country_title']), 'company3_city_title' => iconv('CP1251', 'UTF-8', $letter['company3']['city_title']), 'company3_address' => iconv('CP1251', 'UTF-8', $letter['company3']['address']), 'user3_i_form_type' => $letter['user3_i']['form_type'], 'user3_i_1_address' => iconv('CP1251', 'UTF-8', $letter['user3_i'][1]['address']), 'user3_i_2_address' => iconv('CP1251', 'UTF-8', $letter['user3_i'][2]['address']), 'user_status_date_3' => dateFormat('d.m.Y', $letter['user_status_date_3']), 'delivery_title' => iconv('CP1251', 'UTF-8', $letter['delivery_title']), 'delivery_cost' => sprintf('%01.2f', $letter['delivery_cost']), 'parent' => $letter['parent'], 'parent_title' => iconv('CP1251', 'UTF-8', reformat(htmlspecialchars($letter['parent_title']), 20)), 'comment' => iconv('CP1251', 'UTF-8', reformat(htmlspecialchars($letter['comment']), 20)), 'file_link' => $file_link, 'withoutourdoc' => $letter['withoutourdoc']); $aData[] = $aTmp; } ++$letter_num; } else { if ($oletter['is_user_1_company'] == 't') { $company = letters::getCompany($oletter['user_1']); if ($company['frm_type']) { $company['name'] = $company['frm_type'] . ' "' . $company['name'] . '"'; } $oletter['company1_name'] = $company['name']; $oletter['company1'] = $company; } else { $user1 = new users(); $user1->GetUserByUID($oletter['user_1']); $oletter['user1_uname'] = $user1->uname; $oletter['user1_usurname'] = $user1->usurname; $oletter['user1_login'] = $user1->login; $oletter['user1_i'] = letters::getUserReqvs($oletter['user_1']); } if ($oletter['is_user_2_company'] == 't') { $company = letters::getCompany($oletter['user_2']); if ($company['frm_type']) { $company['name'] = $company['frm_type'] . ' "' . $company['name'] . '"'; } $oletter['company2_name'] = $company['name']; $oletter['company2'] = $company; } else { $user2 = new users(); $user2->GetUserByUID($oletter['user_2']); $oletter['user2_uname'] = $user2->uname; $oletter['user2_usurname'] = $user2->usurname; $oletter['user2_login'] = $user2->login; $oletter['user2_i'] = letters::getUserReqvs($oletter['user_2']); } if ($oletter['user_3']) { if ($oletter['is_user_3_company'] == 't') { $company = letters::getCompany($oletter['user_3']); if ($company['frm_type']) { $company['name'] = $company['frm_type'] . ' "' . $company['name'] . '"'; } $oletter['company3_name'] = $company['name']; $oletter['company3'] = $company; } else { $user3 = new users(); $user3->GetUserByUID($oletter['user_3']); $oletter['user3_uname'] = $user3->uname; $oletter['user3_usurname'] = $user3->usurname; $oletter['user3_login'] = $user3->login; $oletter['user3_i'] = letters::getUserReqvs($oletter['user_3']); } } $letter = $oletter; if ($letter['file_id']) { $cFile = new CFile($letter['file_id']); $file_link = WDCPREFIX . '/' . $cFile->path . $cFile->name; } else { $file_link = ''; } $aTmp = array('id' => iconv('CP1251', 'UTF-8', $letter['id']), 'nn' => iconv('CP1251', 'UTF-8', $nn), 'ukey0' => iconv('CP1251', 'UTF-8', $ukey[0]), 'delivery0' => iconv('CP1251', 'UTF-8', $oletter[0]['delivery']), 'user1_uname' => iconv('CP1251', 'UTF-8', $letter['user1_uname']), 'user1_usurname' => iconv('CP1251', 'UTF-8', $letter['user1_usurname']), 'user1_login' => iconv('CP1251', 'UTF-8', $letter['user1_login']), 'user2_uname' => iconv('CP1251', 'UTF-8', $letter['user2_uname']), 'user2_usurname' => iconv('CP1251', 'UTF-8', $letter['user2_usurname']), 'user2_login' => iconv('CP1251', 'UTF-8', $letter['user2_login']), 'user3_uname' => iconv('CP1251', 'UTF-8', $letter['user3_uname']), 'user3_usurname' => iconv('CP1251', 'UTF-8', $letter['user3_usurname']), 'user3_login' => iconv('CP1251', 'UTF-8', $letter['user3_login']), 'date_change_status' => iconv('CP1251', 'UTF-8', dateFormat('d.m.Y, H:i', $letter['date_change_status'])), 'user_status_1' => iconv('CP1251', 'UTF-8', $letter['user_status_1']), 'user_status_2' => iconv('CP1251', 'UTF-8', $letter['user_status_2']), 'user_status_3' => iconv('CP1251', 'UTF-8', $letter['user_status_3']), 'user_status_1_icon' => letters::$status_icons[intval($letter['user_status_1'])], 'user_status_2_icon' => letters::$status_icons[intval($letter['user_status_2'])], 'user_status_3_icon' => letters::$status_icons[intval($letter['user_status_3'])], 'user_status_1_color' => letters::$status_colors[intval($letter['user_status_1'])], 'user_status_2_color' => letters::$status_colors[intval($letter['user_status_2'])], 'user_status_3_color' => letters::$status_colors[intval($letter['user_status_3'])], 'is_user_1_company' => $letter['is_user_1_company'], 'is_user_2_company' => $letter['is_user_2_company'], 'is_user_3_company' => $letter['is_user_3_company'], 'number' => $letter['number'], 'group_title' => iconv('CP1251', 'UTF-8', reformat(htmlspecialchars($letter['group_title']), 20)), 'group_id' => $letter['group_id'], 'title' => iconv('CP1251', 'UTF-8', reformat(htmlspecialchars($letter['title']), 20)), 'user_1' => $letter['user_1'], 'user_2' => $letter['user_2'], 'user_3' => $letter['user_3'], 'company1_name' => iconv('CP1251', 'UTF-8', $letter['company1_name']), 'company2_name' => iconv('CP1251', 'UTF-8', $letter['company2_name']), 'company3_name' => iconv('CP1251', 'UTF-8', $letter['company3_name']), 'company1_index' => iconv('CP1251', 'UTF-8', $letter['company1']['index']), 'company1_country_title' => iconv('CP1251', 'UTF-8', $letter['company1']['country_title']), 'company1_city_title' => iconv('CP1251', 'UTF-8', $letter['company1']['city_title']), 'company1_address' => iconv('CP1251', 'UTF-8', $letter['company1']['address']), 'user1_i_form_type' => $letter['user1_i']['form_type'], 'user1_i_1_address' => iconv('CP1251', 'UTF-8', $letter['user1_i'][1]['address']), 'user1_i_2_address' => iconv('CP1251', 'UTF-8', $letter['user1_i'][2]['address']), 'user_status_date_1' => dateFormat('d.m.Y', $letter['user_status_date_1']), 'user1_i_1_fio' => iconv('CP1251', 'UTF-8', $letter['user1_i'][1]['fio']), 'user1_i_2_full_name' => iconv('CP1251', 'UTF-8', $letter['user1_i'][2]['full_name']), 'user2_i_1_fio' => iconv('CP1251', 'UTF-8', $letter['user2_i'][1]['fio']), 'user2_i_2_full_name' => iconv('CP1251', 'UTF-8', $letter['user2_i'][2]['full_name']), 'user3_i_1_fio' => iconv('CP1251', 'UTF-8', $letter['user3_i'][1]['fio']), 'user3_i_2_full_name' => iconv('CP1251', 'UTF-8', $letter['user3_i'][2]['full_name']), 'company2_index' => iconv('CP1251', 'UTF-8', $letter['company2']['index']), 'company2_country_title' => iconv('CP1251', 'UTF-8', $letter['company2']['country_title']), 'company2_city_title' => iconv('CP1251', 'UTF-8', $letter['company2']['city_title']), 'company2_address' => iconv('CP1251', 'UTF-8', $letter['company2']['address']), 'user2_i_form_type' => $letter['user2_i']['form_type'], 'user2_i_1_address' => iconv('CP1251', 'UTF-8', $letter['user2_i'][1]['address']), 'user2_i_2_address' => iconv('CP1251', 'UTF-8', $letter['user2_i'][2]['address']), 'user_status_date_2' => dateFormat('d.m.Y', $letter['user_status_date_2']), 'company3_index' => iconv('CP1251', 'UTF-8', $letter['company3']['index']), 'company3_country_title' => iconv('CP1251', 'UTF-8', $letter['company3']['country_title']), 'company3_city_title' => iconv('CP1251', 'UTF-8', $letter['company3']['city_title']), 'company3_address' => iconv('CP1251', 'UTF-8', $letter['company3']['address']), 'user3_i_form_type' => $letter['user3_i']['form_type'], 'user3_i_1_address' => iconv('CP1251', 'UTF-8', $letter['user3_i'][1]['address']), 'user3_i_2_address' => iconv('CP1251', 'UTF-8', $letter['user3_i'][2]['address']), 'user_status_date_3' => dateFormat('d.m.Y', $letter['user_status_date_3']), 'delivery_title' => iconv('CP1251', 'UTF-8', $letter['delivery_title']), 'delivery_cost' => sprintf('%01.2f', $letter['delivery_cost']), 'parent' => $letter['parent'], 'parent_title' => iconv('CP1251', 'UTF-8', reformat(htmlspecialchars($letter['parent_title']), 20)), 'comment' => iconv('CP1251', 'UTF-8', reformat(htmlspecialchars($letter['comment']), 20)), 'file_link' => $file_link, 'withoutourdoc' => $letter['withoutourdoc']); $aData[] = $aTmp; } } echo new_paginator($page, $pages, 4, "%s\"letters.changePage({$type}, %d); return false;\"%s", 'onclick'); $pager_html = ob_get_contents(); ob_end_clean(); } } $res['success'] = true; $res['data'] = $aData; $res['pager'] = iconv('CP1251', 'UTF-8', $pager_html); echo json_encode($res); // return $objResponse; }