%PDF- %PDF-
Direktori : /proc/self/root/proc/self/root/home/bitrix/www/local/components/UB/adbase.offer.edit/ |
Current File : //proc/self/root/proc/self/root/home/bitrix/www/local/components/UB/adbase.offer.edit/component.php |
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die(); $arResult["BX_SESSION_CHECK"] = bitrix_sessid_post(); $isDebug = false; if ($isDebug) { // Отладка $arResult['CASTING']['NAME'] = GetMessage("IT_REQUIRES_THE_SUPER_MIRACLE"); $arResult['CASTING_PROPS']['CASTING_TEXT'] = GetMessage("EVERY_WHIM_FOR_YOUR_MONEY"); $arResult['CASTING_PROPS']['COMPENSATION'] = '100'; $arResult['CASTING_PROPS']['SECTIONS'] = array(7); $arResult['CASTING_PROPS']['JOB_DATE'] = GetMessage("MARCH_28_2015"); } // Режим AJAX-подгрузки справочников if ($arParams['AJAX_REF']=='Y' && $_SERVER["REQUEST_METHOD"]=="GET") { $rs = CIBlockProperty::GetByID('COUNTRY', $arParams['IBLOCK_ID']); if($ar_res=$rs->GetNext()) { if ($_GET['REF']=='CITY') { // Список городов для текущего региона пользователя $arFilter = Array("ID"=>$_GET["SID"]); $arSelect = Array("ID", "NAME", "IBLOCK_SECTION_ID", "PROPERTY_NAME_RU"); $rsCity = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect); if ($arCity = $rsCity->GetNext()) { $rsNav = CIBlockSection::GetNavChain(false, $arCity['IBLOCK_SECTION_ID']); $region = ''; while($arNav = $rsNav->GetNext()) { $arFilterR = Array("ID"=>$arNav['ID'], "IBLOCK_ID"=>6); $arSelectR = Array("ID", "NAME", "IBLOCK_SECTION_ID", "UF_NAME_RU"); $res = CIBlockSection::GetList(Array(), $arFilterR, false, $arSelectR, false); if($ar_res = $res->GetNext()) {$nam_region = (isset($ar_res["UF_NAME_RU"]) && SITE_ID == "s1") ? $ar_res["UF_NAME_RU"] : $arNav['NAME']; } $region .= $nam_region.(($arNav['ID']==$arCity['IBLOCK_SECTION_ID'])?'':', '); } ?><optgroup label="<?=$region?>"><? $res = CIBlockElement::GetList(Array("SORT"=>"ASC", "NAME"=>"ASC"), Array("IBLOCK_ID"=>$ar_res['LINK_IBLOCK_ID'], "ACTIVE"=>"Y", "SECTION_ID"=>$arCity['IBLOCK_SECTION_ID'], "INCLUDE_SUBSECTIONS"=>"Y"), false, false, $arSelect); while($ar_result=$res->GetNext()) { $nam_reg = (isset($ar_result["PROPERTY_NAME_RU_VALUE"]) && SITE_ID == "s1") ? $ar_result["PROPERTY_NAME_RU_VALUE"] : $ar_result["NAME"]; ?><option value="<?=$ar_result['ID']?>"><?=$nam_reg?></option><? } ?></optgroup><? } } elseif (!empty($_GET['term'])) { $arSelect = Array("ID", "NAME", "IBLOCK_SECTION_ID", "PROPERTY_NAME_RU"); $response = array(); $arFilt = Array("IBLOCK_ID"=>$ar_res['LINK_IBLOCK_ID'], "ACTIVE"=>"Y", "INCLUDE_SUBSECTIONS"=>"Y", array( "LOGIC" => "OR", array("NAME"=>"%".$_GET['term']."%"), array("PROPERTY_NAME_RU"=>"%".$_GET['term']."%"), ) ); $rsCity = CIBlockElement::GetList(Array("SORT"=>"ASC", "NAME"=>"ASC"), $arFilt, false, false, $arSelect); while ($arCity = $rsCity->GetNext()) { if (!array_key_exists($arCity['IBLOCK_SECTION_ID'], $response)) { $rsNav = CIBlockSection::GetNavChain(false, $arCity['IBLOCK_SECTION_ID']); $region = ''; while($arNav = $rsNav->GetNext()) { $arFilterR = Array("ID"=>$arNav['ID'], "IBLOCK_ID"=>6); $arSelectR = Array("ID", "NAME", "IBLOCK_SECTION_ID", "UF_NAME_RU"); $resr = CIBlockSection::GetList(Array(), $arFilterR, false, $arSelectR, false); if($ar_resr = $resr->GetNext()) {$nam_reg_t = (isset($ar_resr["UF_NAME_RU"]) && SITE_ID == "s1") ? $ar_resr["UF_NAME_RU"] : $arNav['NAME']; } $region .= $nam_reg_t.(($arNav['ID']==$arCity['IBLOCK_SECTION_ID'])?'':', '); } $response[$arCity['IBLOCK_SECTION_ID']] = array( 'group' => true, 'text' => $region, 'items' => array() ); } $nam_r = (isset($arCity["PROPERTY_NAME_RU_VALUE"]) && SITE_ID == "s1") ? $arCity["PROPERTY_NAME_RU_VALUE"] : $arCity["NAME"]; $response[$arCity['IBLOCK_SECTION_ID']]['items'][] = array('value'=>$arCity['ID'],'text'=>$nam_r); } echo json_encode($response); } else { echo json_encode($_REQUEST); } } define("PUBLIC_AJAX_MODE", true); require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/epilog_after.php"); die(); } // Публикация объявления доступна только для пользователей, обладающих публичных профилем if ($USER->IsAuthorized()) { if (!($arParams['NEED_PROFILE']=='Y'? isUserProfile($USER->GetID()):isJobUser($USER->GetID())) ) { $arResult["ERROR_ACCESS_DENIED"] = 'Y'; } elseif (intval($arParams['SILENT_PERIOD'])>0 && !$USER->IsAdmin()) { $rsOffers = CIBlockElement::GetList(Array("id"=>"desc"), Array("IBLOCK_ID"=>$arParams['IBLOCK_ID'],'CREATED_BY'=>$USER->GetID(),'ACTIVE'=>'Y')); if ($arLastOffer = $rsOffers->GetNext()) { $silentPeriod = round((mktime() - MakeTimeStamp($arLastOffer['DATE_CREATE'],CLang::GetDateFormat("FULL"))) / 60 / 24); if ($silentPeriod<IntVal($arParams['SILENT_PERIOD'])) { $arResult["ERROR_SILENT_PERIOD"] = 'Y'; $silentPeriod = IntVal($arParams['SILENT_PERIOD']) - $silentPeriod; if ($silentPeriod==0) $s=GetMessage("LESS_THAN_ONE_HOUR"); elseif ($silentPeriod==1) $s=$silentPeriod.GetMessage("HOUR"); elseif ($silentPeriod>1 && $silentPeriod<5) $s=$silentPeriod.GetMessage("HOURS_A"); else $s=$silentPeriod.GetMessage("HOURS_OV"); $arResult["SILENT_PERIOD"] = $s; } } } } else { $arResult["ERROR_ACCESS_DENIED"] = 'Y'; } /* function checkDateFormat($datetime) { $format = "DD.MM.YYYY"; if ($arr = ParseDateTime($datetime, $format)) return true; else return false; } */ function clearDateMask($date) { if ($date=="__.__.____" || $date=="__/__/____") return ''; else return $date; } if ($_SERVER["REQUEST_METHOD"]=="POST" && check_bitrix_sessid()) { if (!empty($_REQUEST['ACTION']) && intval($_REQUEST['ID'])>0) { $response = ''; $rsItem = CIBlockElement::GetByID(intval($_REQUEST['ID'])); if ($arItem = $rsItem->GetNext()) { if( $arItem['CREATED_BY']!=$USER->GetID()) $response = GetMessage("YOU_ARE_NOT_THE_AUTHOR_OF_AD").$_REQUEST['ID']; } else $response = GetMessage("AD_ID").$_REQUEST['ID'].GetMessage("NOT_FOUND"); if (!empty($response)) { // Выход по ошибке echo $response; define("PUBLIC_AJAX_MODE", true); require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/epilog_after.php"); die(); } if ($_REQUEST['ACTION']=='STOP') { // Снятие с публикации $el = new CIBlockElement; if ($el->Update($arItem['ID'], array('ACTIVE'=>'N'))) $response = GetMessage("AD_IS_REMOVED_FROM_PUBLICATION"); else $response = GetMessage("AN_ERROR_HAS_OCCURRED_WHEN_REMOVING_AD_ID").$_REQUEST['ID'].GetMessage("FROM_PUBLICATION_PLEASE_CONTACT"); echo $response; define("PUBLIC_AJAX_MODE", true); require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/epilog_after.php"); die(); } elseif ($_REQUEST['ACTION']=='COPY') { // Повторить } elseif ($_REQUEST['ACTION']=='EDIT') { // Редактировать $rsProps = CIBlockElement::GetProperty($arParams['IBLOCK_ID'], $arItem['ID'], array(), array()); while ($ob = $rsProps->GetNext()) { if ($ob['MULTIPLE']=='Y') { if (array_key_exists($ob['CODE'],$arProps)) $arProps[$ob['CODE']][] = $ob['VALUE']; else $arProps[$ob['CODE']] = array($ob['VALUE']); } else $arProps[$ob['CODE']] = $ob['VALUE']; } $arResult['CASTING'] = $arItem; $arResult['CASTING_PROPS'] = $arProps; } elseif ($_REQUEST['ACTION']=='DELETE') { // Удалить } } else { CModule::IncludeModule("bizproc"); if (isset($_POST['CASTING_PROPS']['JOB_DATE'])) $_POST['CASTING_PROPS']['JOB_DATE']=clearDateMask($_POST['CASTING_PROPS']['JOB_DATE']); if (isset($_POST['CASTING_PROPS']['START_DATE'])) $_POST['CASTING_PROPS']['START_DATE']=clearDateMask($_POST['CASTING_PROPS']['START_DATE']); if (isset($_POST['CASTING_PROPS']['END_DATE'])) $_POST['CASTING_PROPS']['END_DATE']=clearDateMask($_POST['CASTING_PROPS']['END_DATE']); $rsCity = CIBlockElement::GetByID($_POST['CASTING_PROPS']['CITY']); if ($arCity = $rsCity->GetNext()) { $rsNav = CIBlockSection::GetNavChain(false, $arCity['IBLOCK_SECTION_ID']); if($arNav = $rsNav->GetNext()) $_POST['CASTING_PROPS']['COUNTRY'] = $arNav['ID']; $_POST['CASTING']['PREVIEW_TEXT'] = $arParams['PREFIX'].$_POST['CASTING']['NAME']."\n".$arNav['NAME']." / ".$arCity['NAME']; } if (!empty($_POST['NEW_IMAGE'])) { // Загружаем изображение $tmpdir = $_SERVER["DOCUMENT_ROOT"]."/tmp"; $tmpfname = tempnam($tmpdir,"OFFER").".jpg"; $image = explode(",",$_POST["NEW_IMAGE"]); file_put_contents($tmpfname, base64_decode($image[1])); $arFile = CFile::MakeFileArray($tmpfname); if ($isDebug) { ?><pre><? print_r($arFile); ?></pre><? } // $arFile['old_file'] = $ar_fields['DETAIL_PICTURE']; ДЛЯ УДАЛЕНИЯ ПРИ ОБНОВЛЕНИИ $_POST['CASTING']['DETAIL_PICTURE'] = $arFile; } else { // Подгружаем аватар (если не задано изображение) $r = CIBlockElement::GetList(Array(), Array("IBLOCK_ID"=>IBLOCK_PROFILE_ID, "PROPERTY_ACCOUNT"=>$USER->GetID()), false, false, array("IBLOCK_ID", "ID", "NAME", "DETAIL_PICTURE")); if($ar_fields = $r->GetNext()) { $avatar = $ar_fields["DETAIL_PICTURE"]; if ($avatar>0) { $image = CFile::CopyFile($avatar); $_POST['CASTING']['DETAIL_PICTURE'] = CFile::MakeFileArray($image); } } } $rsEnum = CIBlockPropertyEnum::GetList(array(), array("ID"=>IntVal($_POST['CASTING_PROPS']['PUBLIC_DATE']))); if ($arEnum = $rsEnum->GetNext()) $publicDays = $arEnum['XML_ID']; // Используется для вывода в ЛК до модерации (БП устаналивает значения от даты модерации) $_POST['CASTING']['DATE_ACTIVE_FROM'] = date($DB->DateFormatToPHP(CLang::GetDateFormat("FULL")),mktime()); $_POST['CASTING']['DATE_ACTIVE_TO'] = date($DB->DateFormatToPHP(CLang::GetDateFormat("FULL")), mktime(date("H"), date("i"), date("s"), date("m"), date("d")+IntVal($publicDays), date("Y"))); $el = new CIBlockElement(); if (intval($_POST['CASTING']['ID'])>0) { $response = ''; $rsItem = CIBlockElement::GetByID(intval($_POST['CASTING']['ID'])); if ($arItem = $rsItem->GetNext()) { if( $arItem['CREATED_BY']!=$USER->GetID()) $response = GetMessage("YOU_ARE_NOT_THE_AUTHOR_OF_AD").$_POST['CASTING']['ID']; } else $response = GetMessage("AD_ID").$_POST['CASTING']['ID'].GetMessage("NOT_FOUND"); if (!empty($response)) { // Выход по ошибке echo $response; define("PUBLIC_AJAX_MODE", true); require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/epilog_after.php"); die(); } // Редактирование if ($el->Update($_POST['CASTING']['ID'], $_POST['CASTING'])) { $arResult['CASTING_ID'] = $_POST['CASTING']['ID']; CIBlockElement::SetPropertyValuesEx($arResult['CASTING_ID'], false, $_POST['CASTING_PROPS']); } else $arResult['ERRORS'] = GetMessage("ERROR_AD_REGISTRATION").'<br/>'.$el->LAST_ERROR; } else { // Создание $_POST['CASTING']['IBLOCK_ID'] = $arParams['IBLOCK_ID']; if (intval($arParams['IBLOCK_ID']) == 12) { $_POST['CASTING_PROPS']['UB_ONLY'] = "Y"; }; $_POST['CASTING']['PROPERTY_VALUES'] = $_POST['CASTING_PROPS']; if($CASTING_ID = $el->Add($_POST['CASTING'])) { $arResult['CASTING_ID'] = $CASTING_ID; $arResult['CASTING']['ID'] = $CASTING_ID; } else $arResult['ERRORS'] = GetMessage("ERROR_AD_REGISTRATION").'<br/>'.$el->LAST_ERROR; } if (isset($tmpfname)) unlink($tmpfname); if($arResult['CASTING_ID']>0) { // Запускаем БП $bpList = CBPDocument::GetWorkflowTemplatesForDocumentType(array("iblock", "CIBlockDocument", 'iblock_'.$arParams['IBLOCK_ID'])); foreach($bpList as $bp) if ($bp['AUTO_EXECUTE'] & 1) { $arErrorsTmp = array(); CBPDocument::StartWorkflow($bp['ID'],array("iblock", "CIBlockDocument", $arResult['CASTING_ID']),array(),$arErrorsTmp); if (count($arErrorsTmp) > 0) $arResult['ERRORS'] = print_r($arErrorsTmp,true); } } $arResult['CASTING'] = $_POST['CASTING']; $arResult['CASTING_PROPS'] = $_POST['CASTING_PROPS']; if ($isDebug) { ?><pre><? print_r($arResult); ?></pre><? } } } // Формируем поля-справочники из ИБ if (CModule::IncludeModule("iblock")) { // Разделы $res = CIBlockProperty::GetByID('SECTIONS', $arParams['IBLOCK_ID']); if($ar_res = $res->GetNext()) { $rs = CIBlockSection::GetList(array('SORT'=>'ASC','NAME'=>'ASC'),array('IBLOCK_ID'=>$ar_res['LINK_IBLOCK_ID'],/*'UF_PROF'=>1,*/'ACTIVE'=>'Y')); while ($ar = $rs->GetNext()) { $arResult['SECTIONS'][$ar['ID']] = $ar['DESCRIPTION']; } } $arResult['PREVIEW_IMG'] = ''; if (intval($arResult['CASTING']['DETAIL_PICTURE'])>0) { $arResult['AVATAR'] = CFile::ShowImage($arResult['CASTING']['DETAIL_PICTURE'], 140, 97, "border=0"); $arResult['PREVIEW_IMG'] = $arResult['AVATAR']; } // Город и аватар if ($USER->GetID()>0) { $r = CIBlockElement::GetList(Array(), Array("IBLOCK_ID"=>IBLOCK_PROFILE_ID, "PROPERTY_ACCOUNT"=>$USER->GetID()), false, false, array("IBLOCK_ID", "ID", "NAME", "DETAIL_PICTURE", "PROPERTY_REGION")); if($ar_fields = $r->GetNext()) { if (empty($arResult['CASTING_PROPS']['CITY'])) { $arResult['CASTING_PROPS']['CITY'] = $ar_fields['PROPERTY_REGION_VALUE']; } if (empty($arResult['AVATAR'])) $arResult['AVATAR'] = CFile::ShowImage($ar_fields["DETAIL_PICTURE"], 140, 97, "border=0"); } else { // Заказчик $arUser = CUser::GetByID($USER->GetID())->Fetch(); if (empty($arResult['CASTING_PROPS']['CITY'])) { $arResult['CASTING_PROPS']['CITY'] = $arUser['PERSONAL_CITY']; } if (empty($arResult['AVATAR'])) $arResult['AVATAR'] = CFile::ShowImage($arUser["PERSONAL_PHOTO"], 140, 97, "border=0"); } $arResult['NO_EDIT'] = 'Y'; } // Компенсация валюта $property_enums = CIBlockPropertyEnum::GetList(Array('SORT'=>'ASC'), Array('IBLOCK_ID'=>$arParams['IBLOCK_ID'], 'CODE'=>'COMPENSATION_CURRENCY')); while($enum_fields = $property_enums->GetNext()) { $arResult['CURRENCY'][$enum_fields['ID']] = $enum_fields['VALUE']; } // Типы компенсации $property_enums = CIBlockPropertyEnum::GetList(Array('SORT'=>'ASC'), Array('IBLOCK_ID'=>$arParams['IBLOCK_ID'], 'CODE'=>'COMPENSATION_TYPE')); while($enum_fields = $property_enums->GetNext()) { $arResult['COMPENSATION_TYPE'][$enum_fields['ID']] = $enum_fields['VALUE']; } // Пол (если есть) $property_enums = CIBlockPropertyEnum::GetList(Array('SORT'=>'ASC'), Array('IBLOCK_ID'=>$arParams['IBLOCK_ID'], 'CODE'=>'SEX')); while($enum_fields = $property_enums->GetNext()) { $arResult['SEX'][$enum_fields['ID']] = $enum_fields['VALUE']; } // Обнаженка (если есть) $property_enums = CIBlockPropertyEnum::GetList(Array('SORT'=>'ASC'), Array('IBLOCK_ID'=>$arParams['IBLOCK_ID'], 'CODE'=>'NUDITY')); while($enum_fields = $property_enums->GetNext()) { $arResult['NUDITY'][$enum_fields['ID']] = $enum_fields['VALUE']; } // Срок публикации $property_enums = CIBlockPropertyEnum::GetList(Array('SORT'=>'ASC'), Array('IBLOCK_ID'=>$arParams['IBLOCK_ID'], 'CODE'=>'PUBLIC_DATE')); while($enum_fields = $property_enums->GetNext()) { $arResult['PUBLIC_DATE'][$enum_fields['ID']] = $enum_fields['VALUE']; } } /* ?><pre><? print_r($arResult); ?></pre><? // */ if (intval($arResult['CASTING_ID'])>0 && strlen($arParams['OK_URL'])>0) { header("Location: ".$arParams['OK_URL'].'&POST_ID='.$arResult['CASTING_ID']); } else { $this->IncludeComponentTemplate(); }