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