Joywork/engine/classes/UnisenderClass.php

164 lines
4.6 KiB
PHP
Raw Permalink Normal View History

2026-05-22 20:21:54 +02:00
<?php
class UnisenderClass {
private $db = null;
private $user;
private $agency_id = 0;
private $debug;
private $sphinx = null;
private $sphinx2 = null;
public function __construct($db = null, $agency_id, $debug = false) {
if ($debug == true) {
$this->debug = true;
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);
}
if(!isset($agency_id) || (int)$agency_id == 0){
die('Не задано агентство');
}
$this->agency_id = $agency_id;
if (!is_null($db)) {
$this->db = $db;
} else {
$pdo = new MysqlPdo(hst, ndb, user, pass);
$pdo->query("SET NAMES 'utf8'");
$this->db = $pdo;
}
}
private function set_sphinx2(){
$pdo = new MysqlPdo(hstsph2, null, null, null, true, '9306');
$sql = "SET NAMES 'utf8'";
$pdo->query($sql);
$this->sphinx2 = $pdo;
}
/**
* Сохраненние ключа
*/
public function save_key($key){
$sql = "SELECT * FROM unisender_agency WHERE agency_id = {$this->agency_id}";
$q = $this->db->query($sql);
if($this->db->num_rows($q) > 0){
$sql_up = "UPDATE unisender_agency SET api_key = '{$key}' WHERE agency_id = {$this->agency_id}";
$this->db->query($sql_up);
} else {
$sql_in = "INSERT INTO unisender_agency (api_key, agency_id) VALUES ('{$key}', {$this->agency_id})";
$this->db->query($sql_in);
}
}
/**
* Получение ключа
*/
public function get_key(){
$api_key = '';
$sql = "SELECT * FROM unisender_agency WHERE agency_id = {$this->agency_id}";
$q = $this->db->query($sql);
$r = $this->db->fetch_assoc($q);
if(isset($r['api_key'])){
$api_key = $r['api_key'];
}
return $api_key;
}
public function get_list_client($type, $all = true, $ids){
$result = array();
if($type == 'client'){
if(!$all){
$where = "AND id in (".implode(',', $ids).")" ;
} else
if (isset($_SESSION['where_campaigns'])) {
$where = $_SESSION['where_campaigns'];
}
$sql = "SELECT * FROM clients WHERE 1 ".$where;
$q=$this->db->query($sql);
while($r = $this->db->fetch_assoc($q)){
$result['client_list'][] = $r;
}
} else if($type == 'req'){
if(!$all){
$where = "AND id in (".implode(',', $ids).")" ;
$sql_req = "SELECT client_id FROM requisitions WHERE 1 $where";
} else {
$sql_req = $_SESSION['where_req_campaigns'];
}
$q_req = $this->db->query($sql_req);
$clients_ids = array();
while($r_req = $this->db->fetch_assoc($q_req)){
$clients_ids[] = $r_req['client_id'];
}
$clients_ids = array_unique($clients_ids);
$sql = "SELECT * FROM clients WHERE id in (".implode(',', $clients_ids).")";
$q=$this->db->query($sql);
while($r = $this->db->fetch_assoc($q)){
$result['client_list'][] = $r;
}
} else if ($type == 'object'){
$whereClPart = [];
$this->set_sphinx2();
if(!$all){
if (is_array($_SESSION['checked'])) {
$ids = array_map('intval', $_SESSION['checked']);
$sql_cl_obj = "SELECT client_id FROM client_objects WHERE object_id in (".implode(',', $ids).")";
$q_cl_obj = $this->db->query($sql_cl_obj);
while($r_cl_obj = $this->db->fetch_assoc($q_cl_obj)){
$whereClPart[] = $r_cl_obj['client_id'];
}
}
} else {
if(isset($_SESSION['agency_objects_export'])){
$ids = array();
$sql_obj = $_SESSION['agency_objects_export'];
// echo $sql_obj;
$q_obj = $this->sphinx2->query($sql_obj);
while($r_obj = $this->sphinx2->fetch_assoc($q_obj)){
$sql_cl_obj = "SELECT client_id FROM client_objects WHERE object_id = {$r_obj['id']}";
$q_cl_obj = $this->db->query($sql_cl_obj);
while($r_cl_obj = $this->db->fetch_assoc($q_cl_obj)){
$whereClPart[] = $r_cl_obj['client_id'];
}
}
}
}
$sqlClients = "SELECT * FROM `clients` WHERE id in (" . implode(", ", $whereClPart) .")";
//echo $sqlClients;
$rezClient =$this->db->query($sqlClients);
if ($this->db->num_rows($rezClient) > 0) {
while ($client = $this->db->fetch_assoc($rezClient)) {
if(!empty($client['email'])){
$result['client_list'][] = $client;
}
}
}
}
$result['title_list'] = 'Список '.date('d.m.Y H:i:s');
return $result;
}
}