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/rospirotorg.ru/bitrix/modules/socialnetwork/classes/mysql/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/socialnetwork/classes/mysql/group_subject.php
<?php

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/socialnetwork/classes/general/group_subject.php");

class CSocNetGroupSubject extends CAllSocNetGroupSubject
{
	/***************************************/
	/********  DATA MODIFICATION  **********/
	/***************************************/
	public static function Add($arFields)
	{
		global $DB, $CACHE_MANAGER;

		$arFields1 = \Bitrix\Socialnetwork\Util::getEqualityFields($arFields);

		if (!self::CheckFields("ADD", $arFields))
		{
			return false;
		}

		$arSiteID = [];
		if (array_key_exists("SITE_ID", $arFields))
		{
			if (is_array($arFields["SITE_ID"]))
			{
				foreach ($arFields["SITE_ID"] as $site_id)
				{
					$arSiteID[$site_id] = $DB->ForSQL($site_id);
				}
			}
			else
			{
				$arSiteID[$arFields["SITE_ID"]] = $DB->ForSQL($arFields["SITE_ID"]);
			}
		}

		if (empty($arSiteID))
		{
			unset($arFields["SITE_ID"]);
		}
		else
		{
			$arFields["SITE_ID"] = end($arSiteID);
		}

		$arInsert = $DB->PrepareInsert("b_sonet_group_subject", $arFields);
		\Bitrix\Socialnetwork\Util::processEqualityFieldsToInsert($arFields1, $arInsert);

		$ID = false;
		if ($arInsert[0] <> '')
		{
			$strSql =
				"INSERT INTO b_sonet_group_subject(".$arInsert[0].") ".
				"VALUES(".$arInsert[1].")";
			$DB->Query($strSql);

			$ID = (int)$DB->LastID();

			if ($ID > 0 && !empty($arSiteID))
			{
				$DB->Query("
					DELETE FROM b_sonet_group_subject_site WHERE SUBJECT_ID = ".$ID."
				");

				$DB->Query("
					INSERT INTO b_sonet_group_subject_site(SUBJECT_ID, SITE_ID)
					SELECT ".$ID.", LID
					FROM b_lang
					WHERE LID IN ('".implode("', '", $arSiteID)."')
				");

				$events = GetModuleEvents("socialnetwork", "OnSocNetGroupSubjectAdd");
				while ($arEvent = $events->Fetch())
				{
					ExecuteModuleEventEx($arEvent, array($ID, &$arFields));
				}
			}

			if (CACHED_b_sonet_group_subjects != false)
			{
				$CACHE_MANAGER->CleanDir("b_sonet_group_subjects");
			}
		}

		return $ID;
	}

	/***************************************/
	/**********  DATA SELECTION  ***********/
	/***************************************/
	public static function GetList($arOrder = Array("SORT" => "ASC", "ID" => "DESC"), $arFilter = Array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
	{
		global $DB, $CACHE_MANAGER;

		if (count($arSelectFields) <= 0)
		{
			$arSelectFields = array("ID", "SITE_ID", "NAME", "SORT");
		}

		$bShouldBeCached = false;
		$cacheId = "";
		if (CACHED_b_sonet_group_subjects != false)
		{
			if ($arSelectFields == false && $arNavStartParams == false && $arGroupBy == false)
			{
				$bFilterByID = array_key_exists("ID", $arFilter);
				$bFilterBySite = array_key_exists("SITE_ID", $arFilter);
				if (count($arFilter) == 1 && ($bFilterByID || $bFilterBySite))
				{
					$bShouldBeCached = true;
					$cacheId = "b_sonet_group_subjects".md5(serialize($arOrder));
					if ($CACHE_MANAGER->Read(CACHED_b_sonet_group_subjects, $cacheId, "b_sonet_group_subjects"))
					{
						$arResult = $CACHE_MANAGER->Get($cacheId);

						$arReturnValue = array();
						$cnt = count($arResult);
						for ($i = 0; $i < $cnt; $i++)
						{
							if ($bFilterByID && $arResult[$i]["ID"] == $arFilter["ID"])
							{
								$arReturnValue[] = $arResult[$i];
							}

							if (
								$bFilterBySite
								&& (
									(is_array($arFilter["SITE_ID"]) && in_array($arResult[$i]["SITE_ID"], $arFilter["SITE_ID"]))
									|| (!is_array($arFilter["SITE_ID"]) && $arResult[$i]["SITE_ID"] == $arFilter["SITE_ID"])
								)
							)
							{
								$arReturnValue[] = $arResult[$i];
							}
						}

						$res = new CDBResult;
						$res->InitFromArray($arResult);
						return $res;
					}
				}
			}
		}

		static $arFields1 = array(
			"ID" => Array("FIELD" => "S.ID", "TYPE" => "int"),
			"NAME" => Array("FIELD" => "S.NAME", "TYPE" => "string"),
			"SORT" => Array("FIELD" => "S.SORT", "TYPE" => "int"),
		);

		if (array_key_exists("SITE_ID", $arFilter))
		{
			$arFields["SITE_ID"] = Array("FIELD" => "SGSS.SITE_ID", "TYPE" => "string", "FROM" => "LEFT JOIN b_sonet_group_subject_site SGSS ON S.ID = SGSS.SUBJECT_ID");
			$strDistinct = " DISTINCT ";
			foreach ($arSelectFields as $i => $strFieldTmp)
			{
				if ($strFieldTmp === 'SITE_ID')
				{
					unset($arSelectFields[$i]);
				}
			}

			foreach ($arOrder as $by => $order)
			{
				if (!in_array($by, $arSelectFields))
				{
					$arSelectFields[] = $by;
				}
			}
		}
		else
		{
			$arFields["SITE_ID"] = Array("FIELD" => "S.SITE_ID", "TYPE" => "string");
			$strDistinct = " ";
		}

		$arFields = array_merge($arFields1, $arFields);

		$arSqls = CSocNetGroup::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);

		$arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", $strDistinct, $arSqls["SELECT"]);

		if (is_array($arGroupBy) && count($arGroupBy) === 0)
		{
			$strSql =
				"SELECT ".$arSqls["SELECT"]." ".
				"FROM b_sonet_group_subject S ".
				"	".$arSqls["FROM"]." ";
			if ($arSqls["WHERE"] <> '')
			{
				$strSql .= "WHERE ".$arSqls["WHERE"]." ";
			}
			if ($arSqls["GROUPBY"] <> '')
			{
				$strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
			}

			//echo "!1!=".htmlspecialcharsbx($strSql)."<br>";

			$dbRes = $DB->Query($strSql);
			if ($arRes = $dbRes->Fetch())
			{
				return $arRes["CNT"];
			}

			return false;
		}

		$strSql =
			"SELECT ".$arSqls["SELECT"]." ".
			"FROM b_sonet_group_subject S ".
			"	".$arSqls["FROM"]." ";
		if ($arSqls["WHERE"] <> '')
		{
			$strSql .= "WHERE ".$arSqls["WHERE"]." ";
		}

		if ($arSqls["GROUPBY"] <> '')
		{
			$strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
		}

		if ($arSqls["ORDERBY"] <> '')
		{
			$strSql .= "ORDER BY ".$arSqls["ORDERBY"]." ";
		}

		if (
			is_array($arNavStartParams)
			&& (int) ($arNavStartParams["nTopCount"] ?? null) <= 0
		)
		{
			$strSql_tmp =
				"SELECT COUNT('x') as CNT ".
				"FROM b_sonet_group_subject S ".
				"	".$arSqls["FROM"]." ";
			if ($arSqls["WHERE"] <> '')
			{
				$strSql_tmp .= "WHERE ".$arSqls["WHERE"]." ";
			}

			if ($arSqls["GROUPBY"] <> '')
			{
				$strSql_tmp .= "GROUP BY ".$arSqls["GROUPBY"]." ";
			}

			//echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";

			$dbRes = $DB->Query($strSql_tmp);
			$cnt = 0;
			if ($arSqls["GROUPBY"] == '')
			{
				if ($arRes = $dbRes->Fetch())
				{
					$cnt = $arRes["CNT"];
				}
			}
			else
			{
				// ТОЛЬКО ДЛЯ MYSQL!!! ДЛЯ ORACLE ДРУГОЙ КОД
				$cnt = $dbRes->SelectedRowsCount();
			}

			$dbRes = new CDBResult();

			//echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";

			$dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
		}
		else
		{
			if (is_array($arNavStartParams) && (int)$arNavStartParams["nTopCount"] > 0)
			{
				$strSql .= "LIMIT ".(int)$arNavStartParams["nTopCount"];
			}

			//echo "!3!=".htmlspecialcharsbx($strSql)."<br>";

			//$dbRes = $DB->Query($strSql);

			if (CACHED_b_sonet_group_subjects == false || !$bShouldBeCached)
			{
				$dbRes = $DB->Query($strSql);
			}
			else
			{
				$arResult = array();
				$dbRes = $DB->Query($strSql);
				while ($ar = $dbRes->Fetch())
				{
					$arResult[] = $ar;
				}

				$CACHE_MANAGER->Set($cacheId, $arResult);

				$dbRes = new CDBResult;
				$dbRes->InitFromArray($arResult);
			}
		}

		return $dbRes;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit