Your IP : 172.28.240.42


Current Path : /var/www/html/clients/amz.e-nk.ru/bitrix/modules/main/classes/general/
Upload File :
Current File : /var/www/html/clients/amz.e-nk.ru/bitrix/modules/main/classes/general/ratings_components.php

<?
IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/classes/general/ratings_components.php");

class CAllRatingsComponentsMain
{	
	// return configs of component-rating
	function OnGetRatingConfigs()
	{
	    $arConfigs = array(
	    	'MODULE_ID' => 'MAIN',
	    	'MODULE_NAME' => GetMessage('MAIN_RATING_NAME'),
	    );
		$arConfigs["COMPONENT"]["USER"]["VOTE"][] = array(
			"ID"	=> 'USER',
			"REFRESH_TIME"	=> '3600',
			"CLASS"	=> 'CRatingsComponentsMain',
			"CALC_METHOD"	=> 'CalcVoteUser',			
			"NAME" 	=> GetMessage('MAIN_RATING_USER_VOTE_USER_NAME'),
			"DESC" 	=> GetMessage('MAIN_RATING_USER_VOTE_USER_DESC'),
		    "FIELDS" => array(
				array(
					"ID" => 'COEFFICIENT',
					"DEFAULT" => '1',
				),
				array(
					"ID" => 'LIMIT',
					"NAME" => GetMessage('MAIN_RATING_USER_VOTE_USER_LIMIT_NAME'),
					"DEFAULT" => '30',
				),
			)
		);	
		$arConfigs["COMPONENT"]["USER"]["RATING"][] = array(
		    "ID"	=> 'BONUS',
			"REFRESH_TIME"	=> '3600',
			"CLASS"	=> 'CRatingsComponentsMain',
			"CALC_METHOD"	=> 'CalcUserBonus',						
			"NAME" => GetMessage('FORUM_RATING_USER_RATING_BONUS_NAME'),
			"DESC" => GetMessage('FORUM_RATING_USER_RATING_BONUS_DESC'),
			"FORMULA" => "StartValue * K",
			"FORMULA_DESC" => GetMessage('FORUM_RATING_USER_RATING_BONUS_FORMULA_DESC'),
		    "FIELDS" => array(
				array(
					"ID" => 'COEFFICIENT',
					"DEFAULT" => '1',
				),
			)
		);		
		return $arConfigs;
	}

		
	// return support object
	function OnGetRatingObject()
	{
		$arRatingConfigs = CRatingsComponentsMain::OnGetRatingConfigs();
		foreach ($arRatingConfigs["COMPONENT"] as $SupportType => $value)
			$arSupportType[] = $SupportType;
			
		return $arSupportType;
	}
	
	// check the value of the component-rating which relate to the module
	function OnAfterAddRating($ID, $arFields)
	{
		$arFields['CONFIGS']['MAIN'] = CRatingsComponentsMain::__CheckFields($arFields['ENTITY_ID'], $arFields['CONFIGS']['MAIN']);
		
		return $arFields;
	}
	
	// check the value of the component-rating which relate to the module
	function OnAfterUpdateRating($ID, $arFields)
	{
		$arFields['CONFIGS']['MAIN'] = CRatingsComponentsMain::__CheckFields($arFields['ENTITY_ID'], $arFields['CONFIGS']['MAIN']);
		
		return $arFields;
	}
	
	// Utilities
	
	// check input values, if value does not validate, set the default value
	function __CheckFields($entityId, $arConfigs)
	{
		$arDefaultConfig = CRatingsComponentsMain::__AssembleConfigDefault($entityId);
		
		if ($entityId == "USER") {
			if (isset($arConfigs['VOTE']['USER']))
			{
				if (!preg_match('/^\d{1,7}\.?\d{0,4}$/', $arConfigs['VOTE']['USER']['COEFFICIENT']))
					$arConfigs['VOTE']['USER']['COEFFICIENT'] = $arDefaultConfig['VOTE']['USER']['COEFFICIENT']['DEFAULT'];
				if (!preg_match('/^\d{1,5}$/', $arConfigs['VOTE']['USER']['LIMIT']))
					$arConfigs['VOTE']['USER']['LIMIT'] = $arDefaultConfig['VOTE']['USER']['LIMIT']['DEFAULT'];
			}
			if (isset($arConfigs['RATING']['BONUS']))
			{
				if (!preg_match('/^\d{1,7}\.?\d{0,4}$/', $arConfigs['RATING']['BONUS']['COEFFICIENT']))
					$arConfigs['RATING']['BONUS']['COEFFICIENT'] = $arDefaultConfig['RATING']['BONUS']['COEFFICIENT']['DEFAULT'];
			}
		}
		
		return $arConfigs;
	}
	
	// collect the default and regular expressions for the fields component-rating
	function __AssembleConfigDefault($objectType = null) 
	{
		$arConfigs = array();
		$arRatingConfigs = CRatingsComponentsMain::OnGetRatingConfigs();
		if (is_null($objectType)) 
		{
			foreach ($arRatingConfigs["COMPONENT"] as $OBJ_TYPE => $TYPE_VALUE)
				foreach ($TYPE_VALUE as $RAT_TYPE => $RAT_VALUE)
					foreach ($RAT_VALUE as $VALUE_CONFIG)
				   		foreach ($VALUE_CONFIG['FIELDS'] as $VALUE_FIELDS) 
				   		   $arConfigs[$OBJ_TYPE][$RAT_TYPE][$VALUE_CONFIG['ID']][$VALUE_FIELDS['ID']]['DEFAULT'] = $VALUE_FIELDS['DEFAULT'];
		}
		else 
		{
			foreach ($arRatingConfigs["COMPONENT"][$objectType] as $RAT_TYPE => $RAT_VALUE)
				foreach ($RAT_VALUE as $VALUE_CONFIG)
					foreach ($VALUE_CONFIG['FIELDS'] as $VALUE_FIELDS) 
				   		$arConfigs[$RAT_TYPE][$VALUE_CONFIG['ID']][$VALUE_FIELDS['ID']]['DEFAULT'] = $VALUE_FIELDS['DEFAULT'];

		}
		
		return $arConfigs;
	}	
}

?>