Esempio n. 1
0
 /**
  * Format a list of UFFields for use with buildProfile. This is the in-memory analog
  * of getFields().
  *
  * @param array $groupArr
  *   (mimic CRM_UF_DAO_UFGroup).
  * @param array $fieldArrs
  *   List of fields (each mimics CRM_UF_DAO_UFField).
  * @param bool $visibility
  *   Visibility of fields we are interested in.
  * @param bool $searchable
  * @param bool $showAll
  * @param null $ctype
  * @param int $permissionType
  *
  * @return array
  * @see self::getFields
  */
 public static function formatUFFields($groupArr, $fieldArrs, $visibility = NULL, $searchable = NULL, $showAll = FALSE, $ctype = NULL, $permissionType = CRM_Core_Permission::CREATE)
 {
     // $group = new CRM_Core_DAO_UFGroup();
     // $group->copyValues($groupArr); // no... converts string('') to string('null')
     $group = (object) $groupArr;
     // Refactoring note: The $fieldArrs here may be slightly different than the $ufFields
     // used by calculateGroupType, but I don't think the missing fields matter, and -- if
     // they did -- the obvious fix would produce mutual recursion.
     $ufGroupType = self::_calculateGroupType($fieldArrs);
     $profileType = CRM_Core_BAO_UFField::calculateProfileType(implode(',', $ufGroupType));
     $contactActivityProfile = CRM_Core_BAO_UFField::checkContactActivityProfileTypeByGroupType(implode(',', $ufGroupType));
     $importableFields = self::getImportableFields($showAll, $profileType, $contactActivityProfile);
     list($customFields, $addressCustomFields) = self::getCustomFields($ctype);
     $formattedFields = array();
     foreach ($fieldArrs as $fieldArr) {
         $field = (object) $fieldArr;
         if (!self::filterUFField($field, $searchable, $showAll, $visibility)) {
             continue;
         }
         list($name, $formattedField) = self::formatUFField($group, $field, $customFields, $addressCustomFields, $importableFields, $permissionType);
         if ($formattedField !== NULL) {
             $formattedFields[$name] = $formattedField;
         }
     }
     return $formattedFields;
 }