%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/bitrix/www/local/components/p4/user.album/
Upload File :
Create Path :
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();

Zerion Mini Shell 1.0