private static function CheckFields($action, &$fields, $ID, $params = null) { global $DB; self::ClearErrors(); if (!(is_array($fields) && count($fields) > 0)) { self::RegisterError(array('text' => 'Fields is not specified.')); return false; } if ($action == 'ADD') { // Validation if (!isset($fields['OWNER_ID'])) { self::RegisterError(array('text' => 'OWNER_ID is not assigned.')); } if (!isset($fields['OWNER_TYPE_ID'])) { self::RegisterError(array('text' => 'OWNER_TYPE_ID is not assigned.')); } if (!isset($fields['TYPE_ID'])) { self::RegisterError(array('text' => 'TYPE_ID is not assigned.')); } elseif (!CCrmActivityType::IsDefined($fields['TYPE_ID'])) { self::RegisterError(array('text' => 'TYPE_ID is not supported.')); } if (!isset($fields['SUBJECT'])) { self::RegisterError(array('text' => 'SUBJECT is not assigned.')); } // if (!isset($fields['START_TIME'])) //is allowed for tasks // { // self::RegisterError(array('text' => 'START_TIME is not assigned.')); // } if (!isset($fields['RESPONSIBLE_ID'])) { self::RegisterError(array('text' => 'RESPONSIBLE_ID is not assigned.')); } if (!isset($fields['NOTIFY_TYPE'])) { $fields['NOTIFY_TYPE'] = CCrmActivityNotifyType::None; } if ($fields['NOTIFY_TYPE'] == CCrmActivityNotifyType::None) { $fields['NOTIFY_VALUE'] = 0; } elseif (!isset($fields['NOTIFY_VALUE'])) { self::RegisterError(array('text' => 'NOTIFY_VALUE is not assigned.')); } if (isset($fields['COMPLETED'])) { $completed = strtoupper(strval($fields['COMPLETED'])); if (!($completed == 'Y' || $completed == 'N')) { $completed = intval($fields['COMPLETED']) > 0 ? 'Y' : 'N'; } $fields['COMPLETED'] = $completed; } else { $fields['COMPLETED'] = 'N'; } if (isset($fields['CREATED'])) { unset($fields['CREATED']); } if (isset($fields['LAST_UPDATED'])) { unset($fields['LAST_UPDATED']); } $fields['~CREATED'] = $fields['~LAST_UPDATED'] = $DB->CurrentTimeFunction(); if (!isset($fields['AUTHOR_ID'])) { $currentUserId = CCrmPerms::GetCurrentUserID(); $fields['AUTHOR_ID'] = $currentUserId > 0 ? $currentUserId : $fields['RESPONSIBLE_ID']; } $fields['EDITOR_ID'] = $fields['AUTHOR_ID']; if (!isset($fields['END_TIME']) && isset($fields['START_TIME'])) { $fields['END_TIME'] = $fields['START_TIME']; } elseif (!isset($fields['START_TIME']) && isset($fields['END_TIME'])) { $fields['START_TIME'] = $fields['END_TIME']; } //DEADLINE --> if (isset($fields['DEADLINE'])) { unset($fields['DEADLINE']); } $typeID = intval($fields['TYPE_ID']); if ($typeID === CCrmActivityType::Task && isset($fields['END_TIME'])) { $fields['DEADLINE'] = $fields['END_TIME']; } elseif ($typeID !== CCrmActivityType::Task && isset($fields['START_TIME'])) { $fields['DEADLINE'] = $fields['START_TIME']; } if (!isset($fields['DEADLINE'])) { $fields['~DEADLINE'] = CCrmDateTimeHelper::GetMaxDatabaseDate(); } //<-- DEADLINE if (!isset($fields['ASSOCIATED_ENTITY_ID'])) { $fields['ASSOCIATED_ENTITY_ID'] = 0; } if (!isset($fields['PRIORITY'])) { $fields['PRIORITY'] = CCrmActivityPriority::Low; } if (!isset($fields['DIRECTION'])) { $fields['DIRECTION'] = CCrmActivityDirection::Undefined; } if (!isset($fields['DESCRIPTION_TYPE'])) { $fields['DESCRIPTION_TYPE'] = CCrmContentType::PlainText; } if (!isset($arFields['STORAGE_TYPE_ID'])) { $arFields['STORAGE_TYPE_ID'] = self::GetDefaultStorageTypeID(); } if (!isset($arFields['PARENT_ID'])) { $arFields['PARENT_ID'] = 0; } } else { $prevFields = is_array($params) && isset($params['PREVIOUS_FIELDS']) && is_array($params['PREVIOUS_FIELDS']) ? $params['PREVIOUS_FIELDS'] : null; if (!is_array($prevFields) && !self::Exists($ID, false)) { self::RegisterError(array('text' => "Could not find CrmActivity(ID = {$ID})")); } if (isset($fields['COMPLETED'])) { $completed = strtoupper(strval($fields['COMPLETED'])); if (!($completed == 'Y' || $completed == 'N')) { $completed = intval($fields['COMPLETED']) > 0 ? 'Y' : 'N'; } $fields['COMPLETED'] = $completed; } // Default settings if (isset($fields['CREATED'])) { unset($fields['CREATED']); } if (isset($fields['LAST_UPDATED'])) { unset($fields['LAST_UPDATED']); } $fields['~LAST_UPDATED'] = $DB->CurrentTimeFunction(); if (!isset($fields['EDITOR_ID'])) { $userID = isset($fields['AUTHOR_ID']) ? $fields['AUTHOR_ID'] : 0; if ($userID <= 0) { $userID = CCrmPerms::GetCurrentUserID(); } $fields['EDITOR_ID'] = $userID > 0 ? $userID : $fields['RESPONSIBLE_ID']; } unset($fields['AUTHOR_ID']); // TYPE_ID --> if (isset($fields['TYPE_ID'])) { unset($fields['TYPE_ID']); } // <-- TYPE_ID //DEADLINE --> if (isset($fields['DEADLINE'])) { unset($fields['DEADLINE']); } $typeID = isset($prevFields['TYPE_ID']) ? intval($prevFields['TYPE_ID']) : CCrmActivityType::Undefined; if ($typeID === CCrmActivityType::Task && isset($fields['END_TIME'])) { $fields['DEADLINE'] = $fields['END_TIME']; } elseif ($typeID !== CCrmActivityType::Task && isset($fields['START_TIME'])) { $fields['DEADLINE'] = $fields['START_TIME']; } //<-- DEADLINE } return self::GetErrorCount() == 0; }