403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/ilovecveti.ru/bitrix/modules/search/classes/general/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/ilovecveti.ru/bitrix/modules/search/classes/general/customrank.php
<?php
IncludeModuleLangFile(__FILE__);

class CSearchCustomRank
{
	var $LAST_ERROR = '';

	public static function GetList($aSort = [], $aFilter = [])
	{
		$DB = CDatabase::GetModuleConnection('search');

		$arFilter = [];
		foreach ($aFilter as $key => $val)
		{
			$val = $DB->ForSql($val);
			$key = mb_strtoupper($key);
			if ($val == '')
			{
				continue;
			}
			switch ($key)
			{
			case 'SITE_ID':
			case 'MODULE_ID':
			case 'PARAM1':
			case 'PARAM2':
			case 'ITEM_ID':
			case 'ID':
			case 'APPLIED':
				$arFilter[] = 'CR.' . $key . "='" . $val . "'";
				break;
			}
		}

		$arOrder = [];
		foreach ($aSort as $key => $val)
		{
			$ord = (mb_strtoupper($val) <> 'ASC' ? 'DESC' : 'ASC');
			$key = mb_strtoupper($key);
			switch ($key)
			{
			case 'SITE_ID':
			case 'MODULE_ID':
			case 'PARAM1':
			case 'PARAM2':
			case 'ITEM_ID':
			case 'ID':
			case 'APPLIED':
			case 'RANK':
				$arOrder[] = 'CR.' . $key . ' ' . $ord;
				break;
			}
		}

		if (count($arOrder) == 0)
		{
			$arOrder = [
				'CR.SITE_ID ASC'
			, 'CR.MODULE_ID ASC'
			, 'CR.PARAM1 DESC'
			, 'CR.PARAM2 DESC'
			, 'CR.ITEM_ID DESC'
			];
		}
		$sOrder = "\nORDER BY " . implode(', ', $arOrder);

		if (count($arFilter) == 0)
		{
			$sFilter = '';
		}
		else
		{
			$sFilter = "\nWHERE " . implode("\nAND ", $arFilter);
		}

		$strSql = '
			SELECT
				CR.ID
				,CR.SITE_ID
				,CR.MODULE_ID
				,CR.PARAM1
				,CR.PARAM2
				,CR.ITEM_ID
				,CR.RANK
			FROM
				b_search_custom_rank CR
			' . $sFilter . $sOrder;

		return $DB->Query($strSql);
	}

	public static function GetByID($ID)
	{
		$DB = CDatabase::GetModuleConnection('search');
		$ID = intval($ID);

		$strSql = '
			SELECT CR.*
			FROM b_search_custom_rank CR
			WHERE CR.ID = ' . $ID . '
		';

		return $DB->Query($strSql);
	}

	public static function Delete($ID)
	{
		$DB = CDatabase::GetModuleConnection('search');
		$ID = intval($ID);

		return $DB->Query('DELETE FROM b_search_custom_rank WHERE ID=' . $ID);
	}

	function CheckFields($arFields)
	{
		$this->LAST_ERROR = '';

		if (is_set($arFields, 'SITE_ID') && $arFields['SITE_ID'] == '')
		{
			$this->LAST_ERROR .= GetMessage('customrank_error_site') . '<br>';
		}
		if (is_set($arFields, 'MODULE_ID') && $arFields['MODULE_ID'] == '')
		{
			$this->LAST_ERROR .= GetMessage('customrank_error_module') . '<br>';
		}

		if ($this->LAST_ERROR <> '')
		{
			return false;
		}
		else
		{
			return true;
		}
	}

	function Add($arFields)
	{
		$DB = CDatabase::GetModuleConnection('search');

		if (!$this->CheckFields($arFields))
		{
			return false;
		}

		return $DB->Add('b_search_custom_rank', $arFields);
	}

	function Update($ID, $arFields)
	{
		$DB = CDatabase::GetModuleConnection('search');
		$ID = intval($ID);

		if (!$this->CheckFields($arFields))
		{
			return false;
		}

		unset($arFields['ID']);

		$strUpdate = $DB->PrepareUpdate('b_search_custom_rank', $arFields);
		if ($strUpdate != '')
		{
			$strSql =
				'UPDATE b_search_custom_rank SET ' . $strUpdate . ' ' . 'WHERE ID=' . $ID;
			return $DB->Query($strSql);
		}
		return true;
	}

	function StartUpdate()
	{
		$DB = CDatabase::GetModuleConnection('search');
		$strSql = "
			UPDATE b_search_custom_rank
			SET APPLIED='N'
		";
		$rs = $DB->Query($strSql);
		if ($rs)
		{
			$strSql = '
				UPDATE b_search_content
				SET CUSTOM_RANK=0
				WHERE CUSTOM_RANK<>0
			';
			$rs = $DB->Query($strSql);
		}
		return $rs;
	}

	function NextUpdate()
	{
		$DB = CDatabase::GetModuleConnection('search');

		$rs = $this->GetList(
			[
				'SITE_ID' => 'ASC',
				'MODULE_ID' => 'ASC',
				'PARAM1' => 'ASC',
				'PARAM2' => 'ASC',
				'ITEM_ID' => 'ASC',
			],
			[
				'APPLIED' => 'N',
			]
		);
		if ($ar = $rs->Fetch())
		{
			$strSql = '
				UPDATE b_search_content
				SET CUSTOM_RANK=' . intval($ar['RANK']) . '
				WHERE CUSTOM_RANK<>' . intval($ar['RANK']) . "
				AND EXISTS (
					SELECT *
					FROM b_search_content_site scs
					WHERE scs.SEARCH_CONTENT_ID = b_search_content.ID
					AND scs.SITE_ID = '" . $DB->ForSQL($ar['SITE_ID']) . "'
				)
				AND MODULE_ID='" . $DB->ForSQL($ar['MODULE_ID']) . "'
				" . ($ar['PARAM1'] != '' ? "AND PARAM1='" . $DB->ForSQL($ar['PARAM1']) . "'" : '') . '
				' . ($ar['PARAM2'] != '' ? "AND PARAM2='" . $DB->ForSQL($ar['PARAM2']) . "'" : '') . '
				' . ($ar['ITEM_ID'] != '' ? "AND ITEM_ID='" . $DB->ForSQL($ar['ITEM_ID']) . "'" : '') . '
			';
			$upd = $DB->Query($strSql);
			if ($upd)
			{
				$upd = $this->Update($ar['ID'], ['APPLIED' => 'Y']);
			}
			else
			{
				$this->LAST_ERROR = GetMessage('customrank_error_update') . '<br>';
			}
		}

		if ($this->LAST_ERROR == '')
		{
			$res = ['DONE' => 0, 'TODO' => 0];
			$strSql = '
				SELECT APPLIED,COUNT(*) C
				FROM b_search_custom_rank
				GROUP BY APPLIED
			';
			$rs = $DB->Query($strSql);
			while ($ar = $rs->Fetch())
			{
				if ($ar['APPLIED'] == 'Y')
				{
					$res['DONE'] = $ar['C'];
				}
				elseif ($ar['APPLIED'] == 'N')
				{
					$res['TODO'] = $ar['C'];
				}
			}
			return $res;
		}
		else
		{
			return false;
		}
	}

	public static function __GetParam($lang, $site_id, $module_id = false, $param1 = false, $param2 = false, $item_id = false)
	{
		$name = '';
		if ($module_id == 'iblock' && CModule::IncludeModule('iblock'))
		{
			if ($item_id !== false)
			{
				$rs = CIBlockElement::GetByID($item_id);
				if ($ar = $rs->GetNext())
				{
					$name = $ar['NAME'];
				}
			}
			elseif ($param2 !== false)
			{
				$rs = CIBlock::GetByID($param2);
				if ($ar = $rs->GetNext())
				{
					$name = $ar['NAME'];
				}
			}
			elseif ($param1 !== false)
			{
				$rs = CIBlockType::GetByIDLang($param1, $lang);
				if (is_array($rs))
				{
					$name = $rs['NAME'];
				}
			}
			else
			{
				$name = GetMessage('customrank_iblocks');
			}
		}
		elseif ($module_id == 'forum' && CModule::IncludeModule('forum'))
		{
			if ($item_id !== false)
			{
				$name = '';
			}
			elseif ($param2 !== false)
			{
				$rs = CForumTopic::GetByID($param2);
				if (is_array($rs))
				{
					$name = htmlspecialcharsex($rs['TITLE']);
				}
			}
			elseif ($param1 !== false)
			{
				$rs = CForumNew::GetByID($param1);
				if (is_array($rs))
				{
					$name = htmlspecialcharsex($rs['NAME']);
				}
			}
			else
			{
				$name = GetMessage('customrank_forum');
			}
		}
		elseif ($module_id == 'main')
		{
			if ($item_id !== false)
			{
				$name = '';
			}
			else
			{
				$name = GetMessage('customrank_files');
			}
		}
		elseif ($module_id === false)
		{
			$rs = CSite::GetByID($site_id);
			if ($ar = $rs->GetNext())
			{
				$name = $ar['NAME'];
			}
		}
		else
		{
			$name = false;
		}

		return $name;
	}

	public static function ModulesList()
	{
		return array_merge(['main' => GetMessage('customrank_files')], CSearchParameters::GetModulesList());
	}

	public static function ModulesSelectBox($sFieldName, $sValue, $sDefaultValue = '', $sFuncName = '', $field = 'class="typeselect"')
	{
		$s = '<select name="' . $sFieldName . '" id="' . $sFieldName . '" ' . $field;
		if ($sFuncName <> '')
		{
			$s .= ' OnChange="' . $sFuncName . '"';
		}
		$s .= '>' . "\n";

		$s1 = '<option value="main"' . ($sValue == 'main' ? ' selected' : '') . '>' . GetMessage('customrank_files') . '</option>' . "\n";
		foreach (CSearchParameters::GetModulesList() as $module_id => $module_name)
		{
			$s1 .= '<option value="' . $module_id . '"' . ($sValue == $module_id ? ' selected' : '') . '>' . htmlspecialcharsEx($module_name) . '</option>' . "\n";
		}

		if ($sDefaultValue <> '')
		{
			$s .= "<option value='NOT_REF'>" . htmlspecialcharsEx($sDefaultValue) . '</option>';
		}

		return $s . $s1 . '</select>';
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit