Files
crm.clientright.ru/modules/ITS4YouGoogleCalendarSync/models/UserCredentials.php
Fedor ac7467f0b4 Major CRM updates: AI Assistant, Court Status API, S3 integration improvements, and extensive file storage system
- Added comprehensive AI Assistant system (aiassist/ directory):
  * Vector search and embedding capabilities
  * Typebot proxy integration
  * Elastic search functionality
  * Message classification and chat history
  * MCP proxy for external integrations

- Implemented Court Status API (GetCourtStatus.php):
  * Real-time court document status checking
  * Integration with external court systems
  * Comprehensive error handling and logging

- Enhanced S3 integration:
  * Improved file backup system with metadata
  * Batch processing capabilities
  * Enhanced error logging and recovery
  * Copy operations with URL fixing

- Added Telegram contact creation API
- Improved error logging across all modules
- Enhanced callback system for AI responses
- Extensive backup file storage with timestamps
- Updated documentation and README files

- File storage improvements:
  * Thousands of backup files with proper metadata
  * Fix operations for broken file references
  * Project-specific backup and recovery systems
  * Comprehensive file integrity checking

Total: 26,461+ files added/modified including AWS SDK, vendor dependencies, and extensive backup system.
2025-10-16 11:17:21 +03:00

206 lines
6.1 KiB
PHP

<?php
/*+**********************************************************************************
* The content of this file is subject to the ITS4GoogleCalendarSync license.
* ("License"); You may not use this file except in compliance with the License
* The Initial Developer of the Original Code is IT-Solutions4You s.r.o.
* Portions created by IT-Solutions4You s.r.o. are Copyright(C) IT-Solutions4You s.r.o.
* All Rights Reserved.
************************************************************************************/
class ITS4YouGoogleCalendarSync_UserCredentials_Model extends Vtiger_Base_Model
{
const BOTH_WAYS = 11;
const GOOGLE_TO_VTIGER = 10;
const VTIGER_TO_GOOGLE = 01;
protected $attr_type = false;
protected $clientId;
protected $clientSecret;
protected $syncDirection;
protected $adb;
public function __construct()
{
parent::__construct();
$this->adb = PearDatabase::getInstance();
}
public static function getInstanceForCurrentUser()
{
$currentUser = Users_Record_Model::getCurrentUserModel();
$instance = self::getInstance($currentUser->getId());
return $instance;
}
public static function getInstance($userId)
{
$adb = PearDatabase::getInstance();
$sql = "SELECT * FROM its4you_google_credentials WHERE userid=?";
$result = $adb->pquery($sql, array($userId));
if ($adb->num_rows($result) > 0) {
$instance = new self();
$row = $adb->query_result_rowdata($result, 0);
$type = "user";
$client_id = $row['client_id'];
$client_secret = $row['client_secret'];
if ($client_id == "" || $client_secret == "") {
$defaultSyncAttributes = ITS4YouGoogleCalendarSync_Utils_Helper::getSyncAttributesForUser('0');
$client_id = $defaultSyncAttributes["client_id"];
$client_secret = $defaultSyncAttributes["client_secret"];
$type = "default";
if ($client_id == "" || $client_secret == "") {
return false;
}
}
$instance->setType($type);
$instance->setClientId($client_id);
$instance->setClientSecret($client_secret);
$instance->setSyncDirection($row['sync_direction']);
return $instance;
}
return false;
}
/**
* @param mixed $attr_type
*/
public function setType($attr_type)
{
$this->attr_type = $attr_type;
}
public static function getActiveUsers()
{
$adb = PearDatabase::getInstance();
$sql = "SELECT * FROM its4you_google_credentials WHERE userid != ?";
$result = $adb->pquery($sql, array("0"));
$instances = array();
$defaultSyncAttributes = ITS4YouGoogleCalendarSync_Utils_Helper::getSyncAttributesForUser('0');
if ($adb->num_rows($result) > 0) {
while ($row = $adb->fetchByAssoc($result)) {
$type = "user";
$client_id = $row['client_id'];
$client_secret = $row['client_secret'];
if ($client_id == "" || $client_secret == "") {
$client_id = $defaultSyncAttributes["client_id"];
$client_secret = $defaultSyncAttributes["client_secret"];
$type = "default";
}
if ($client_id == "" || $client_secret == "") {
continue;
}
$instance = new self();
$instance->setType($type);
$instance->setClientId($client_id);
$instance->setClientSecret($client_secret);
$instance->setSyncDirection($row['sync_direction']);
$instance->set('userid', $row['userid']);
$instances[$row['userid']] = $instance;
}
}
return $instances;
}
public function save()
{
$adb = PearDatabase::getInstance();
$currentUser = Users_Record_Model::getCurrentUserModel();
$type = $this->getType();
$client_id = $client_secret = "";
if ($type != "default") {
$client_id = $this->getClientId();
$client_secret = $this->getClientSecret();
}
$result = $adb->pquery("SELECT * FROM its4you_google_credentials WHERE userid=?", array($currentUser->getId()));
if ($adb->num_rows($result) > 0) {
$sql = "UPDATE its4you_google_credentials SET client_id = ?, client_secret=?, sync_direction=? WHERE userid = ?";
} else {
$sql = "INSERT INTO its4you_google_credentials (client_id, client_secret, sync_direction, userid) VALUES (?,?,?,?)";
}
$adb->pquery($sql, array($client_id, $client_secret, $this->getSyncDirection(), $currentUser->getId()));
}
/**
* @return array
*/
public function getType()
{
return $this->attr_type;
}
/**
* @return array
*/
public function getClientId()
{
return $this->clientId;
}
/**
* @param mixed $clientId
*/
public function setClientId($clientId)
{
$this->clientId = $clientId;
}
/**
* @return mixed
*/
public function getClientSecret()
{
return $this->clientSecret;
}
/**
* @param mixed $clientSecret
*/
public function setClientSecret($clientSecret)
{
$this->clientSecret = $clientSecret;
}
/**
* @return mixed
*/
public function getSyncDirection()
{
return $this->syncDirection;
}
/**
* @param mixed $syncDirection
*/
public function setSyncDirection($syncDirection)
{
$this->syncDirection = $syncDirection;
}
public function deactivate()
{
$userId = $this->get("userid");
ITS4YouGoogleCalendarSync_Oauth2_Connector::removeConnector($userId, false);
}
public function remove($userId)
{
}
}