ini_set('error_reporting', E_ALL);
ini_set('display_errors', 0);
ini_set('display_startup_errors', 0);
function sendTelegramByUserId($db, $userid, $message) {
$sql="SELECT * FROM `users` WHERE `users_id`='".$userid."'";
$result=$db->query($sql);
$user = $result->fetch_assoc();
$response=array(
'chat_id' => $user['telegram_id'],
'text' => $user['users_name']." ".$user['users_patronymic']."!\n\n".$message
);
$ch = curl_init('https://api.telegram.org/bot'.TELEGRAM_TOKEN.'/sendMessage');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $response);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
$res = curl_exec($ch);
curl_close($ch);
return $res;
}
function sendemailbyuserid($db, $userid, $subject,$message){
require_once ('phpmailer/PHPMailerAutoload.php');
$sql=$db->query("SELECT * FROM `users` WHERE users_id='".$userid."'");
$user = $sql->fetch_assoc();
$from = SMTP_FROM; // Почта отправителя
$fromname = SMTP_FROM_NAME; // Почта отправителя
$username = SMTP_USER; // Имя пользователя почты
$password = SMTP_PASSWORD; // Пароль почты
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = SMTP_HOST;
$mail->SMTPAuth = true;
$mail->Username = $username;
$mail->Password = $password;
$mail->SMTPSecure = 'ssl';
$mail->Port = SMTP_PORT;
$mail->CharSet = 'UTF-8';
$mail->setFrom($from, $fromname);
$mail->addAddress($user['email']);
$mail->Subject = $subject;
$filename ='/home/di-re/web/cmit.di-re.ru/public_html/static/templates/notify.html';
$text = file_get_contents($filename);
$text=preg_replace("/{message}/", $message, $text);
$text=preg_replace("/{name}/", $user['users_name'], $text);
$text=preg_replace("/{lastname}/", $user['users_patronymic'], $text);
$mail->msgHTML($text);
$result = $mail->send();
return $result;
}
function createItemComment($db, $registerid, $itemid, $comment, $userid){
$sql="INSERT INTO `gl_comments` SET registerid='".$registerid."', itemid='".$itemid."', users_id='".$userid."', comment='".$comment."'";
$db->query($sql);
#Отправка уведомлений
$sql = $db->query("SELECT * FROM gl_rolesofresources WHERE reesterid='".$registerid."' AND itemid='".$itemid."'");
while ($item = $sql->fetch_assoc()){
$message="По заказу №".$itemid." оставлен новый комментарий.\n\nПодробности по ссылке: https://cmit.di-re.ru/super/orderitem.php?secret=".$item['secret'];
sendTelegramByUserId($db, $item['userid'], $message);
$subject="Новый комментарий по заказу №".$itemid;
$message="По заказу №".$itemid." оставлен новый комментарий.\n\nПодробности по ссылке";
//sendemailbyuserid($db, $item['userid'], $subject, $message);
}
}
function createUniversalJornalItem($db, $title, $description, $fdeadlinedatetime, $itemsubtypeid, $clientid, $contractprice, $materialprice, $cmitprice, $coexecutorprice, $executorid, $managerid, $files){
#require_once ('OneDriveScript.php');
#Вытаскиваем исполнителя по умолчанию и тип сущности
if(isset($description)==false){
$description=" ";
}
#Вытаскиваем начальный статус
$sql2="SELECT `gl_workflowstatus`.`id` as `initialstatus`, `gl_itemsubtype`.`title` AS `title`, `gl_itemsubtype`.`defaultexecutorid` AS `defaultexecutorid`, `gl_itemsubtype`.`defaultmanagerid` AS `defaultmanagerid` FROM `gl_itemsubtype` INNER JOIN `gl_workflowstatus` ON `gl_itemsubtype`.`workflowid`=`gl_workflowstatus`.`workflow_id` WHERE `gl_workflowstatus`.`order`=1 AND `gl_itemsubtype`.`id`='".$itemsubtypeid."'";
echo $sql2;
$query = $db->query($sql2);
$row = $query->fetch_assoc();
$initialstatus = $row['initialstatus'];
$itemtypetitle = $row['title'];
if(isset($executorid)==false){
$executorid=$row['defaultexecutorid'];
}
if(isset($managerid)==false){
$managerid=$row['defaultmanagerid'];
}
#Пишем заявку в базу данных
$query="INSERT INTO `orders` SET `name`='".$title."', `comment`='".$description."', `status_new`='".$initialstatus."', `type`='внешний', `cmitprice`='".$cmitprice."', `clientid`='".$clientid."', `coexecutorprice`='".$coexecutorprice."', `materialprice`='".$materialprice."', `contractprice`='".$contractprice."', `deadline`='".$fdeadlinedatetime."', `curator`='0', `calcid`='0', `creator`='0', `crmlink`=''";
echo $query;
$result=$db->query($query);
#Вытаскиваем последний id в БД
$query = $db->query("SELECT MAX(id) AS `maxid` FROM orders");
$row = $query->fetch_assoc();
$itemid = $row['maxid'];
#(new OneDriveScript())->createorderFolder($itemid, $title);
#Пишем создателя заявки
$db->query("INSERT INTO gl_rolesofresources (reesterid, itemid, userid, role) VALUES (1,".$itemid.", ".$managerid.", 'manager')");
#Пишем исполнителей заявки
$db->query("INSERT INTO gl_rolesofresources (reesterid, itemid, userid, role) VALUES (1,".$itemid.", ".$executorid.", 'executor')");
#Вычисляем секреты для доступов
$db->query("CALL update_secret (".$itemid.", 1)");
#Отправка уведомлений
$sql = $db->query("SELECT * FROM gl_rolesofresources WHERE reesterid=1 AND itemid='".$itemid."'");
while ($item = $sql->fetch_assoc()){
if($item['role']=='executor'){
$message="Вы назначены исполнителем по новому заказу №".$itemid."\nТип заказа: ".$itemtypetitle."\n\nОписание: ".$description."\n\nПодробности по ссылке: https://cmit.di-re.ru/super/orderitem.php?secret=".$item['secret'];
sendTelegramByUserId($db, $item['userid'], $message);
$subject="Новый запрос";
#sendemailbyuserid($db, $item['userid'], $subject, $message);
} else if($item['role']=='manager') {
$message="Вы назначены менеджером по новому заказу №".$itemid."\nТип заказа: ".$itemtypetitle."\n\nОписание: ".$description."\n\nПодробности по ссылке: https://cmit.di-re.ru/super/orderitem.php?secret=".$item['secret'];
sendTelegramByUserId($db, $item['userid'], $message);
$subject="Новый запрос";
#sendemailbyuserid($db, $item['userid'], $subject, $message);
}
}
#Разбор файлов
for ($n = 0; $n < count($files); $n++){
$sqlquery="INSERT INTO `gl_files` SET `itemid`='".$itemid."',`registerid`='1',`filename`='".$files[$n]['filename']."',`filepath`='".$files[$n]['filepath']."'";
$db->query($sqlquery);
}
}
?>
//версия 3, от 21.06.2023
function sendwsbyphone($phone, $message, $image=""){
$token = CHATAPI_TOKEN;
$instanceId = CHATAPI_INSTANCE;
$imagespatch = CHATAPI_IMAGES_PATCH;
if ($image!="") {
$data = [
'phone' => $phone, // Телефон получателя
'body' => $imagespatch."/".$image, // Сообщение
'filename' => $image, // Сообщение
'caption' => $message, // Сообщение
];
// URL для запроса POST /message
$url = 'https://api.1msg.io/'.$instanceId.'/sendFile?token='.$token;
} else {
$data = [
'phone' => $phone, // Телефон получателя
'body' => $message, // Сообщение
];
// URL для запроса POST /message
$url = 'https://api.1msg.io/'.$instanceId.'/sendMessage?token='.$token;
}
$json = json_encode($data); // Закодируем данные в JSON
// Сформируем контекст обычного POST-запроса
$options = stream_context_create(['http' => [
'method' => 'POST',
'header' => 'Content-type: application/json',
'content' => $json
]
]);
// Отправим запрос
$result = file_get_contents($url, false, $options);
//$result=json_decode($result);
//if(strcmp($result->sent,"true")){
//$result=1;
//}else{
// $result=0;
//}
return $result;
}
function checkwsphone($phone) {
$data = [
'blocking' => 'wait', // Телефон получателя
'contacts' => $phone, // Сообщение
];
$json = json_encode($data); // Закодируем данные в JSON
//print_r($data);
// URL для запроса POST /message
$token = CHATAPI_TOKEN;
$instanceId = CHATAPI_INSTANCE;
$url = 'https://api.1msg.io/'.$instanceId.'/contacts?token='.$token;
// Сформируем контекст обычного POST-запроса
$options = stream_context_create(['http' => [
'method' => 'POST',
'header' => 'Content-type: application/json',
'content' => $json
]
]);
// Отправим запрос
$result = file_get_contents($url, false, $options);
//var_dump($result);
$result=json_decode($result);
//echo($result->contacts[0]->status);
if(!strcmp($result->contacts[0]->status,"valid")){
$result=1;
}else{$result=0;}
//echo "result - ".$result."";
return $result;
}
function sendwsbyphone_noconfirm($phone, $message) {
$data = [
'phone' => $phone, // Телефон получателя
'body' => $message, // Сообщение
];
$json = json_encode($data); // Закодируем данные в JSON
// URL для запроса POST /message
$token = CHATAPI_TOKEN;
$instanceId = CHATAPI_INSTANCE;
$url = 'https://api.1msg.io/'.$instanceId.'/sendMessage?token='.$token;
// Сформируем контекст обычного POST-запроса
$options = stream_context_create(['http' => [
'method' => 'POST',
'header' => 'Content-type: application/json',
'content' => $json
]
]);
// Отправим запрос
file_get_contents($url, false, $options);
//$result = file_get_contents($url, false, $options);
//$result=json_decode($result);
//if(strcmp($result->sent,"true")){
//$result=1;
//}else{$result=0;}
//return $result;
}
#ОТПРАВКА ЗАПРОСА МЕТОДОМ GET
function get_api_whatsapp($curl_url){
$curl = curl_init($curl_url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);// Принимаем в виде массива. (false - в виде объекта)
$result = curl_exec($curl);
$output=json_decode($result);
curl_close($curl);
return $output;
}
function get_ip() {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} else if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$ip = $ip[0];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return trim($ip);
}
// Функция вызова методов API.
function sendTelegram($method, $response)
{
$ch = curl_init('https://api.telegram.org/bot' . TOKEN . '/' . $method);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $response);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
$res = curl_exec($ch);
curl_close($ch);
return $res;
}
function sendsmsbyphone($phone,$message,$from){
require_once 'sms.ru.php';
$smsru = new SMSRU(SMSRU_TOKEN); // Ваш уникальный программный ключ, который можно получить на главной странице
$data = new stdClass();
$data->from = $from;
$data->to = $phone;
$data->text = $message; // Текст сообщения
$sms = $smsru->send_one($data); // Отправка сообщения и возврат данных в переменную
return $sms;
}
function sendsmsbyphone_noconfirm($phone,$message,$from){
require_once 'sms.ru.php';
$smsru = new SMSRU(SMSRU_TOKEN); // Ваш уникальный программный ключ, который можно получить на главной странице
$data = new stdClass();
$data->from = $from;
$data->to = $phone;
$data->text = $message; // Текст сообщения
$smsru->send_one($data); // Отправка сообщения и возврат данных в переменную
//return $sms;
}
function sendemailbyemail($to,$subject,$message){
require_once ('phpmailer/PHPMailerAutoload.php');
$from = SMTP_FROM; // Почта отправителя
$username = SMTP_USER; // Имя пользователя почты
$password = SMTP_PASSWORD; // Пароль почты
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = SMTP_HOST;
$mail->SMTPAuth = true;
$mail->Username = $username;
$mail->Password = $password;
$mail->SMTPSecure = 'ssl';
$mail->Port = SMTP_PORT;
$mail->CharSet = 'UTF-8';
$mail->setFrom($from);
$mail->addAddress($to);
$mail->Subject = $subject;
$mail->msgHTML($message);
$result = $mail->send();
return $result;
}
function phone_format($phone)
{
$phone = trim($phone);
$res = preg_replace(
array(
'/[\+]?([7|8])[-|\s]?\([-|\s]?(\d{3})[-|\s]?\)[-|\s]?(\d{3})[-|\s]?(\d{2})[-|\s]?(\d{2})/',
'/[\+]?([7|8])[-|\s]?(\d{3})[-|\s]?(\d{3})[-|\s]?(\d{2})[-|\s]?(\d{2})/',
'/[\+]?([7|8])[-|\s]?\([-|\s]?(\d{4})[-|\s]?\)[-|\s]?(\d{2})[-|\s]?(\d{2})[-|\s]?(\d{2})/',
'/[\+]?([7|8])[-|\s]?(\d{4})[-|\s]?(\d{2})[-|\s]?(\d{2})[-|\s]?(\d{2})/',
'/[\+]?([7|8])[-|\s]?\([-|\s]?(\d{4})[-|\s]?\)[-|\s]?(\d{3})[-|\s]?(\d{3})/',
'/[\+]?([7|8])[-|\s]?(\d{4})[-|\s]?(\d{3})[-|\s]?(\d{3})/',
),
array(
'+7$2$3$4$5',
'+7$2$3$4$5',
'+7$2$3$4$5',
'+7$2$3$4$5',
'+7$2$3$4',
'+7$2$3$4',
),
$phone
);
return $res;
}
function phone_format_without_plus($phone)
{
$phone = trim($phone);
$res = preg_replace(
array(
'/[\+]?([7|8])[-|\s]?\([-|\s]?(\d{3})[-|\s]?\)[-|\s]?(\d{3})[-|\s]?(\d{2})[-|\s]?(\d{2})/',
'/[\+]?([7|8])[-|\s]?(\d{3})[-|\s]?(\d{3})[-|\s]?(\d{2})[-|\s]?(\d{2})/',
'/[\+]?([7|8])[-|\s]?\([-|\s]?(\d{4})[-|\s]?\)[-|\s]?(\d{2})[-|\s]?(\d{2})[-|\s]?(\d{2})/',
'/[\+]?([7|8])[-|\s]?(\d{4})[-|\s]?(\d{2})[-|\s]?(\d{2})[-|\s]?(\d{2})/',
'/[\+]?([7|8])[-|\s]?\([-|\s]?(\d{4})[-|\s]?\)[-|\s]?(\d{3})[-|\s]?(\d{3})/',
'/[\+]?([7|8])[-|\s]?(\d{4})[-|\s]?(\d{3})[-|\s]?(\d{3})/',
),
array(
'7$2$3$4$5',
'7$2$3$4$5',
'7$2$3$4$5',
'7$2$3$4$5',
'7$2$3$4',
'7$2$3$4',
),
$phone
);
return $res;
}
#ПРОВЕРКА НА JSON
function isJSON($string) {
return ((is_string($string) && (is_object(json_decode($string)) || is_array(json_decode($string))))) ? true : false;
}
#ОТПРАВКА ЗАПРОСА POST
function post_api($data_in,$curl_url){
$data_string = json_encode ($data_in, JSON_UNESCAPED_UNICODE);
#var_dump($data_string);
$curl = curl_init($curl_url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);// Принимаем в виде массива. (false - в виде объекта)
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$result = curl_exec($curl);
$output=json_decode($result);
curl_close($curl);
//print_r($output);
return $output;
}
#ОТПРАВКА ЗАПРОСА POST ДЛЯ https://api-messenger.com/
function post_apiv2($data_in,$curl_url,$token){
$ch = curl_init();
$curl_url=$curl_url.'?token='.$token;
curl_setopt($ch, CURLOPT_URL, $curl_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data_in));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json; charset=utf-8'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
//$result = curl_exec($ch); // Отправим запрос
curl_exec($ch); // Отправим запрос
//$result="{\"status\": \"OK\", \"message\": \"OK without approvement\"}";
curl_close($ch);
//$data = json_decode($result, true); // Разберем полученный JSON в массив
//print_r($data);
//return $data;
}
function post_apiv3($data_in,$curl_url,$token){
$ch = curl_init();
$curl_url=$curl_url.'?token='.$token;
curl_setopt($ch, CURLOPT_URL, $curl_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data_in));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json; charset=utf-8'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
$result = curl_exec($ch); // Отправим запрос
//curl_exec($ch); // Отправим запрос
//$result="{\"status\": \"OK\", \"message\": \"OK without approvement\"}";
curl_close($ch);
$data = json_decode($result, true); // Разберем полученный JSON в массив
//print_r($data);
return $data;
}
#ОТПРАВКА ЗАПРОСА МЕТОДОМ POST С АВТОРИЗАЦИЕЙ
function post_api_token($data_in,$curl_url,$token){
$data_string = json_encode ($data_in, JSON_UNESCAPED_UNICODE);
$curl = curl_init($curl_url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);// Принимаем в виде массива. (false - в виде объекта)
$headers=array(
'Content-Type: application/json',
'Content-Length: '.strlen($data_string).'',
'x-access-token: '.$token);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($curl);
$output=json_decode($result);
curl_close($curl);
return $output;
}
#ОТПРАВКА ЗАПРОСА МЕТОДОМ POST С АВТОРИЗАЦИЕЙ
function post_api_authorization($data_in,$curl_url,$token){
$data_string = json_encode ($data_in, JSON_UNESCAPED_UNICODE);
$curl = curl_init($curl_url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);// Принимаем в виде массива. (false - в виде объекта)
$headers=array(
'Content-Type: application/json',
'Content-Length: '.strlen($data_string).'',
'Authorization: '.$token);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($curl);
$output=json_decode($result);
curl_close($curl);
return $output;
}
function get_api($data_in,$curl_url,$token, $file){
$data_string = json_encode ($data_in, JSON_UNESCAPED_UNICODE);
#echo "data_string - ".$data_string;
#fwrite($file,'X0 data_string - '.$data_string.PHP_EOL);
$headers =array(
'Content-Type: application/json',
'x-access-token: '.$token); // создаем заголовки
$curl = curl_init(); // создаем экземпляр curl
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_POST, false);
curl_setopt($curl, CURLOPT_URL, $curl_url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);
#DEBUGGING CURL
#curl_setopt($curl, CURLOPT_VERBOSE, true);
#curl_setopt($curl, CURLOPT_STDERR, $file);
$result = curl_exec($curl);
//fwrite($file,'X0 result - '.$result.PHP_EOL);
#if ($result === FALSE) {
# printf("cUrl error (#%d): %s
\n", curl_errno($handle),
# htmlspecialchars(curl_error($handle)));
#}
#rewind($file);
#$verboseLog = stream_get_contents($file);
#echo "Verbose information:\n
", htmlspecialchars($verboseLog), "\n"; #fwrite($file,'11 result - '.htmlspecialchars($verboseLog).PHP_EOL); #fwrite($file,'before decode - '.PHP_EOL); $output=json_decode($result); #fwrite($file,'before curl_close - '.PHP_EOL); curl_close($curl); #DEBUG OUTPUT #fwrite($file,'22 output - '.print_r($output,true).PHP_EOL); #$output=''; if(empty($output))$output=0; return $output; } function pruffme_webinar_create($name,$start,$end){ $start_time=new DateTime($start); $end_time=new DateTime($end); $since_start = $end_time->diff($start_time); var_dump($since_start); $duration=60*$since_start->h+$since_start->i; echo $start_time->format('m/d/Y g:i A')." ".$end_time->format('m/d/Y g:i A'); echo "duration - ".$duration; //use_record значение 1 и type значение meeting //use_record Включить автоматическую запись 1 - да, 0 - нет[по умолчанию] //type Вебинар или конференция [webinar,meeting][по умолчанию webinar] $content = [ "name"=>$name, "use_record"=>0, "type"=>"meeting", "time"=> [ "selected_date"=> $start, "duration"=> $duration, "zone_offset"=> -180 ] ]; print_r($content); $encoded = json_encode($content); $base = base64_encode($encoded); $params = array( "user"=>"100d065babd1498bb03df0789dfea649", "key"=>"cb4b8a0a7d5c2c82083e64b98d56c6ae", "action"=>"webinar-create", "content"=>$base ); $postFields = http_build_query($params); $server = "https://pruffme.com/api/"; $curl = curl_init($server); curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0"); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_POSTFIELDS, $postFields); curl_setopt($curl, CURLOPT_TIMEOUT, 30); $result = curl_exec($curl); $json = json_decode($result); return($json); } function get_api_sber($curl_url){ $ch = curl_init($curl_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_HEADER, false); $output = curl_exec($ch); //$output=json_decode($output); curl_close($ch); return $output; //ВОЗВРАЩАЕМ МАССИВ! } ?>