%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(); }