コード例 #1
0
ファイル: Form.php プロジェクト: hyebahi/civicrm-core
 /**
  * Validate profile and provided activity Id.
  *
  * @param int $activityId
  * @param int $contactId
  * @param int $gid
  *
  * @return array
  */
 public static function validateContactActivityProfile($activityId, $contactId, $gid)
 {
     $errors = array();
     if (!$activityId) {
         $errors[] = 'Profile is using one or more activity fields, and is missing the activity Id (aid) in the URL.';
         return $errors;
     }
     $activityDetails = array();
     $activityParams = array('id' => $activityId);
     CRM_Activity_BAO_Activity::retrieve($activityParams, $activityDetails);
     if (empty($activityDetails)) {
         $errors[] = 'Invalid Activity Id (aid).';
         return $errors;
     }
     $profileActivityTypes = CRM_Core_BAO_UFGroup::groupTypeValues($gid, 'Activity');
     if (!empty($profileActivityTypes['Activity']) && !in_array($activityDetails['activity_type_id'], $profileActivityTypes['Activity']) || !in_array($contactId, $activityDetails['assignee_contact']) && !in_array($contactId, $activityDetails['target_contact'])) {
         $errors[] = 'This activity cannot be edited or viewed via this profile.';
     }
     return $errors;
 }
コード例 #2
0
ファイル: Field.php プロジェクト: kidaa30/yes
 /**
  * Validation rule for custom data extends entity column values.
  *
  * @param Object $customField
  *   Custom field.
  * @param int $gid
  *   Group Id.
  * @param string $fieldType
  *   Group type of the field.
  * @param array $errors
  *   Collect errors.
  *
  * @return array
  *   list of errors to be posted back to the form
  */
 public static function formRuleCustomDataExtentColumnValue($customField, $gid, $fieldType, &$errors)
 {
     // fix me : check object $customField
     if (in_array($fieldType, array('Participant', 'Contribution', 'Membership', 'Activity', 'Case'))) {
         $params = array('id' => $customField->custom_group_id);
         $customGroup = array();
         CRM_Core_BAO_CustomGroup::retrieve($params, $customGroup);
         if ($fieldType != CRM_Utils_Array::value('extends', $customGroup) || empty($customGroup['extends_entity_column_value'])) {
             return $errors;
         }
         $extendsColumnValues = array();
         foreach (explode(CRM_Core_DAO::VALUE_SEPARATOR, $customGroup['extends_entity_column_value']) as $val) {
             if ($val) {
                 $extendsColumnValues[] = $val;
             }
         }
         if (empty($extendsColumnValues)) {
             return $errors;
         }
         $fieldTypeValues = CRM_Core_BAO_UFGroup::groupTypeValues($gid, $fieldType);
         if (empty($fieldTypeValues[$fieldType])) {
             return;
         }
         $disallowedTypes = array_diff($extendsColumnValues, $fieldTypeValues[$fieldType]);
         if (!empty($disallowedTypes)) {
             $errors['field_name'] = ts('Profile is already having custom fields extending different group types, you can not add or update this custom field.');
         }
     }
 }