예제 #1
0
 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;
 }