コード例 #1
0
 /**
  * Returns JSON containing information used to build the edit view for a record
  * @todo: Put all of the field formatting in the field component
  * @since 0.0.9
  */
 public function actionRecordEdit()
 {
     $data = $this->parseRequest(['id' => 0]);
     $response['error'] = null;
     /**
      * @var RecordEntity $record
      */
     if ($data['id'] > 0 && ($record = Record::getValidRecordWithId($data['id']))) {
         Record::prepare($record);
         $response['essential'] = Record::getFormattedData($record);
         $fieldsEditData = [];
         /**
          * @var FieldEntity[] $fields
          */
         $fields = Field::getValidFields();
         foreach ($fields as $field) {
             $fieldEditData['id'] = $field->getId();
             $fieldEditData['name'] = $field->getName();
             $fieldEditData['type'] = $field->getType();
             $fieldEditData['has_default'] = $field->hasDefault();
             $fieldEditData['allow_other'] = $field->isAllowOther();
             $fieldEditData['is_multiple'] = $field->isMultiple();
             $defaults = $field->getDefaults();
             $defaultArray = [];
             foreach ($defaults as $default) {
                 $defaultArray[] = $default->getValue();
             }
             $fieldEditData['defaults'] = $defaultArray;
             $fieldData = $record->findOrCreateData($field->getId());
             if ($field->hasDefault()) {
                 if ($field->isMultiple()) {
                     $value = unserialize($fieldData->getLongText());
                 } else {
                     if ($fieldData->isDefault() || !$field->isAllowOther()) {
                         $value = $fieldData->getInt();
                     } else {
                         $value = $fieldData->getVarchar();
                     }
                 }
             } else {
                 if ($field->isMultiple()) {
                     $value = unserialize($fieldData->getLongText());
                 } else {
                     $value = Data::serialize($fieldData);
                 }
             }
             $fieldEditData['value'] = $value;
             $fieldsEditData[] = $fieldEditData;
         }
         $response['data'] = $fieldsEditData;
     } else {
         $response['error'] = ['id' => 1, 'description' => 'The supplied ID is invalid!'];
     }
     echo json_encode($response);
 }