%PDF- %PDF-
| Direktori : /home/bitrix/www/local/components/p4/user.album/ |
| Current File : //home/bitrix/www/local/components/p4/user.album/component.php |
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
/* @global CUser $USER */
$arResult[] = array();
$arResult['APP_RESULT'] = array('OK' => true, 'ERROR_MESSAGE' => '');
//$arResult['APP_RESULT']['REQUEST'] = $_REQUEST;
define('IBLOCK_PRINT_ID', 30);
//AddMessage2Log('USER_ALBUM ['.$_SERVER["REQUEST_METHOD"].'] '.bitrix_sessid()
// .' '.($USER->IsAuthorized()?'Y':'N').' '.print_r($_REQUEST, true)."\nCookies: ".print_r($_COOKIE, true)."\nFiles: ".print_r($_FILES, true));
if ($USER->IsAuthorized() && ($_SERVER["REQUEST_METHOD"]=="POST" || $_SERVER["REQUEST_METHOD"]=="PUT"))
{
if (isset($_REQUEST['MODE']) && strlen($_REQUEST['MODE'])>0)
{
$rsProfile = CIBlockElement::GetList(array(),
array("IBLOCK_ID"=>IBLOCK_PROFILE_ID, 'PROPERTY_ACCOUNT'=>$USER->GetID(), 'ACTIVE'=>'Y', 'SHOW_NEW'=>'Y'), false, false, array('IBLOCK_ID', 'ID', 'NAME'));
if ($arProfile = $rsProfile->Fetch())
{
if ($_REQUEST['MODE']=='SETHMAP_UPLOAD')
{
if (isset($_REQUEST['IMAGE_1']) && isset($_REQUEST['IMAGE_2']))
{
$CIBlockElement = new CIBlockElement();
$rsPrint = CIBlockElement::GetList(array(),
array('IBLOCK_ID'=>IBLOCK_PRINT_ID,'PROPERTY_PROFILE'=>$arProfile['ID'],'PROPERTY_TYPE'=>453));
if ($arPrint = $rsPrint->Fetch())
{
CIBlockElement::SetPropertyValuesEx($arPrint['ID'], IBLOCK_PRINT_ID,
array('FILES' => array($_REQUEST['IMAGE_1'],$_REQUEST['IMAGE_1'])));
}
else
{
$arFields = array(
'IBLOCK_ID' => IBLOCK_PRINT_ID,
'PROPERTY_VALUES' => array(
'PROFILE' => $arProfile['ID'],
'TYPE' => 453,
'FILES' => array($_REQUEST['IMAGE_1'],$_REQUEST['IMAGE_2'])
)
);
$CIBlockElement = new CIBlockElement();
if (!($sectionID = $CIBlockElement->Add($arFields)))
{
$arResult['APP_RESULT']['OK'] = false;
$arResult['APP_RESULT']['ERROR_MESSAGE'] = $bs->LAST_ERROR;
}
}
}
else
{
$arResult['APP_RESULT']['OK'] = false;
$arResult['APP_RESULT']['ERROR_MESSAGE'] = GetMessage('IMAGE_NOT_EXIST');
}
}
elseif ($_REQUEST['MODE']=='WIDESCREEN_UPLOAD' && count($_FILES['WIDESCREEN'])>0) // Загрузить widescreen в профиль
{
CIBlockElement::SetPropertyValuesEx($arProfile['ID'], IBLOCK_PROFILE_ID, array('WIDESCREEN' => $_FILES['WIDESCREEN']));
}
else
{
// Ищем корневой альбом, если нет - создаем
$rsSection = CIBlockSection::GetList(array(),
array("IBLOCK_ID"=>IBLOCK_PORTFOLIO_ID, "UF_PORTF_USR"=>$arProfile['ID'], "SECTION_ID"=>false),
false, array("IBLOCK_ID", "ID"));
$sectionID = 0;
if ($arSection = $rsSection->Fetch()) $sectionID = $arSection['ID'];
else
{
// Создаем корневой раздел альбомов
$arSectionFields = array(
"ACTIVE" => 'Y',
"IBLOCK_SECTION_ID" => false,
"IBLOCK_ID" => IBLOCK_PORTFOLIO_ID,
"NAME" => $arProfile['NAME'],
"UF_PORTF_USR" => $arProfile['ID']
);
$bs = new CIBlockSection;
if (!($sectionID = $bs->Add($arSectionFields)))
{
$arResult['APP_RESULT']['OK'] = false;
$arResult['APP_RESULT']['ERROR_MESSAGE'] = $bs->LAST_ERROR;
}
}
if ($sectionID>0)
{
if ($_REQUEST['MODE']=='ADD_ALBUM' && strlen($_REQUEST['NAME'])>0) // Добавить альбом
{
$arAlbumFields = array(
"ACTIVE" => 'Y',
"IBLOCK_SECTION_ID" => $sectionID,
"IBLOCK_ID" => IBLOCK_PORTFOLIO_ID,
"NAME" => $_REQUEST['NAME'],
"SORT" => isset($_REQUEST['SORT'])?$_REQUEST['SORT']:500
);
$bs = new CIBlockSection;
$albumID = $bs->Add($arAlbumFields);
if ($albumID>0) $arResult['APP_RESULT']['ALBUM_ID'] = $albumID;
else
{
$arResult['APP_RESULT']['OK'] = false;
$arResult['APP_RESULT']['ERROR_MESSAGE'] = $bs->LAST_ERROR;
}
}
else
{
// Проверяем права на альбом
$rsAlbum = CIBlockSection::GetList(array(),
array("IBLOCK_ID"=>IBLOCK_PORTFOLIO_ID, "ID"=>$_REQUEST['ALBUM_ID'], "SECTION_ID"=>$sectionID));
if ($rsAlbum->Fetch())
{
if ($_REQUEST['MODE']=='UPDATE_ALBUM' && intval($_REQUEST['ALBUM_ID'])>0) // Изменить альбом
{
$arAlbumFields = array();
if (strlen($_REQUEST['NAME'])>0) $arAlbumFields['NAME'] = $_REQUEST['NAME'];
if (intval($_REQUEST['SORT'])>0) $arAlbumFields['SORT'] = $_REQUEST['SORT'];
if (count($arAlbumFields)>0)
{
$bs = new CIBlockSection;
if (!$bs->Update($_REQUEST['ALBUM_ID'], $arAlbumFields))
{
$arResult['APP_RESULT']['OK'] = false;
$arResult['APP_RESULT']['ERROR_MESSAGE'] = $bs->LAST_ERROR;
}
}
else
{
$arResult['APP_RESULT']['OK'] = false;
$arResult['APP_RESULT']['ERROR_MESSAGE'] = GetMessage('ALBUM_UPDATE_EMPTY_PARAMS');
}
}
elseif ($_REQUEST['MODE']=='DELETE_ALBUM' && intval($_REQUEST['ALBUM_ID'])>0) // Удалить альбом
{
if(!CIBlockSection::Delete($_REQUEST['ALBUM_ID'],false))
{
$arResult['APP_RESULT']['OK'] = false;
$arResult['APP_RESULT']['ERROR_MESSAGE'] = GetMessage('ALBUM_DELETE_ERROR');
}
}
elseif ($_REQUEST['MODE']=='ADD_PHOTO' && intval($_REQUEST['ALBUM_ID'])>0 && count($_FILES['PHOTO'])>0) // Добавить фото в альбом
{
$arImages = array(
'PREVIEW_PICTURE' => array("width" => 400, "height" => 400),
'DETAIL_PICTURE' => array("width" => 1280, "height" => 1280),
);
foreach($arImages as $idx=>$image)
{
$destPath = $_FILES['PHOTO']['tmp_name'].'_'.$idx;
$res = CFile::ResizeImageFile(
$_FILES['PHOTO']['tmp_name'], $destPath,
array("width" => 1280, "height" => 1280),
BX_RESIZE_IMAGE_PROPORTIONAL_ALT);
$arImagesFile[$idx] = array(
'name' => $_FILES['PHOTO']['name'],
'tmp_name' => $destPath,
'errors' => $_FILES['PHOTO']['error'],
'type' => $_FILES['PHOTO']['type'],
'size' => '',
'mode' => 'detail_picture',
'width' => '',
'height' => '',
'path' => $destPath
);
}
$arPhotoFields = array(
'IBLOCK_ID' => IBLOCK_PORTFOLIO_ID,
'IBLOCK_SECTION_ID' => $_REQUEST['ALBUM_ID'],
'NAME' => $_FILES['PHOTO']['name'],
'PREVIEW_PICTURE' => $arImagesFile['PREVIEW_PICTURE'],
'DETAIL_PICTURE' => $arImagesFile['DETAIL_PICTURE'],
'PROPERTY_VALUES' => array(
'REAL_PICTURE' => $_FILES['PHOTO']
)
);
$el = new CIBlockElement;
$photoID = $el->Add($arPhotoFields,false,false,true);
if ($photoID>0)
{
$arResult['APP_RESULT']['PHOTO_ID'] = $photoID;
ProfileTypeHelper::runModerate($arProfile['ID'], false);
}
else
{
$arResult['APP_RESULT']['OK'] = false;
$arResult['APP_RESULT']['ERROR_MESSAGE'] = $el->LAST_ERROR;
}
foreach($arImages as $idx=>$image)
unlink($_FILES['PHOTO']['tmp_name'].'_'.$idx);
}
elseif ($_REQUEST['MODE']=='DELETE_PHOTO' && intval($_REQUEST['PHOTO_ID'])>0) // Удалить фото
{
if(!CIBlockElement::Delete($_REQUEST['PHOTO_ID']))
{
$arResult['APP_RESULT']['OK'] = false;
$arResult['APP_RESULT']['ERROR_MESSAGE'] = GetMessage('ALBUM_PHOTO_DELETE_ERROR');
}
}
else
{
$arResult['APP_RESULT']['OK'] = false;
$arResult['APP_RESULT']['ERROR_MESSAGE'] = GetMessage('INVALID_REQUEST');
}
}
else
{
$arResult['APP_RESULT']['OK'] = false;
$arResult['APP_RESULT']['ERROR_MESSAGE'] = GetMessage('ALBUM_UPDATE_ACCESS_DENIED');
}
}
}
}
}
else
{
$arResult['APP_RESULT']['OK'] = false;
$arResult['APP_RESULT']['ERROR_MESSAGE'] = GetMessage('PROFILE_NOT_FOUND');
}
}
else
{
$arResult['APP_RESULT']['OK'] = false;
$arResult['APP_RESULT']['ERROR_MESSAGE'] = GetMessage('MODE_NOT_EXIST');
}
}
else {
$arResult['APP_RESULT']['OK'] = false;
$arResult['APP_RESULT']['ERROR_MESSAGE'] = GetMessage('USER_NOT_AUTHORIZED');
}
$this->IncludeComponentTemplate();