%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/bitrix/www/local/components/p4/p.castings.feedback/
Upload File :
Create Path :
Current File : /home/bitrix/www/local/components/p4/p.castings.feedback/component.php

<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();

/* @var array $arParams */
/* @var array $arResult */
/* @global CMain $APPLICATION */
/* @global CUser $USER */

define('CASTING_SEND_AS_PDF', false);
define('CASTING_SEND_DEBUG', false);

$arResult['POST_ACTION'] = $arParams['POST_URL'];
$ajaxTemplate = 'ajax-post';
$isPortfolio = true;

if ($_SERVER["REQUEST_METHOD"] == "POST" && check_bitrix_sessid())
{ // Постинг отклика
	
	if (isset($_REQUEST['FEEDBACK_CASTING_ID']) && intval($_REQUEST['FEEDBACK_CASTING_ID']) > 0)
	{
		if ($USER->IsAuthorized())
		{
			if (strpos($USER->GetEmail(),'-no-reply@port4lio.pro') === false)
			{
				$profile = getUserProfile($USER->GetID());
				
				$arLimit = MoneySubscribeHelper::getSubscribesState($profile['ID']);
				if ($arLimit === false || $arLimit[ProfileTypeHelper::CASTING_STATE_IS_OVER])
				{
					$arResult['ERRORS'] = GetMessage('LIMIT_OVER');
				}
				else
				{
					$rsCasting = CIBlockElement::GetList(Array(), Array("IBLOCK_ID" => 12, "ID" => $_REQUEST['FEEDBACK_CASTING_ID']), false, false,
						array("IBLOCK_ID", "ID", "NAME", "IBLOCK_SECTION_ID", "PROPERTY_CONTACT_NAME", "PROPERTY_CONTACT_EMAIL", "PROPERTY_CASTING_TEXT"));
					if ($arCasting = $rsCasting->GetNext())
					{
						$feebackText = strip_tags($_REQUEST['FEEDBACK_TEXT']);
						$laq = SITE_ID == "p4" ? "&#10077;" : "&laquo;";
						$raq = SITE_ID == "p4" ? "&#10078;" : "&raquo;";
						$fbackText = strlen($feebackText) > 0 ? "<p style='color: #626658;'>" . $laq . $feebackText . $raq . "</p>" : "";
						
						$arFeedbackFields = array(
							'IBLOCK_ID' => intval($arParams['IBLOCK_ID']),
							'NAME' => $profile['NAME'] . ' -> #' . $arCasting['ID'],
							'DETAIL_TEXT' => $feebackText,
							'PROPERTY_VALUES' => array('VACANCY' => $arCasting['ID'], 'USER_ID' => $USER->GetID())
						);
						
						$el = new CIBlockElement;
						if ($feebackID = $el->Add($arFeedbackFields, false, false, false))
						{
							$arResult['OK'] = $arFeedbackFields;
							
							$rsUser = CUser::GetByID($USER->GetID());
							if ($arUser = $rsUser->GetNext())
							{
								
								$r = CIBlockElement::GetList([], ["IBLOCK_ID" => IBLOCK_PROFILE_ID, "PROPERTY_ACCOUNT" => $USER->GetID(), "ACTIVE" => 'Y'], false, false,
									["IBLOCK_ID", "ID", "NAME", "CODE", "DETAIL_PICTURE", "DETAIL_TEXT", "IBLOCK_SECTION_ID", "PROPERTY_*"]);
								if ($ob = $r->GetNextElement())
								{
									$ar_fields = $ob->GetFields();
									$pr_avatar = CFile::GetPath($ar_fields["DETAIL_PICTURE"]);
									$pr_code = SITE_DIR . $ar_fields['CODE'] . "/";
									$ar_props = $ob->GetProperties();
									$pr_age = $ar_props["AGE"]["VALUE"];
									$pr_height = $ar_props["HEIGHT"]["VALUE"];
									$pr_weight = $ar_props["WEIGHT"]["VALUE"];
									$pr_breast = $ar_props["BREAST"]["VALUE"];
									$pr_waist = $ar_props["WAIST"]["VALUE"];
									$pr_hip = $ar_props["HIP"]["VALUE"];
									$region = "";
									if (isset($ar_props["REGION"]["VALUE"]) && intval($ar_props["REGION"]["VALUE"]) > 0)
									{
										$arFilter = Array("ID" => $ar_props["REGION"]["VALUE"]);
										$arSelect = Array("ID", "NAME", "IBLOCK_SECTION_ID", "PROPERTY_NAME_RU");
										$res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
										if ($ar_res = $res->GetNext())
										{
											$nam_reg = (isset($ar_res["PROPERTY_NAME_RU_VALUE"]) && SITE_ID == "ru") ?
												$ar_res["PROPERTY_NAME_RU_VALUE"] : $ar_res["NAME"];
											$region = $nam_reg;
											$s_ida = $ar_res["IBLOCK_SECTION_ID"];
										}
										if (isset($s_ida))
										{
											$arFilter = Array("ID" => $s_ida, "IBLOCK_ID" => 6);
											$arSelect = Array("ID", "NAME", "IBLOCK_SECTION_ID", "UF_NAME_RU");
											$res = CIBlockSection::GetList(Array(), $arFilter, false, $arSelect, false);
											if ($ar_res = $res->GetNext())
											{
												$s_idb = $ar_res["IBLOCK_SECTION_ID"];
												if (IntVal($s_idb) == 31)
												{
													$nam_reg =
														(isset($ar_res["UF_NAME_RU"]) && SITE_ID == "ru") ? $ar_res["UF_NAME_RU"] : $ar_res["NAME"];
													$region = $region . ", " . $nam_reg;
												};
											}
										};
										if (isset($s_idb))
										{
											$arFilter = Array("ID" => $s_idb, "IBLOCK_ID" => 6);
											$arSelect = Array("ID", "NAME", "IBLOCK_SECTION_ID", "UF_NAME_RU");
											$res = CIBlockSection::GetList(Array(), $arFilter, false, $arSelect, false);
											if ($ar_res = $res->GetNext())
											{
												$nam_reg = (isset($ar_res["UF_NAME_RU"]) && SITE_ID == "ru") ?
													$ar_res["UF_NAME_RU"] : $ar_res["NAME"];
												$region = $region . ", " . $nam_reg;
												$s_idc = $ar_res["IBLOCK_SECTION_ID"];
											}
										};
									}
									
									$cast_text = strlen($arCasting['PROPERTY_CASTING_TEXT_VALUE']) > 150 ? substr($arCasting['PROPERTY_CASTING_TEXT_VALUE'], 0, 150) : $arCasting['PROPERTY_CASTING_TEXT_VALUE'];
									$arFields = array(
										"CASTING_CONTACT_EMAIL" => $arCasting['PROPERTY_CONTACT_EMAIL_VALUE'],
										"CASTING_CONTACT_NAME" => $arCasting['PROPERTY_CONTACT_NAME_VALUE'],
										"CASTING_NAME" => $arCasting['NAME'],
										"CASTING_ID" => $arCasting['ID'],
										"FEEDBACK_TEXT" => $fbackText,
										"PROFILE_NAME" => $arUser["NAME"],
										"PROFILE_AVATAR" => $pr_avatar,
										"PROFILE_AGE" => $pr_age,
										"PROFILE_LAST_NAME" => $arUser["LAST_NAME"],
										"PROFILE_REGION" => $region,
										"PROFILE_PHONE" => strlen($arUser['UF_USER_PHONE']) > 0 ? $arUser['UF_USER_PHONE'] : $arUser["PERSONAL_MOBILE"],
										"PROFILE_EMAIL" => strlen($arUser['UF_USER_PHONE']) > 0 ? $arUser['EMAIL'] : // -no-reply@port4lio.pro
											(strlen($arUser["PERSONAL_MAILBOX"]) > 0 ? $arUser["PERSONAL_MAILBOX"] : $arUser["WORK_MAILBOX"]),
										"PROFILE_HEIGHT" => $pr_height,
										"PROFILE_WEIGHT" => $pr_weight,
										"PROFILE_BREAST" => $pr_breast,
										"PROFILE_WAIST" => $pr_waist,
										"PROFILE_HIP" => $pr_hip,
										"FEEDBACK_URL" => $pr_code,
										"CASTING_DESCRIPTION" => '<b>' . $arCasting['NAME'] . '</b><br/>' . $cast_text . '... ',
										"CASTING_URL" => SITE_DIR . 'castings/#' . $arCasting['ID']
									);
									
									if (CASTING_SEND_AS_PDF)
									{
										$arFields['PROFILE_ID'] = $ar_fields['ID'];
										$arFields['PROFILE_CODE'] = $ar_fields['CODE'];
									}
									else
									{
										$ar_port_path = array();
										
										$db_list = CIBlockSection::GetList(Array(),
											Array("IBLOCK_ID" => 4, "DEPTH_LEVEL" => 1, "UF_PORTF_USR" => $ar_fields['ID']), false,
											array("IBLOCK_ID", "ID", "UF_PORTF_USR")
										);
										if ($ar_result = $db_list->GetNext()) $sid = $ar_result["ID"];
										$r_port = CIBlockElement::GetList(array("RAND" => "ASC"),
											array("IBLOCK_ID" => 4, "SECTION_ID" => $sid, "INCLUDE_SUBSECTIONS" => "Y", "!PROPERTY_ADULT" => 1), false, array("nTopCount" => 9),
											array("IBLOCK_ID", "ID", "NAME", "CODE", "DETAIL_PICTURE", "DETAIL_TEXT", "IBLOCK_SECTION_ID", "PROPERTY_*"));
										while ($ar_res_port = $r_port->GetNext())
										{
											$ar_port_path[] = CFile::GetPath($ar_res_port['DETAIL_PICTURE']);
											$pic_info = CFile::GetByID($ar_res_port['DETAIL_PICTURE']);
											$arPicInfo = $pic_info->Fetch();
											$arTypeIm[] = intval($arPicInfo['HEIGHT']) > intval($arPicInfo['WIDTH']) ? 'V' : 'H';
										};
										
										if (count($ar_port_path) < 9) $isPortfolio = false;
										
										$arPortfolio = array(
											"PROFILE_PORTFOLIO_1" => (isset($ar_port_path[0]) && strlen($ar_port_path[0]) > 0) ? $ar_port_path[0] : "",
											"PROFILE_PORTFOLIO_2" => (isset($ar_port_path[1]) && strlen($ar_port_path[1]) > 0) ? $ar_port_path[1] : "",
											"PROFILE_PORTFOLIO_3" => (isset($ar_port_path[2]) && strlen($ar_port_path[2]) > 0) ? $ar_port_path[2] : "",
											"PROFILE_PORTFOLIO_4" => (isset($ar_port_path[3]) && strlen($ar_port_path[3]) > 0) ? $ar_port_path[3] : "",
											"PROFILE_PORTFOLIO_5" => (isset($ar_port_path[4]) && strlen($ar_port_path[4]) > 0) ? $ar_port_path[4] : "",
											"PROFILE_PORTFOLIO_6" => (isset($ar_port_path[5]) && strlen($ar_port_path[5]) > 0) ? $ar_port_path[5] : "",
											"PROFILE_PORTFOLIO_7" => (isset($ar_port_path[6]) && strlen($ar_port_path[6]) > 0) ? $ar_port_path[6] : "",
											"PROFILE_PORTFOLIO_8" => (isset($ar_port_path[7]) && strlen($ar_port_path[7]) > 0) ? $ar_port_path[7] : "",
											"PROFILE_PORTFOLIO_9" => (isset($ar_port_path[8]) && strlen($ar_port_path[8]) > 0) ? $ar_port_path[8] : "",
											"TYPE_IMAGE_1" => (isset($arTypeIm[0]) && $arTypeIm[0] == "V") ? "top" : "center",
											"TYPE_IMAGE_2" => (isset($arTypeIm[1]) && $arTypeIm[1] == "V") ? "top" : "center",
											"TYPE_IMAGE_3" => (isset($arTypeIm[2]) && $arTypeIm[2] == "V") ? "top" : "center",
											"TYPE_IMAGE_4" => (isset($arTypeIm[3]) && $arTypeIm[3] == "V") ? "top" : "center",
											"TYPE_IMAGE_5" => (isset($arTypeIm[4]) && $arTypeIm[4] == "V") ? "top" : "center",
											"TYPE_IMAGE_6" => (isset($arTypeIm[5]) && $arTypeIm[5] == "V") ? "top" : "center",
											"TYPE_IMAGE_7" => (isset($arTypeIm[6]) && $arTypeIm[6] == "V") ? "top" : "center",
											"TYPE_IMAGE_8" => (isset($arTypeIm[7]) && $arTypeIm[7] == "V") ? "top" : "center",
											"TYPE_IMAGE_9" => (isset($arTypeIm[8]) && $arTypeIm[8] == "V") ? "top" : "center",
											"ROW_2" => count($ar_port_path) <= 3 ? " display: none;" : "",
											"ROW_3" => count($ar_port_path) <= 6 ? " display: none;" : "",
										);
										
										$arFields = array_merge($arFields, $arPortfolio);
									}
									
									if ($isPortfolio)
									{
										if (CASTING_SEND_DEBUG)
										{
											$event = new CEvent;
											$event->SendImmediate("CASTING_FEEDBACK_PDF", SITE_ID, $arFields);
										}
										else
										{
											$event = new CEvent;
											$event->Send(CASTING_SEND_AS_PDF ? "CASTING_FEEDBACK_PDF" : "CASTING_FEEDBACK", SITE_ID, $arFields);
										}
									}
									else
									{
										unset($arResult['OK']);
										$arResult['ERRORS'] = GetMessage("FILL_YOUR_PORTFOLIO");
										CIBlockElement::Delete($feebackID); // Удаляем сохраненный отклик (что бы мог отправить заново)
									}
									
								}
							};
						}
						else
						{
							$arResult['ERRORS'] = GetMessage("ERROR_AT_SAVING") . '(' . $arParams['IBLOCK_ID'] . '): ' . $el->LAST_ERROR;
						};
						
						if ($isPortfolio)
						{
							if (!CASTING_SEND_DEBUG)
							{
								// Обновляем счетчик
								$cnt = CIBlockElement::GetList(array(), array('IBLOCK_ID' => $arParams['IBLOCK_ID'], 'PROPERTY_VACANCY' => $arCasting['ID']), array());
								CIBlockElement::SetPropertyValuesEx($arCasting['ID'], $arCasting['IBLOCK_ID'], array('FEEDBACK_COUNT' => $cnt));
								
								// Шлем уведомление
								$arMessageFields = array(
									"TO_USER_ID" => $arCasting['CREATED_BY'],
									"FROM_USER_ID" => 0,
									"NOTIFY_TYPE" => IM_NOTIFY_SYSTEM,
									"NOTIFY_MODULE" => "im",
									"NOTIFY_MESSAGE" => GetMessage("NEW_RESPONSE_FROM") . $profile['NAME']
										. GetMessage("ON_YOUR_VACANCY") . '"' . $arCasting['NAME'] . '": ' . $feebackText
								);
								CIMNotify::Add($arMessageFields);
							}
						}
					}
					else $arResult['ERRORS'] = GetMessage("AD") . '#' . $_REQUEST['FEEDBACK_CASTING_ID'] . GetMessage("FOR_RESPONSE_IS_NOT_FOUND");
				}
			}
			else $arResult['ERRORS'] = GetMessage("SENDING_OF_WITHOUT_EMAIL_IS_FORBIDDEN");
		}
		else $arResult['ERRORS'] = GetMessage("SENDING_OF_ANONYMOUS_RESPONSES_IS_FORBIDDEN");
	}
	else $arResult['ERRORS'] = GetMessage("NOT_SPECIFIED_AD_ID");
}

elseif ($_SERVER["REQUEST_METHOD"] == "GET" && check_bitrix_sessid())
{ // Загрузка списка откликов для вакансии
	
	if (isset($_REQUEST['VACANCY_ID']) && intval($_REQUEST['VACANCY_ID']) > 0)
	{
		
		$rsList = CIBlockElement::GetList(array('created' => 'DESC'),
			array('IBLOCK_ID' => $arParams['IBLOCK_ID'], 'PROPERTY_VACANCY' => $_REQUEST['VACANCY_ID']), false, false,
			array('ID', 'NAME', 'CREATED_BY', 'DATE_CREATE', 'DETAIL_TEXT'));
		while ($vacancy = $rsList->Fetch())
		{
			$vacancy['USER']['PROFILE'] = getUserProfile($vacancy['CREATED_BY']);
			$vacancy['USER']['META'] = getUserMeta($vacancy['CREATED_BY']);
			$arResult['FEEDBACKS'][] = $vacancy;
		}
		
		$ajaxTemplate = 'ajax-list';
	}
	else $arResult['ERRORS'] = GetMessage("NOT_SPECIFIED_AD_ID");
	
}

if (isset($_REQUEST["ajax"]) && $_REQUEST["ajax"] === "Y")
{
	
	$this->setFrameMode(false);
	$APPLICATION->RestartBuffer();
	$this->IncludeComponentTemplate($ajaxTemplate);
	define("PUBLIC_AJAX_MODE", true);
	require_once($_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/main/include/epilog_after.php");
	die();
}
else
{
	$this->IncludeComponentTemplate();
}

Zerion Mini Shell 1.0