コード例 #1
0
 /**
  * Returns a field collection
  *
  * @param mixed  $entity ElggEntity or an array of entity attributes
  * @param string $action Action name (used as a plugin hook type)
  * @param array  $params Additional context params to pass to the hook
  * @return \hypeJunction\Prototyper\Elements\FieldCollection
  */
 public function fields($entity = array(), $action = 'all', array $params = array())
 {
     $fieldCollection = array();
     $entity = $this->entityFactory->build($entity);
     if ($entity instanceof \ElggEntity) {
         $params['entity'] = $entity;
         $fields = (array) elgg_trigger_plugin_hook('prototype', $action, $params, array());
         $attribute_names = $this->entityFactory->getAttributeNames($entity);
         if (!$entity->guid) {
             $fields['type'] = array('type' => 'hidden');
             $fields['subtype'] = array('type' => 'hidden');
             $fields['owner_guid'] = array('type' => 'hidden');
             $fields['container_guid'] = array('type' => 'hidden');
         } else {
             $fields['guid'] = array('type' => 'hidden');
         }
         foreach ($fields as $shortname => $field) {
             $field['entity_type'] = $entity->getType();
             $field['entity_subtype'] = $entity->getSubtype();
             if (empty($field['shortname'])) {
                 $field['shortname'] = $shortname;
             }
             if (in_array($shortname, $attribute_names)) {
                 $field['data_type'] = 'attribute';
                 $field['class_name'] = Elements\AttributeField::CLASSNAME;
             }
             $fieldObj = $this->fieldFactory->build($field);
             if ($fieldObj instanceof Elements\Field) {
                 $fieldCollection[] = $fieldObj;
             }
         }
     }
     return new Elements\FieldCollection($fieldCollection);
 }