Ejemplo n.º 1
0
 /**
  * @param string $table
  * @param array $recordData
  * @return bool
  */
 public function copyFiles($tableName, &$recordData)
 {
     $schemaArray = TableSchema::getSchemaArray($tableName);
     foreach ($schemaArray as $column) {
         $colName = $column['id'];
         // Ignore absent values & non-arrays
         if (!isset($recordData[$colName]) || !is_array($recordData[$colName])) {
             continue;
         }
         $foreignRow = $recordData[$colName];
         $colUiType = $column['ui'];
         // $isManyToOne = (array_key_exists('relationship', $column) &&
         //     $column['relationship']['type'] == 'MANYTOONE'
         // );
         // $isManyToMany = (array_key_exists('relationship', $column) &&
         //     $column['relationship']['type'] == 'MANYTOMANY'
         // );
         $foreignTableName = $column['relationship']['table_related'];
         // @todo: rewrite this
         if ($foreignTableName === 'directus_files') {
             // Update/Add foreign record
             $Files = new \Directus\Files\Files();
             if (count(array_filter($foreignRow, 'is_array')) == count($foreignRow)) {
                 $index = 0;
                 foreach ($foreignRow as $row) {
                     if (!isset($row['data'][$this->primaryKeyFieldName]) && isset($row['data']['data'])) {
                         if (array_key_exists('type', $row['data']) && strpos($row['data']['type'], 'embed/') === 0) {
                             $recordData[$colName][$index]['data'] = $Files->saveEmbedData($row['data']);
                         } else {
                             $recordData[$colName][$index]['data'] = $Files->saveData($row['data']['data'], $row['data']['name']);
                         }
                     }
                     unset($recordData[$colName][$index]['data']['data']);
                     $index++;
                 }
             } else {
                 if (!isset($foreignRow[$this->primaryKeyFieldName]) && isset($foreignRow['data'])) {
                     if (array_key_exists('type', $foreignRow) && strpos($foreignRow['type'], 'embed/') === 0) {
                         $recordData[$colName] = $Files->saveEmbedData($foreignRow);
                     } else {
                         $recordData[$colName] = $Files->saveData($foreignRow['data'], $foreignRow['name']);
                     }
                 }
                 unset($recordData[$colName]['data']);
             }
         }
     }
     return true;
 }
Ejemplo n.º 2
0
 if (!is_null($id)) {
     $params['id'] = $id;
 }
 $table = "directus_files";
 $currentUser = Auth::getUserInfo();
 $TableGateway = new TableGateway($acl, $table, $ZendDb);
 $activityLoggingEnabled = !(isset($_GET['skip_activity_log']) && 1 == $_GET['skip_activity_log']);
 $activityMode = $activityLoggingEnabled ? TableGateway::ACTIVITY_ENTRY_MODE_PARENT : TableGateway::ACTIVITY_ENTRY_MODE_DISABLED;
 switch ($app->request()->getMethod()) {
     case "POST":
         $requestPayload['user'] = $currentUser['id'];
         $requestPayload['date_uploaded'] = gmdate('Y-m-d H:i:s');
         // When the file is uploaded there's not a data key
         if (array_key_exists('data', $requestPayload)) {
             $Files = new \Directus\Files\Files();
             $recordData = $Files->saveData($requestPayload['data'], $requestPayload['name']);
             // $requestPayload['file_name'] = $requestPayload['name'];
             $requestPayload = array_merge($requestPayload, $recordData);
         }
         $newRecord = $TableGateway->manageRecordUpdate($table, $requestPayload, $activityMode);
         $params['id'] = $newRecord['id'];
         break;
     case "PATCH":
         $requestPayload['id'] = $id;
     case "PUT":
         if (!is_null($id)) {
             $TableGateway->manageRecordUpdate($table, $requestPayload, $activityMode);
             break;
         }
 }
 $Files = new TableGateway($acl, $table, $ZendDb);