public static function Edit($Params) { global $DB, $USER; $arFields = $Params['arFields']; if (!self::CheckFields($arFields)) { return false; } $userId = intVal(isset($Params['userId']) ? $Params['userId'] : $USER->GetID()); //if (!CCalendarSect::CanDo('calendar_edit_section', $ID)) // return CCalendar::ThrowError('EC_ACCESS_DENIED'); $bNew = !isset($arFields['ID']) || $arFields['ID'] <= 0; if (isset($arFields['COLOR']) || $bNew) { $arFields['COLOR'] = CCalendar::Color($arFields['COLOR']); } $arFields['TIMESTAMP_X'] = CCalendar::Date(mktime()); if (is_array($arFields['EXPORT'])) { $arFields['EXPORT'] = array('ALLOW' => !!$arFields['EXPORT']['ALLOW'], 'SET' => in_array($arFields['EXPORT']['set'], array('all', '3_9', '6_12')) ? $arFields['EXPORT']['set'] : 'all'); } if (!is_array($arFields['EXPORT'])) { $arFields['EXPORT'] = array('ALLOW' => false, 'SET' => 'all'); } $arFields['EXPORT'] = serialize($arFields['EXPORT']); if ($bNew) { if (!isset($arFields['DATE_CREATE'])) { $arFields['DATE_CREATE'] = CCalendar::Date(mktime()); } if ((!isset($arFields['CREATED_BY']) || !$arFields['CREATED_BY']) && $USER) { $arFields['CREATED_BY'] = $USER->IsAuthorized() ? $USER->GetID() : ''; } unset($arFields['ID']); $ID = CDatabase::Add("b_calendar_section", $arFields, array('DESCRIPTION')); } else { $ID = $arFields['ID']; unset($arFields['ID']); $strUpdate = $DB->PrepareUpdate("b_calendar_section", $arFields); $strSql = "UPDATE b_calendar_section SET " . $strUpdate . " WHERE ID=" . IntVal($ID); $DB->QueryBind($strSql, array('DESCRIPTION' => $arFields['DESCRIPTION'])); } //SaveAccess if ($ID > 0 && is_array($arFields['ACCESS'])) { if ($arFields['CAL_TYPE'] == 'user' && $arFields['OWNER_ID'] == $userId || self::CanDo('calendar_edit_access', $ID)) { self::SavePermissions($ID, $arFields['ACCESS']); } elseif ($bNew) { self::SavePermissions($ID, CCalendarSect::GetDefaultAccess($arFields['CAL_TYPE'], $arFields['OWNER_ID'])); } } if ($bNew && $ID > 0 && !isset($arFields['ACCESS'])) { self::SavePermissions($ID, CCalendarSect::GetDefaultAccess($arFields['CAL_TYPE'], $arFields['OWNER_ID'])); } CCalendar::ClearCache('section_list'); if ($ID > 0 && isset(self::$Permissions[$ID])) { unset(self::$Permissions[$ID]); self::$arOp = array(); } return $ID; }