%PDF- %PDF-
Server IP : 37.220.80.31 / Your IP : 52.14.80.90 Web Server : Apache/2.4.52 (Ubuntu) System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64 User : www-root ( 1010) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/webdebug.antirutin/classes/mysql/ |
Upload File : |
<? IncludeModuleLangFile(__FILE__); class CWDA_Profile { const MYSQL_DATE_FORMAT = 'YYYY-MM-DD HH:MI:SS'; // Получение списка профилей public static function GetList($arSort=false, $arFilter=false, $Limit=false) { global $DB; if (!is_array($arSort)) {$arSort = array('SORT'=>'ASC', 'NAME'=>'ASC');} foreach ($arSort as $Key => $Value) { $Value = ToUpper($Value); if ($Value!='ASC' && $Value!='DESC') { unset($arSort[$Key]); } } $arDates = array( $DB->DateToCharFunction('DATE_CREATED').' as `DATE_CREATED`', $DB->DateToCharFunction('DATE_SUCCESS').' as `DATE_SUCCESS`', ); $SQL = 'SELECT *, '.implode(', ',$arDates).' FROM `b_wd_antirutin_profiles`'; // Фильтр if (is_array($arFilter) && !empty($arFilter)) { foreach ($arFilter as $arFilterKey => $arFilterVal) { if (empty($arFilterVal)) { unset($arFilter[$arFilterKey]); } } $arWhere = array(); foreach ($arFilter as $Key => $Value) { $SubStr2 = substr($Key, 0, 2); $SubStr1 = substr($Key, 0, 1); $Key = $DB->ForSQL($Key); $KeyRaw = self::GetFilterKey($Key); $Value = $DB->ForSQL($Value); if (in_array($KeyRaw,array('DATE_CREATED','DATE_SUCCESS'))) { $Value = CDatabase::FormatDate($Value, FORMAT_DATETIME, self::MYSQL_DATE_FORMAT); } if ($SubStr2=='>=' || $SubStr2=='<=') { if ($SubStr2 == '>=') {$arWhere[] = "`b_wd_antirutin_profiles`.`{$KeyRaw}` >= '{$Value}'";} if ($SubStr2 == '<=') {$arWhere[] = "`b_wd_antirutin_profiles`.`{$KeyRaw}` <= '{$Value}'";} } elseif ($SubStr1=='>' || $SubStr1=='<') { if ($SubStr1 == '>') {$arWhere[] = "`b_wd_antirutin_profiles`.`{$KeyRaw}` > '{$Value}'";} if ($SubStr1 == '<') {$arWhere[] = "`b_wd_antirutin_profiles`.`{$KeyRaw}` < '{$Value}'";} if ($SubStr1 == '!') {$arWhere[] = "`b_wd_antirutin_profiles`.`{$KeyRaw}` <> '{$Value}'";} } elseif ($SubStr1=='!') { $arWhere[] = "`b_wd_antirutin_profiles`.`{$KeyRaw}` <> '{$Value}'"; } elseif ($SubStr1=='%') { $arWhere[] = "upper(`b_wd_antirutin_profiles`.`{$KeyRaw}`) like upper ('%{$Value}%') and `b_wd_antirutin_profiles`.`{$KeyRaw}` IS NOT NULL"; } else { $arWhere[] = "`b_wd_antirutin_profiles`.`{$KeyRaw}` = '{$Value}'"; } } if (count($arWhere)>0) { $SQL .= ' WHERE '.implode(' AND ', $arWhere); } } // Сортировка if (is_array($arSort) && !empty($arSort)) { $SQL .= ' ORDER BY '; $arSortBy = array(); foreach ($arSort as $arSortKey => $arSortItem) { $arSortKey = $DB->ForSQL($arSortKey); $arSortItem = $DB->ForSQL($arSortItem); if (!empty($arSortKey)) { $SortBy = "`{$arSortKey}`"; if (!empty($arSortItem)) { $SortBy .= " {$arSortItem}"; } $arSortBy[] = $SortBy; } } $SQL .= implode(', ', $arSortBy); } if($Limit!==false) { $SQL .= ' LIMIT '.$Limit; } return $DB->Query($SQL, false, __LINE__); } // Получение профиля по ID function GetByID($ID) { global $DB; $ID = IntVal($ID); if($ID>0) { return self::GetList(false, array('ID'=>$ID)); } return false; } // Добавление профиля public static function Add($arFields) { global $DB; if (!is_array($arFields) || empty($arFields)) { return false; } if (empty($arFields['NAME'])) { return false; } if (trim($arFields['DATE_CREATED'])!='') $arFields['DATE_CREATED'] = CDatabase::FormatDate($arFields['DATE_CREATED'],FORMAT_DATETIME,self::MYSQL_DATE_FORMAT); if (trim($arFields['DATE_SUCCESS'])!='') $arFields['DATE_SUCCESS'] = CDatabase::FormatDate($arFields['DATE_SUCCESS'],FORMAT_DATETIME,self::MYSQL_DATE_FORMAT); $SQL_Keys = array(); $SQL_Vals = array(); foreach ($arFields as $Key => $Field) { $Key = $DB->ForSQL($Key); $Field = $DB->ForSQL($Field); $SQL_Keys[] = "`{$Key}`"; $SQL_Vals[] = "'{$Field}'"; } $SQL_Keys = implode(',',$SQL_Keys); $SQL_Vals = implode(',',$SQL_Vals); $SQL = "INSERT INTO `b_wd_antirutin_profiles` ({$SQL_Keys}) VALUES ({$SQL_Vals});"; $resQuery = $DB->Query($SQL, false, __LINE__); if ($resQuery === false) { return false; } $LastID = $DB->LastID(); if (is_numeric($LastID)) { return $LastID; } else { return false; } } // Изменение профиля public static function Update($ID, $arFields) { global $DB; $ID = IntVal($ID); if ($ID==0) { return false; } if (!is_array($arFields) || empty($arFields)) { return false; } if (isset($arFields['NAME']) && empty($arFields['NAME'])) { return false; } if (trim($arFields['DATE_CREATED'])!='') $arFields['DATE_CREATED'] = CDatabase::FormatDate($arFields['DATE_CREATED'],FORMAT_DATETIME,self::MYSQL_DATE_FORMAT); if (trim($arFields['DATE_SUCCESS'])!='') $arFields['DATE_SUCCESS'] = CDatabase::FormatDate($arFields['DATE_SUCCESS'],FORMAT_DATETIME,self::MYSQL_DATE_FORMAT); if(empty($arFields['DATE_SUCCESS'])) { unset($arFields['DATE_SUCCESS']); } $arSqlSet = array(); foreach ($arFields as $Field => $Value) { $Field = $DB->ForSQL($Field); $Value = $Value===false ? 'NULL' : '\''.$DB->ForSQL($Value).'\''; $arSqlSet[] = "`{$Field}`={$Value}"; } $arSqlSet = implode(',',$arSqlSet); $SQL = "UPDATE `b_wd_antirutin_profiles` SET {$arSqlSet} WHERE `ID`='{$ID}' LIMIT 1;"; $resQuery = $DB->Query($SQL, true, __LINE__); if ($resQuery === false) { return false; } return $resQuery->AffectedRowsCount(); } // Изменение значения поля для профиля public static function SetFieldValue($ID, $Data, $Data2=false){ global $DB; $ID = IntVal($ID); if(!empty($Data) && is_string($Data) && (is_string($Data2) && !empty($Data2) || $Data2===false)) { $Data = array( $Data => $Data2, ); } if($ID>0 && is_array($Data)){ $arSqlSet = array(); $arAvailableFields = self::GetAvailableFields(); foreach($Data as $Field => $Value){ $Field = $DB->ForSQL(ToUpper($Field)); if(in_array($Field,$arAvailableFields)) { $Value = $Value===false ? 'NULL' : '\''.$DB->ForSQL($Value).'\''; $arSqlSet[] = "`{$Field}`={$Value}"; } } if(!empty($arSqlSet)) { $arSqlSet = implode(',',$arSqlSet); $SQL = "UPDATE `b_wd_antirutin_profiles` SET {$arSqlSet} WHERE `ID`='{$ID}' LIMIT 1;"; $reqQuery = $DB->Query($SQL, true, __LINE__); if ($reqQuery !== false) { return true; } } } return false; } // Удаление профиля public static function Delete($ID) { global $DB; $ID = IntVal($ID); if ($ID==0) { return false; } $resProfile = self::GetByID($ID); if ($arProfile = $resProfile->GetNext(false,false)) { $SQL = "DELETE FROM `b_wd_antirutin_profiles` WHERE `ID`='{$ID}' LIMIT 1;"; $resDelete = $DB->Query($SQL, true, __LINE__); if($resDelete->result) { return true; } } return false; } // Получение списка доступных полей для таблицы из БД private static function GetAvailableFields() { $PHPCache = new CPHPCache; $CacheLifeTime = 60*60; $CacheID = 'CWDA_Profile__GetAvailableFields'; if($PHPCache->InitCache($CacheLifeTime, $CacheID, '/')) { $arResult = $PHPCache->GetVars(); } else { global $DB; $SQL = 'SHOW COLUMNS FROM `b_wd_antirutin_profiles`;'; $resFields = $DB->Query($SQL, true, __LINE__); while ($arField = $resFields->GetNext(false,false)) { $arResult[] = $arField['Field']; } if($PHPCache->StartDataCache()) { $PHPCache->EndDataCache($arResult); } } return $arResult; } // Очистка ключа от спецсимволов private static function GetFilterKey($Key) { return trim($Key,"\s\r\n\t<>=%!"); } } ?>