%PDF- %PDF-
Direktori : /proc/11976/task/11976/root/home/bitrix/www/local/php_interface/include/ |
Current File : //proc/11976/task/11976/root/home/bitrix/www/local/php_interface/include/rating_profile.php |
<? class RatingProfile { private $arMaxPortfolio = array( 22479 => 50, ProfileTypeHelper::DEFAULT_ID_UB => 50, ProfileTypeHelper::DEFAULT_ID_P4 => 50, 5683 => 150, // UB 5684 => 150, // UB 45937 => 150, // P4 45938 => 150, // P4 ); private $arUserFieldNames = array( 'PERSONAL_MOBILE','PERSONAL_PHONE', // Два телефона 'PERSONAL_WWW', // Сайт 'PERSONAL_ICQ', // Скайп 'PERSONAL_MAILBOX', // Е-майл 'UF_SOCIAL', // Социальные сети ); private $arPropNames = array( 'LANGUAGES', 'SEX', 'STAGE', 'HAIRCOLOR', 'HAIRLENGTH', 'SKINCOLOR', 'EYECOLOR', 'MODELTHEME', 'MODELOPTIONS', 'FACETYPE', 'HEIGHT', 'WEIGHT', 'BREAST', 'WAIST', 'HIP', 'SIZE', 'SHOES', 'MODELTYPE', 'WIDESCREEN' ); const VERIFED_BY_P4 = 'VERIFED_BY_P4'; private function calcPortfolio($profileID,$typeAccount) { if (intval($typeAccount)>0) $maxCount = $this->arMaxPortfolio[$typeAccount]; else $maxCount = $this->arMaxPortfolio[ProfileTypeHelper::DEFAULT_ID_P4]; $count = 0; $like = 0; $rsAlbum = CIBlockSection::GetList(array(),array("IBLOCK_ID"=>4, "DEPTH_LEVEL"=>1, "UF_PORTF_USR"=>$profileID), false); if ($arAlbum = $rsAlbum->Fetch()) { $rsPhoto = CIBlockElement::GetList(array(), array("IBLOCK_ID"=>4, "ACTIVE"=>'Y', "SECTION_ID"=>$arAlbum['ID'], "INCLUDE_SUBSECTIONS"=>'Y'),false, false, array('ID')); while ($arPhoto = $rsPhoto->Fetch()) { $count++; $arRatingResult = CRatings::GetRatingVoteResult('P4_PORTFOLIO', $arPhoto['ID'], 1); if (intval($arRatingResult['TOTAL_VOTES'])>0) $like += $arRatingResult['TOTAL_VOTES']; } } return $count>$maxCount?$maxCount:$count + $like; } private function calcContacts($userID) { $count = 0; if ($arUser = CUser::GetByID($userID)->Fetch()) { foreach($this->arUserFieldNames as $key) if (isset($arUser[$key])) { if (is_array($arUser[$key]) && count($arUser[$key])>0) $count += 1 * count($arUser[$key]); elseif (strlen($arUser[$key])>0) $count += 1; } } return $count; } private function calcInvites($userID) { $count = 0; $rsUser = CUser::GetByID($userID); $arUser = $rsUser->Fetch(); $cnt_inv = intval($arUser['UF_COUNT_INVITE']); $count = 10*$cnt_inv; return $count; } private function calcProfileProps(&$arProps) { $count = 0; foreach($this->arPropNames as $key) if ( isset($arProps[$key]) && ( (is_array($arProps[$key]['VALUE']) && count($arProps[$key]['VALUE'])>0) || strlen($arProps[$key]['VALUE'])>0 ) ) $count++; if ($count == count($this->arPropNames)) return 10; elseif ($count>0) return 5; return 0; } public function update() { CModule::IncludeModule("iblock"); $arFilter = array( 'IBLOCK_ID'=>IBLOCK_PROFILE_ID, 'SECTION_ID'=>7, //'!PROPERTY_TYPE_P4'=>false, 'ACTIVE'=>'Y' ); $count = 0; /* - Если удаляет и загружает новую фотографию = 1 балл ( из рейтинга при удалении ничего не вычитается - это бонусы за активность) */ $rs = CIBlockElement::GetList(array(), $arFilter); while ($ob = $rs->GetNextElement()) { $count++; $arProfile = $ob->GetFields(); $arProps = $ob->GetProperties(); $ratingA = $this->calcProfileProps($arProps); $ratingC = $this->calcContacts($arProps['ACCOUNT']['VALUE']); $ratingI = $this->calcInvites($arProps['ACCOUNT']['VALUE']); $ratingP = $this->calcPortfolio($arProfile['ID'],$arProps['TYPE_P4']['VALUE']); $ratingV = $arProps[static::VERIFED_BY_P4]['VALUE'] == 'Y' ? 10 : 0; $rating = $ratingA + $ratingC + $ratingI + $ratingP + $ratingV; CIBlockElement::SetPropertyValuesEx($arProfile['ID'], false, array('RATING_P4' => $rating)); echo $count." ".$arProfile['NAME']." #".$arProps['ACCOUNT']['VALUE'] ." A".$ratingA." + C".$ratingC." + I".$ratingI." + P".$ratingP." + V".$ratingV." = ".$rating."\n"; } } }