%PDF- %PDF-
| Direktori : /home/bitrix/www/local/components/p4/p.castings.feedback/ |
| 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" ? "❝" : "«";
$raq = SITE_ID == "p4" ? "❞" : "»";
$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();
}