コード例 #1
0
 function __wd_get_root_section($IBLOCK_ID, $object, $object_id)
 {
     $result = CIBlockWebdavSocnet::GetSectionID($IBLOCK_ID, $object, $object_id);
     if (intval($result) > 0) {
         return $result;
     } else {
         __wd_check_uf_use_bp_property($arParams["IBLOCK_ID"]);
         $arFields = array("IBLOCK_ID" => $IBLOCK_ID, "ACTIVE" => "Y", "SOCNET_GROUP_ID" => false, "IBLOCK_SECTION_ID" => 0, "UF_USE_BP" => "N");
         if ($object == "user") {
             $dbUser = CUser::GetByID($object_id);
             $arUser = $dbUser->Fetch();
             $arFields["NAME"] = trim($arUser['LAST_NAME'] . " " . $arUser['FIRST_NAME']);
             $arFields["NAME"] = trim(!empty($arFields["NAME"]) ? $arFields["NAME"] : $arUser['LOGIN']);
             $arFields['CREATED_BY'] = $arUser['ID'];
             $arFields['MODIFIED_BY'] = $arUser['ID'];
             if (CIBlock::GetArrayByID($IBLOCK_ID, "RIGHTS_MODE") === "E") {
                 $arTasks = CWebDavIblock::GetTasks();
                 $arFields['RIGHTS'] = array('n0' => array('GROUP_CODE' => 'U' . $object_id, 'TASK_ID' => $arTasks['X']));
             }
         } else {
             /*		$res = CSocNetGroup::GetByID($arResult["VARIABLES"]["group_id"]);
             				if (!$res)
             				{
             					$arParams["ERROR_MESSAGE"] = GetMessage("SONET_GROUP_NOT_EXISTS");
             					return 0;
             				} */
             $arFields["SOCNET_GROUP_ID"] = $object_id;
             //$arGroup = CSocNetGroup::GetByID($object_id);
             $arFields["NAME"] = GetMessage("SONET_GROUP_PREFIX") . $object_id;
             $dbGroup = CSocNetGroup::GetList(array(), array("ID" => (int) $object_id), false, false, array("ID", "SITE_ID", "NAME"));
             if ($arGroup = $dbGroup->Fetch()) {
                 $arFields["NAME"] = GetMessage("SONET_GROUP_PREFIX") . $arGroup["NAME"];
             }
             if (CIBlock::GetArrayByID($IBLOCK_ID, "RIGHTS_MODE") === "E") {
                 $arTasks = CWebDavIblock::GetTasks();
                 $arFields['RIGHTS'] = array('n0' => array('GROUP_CODE' => 'SG' . $arFields["SOCNET_GROUP_ID"] . '_A', 'TASK_ID' => $arTasks['X']), 'n1' => array('GROUP_CODE' => 'SG' . $arFields["SOCNET_GROUP_ID"] . '_E', 'TASK_ID' => $arTasks['W']), 'n2' => array('GROUP_CODE' => 'SG' . $arFields["SOCNET_GROUP_ID"] . '_K', 'TASK_ID' => $arTasks['W']));
             }
         }
         if (\Bitrix\Main\Config\Option::get('disk', 'successfully_converted', false) && CModule::includeModule('disk')) {
             \Bitrix\Disk\Driver::getInstance()->addGroupStorage($arFields["SOCNET_GROUP_ID"]);
         }
         $GLOBALS["UF_USE_BP"] = $arFields["UF_USE_BP"];
         $GLOBALS["USER_FIELD_MANAGER"]->EditFormAddFields("IBLOCK_" . $IBLOCK_ID . "_SECTION", $arFields);
         $bs = new CIBlockSection();
         $sectionID = $bs->Add($arFields);
         if (!$sectionID) {
             $arParams["ERROR_MESSAGE"] = $bs->LAST_ERROR;
             return 0;
         }
         WDClearComponentCache(array("webdav.element.edit", "webdav.element.hist", "webdav.element.upload", "webdav.element.view", "webdav.menu", "webdav.section.edit", "webdav.section.list"));
         return true;
         /*
         	if ($ob->workflow == 'bizproc')
         	{
         		__wd_create_default_bp_user_and_groups($arBizProcParameters);
         	}
         */
     }
 }
コード例 #2
0
ファイル: template.php プロジェクト: mrdeadmouse/u136006
    true;
}
$multi = isset($_REQUEST['MULTI']) && $_REQUEST['MULTI'] == 'Y' ? 'true' : 'false';
$userID = $GLOBALS['USER']->GetID();
$bFakemove = isset($_REQUEST['ACTION']) && $_REQUEST['ACTION'] == 'FAKEMOVE';
$mode = "{'onlyFiles' : true}";
if ($bFakemove) {
    $mode = "{'folder' : true}";
}
$typeItems = "{\n";
if (isset($ob->attributes['user_id'])) {
    $typeItems .= str_replace(array("#GROUP_ID#", "#GROUP_NAME#", "#LINK#", "#IBLOCK_ID#", "#SECTION_ID#"), array($userID, CUtil::JSEscape(GetMessage('WD_MY_DOCUMENTS')), CUtil::JSEscape($ob->base_url), intval($ob->IBLOCK_ID), intval($ob->arRootSection['ID'])), "'U#GROUP_ID#' : {'id' : 'U#GROUP_ID#', 'name' : '#GROUP_NAME#', 'type' : 'user', 'link' : '#LINK#', 'iblock_id': '#IBLOCK_ID#', 'section_id': '#SECTION_ID#'},\n");
} else {
    $userLib = CWebDavIblock::LibOptions('user_files', false, SITE_ID);
    if ($userLib && isset($userLib['id']) && ($iblockID = intval($userLib['id']))) {
        $sectionID = CIBlockWebdavSocnet::GetSectionID($iblockID, 'user', $userID);
        $libPath = CWebDavIblock::LibOptions('lib_paths', true, $iblockID);
        if ($libPath) {
            $tplUser = '******';
            if ($tplPos = strpos($libPath, $tplUser)) {
                $libPath = substr($libPath, 0, $tplPos + strlen($tplUser)) . '/files/lib/';
            }
            $libPath = str_replace('#user_id#', $userID, $libPath);
        }
    }
    if ($sectionID && $libPath) {
        $typeItems .= str_replace(array("#GROUP_ID#", "#GROUP_NAME#", "#LINK#", "#IBLOCK_ID#", "#SECTION_ID#"), array($userID, CUtil::JSEscape(GetMessage('WD_MY_DOCUMENTS')), CUtil::JSEscape($libPath), $iblockID, $sectionID), "'U#GROUP_ID#' : {'id' : 'U#GROUP_ID#', 'name' : '#GROUP_NAME#', 'type' : 'user', 'link' : '#LINK#', 'iblock_id': '#IBLOCK_ID#', 'section_id': '#SECTION_ID#'},\n");
    }
}
$sharedLibID = CWebDavIblock::LibOptions('shared_files', false, SITE_ID);
if ($sharedLibID && isset($sharedLibID['id']) && intval($sharedLibID['id']) > 0 && isset($sharedLibID['base_url']) && strlen($sharedLibID['base_url']) > 0) {
コード例 #3
0
 $arResult["Urls"]["Search"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_SEARCH"], array());
 $arResult["Urls"]["GroupsAdd"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER_GROUPS_ADD"], array("user_id" => $arResult["User"]["ID"]));
 $arResult["Urls"]["MessageForm"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_MESSAGE_FORM"], array("user_id" => $arResult["User"]["ID"]));
 $arResult["Urls"]["Log"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_LOG"], array());
 $arResult["Urls"]["Main"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arResult["User"]["ID"]));
 $arResult["Urls"]["MessagesInput"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_MESSAGES_INPUT"], array());
 $arResult["Urls"]["Blog"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER_BLOG"], array("user_id" => $arResult["User"]["ID"]));
 $arResult["Urls"]["Microblog"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER_MICROBLOG"], array("user_id" => $arResult["User"]["ID"]));
 $arResult["Urls"]["Photo"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER_PHOTO"], array("user_id" => $arResult["User"]["ID"]));
 $arResult["Urls"]["Forum"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER_FORUM"], array("user_id" => $arResult["User"]["ID"]));
 $arResult["Urls"]["Calendar"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER_CALENDAR"], array("user_id" => $arResult["User"]["ID"]));
 $arResult["Urls"]["Tasks"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER_TASKS"], array("user_id" => $arResult["User"]["ID"]));
 $arResult["Urls"]["Files"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER_FILES"], array("user_id" => $arResult["User"]["ID"], "path" => ""));
 $arResult["Urls"]["content_search"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER_CONTENT_SEARCH"], array("user_id" => $arResult["User"]["ID"]));
 $arResult["ActiveFeatures"] = CSocNetFeatures::GetActiveFeaturesNames(SONET_ENTITY_USER, $arResult["User"]["ID"]);
 $arResult["CanView"]["files"] = array_key_exists("files", $arResult["ActiveFeatures"]) && (CSocNetUser::IsCurrentUserModuleAdmin() || CModule::IncludeModule('webdav') && CIBlockWebdavSocnet::CanAccessFiles($arParams["FILES_USER_IBLOCK_ID"], 'user', $arResult["User"]["ID"]));
 $arResult["CanView"]["tasks"] = array_key_exists("tasks", $arResult["ActiveFeatures"]) && CSocNetFeaturesPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), SONET_ENTITY_USER, $arResult["User"]["ID"], "tasks", "view", CSocNetUser::IsCurrentUserModuleAdmin());
 $arResult["CanView"]["calendar"] = array_key_exists("calendar", $arResult["ActiveFeatures"]);
 $arResult["CanView"]["microblog"] = array_key_exists("microblog", $arResult["ActiveFeatures"]) && CSocNetFeaturesPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), SONET_ENTITY_USER, $arResult["User"]["ID"], "blog", "view_post", CSocNetUser::IsCurrentUserModuleAdmin());
 $arResult["CanView"]["blog"] = array_key_exists("blog", $arResult["ActiveFeatures"]) && CSocNetFeaturesPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), SONET_ENTITY_USER, $arResult["User"]["ID"], "blog", "view_post", CSocNetUser::IsCurrentUserModuleAdmin());
 $arResult["CanView"]["photo"] = array_key_exists("photo", $arResult["ActiveFeatures"]) && CSocNetFeaturesPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), SONET_ENTITY_USER, $arResult["User"]["ID"], "photo", "view", CSocNetUser::IsCurrentUserModuleAdmin());
 $arResult["CanView"]["forum"] = array_key_exists("forum", $arResult["ActiveFeatures"]) && CSocNetFeaturesPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), SONET_ENTITY_USER, $arResult["User"]["ID"], "forum", "view", CSocNetUser::IsCurrentUserModuleAdmin());
 $arResult["CanView"]["content_search"] = array_key_exists("search", $arResult["ActiveFeatures"]) && CSocNetFeaturesPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), SONET_ENTITY_USER, $arResult["User"]["ID"], "search", "view", CSocNetUser::IsCurrentUserModuleAdmin());
 $arResult["Title"]["blog"] = array_key_exists("blog", $arResult["ActiveFeatures"]) && StrLen($arResult["ActiveFeatures"]["blog"]) > 0 ? $arResult["ActiveFeatures"]["blog"] : GetMessage("SONET_UM_BLOG");
 $arResult["Title"]["microblog"] = array_key_exists("microblog", $arResult["ActiveFeatures"]) && StrLen($arResult["ActiveFeatures"]["microblog"]) > 0 ? $arResult["ActiveFeatures"]["microblog"] : GetMessage("SONET_UM_MICROBLOG");
 $arResult["Title"]["photo"] = array_key_exists("photo", $arResult["ActiveFeatures"]) && StrLen($arResult["ActiveFeatures"]["photo"]) > 0 ? $arResult["ActiveFeatures"]["photo"] : GetMessage("SONET_UM_PHOTO");
 $arResult["Title"]["forum"] = array_key_exists("forum", $arResult["ActiveFeatures"]) && StrLen($arResult["ActiveFeatures"]["forum"]) > 0 ? $arResult["ActiveFeatures"]["forum"] : GetMessage("SONET_UM_FORUM");
 $arResult["Title"]["calendar"] = array_key_exists("calendar", $arResult["ActiveFeatures"]) && StrLen($arResult["ActiveFeatures"]["calendar"]) > 0 ? $arResult["ActiveFeatures"]["calendar"] : GetMessage("SONET_UM_CALENDAR");
 $arResult["Title"]["tasks"] = array_key_exists("tasks", $arResult["ActiveFeatures"]) && StrLen($arResult["ActiveFeatures"]["tasks"]) > 0 ? $arResult["ActiveFeatures"]["tasks"] : GetMessage("SONET_UM_TASKS");
 $arResult["Title"]["files"] = array_key_exists("files", $arResult["ActiveFeatures"]) && StrLen($arResult["ActiveFeatures"]["files"]) > 0 ? $arResult["ActiveFeatures"]["files"] : GetMessage("SONET_UM_FILES");
 $arResult["Title"]["content_search"] = array_key_exists("search", $arResult["ActiveFeatures"]) && StrLen($arResult["ActiveFeatures"]["search"]) > 0 ? $arResult["ActiveFeatures"]["search"] : GetMessage("SONET_UM_SEARCH");
コード例 #4
0
ファイル: iblocksocnet.php プロジェクト: DarneoStudio/bitrix
 protected static function groupSectionCreate($groupId)
 {
     $groupLib = CWebDavIblock::LibOptions('group_files', false, SITE_ID);
     if (!$groupLib || !isset($groupLib['id']) || !($iblockId = intval($groupLib['id']))) {
         return false;
     }
     $result = CIBlockWebdavSocnet::GetSectionID($iblockId, 'group', $groupId);
     if (intval($result) > 0) {
         return $result;
     }
     $dbRes = CUserTypeEntity::GetList(array($by => $order), array("ENTITY_ID" => "IBLOCK_" . $iblockId . "_SECTION", "FIELD_NAME" => "UF_USE_BP"));
     if (!$dbRes || !($res = $dbRes->GetNext())) {
         $arFields = array("ENTITY_ID" => "IBLOCK_" . $iblockId . "_SECTION", "FIELD_NAME" => "UF_USE_BP", "USER_TYPE_ID" => "string", "MULTIPLE" => "N", "MANDATORY" => "N", "SETTINGS" => array("DEFAULT_VALUE" => "Y"));
         $arFieldName = array();
         $rsLanguage = CLanguage::GetList($by, $order, array());
         while ($arLanguage = $rsLanguage->Fetch()) {
             $dir = str_replace(array("\\", "//"), "/", dirname(__FILE__));
             $dirs = explode("/", $dir);
             array_pop($dirs);
             $file = trim(implode("/", $dirs) . "/lang/" . $arLanguage["LID"] . "/include/webdav_settings.php");
             $tmp_mess = __IncludeLang($file, true);
             $arFieldName[$arLanguage["LID"]] = empty($tmp_mess["SONET_UF_USE_BP"]) ? "Use Business Process" : $tmp_mess["SONET_UF_USE_BP"];
         }
         $arFields["EDIT_FORM_LABEL"] = $arFieldName;
         $obUserField = new CUserTypeEntity();
         $obUserField->Add($arFields);
         $GLOBALS["USER_FIELD_MANAGER"]->arFieldsCache = array();
     }
     $arFields = array("IBLOCK_ID" => $iblockId, "ACTIVE" => "Y", "SOCNET_GROUP_ID" => false, "IBLOCK_SECTION_ID" => 0, "UF_USE_BP" => "N");
     $arFields["SOCNET_GROUP_ID"] = $groupId;
     $arFields["NAME"] = GetMessage("SONET_GROUP_PREFIX") . $groupId;
     $dbGroup = CSocNetGroup::GetList(array(), array("ID" => (int) $groupId), false, false, array("ID", "SITE_ID", "NAME"));
     if ($arGroup = $dbGroup->Fetch()) {
         $arFields["NAME"] = GetMessage("SONET_GROUP_PREFIX") . $arGroup["NAME"];
     }
     if (CIBlock::GetarrayByID($iblockId, "RIGHTS_MODE") === "E") {
         $arTasks = CWebDavIblock::GetTasks();
         $arFields['RIGHTS'] = array('n0' => array('GROUP_CODE' => 'SG' . $arFields["SOCNET_GROUP_ID"] . '_A', 'TASK_ID' => $arTasks['X']), 'n1' => array('GROUP_CODE' => 'SG' . $arFields["SOCNET_GROUP_ID"] . '_E', 'TASK_ID' => $arTasks['W']), 'n2' => array('GROUP_CODE' => 'SG' . $arFields["SOCNET_GROUP_ID"] . '_K', 'TASK_ID' => $arTasks['W']));
     }
     $GLOBALS["UF_USE_BP"] = $arFields["UF_USE_BP"];
     $GLOBALS["USER_FIELD_MANAGER"]->EditFormAddFields("IBLOCK_" . $iblockId . "_SECTION", $arFields);
     $bs = new CIBlockSection();
     $sectionId = $bs->Add($arFields);
     if (!$sectionId) {
         return false;
     }
     return $sectionId;
 }
コード例 #5
0
 function _updateRights($files, $rights, $ufEntity = array())
 {
     static $arIBlock = array();
     static $op_X = 'element_rights_edit';
     static $arTasks = null;
     if (!is_array($rights) || sizeof($rights) <= 0) {
         return false;
     }
     if ($files === null || $files === false) {
         return false;
     }
     if (!is_array($files)) {
         $files = array($files);
     }
     if (sizeof($files) <= 0) {
         return false;
     }
     if (!CModule::IncludeModule('iblock')) {
         return false;
     }
     $arFiles = array();
     foreach ($files as $id) {
         $id = intval($id);
         if (intval($id) > 0) {
             $arFiles[] = $id;
         }
     }
     if (sizeof($arFiles) <= 0) {
         return false;
     }
     $arFiles = array_unique($arFiles);
     if ($arTasks == null) {
         $arTasks = CWebDavIblock::GetTasks();
     }
     $i = 0;
     $arViewRights = $arEditRights = array();
     $curUserID = 'U' . $GLOBALS['USER']->GetID();
     foreach ($rights as $right) {
         if ($curUserID == $right) {
             // do not override owner's rights
             continue;
         }
         $key = 'n' . $i++;
         $arViewRights[$key] = array('GROUP_CODE' => $right, 'TASK_ID' => $arTasks['R']);
         $arEditRights[$key] = array('GROUP_CODE' => $right, 'TASK_ID' => $arTasks['W']);
     }
     $ibe = new CIBlockElement();
     $dbWDFile = $ibe->GetList(array(), array('ID' => $arFiles, 'SHOW_NEW' => 'Y'), false, false, array('ID', 'NAME', 'SECTION_ID', 'IBLOCK_ID', 'WF_NEW'));
     $iblockIds = array();
     if ($dbWDFile) {
         if (!empty($ufEntity['ENTITY_VALUE_ID'])) {
             //hack you
             CIBlockWebdavSocnet::storeFileIdsByComment($ufEntity['ENTITY_VALUE_ID'], $arFiles);
         }
         while ($arWDFile = $dbWDFile->Fetch()) {
             $id = $arWDFile['ID'];
             if ($arWDFile['WF_NEW'] == 'Y') {
                 $ibe->Update($id, array('BP_PUBLISHED' => 'Y'));
             }
             if (CIBlock::GetArrayByID($arWDFile['IBLOCK_ID'], "RIGHTS_MODE") === "E") {
                 $dropped = false;
                 $ibRights = CWebDavIblock::_get_ib_rights_object('ELEMENT', $id, $arWDFile['IBLOCK_ID']);
                 // change rights on comment files if they are 'attached to the post'
                 $dropped = static::_isDropped($arWDFile['IBLOCK_ID'], $arWDFile['IBLOCK_SECTION_ID']);
                 $canEditFiles = static::isAllowEditAttachedFiles($ufEntity);
                 if ($dropped || $ibRights->UserHasRightTo($arWDFile['IBLOCK_ID'], $id, 'element_edit')) {
                     $ibRights->SetRights(static::appendRights($ibRights, $canEditFiles ? $arEditRights : $arViewRights, $arTasks));
                 } else {
                     $ibRights->SetRights(static::appendRights($ibRights, $arViewRights, $arTasks));
                 }
                 if (empty($iblockIds[$arWDFile['IBLOCK_ID']])) {
                     $iblockIds[$arWDFile['IBLOCK_ID']] = $arWDFile['IBLOCK_ID'];
                 }
             }
         }
         global $CACHE_MANAGER;
         foreach ($iblockIds as $iblockId) {
             $CACHE_MANAGER->ClearByTag('iblock_id_' . $iblockId);
         }
         unset($iblockId);
     }
 }
コード例 #6
0
ファイル: webdav.php プロジェクト: k-kalashnikov/geekcon_new
$sBaseUrl = $APPLICATION->GetCurDir();
$arParsedUrl = parse_url($_SERVER['REQUEST_URI']);
$page = $arParsedUrl ? $arParsedUrl['path'] : $_SERVER['REQUEST_URI'];
/************** Initial object *************************************/
$arParams["DOCUMENT_TYPE"] = array("webdav", "CIBlockDocumentWebdavSocnet", "iblock_" . $arParams["IBLOCK_ID"] . "_" . $object . "_" . intVal($object == "user" ? $arResult["VARIABLES"]["user_id"] : $arResult["VARIABLES"]["group_id"]));
$arBizProcParameters = array("object" => $object, "owner" => $object == "user" ? $arResult["VARIABLES"]["user_id"] : $arResult["GROUP"]["OWNER_ID"], "moderator" => strtolower($object == "user" ? SONET_RELATIONS_TYPE_NONE : SONET_ROLES_MODERATOR), "path" => $object == "user" ? $arResult["PATH_TO_USER_FILES_WEBDAV_BIZPROC_VIEW"] : $arResult["PATH_TO_GROUP_FILES_WEBDAV_BIZPROC_VIEW"], "document_type" => $ob->wfParams['DOCUMENT_TYPE'][2]);
$user_id_str = intVal($arResult["VARIABLES"]["user_id"]) > 0 ? $arResult["VARIABLES"]["user_id"] : $GLOBALS["USER"]->GetId();
$arBizProcParameters["path"] = str_replace(array("#user_id#", "#group_id#", "#element_id#"), array($user_id_str, $arResult["VARIABLES"]["group_id"], "{=Document:ID}"), $arBizProcParameters["path"]);
/************** Root Section ***************************************/
$arParams["ROOT_SECTION_ID"] = __wd_get_root_section($arParams["IBLOCK_ID"], $object, $object == 'user' ? $arResult["VARIABLES"]["user_id"] : $arResult["VARIABLES"]["group_id"]);
if ($arParams["ROOT_SECTION_ID"] === true) {
    BXClearCache(true, $ob->CACHE_PATH);
    LocalRedirect($APPLICATION->GetCurPageParam("", array("create_lib", "sessid")));
}
if ($object == "user") {
    CIBlockWebdavSocnet::CreateSharedFolder($arParams["IBLOCK_ID"], $arParams["ROOT_SECTION_ID"], $arResult["VARIABLES"]["user_id"]);
}
$arParams["OBJECT"] = $ob = new CWebDavIblock($arParams['IBLOCK_ID'], $arResult['BASE_URL'], $arParams + array("SHORT_PATH_TEMPLATE" => "/" . ($object == "user" ? $arDefaultUrlTemplates404["user_files_short"] : $arDefaultUrlTemplates404["group_files_short"]), "ATTRIBUTES" => $object == "user" ? array('user_id' => $arResult["VARIABLES"]["user_id"]) : array('group_id' => $arResult["VARIABLES"]["group_id"])));
if (!empty($ob->arError)) {
    $e = new CAdminException($ob->arError);
    $GLOBALS["APPLICATION"]->ThrowException($e);
    $res = $GLOBALS["APPLICATION"]->GetException();
    if ($res) {
        ShowError($res->GetString());
        return false;
    }
} elseif ($ob->permission <= "D") {
    ShowError(GetMessage("WD_ACCESS_DENIED"));
    return false;
}
$ob->file_prop = $arParams["NAME_FILE_PROPERTY"];
コード例 #7
0
 /**
  * Метод проверяет права на выполнение операций над документами заданного типа. Проверяются операции 4 - право изменять шаблоны рабочий потоков для данного типа документа.
  *
  * @param int $operation - операция.
  * @param int $userId - код пользователя, для которого проверяется право на выполнение операции.
  * @param string $documentId - код типа документа, к которому применяется операция.
  * @param array $arParameters - ассициативный массив вспомогательных параметров. Используется для того, чтобы не рассчитывать заново те вычисляемые значения, которые уже известны на момент вызова метода. Стандартными являются ключи массива DocumentStates - массив состояний рабочих потоков данного документа, WorkflowId - код рабочего потока (если требуется проверить операцию на одном рабочем потоке). Массив может быть дополнен другими произвольными ключами.
  * @return bool
  */
 function CanUserOperateDocumentType($operation, $userId, $documentType, $arParameters = array())
 {
     $documentType = trim($documentType);
     if (strlen($documentType) <= 0) {
         return false;
     }
     if ($storage = self::needProxyToDiskByDocType($documentType)) {
         return self::proxyToDisk(__FUNCTION__, array($operation, $userId, \Bitrix\Disk\BizProcDocumentCompatible::generateDocumentType($storage->getId()), $arParameters));
     }
     $userId = intval($userId);
     global $USER;
     // Если пользователь является администратором модуля соц. сети, то возвращаем true
     if ($USER->IsAuthorized() && $USER->GetID() == $userId && CSocNetUser::IsCurrentUserModuleAdmin()) {
         return true;
     }
     $res = explode("_", $documentType);
     if (count($res) != 4) {
         return false;
     }
     $arParameters["IBlockId"] = intval($res[1]);
     $arParameters["OwnerType"] = $res[2];
     $arParameters["OwnerId"] = intval($res[3]);
     // Если нет необходимых параметров, то возвращаем false
     if (!in_array($arParameters["OwnerType"], array("user", "group")) || $arParameters["OwnerId"] <= 0 || $arParameters["IBlockId"] <= 0) {
         return false;
     } elseif ($arParameters["OwnerType"] == "user" && $arParameters["OwnerId"] == $userId) {
         return true;
     }
     // Если нам явно не сказали, то узнаем права пользователя на хранилище
     if (!array_key_exists("IBlockPermission", $arParameters)) {
         $res = CIBlockWebdavSocnet::GetUserMaxPermission($arParameters["OwnerType"], $arParameters["OwnerId"], $userId, $arParameters["IBlockId"]);
         $arParameters["IBlockPermission"] = $res["PERMISSION"];
     }
     if ($arParameters["IBlockPermission"] < "R") {
         return false;
     } elseif ($arParameters["IBlockPermission"] >= "W") {
         return true;
     }
     // Если мы тут, то инфоблочные права равны U
     // Если нам явно не сказали, то узнаем группы пользователя
     if (!array_key_exists("AllUserGroups", $arParameters)) {
         $arParameters["AllUserGroups"] = CIBlockDocumentWebdavSocnet::GetUserGroups($documentType, null, $userId);
     }
     // Если нам явно не сказали, то узнаем текущие статусы документа
     if (!array_key_exists("DocumentStates", $arParameters)) {
         $arParameters["DocumentStates"] = CBPDocument::GetDocumentStates(array("webdav", "CIBlockDocumentWebdavSocnet", "x"), null);
     }
     // Если нужно проверить только для одного рабочего потока
     if (array_key_exists("WorkflowId", $arParameters)) {
         if (array_key_exists($arParameters["WorkflowId"], $arParameters["DocumentStates"])) {
             $arParameters["DocumentStates"] = array($arParameters["WorkflowId"] => $arParameters["DocumentStates"][$arParameters["WorkflowId"]]);
         } else {
             return false;
         }
     }
     $arAllowableOperations = CBPDocument::GetAllowableOperations($userId, $arParameters["AllUserGroups"], $arParameters["DocumentStates"]);
     // $arAllowableOperations == null - поток не является автоматом
     // $arAllowableOperations == array() - в автомате нет допустимых операций
     // $arAllowableOperations == array("read", ...) - допустимые операции
     if (!is_array($arAllowableOperations)) {
         return false;
     }
     $r = false;
     switch ($operation) {
         case CBPCanUserOperateOperation::ViewWorkflow:
             $r = false;
             break;
         case CBPCanUserOperateOperation::StartWorkflow:
             $r = false;
             break;
         case CBPCanUserOperateOperation::CreateWorkflow:
             $r = in_array("write", $arAllowableOperations);
             break;
         case CBPCanUserOperateOperation::WriteDocument:
             $r = in_array("write", $arAllowableOperations);
             break;
         case CBPCanUserOperateOperation::ReadDocument:
             $r = false;
             break;
         default:
             $r = false;
     }
     return $r;
 }
コード例 #8
0
ファイル: iblock.php プロジェクト: mrdeadmouse/u136006
 public static function getRootSectionIdForUser($iblockId, $userId)
 {
     global $USER_FIELD_MANAGER;
     global $UF_USE_BP;
     $result = CIBlockWebdavSocnet::getSectionId($iblockId, 'user', $userId);
     if (($result = intval($result)) > 0) {
         return $result;
     }
     $fields = array('IBLOCK_ID' => $iblockId, 'ACTIVE' => 'Y', 'SOCNET_GROUP_ID' => false, 'IBLOCK_SECTION_ID' => 0, 'UF_USE_BP' => 'N', 'UF_USE_EXT_SERVICES' => CWebDavIblock::resolveDefaultUseExtServices());
     $user = CUser::getById($userId)->fetch();
     if (empty($user)) {
         return false;
     }
     $fields['NAME'] = trim($user['LAST_NAME'] . ' ' . $user['FIRST_NAME']);
     $fields['NAME'] = trim(!empty($fields["NAME"]) ? $fields['NAME'] : $user['LOGIN']);
     $fields['CREATED_BY'] = $user['ID'];
     $fields['MODIFIED_BY'] = $user['ID'];
     if (CIBlock::GetArrayByID($iblockId, "RIGHTS_MODE") === "E") {
         $tasks = CWebDavIblock::GetTasks();
         $fields['RIGHTS'] = array('n0' => array('GROUP_CODE' => 'U' . $userId, 'TASK_ID' => $tasks['X']));
     }
     $UF_USE_BP = $fields['UF_USE_BP'];
     $USER_FIELD_MANAGER->editFormAddFields('IBLOCK_' . $iblockId . '_SECTION', $fields);
     $section = new CIBlockSection();
     $sectionId = $section->add($fields);
     if (!$sectionId) {
         return false;
     }
     WDClearComponentCache(array('webdav.element.edit', 'webdav.element.hist', 'webdav.element.upload', 'webdav.element.view', 'webdav.menu', 'webdav.section.edit', 'webdav.section.list'));
     return $sectionId;
 }
コード例 #9
0
ファイル: component.php プロジェクト: mrdeadmouse/u136006
 // user list
 $userTree = array();
 $CACHE_ID = SITE_ID . '|' . $requestURL . '|' . $currentUserID . '|' . (CWebDavBase::IsDavHeaders('check_all') ? 'D' : 'W') . '|USERLIST';
 $userCache = new CPHPCache();
 if ($userCache->InitCache($arParams["CACHE_TIME"], $CACHE_ID, $cachePath)) {
     $vars = $userCache->GetVars();
     $userTree = $vars['USER_TREE'];
 } else {
     $arFilter = array("IBLOCK_ID" => $arParams["IBLOCK_USER_ID"], "SOCNET_GROUP_ID" => false, "CHECK_PERMISSIONS" => "N", "SECTION_ID" => 0);
     $dbSection = CIBlockSection::GetList(array(), $arFilter);
     while ($arSection = $dbSection->Fetch()) {
         $userID = $arSection['CREATED_BY'];
         if (!CSocNetFeatures::IsActiveFeature(SONET_ENTITY_USER, $userID, "files")) {
             continue;
         }
         $userPerms = CIBlockWebdavSocnet::GetUserMaxPermission('user', $userID, $currentUserID, $arParams['IBLOCK_USER_ID']);
         if ($userPerms["PERMISSION"] < "R") {
             continue;
         }
         $dbUser = CUser::GetByID($userID);
         if ($dbUser && ($arUser = $dbUser->Fetch())) {
             if ($arUser['ACTIVE'] != 'Y') {
                 continue;
             }
         }
         if (empty($arUser)) {
             continue;
         }
         $iDocCount = $USER->IsAdmin() ? _getIBlockItemsCount($arParams["IBLOCK_USER_ID"], $arSection["ID"], 'user', $userID) : false;
         //if ($iDocCount <= 0) continue;
         $tpl = preg_replace(array("/#NOBR#/", "/#\\/NOBR#/"), array("", ""), $arParams['NAME_TEMPLATE']);
コード例 #10
0
ファイル: component.php プロジェクト: mrdeadmouse/u136006
        }
        $APPLICATION->RestartBuffer();
        echo json_encode(array("data" => $arResFiles, "TABLE_SETTINGS" => GetTableSettings($foldersNum, 0)));
        die;
    }
} elseif ($requestTupe == "user") {
    $user_files = COption::GetOptionString("webdav", "user_files", null);
    if ($user_files == null) {
        $APPLICATION->RestartBuffer();
        exit(json_encode(array('status' => 'failed')));
    }
    $user_files = unserialize($user_files);
    $arParams["IBLOCK_ID"] = $user_files[$sID]["id"];
    $filesOwnerUserID = array_shift($arURL);
    $arParams["BASE_URL"] = $arParams["SEF_FOLDER"] . "/" . $requestTupe . "/" . $filesOwnerUserID . "/";
    $rootSectionID = CIBlockWebdavSocnet::GetSectionID($arParams["IBLOCK_ID"], "user", $filesOwnerUserID);
    if (intval($rootSectionID) <= 0) {
        $APPLICATION->RestartBuffer();
        echo json_encode(array("data" => array(), "TABLE_SETTINGS" => GetTableSettings(0, 0)));
        die;
    }
    $arParams["ROOT_SECTION_ID"] = $rootSectionID;
} else {
    $APPLICATION->RestartBuffer();
    exit(json_encode(array('status' => 'failed')));
}
$action = array_key_exists("action", $_REQUEST) ? $_REQUEST['action'] : "";
$lng = isset($_REQUEST['lang']) ? trim($_REQUEST['lang']) : '';
$lng = substr(preg_replace('/[^a-z0-9_]/i', '', $lng), 0, 2);
if (!defined('LANGUAGE_ID')) {
    $rsSite = CSite::GetByID(SITE_ID);
コード例 #11
0
    }
    if (!$ob->CheckWebRights('', array('action' => 'read', 'arElement' => $wdElement), false)) {
        CWebDavTools::sendJsonResponse(array('error' => 'access_denied', 'message' => GetMessage("WD_ACCESS_DENIED")));
    }
    if (!empty($_POST['checkViewByGoogle'])) {
        CWebDavTools::sendJsonResponse(array('viewByGoogle' => CWebDavExtLinks::getDownloadCountForLink($_POST['extLink']) > 0));
    }
    $hash = CWebDavExtLinks::getHashLink(array('IBLOCK_TYPE' => $ob->IBLOCK_TYPE, 'IBLOCK_ID' => $wdElement['element_array']['IBLOCK_ID'], 'ROOT_SECTION_ID' => $ob->arRootSection['ID']), array('PASSWORD' => '', 'LIFETIME_NUMBER' => CWebDavExtLinks::LIFETIME_TYPE_AUTO, 'LIFETIME_TYPE' => 'minute', 'URL' => $ob->_path, 'BASE_URL' => $ob->base_url, 'SINGLE_SESSION' => false, 'LINK_TYPE' => CWebDavExtLinks::LINK_TYPE_AUTO, 'VERSION_ID' => !empty($_GET['v']) ? $_GET['v'] : null, 'FILE_ID' => !empty($_GET['f']) ? $_GET['f'] : null, 'ELEMENT_ID' => $wdElement['item_id']), null);
    if (!empty($_POST['json'])) {
        CWebDavTools::sendJsonResponse(array('file' => $hash, 'viewerUrl' => CWebDavExtLinks::$urlGoogleViewer . urlencode($hash) . '&embedded=true'));
    }
} elseif (!empty($_REQUEST['saveToDisk'])) {
    if ($USER->GetId() && check_bitrix_sessid()) {
        $data = CWebDavIblock::getRootSectionDataForUser($USER->GetID());
        if ($data) {
            $savedFolderId = CIBlockWebdavSocnet::createSavedFolder($data['IBLOCK_ID'], $data['SECTION_ID'], $USER->GetID());
            if ($savedFolderId) {
                $wdElement = $ob->GetObject(array('check_permissions' => false), false);
                //todo hack by load from url with historyget (example)
                if ($wdElement['not_found']) {
                    $partUri = explode('element/historyget/', $ob->uri);
                    if (!empty($partUri[1])) {
                        $elementId = (int) $partUri[1];
                        $wdElement = $ob->GetObject(array('check_permissions' => false, 'element_id' => $elementId), false);
                    }
                }
                if ($ob->CheckWebRights('', array('action' => 'read', 'arElement' => $wdElement), false)) {
                    $storage = new CWebDavStorageCore();
                    $storage->setStorageId(array('IBLOCK_ID' => $data['IBLOCK_ID'], 'IBLOCK_SECTION_ID' => $data['SECTION_ID']));
                    $filename = $storage->regenerateNameIfNonUnique($wdElement['element_name'], $savedFolderId);
                    $tmpFile = new CWebDavStubTmpFile();
コード例 #12
0
ファイル: component.php プロジェクト: mrdeadmouse/u136006
}
/********************************************************************
				/Default params
********************************************************************/
if ($bDialog) {
    $obDavEventHandler = CWebDavSocNetEvent::GetRuntime();
    if (isset($obDavEventHandler->arPath['PATH_TO_USER']) && isset($obDavEventHandler->arPath['PATH_TO_GROUP'])) {
        $userFileRoot = "files/lib/";
        $groupFileRoot = "files/";
        $fileListDefaultPath = "#path#";
        $fileElementDefaultPath = "element/view/#element_id#/";
        $fileEditDefaultPath = "element/edit/#element_id#/#action#/";
        $fileGetDefaultPath = "element/historyget/#element_id#/#element_name#";
        $userUrl = $obDavEventHandler->arPath['PATH_TO_USER'];
        $groupUrl = $obDavEventHandler->arPath['PATH_TO_GROUP'];
        $currentUserGroups = CIBlockWebdavSocnet::GetUserGroups($currentUserID);
        foreach ($currentUserGroups as $groupID => $arGroup) {
            $currentUserGroups[$groupID]["PATH_FILES"] = str_replace(array("#group_id#", "#path#"), array($groupID, ''), $groupUrl . $groupFileRoot . $fileListDefaultPath);
        }
        $arResult['USER_GROUPS'] =& $currentUserGroups;
    }
    $arJSParams = array();
    $arJSParams['entity_name'] = false;
    $arJSParams['entity_type'] = false;
    $arJSParams['entity_id'] = false;
    if (isset($ob->attributes['user_id'])) {
        $arJSParams['entity_type'] = 'user';
        $arJSParams['entity_id'] = $ob->attributes['user_id'];
    } elseif (isset($ob->attributes['group_id'])) {
        $arJSParams['entity_type'] = 'group';
        $arJSParams['entity_id'] = $ob->attributes['group_id'];
コード例 #13
0
ファイル: functions.php プロジェクト: mrdeadmouse/u136006
function WDUFUserFieldEdit(&$arParams, &$arResult)
{
    global $APPLICATION;
    static $userIblockID = false;
    static $groupIblockID = false;
    static $iblockOptionTypes = array("group_files", "shared_files", "user_files");
    static $iblockOptions = array();
    static $arIBlock = array();
    static $DROPPED = null;
    $arResult['ELEMENTS'] = array();
    $arResult['JSON'] = array();
    if (!CModule::IncludeModule('webdav')) {
        return false;
    }
    if ($DROPPED === null) {
        $DROPPED = CWebDavIblock::getDroppedMetaData();
        $DROPPED = $DROPPED['name'];
    }
    $arResult['controlName'] = $arParams['arUserField']['FIELD_NAME'];
    $arValue = $arParams['arUserField']['VALUE'];
    if (is_array($arValue) && sizeof($arValue) > 0) {
        if (empty($iblockOptions)) {
            foreach ($iblockOptionTypes as $type) {
                $arOpt = CWebDavIblock::LibOptions($type, false, SITE_ID);
                if (is_set($arOpt, 'id') && intval($arOpt['id']) > 0) {
                    $iblockOptions[$type] = $arOpt['id'];
                }
            }
        }
        foreach ($arValue as $elementID) {
            $elementID = intval($elementID);
            if ($elementID <= 0) {
                continue;
            }
            $title = '';
            $dropped = false;
            $dbElement = CIBlockElement::GetList(array(), array('ID' => $elementID), false, false, array('ID', 'NAME', 'IBLOCK_ID', 'IBLOCK_SECTION_ID', 'SOCNET_GROUP_ID', 'CREATED_BY'));
            if ($dbElement && ($arElement = $dbElement->Fetch())) {
                $arSectionTree = WDUGetNavChainSections($arElement['IBLOCK_ID'], $arElement['IBLOCK_SECTION_ID'], false);
                $dropped = false;
                if (sizeof($arSectionTree) > 0 && $arSectionTree[0]['NAME'] == $DROPPED) {
                    $title = GetMessage('WD_LOCAL_COPY_ONLY');
                    $dropped = true;
                } else {
                    $type = array_search($arElement['IBLOCK_ID'], $iblockOptions);
                    if ($type == 'group_files') {
                        if (sizeof($arSectionTree) > 0) {
                            $title = $arSectionTree[0]['NAME'];
                        }
                    } elseif ($type == 'user_files') {
                        if (sizeof($arSectionTree) > 1 && $arSectionTree[1]['NAME'] == $DROPPED) {
                            $title = GetMessage('WD_LOCAL_COPY_ONLY');
                            $dropped = true;
                        } elseif (sizeof($arSectionTree) > 0) {
                            $title = GetMessage('WD_MY_LIBRARY');
                            /*$l = sizeof($arSectionTree);
                            		for($i = 1; $i < $l; $i++)
                            		{
                            			$title .= " / " .  $arSectionTree[$i]['NAME'];
                            		}*/
                        }
                    } else {
                        if (!isset($arIBlock[$arElement['IBLOCK_ID']])) {
                            $dbIB = CIBlock::GetList(array(), array('ID' => $arElement['IBLOCK_ID']));
                            if ($dbIB && ($arIB = $dbIB->Fetch())) {
                                $arIBlock[$arElement['IBLOCK_ID']] = $arIB;
                            }
                        }
                        if (isset($arIBlock[$arElement['IBLOCK_ID']])) {
                            $title = $arIBlock[$arElement['IBLOCK_ID']]['NAME'];
                        }
                    }
                }
                $arElement['FILE_SIZE'] = '';
                $dbSize = CIBlockElement::GetProperty($arElement['IBLOCK_ID'], $arElement['ID'], array(), array('CODE' => 'WEBDAV_SIZE'));
                if ($dbSize && ($arSize = $dbSize->Fetch())) {
                    $arElement['FILE_SIZE'] = CFile::FormatSize(intval($arSize['VALUE']), 0);
                }
                $arElement['FILE'] = array();
                $dbSize = CIBlockElement::GetProperty($arElement['IBLOCK_ID'], $arElement['ID'], array(), array('CODE' => 'FILE'));
                if ($dbSize && ($arSize = $dbSize->Fetch())) {
                    $arElement['FILE'] = CFile::GetFileArray($arSize['VALUE']);
                }
                $arSection =& $arSectionTree[0];
                $detailPath = CWebDavIblock::LibOptions('lib_paths', true, $arElement['IBLOCK_ID']);
                $arPaths = WDUFGetPathOptions($detailPath, $arElement['IBLOCK_ID'], $arSection, $arElement);
                $arElement["URL_VIEW"] = $arPaths["path"];
                $arElement["URL_EDIT"] = $arPaths["edit"];
                $arElement["URL_DELETE_DROPPED"] = $arPaths["delete_dropped"];
                $arElement["URL_GET"] = $arPaths["history_get"];
                $arElement['DROPPED'] = $dropped;
                $arElement['TITLE'] = $title;
                $arResult['ELEMENTS'][] = $arElement;
            }
        }
    }
    // need to load Options for ajax dialogs
    $extDir = WDUFGetExtranetDir();
    if ($extDir !== '') {
        $groupIBlockID = CWebDavIblock::LibOptions('group_files', false, SITE_ID);
        if (!($groupIBlockID && isset($groupIBlockID['id']) && intval($groupIBlockID['id']) > 0)) {
            $arGroups = CIBlockWebdavSocnet::GetUserGroups(0, false);
            if (sizeof($arGroups) > 0) {
                $arGroup = array_pop($arGroups);
                $groupFilesUrl = str_replace(array("///", "//"), "/", "/" . $extDir . '/workgroups/group/' . $arGroup['GROUP_ID'] . '/files/');
                $arResult['JSON'][] = $groupFilesUrl;
            }
        }
    } else {
        $sharedLibID = CWebDavIblock::LibOptions('shared_files', false, SITE_ID);
        if (!($sharedLibID && isset($sharedLibID['id']) && intval($sharedLibID['id']) > 0 && isset($sharedLibID['base_url']) && strlen($sharedLibID['base_url']) > 0)) {
            if (!(CModule::IncludeModule('extranet') && strlen(CExtranet::GetExtranetSiteID()) > 0 && SITE_ID == CExtranet::GetExtranetSiteID())) {
                $arResult['JSON'][] = '/docs/';
                $arResult['JSON'][] = '/docs/shared/';
            }
        }
        $userIBlockID = CWebDavIblock::LibOptions('user_files', false, SITE_ID);
        if (!($userIBlockID && isset($userIBlockID['id']) && intval($userIBlockID['id']) > 0)) {
            $arResult['JSON'][] = '/company/personal/user/' . $GLOBALS['USER']->GetID() . '/files/lib/';
        }
        $groupIBlockID = CWebDavIblock::LibOptions('group_files', false, SITE_ID);
        if (!($groupIBlockID && isset($groupIBlockID['id']) && intval($groupIBlockID['id']) > 0)) {
            $arGroups = CIBlockWebdavSocnet::GetUserGroups(0, false);
            if (sizeof($arGroups) > 0) {
                $arGroup = array_pop($arGroups);
                $arResult['JSON'][] = '/workgroups/group/' . $arGroup['GROUP_ID'] . '/files/';
            }
        }
    }
}
コード例 #14
0
ファイル: template.php プロジェクト: mrdeadmouse/u136006
if (!empty($arResult["NOTIFY_MESSAGE"])) {
    ShowNote($arResult["NOTIFY_MESSAGE"]);
}
if (empty($arResult['ERROR_MESSAGE'])) {
    $title = '';
    $dropped = $createdFile = false;
    if ($ob->_isInMeta($arResult["ELEMENT"]["ID"], "DROPPED")) {
        $savedMetaData = CWebDavIblock::getDroppedMetaData();
        $title = GetMessage('WD_MY_LIBRARY');
        $title .= ' / ' . $savedMetaData['alias'];
        $dropped = true;
    } elseif (isset($ob->attributes['user_id']) && $ob->attributes['user_id'] == $GLOBALS['USER']->GetID()) {
        $title = GetMessage('WD_MY_LIBRARY');
        if (CIBlockWebdavSocnet::isCreatedDocFolder($ob->IBLOCK_ID, $arResult['ELEMENT']['IBLOCK_SECTION_ID'], $GLOBALS['USER']->GetID())) {
            $createdFile = true;
            $title .= ' / ' . CIBlockWebdavSocnet::getNameCreatedDocFolder();
        }
    } elseif (isset($ob->attributes['group_id'])) {
        $title = $ob->arRootSection['NAME'];
        if ($title == GetMessage("SONET_GROUP_PREFIX")) {
            $arGroup = CSocNetGroup::GetByID($ob->attributes['group_id']);
            $title = GetMessage("SONET_GROUP_PREFIX") . $arGroup['NAME'];
        }
    } else {
        $title = $arParams['STR_TITLE'];
    }
    ?>
<table>
	<tr class="wd-inline-file" id="wd-doc<?php 
    echo intval($arResult["ELEMENT"]['ID']);
    ?>
コード例 #15
0
 protected function saveNewFile(array $fileData)
 {
     $filename = CTempFile::GetFileName(uniqid('_wd'));
     CheckDirPath($filename);
     $doc = $this->getDocHandler()->downloadFile(array('id' => $this->getFileId(), 'mimeType' => $this->getWebdav()->get_mime_type('1.' . $fileData['createType'])));
     file_put_contents($filename, $doc['content']);
     global $USER;
     $dataUserSection = CWebDavIblock::getRootSectionDataForUser($USER->GetID());
     if (!$dataUserSection) {
         return array('status' => 'error');
     }
     $createdDocFolderId = CIBlockWebdavSocnet::createCreatedDocFolder($dataUserSection['IBLOCK_ID'], $dataUserSection['SECTION_ID'], $USER->GetID());
     if (!$createdDocFolderId) {
         return array('status' => 'error');
     }
     $storage = new CWebDavStorageCore();
     $storage->setStorageId(array('IBLOCK_ID' => $dataUserSection['IBLOCK_ID'], 'IBLOCK_SECTION_ID' => $dataUserSection['SECTION_ID']));
     $nameToSavedFile = $storage->regenerateNameIfNonUnique($doc['name'], $createdDocFolderId);
     $tmpFile = new CWebDavStubTmpFile();
     $tmpFile->path = $filename;
     try {
         $fileData = $storage->addFile($nameToSavedFile, $createdDocFolderId, $tmpFile);
         $response = array('status' => 'success', 'elementId' => $fileData['extra']['id'], 'sectionId' => $fileData['extra']['sectionId'], 'name' => $nameToSavedFile, 'sizeInt' => $fileData['size'], 'type' => CWebDavBase::get_mime_type($nameToSavedFile), 'link' => str_replace('#element_id#', $fileData['extra']['id'], CWebDavSocNetEvent::getRuntime()->arPath['ELEMENT_EDIT_INLINE_URL']), 'nameWithoutExtension' => GetFileNameWithoutExtension($nameToSavedFile));
     } catch (Exception $e) {
         $response = array('status' => 'error');
     }
     return $response;
 }