root/mediamosa_snapshot_2-x/sites/all/modules/mediamosa/core/asset/mediafile/mediamosa_asset_mediafile.inc @ 73

Revision 73, 21.1 kB (checked in by admin, 6 months ago)

The latest and greatest development snapshot.

Line 
1<?php
2// $Id$
3
4/**
5 * MediaMosa is Open Source Software to build a Full Featured, Webservice
6 * Oriented Media Management and Distribution platform (http://mediamosa.org)
7 *
8 * Copyright (C) 2009 SURFnet BV (http://www.surfnet.nl) and Kennisnet
9 * (http://www.kennisnet.nl)
10 *
11 * MediaMosa is based on the open source Drupal platform and
12 * was originally developed by Madcap BV (http://www.madcap.nl)
13 *
14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License version 2 as
16 * published by the Free Software Foundation.
17 * This program is distributed in the hope that it will be useful, but
18 * WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
20 * General Public License for more details.
21 *
22 * You should have received a copy of the GNU General Public License along
23 * with this program; if not, you can find it at:
24 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
25 */
26
27 /**
28  * @file
29  * Common function class for mediamosa_asset_mediafile
30  */
31class mediamosa_asset_mediafile {
32
33  // ------------------------------------------------------------------ Consts.
34  const UNKNOWN_FILENAME = 'Filename_not_set';
35
36  // ------------------------------------------------------------------ Static Functions.
37  /**
38   * Get the mediafile.
39   *
40   * @param string $mediafile_id
41   */
42  static public function get($mediafile_id, $app_id = NULL) {
43
44    $query = mediamosa_db::db_select(mediamosa_asset_mediafile_db::TABLE_NAME, 'mf');
45    $query->fields('mf');
46    $query->condition('mf.' . mediamosa_asset_mediafile_db::ID, $mediafile_id);
47    if (isset($app_id)) {
48      $query->condition('mf.' . mediamosa_asset_mediafile_db::APP_ID, $app_id);
49    }
50    return $query->execute()->fetchAssoc();
51  }
52
53  /**
54   * Will test if mediafile exits, will throw when fail.
55   *
56   * @param string $mediafile_id
57   */
58  static public function must_exists($mediafile_id, $app_id = NULL) {
59    if (isset($app_id)) {
60      return mediamosa_db::db_must_exists(mediamosa_asset_mediafile_db::TABLE_NAME, array(mediamosa_asset_mediafile_db::APP_ID => $app_id, mediamosa_asset_mediafile_db::ID => $mediafile_id));
61    }
62
63    return mediamosa_db::db_must_exists(mediamosa_asset_mediafile_db::TABLE_NAME, array(mediamosa_asset_mediafile_db::ID => $mediafile_id));
64  }
65
66  /**
67   * Remove one or more mediafiles.
68   *
69   * @param mixed $mediafile_id
70   */
71  static public function delete($mixed_mediafile_id) {
72    $a_mediafile_ids = is_array($mixed_mediafile_id) ? $mixed_mediafile_id : (empty($mixed_mediafile_id) ? array() : array($mixed_mediafile_id));
73
74    // must have something.
75    assert(count($a_mediafile_ids));
76    if (!count($a_mediafile_ids)) {
77      return;
78    }
79
80    // Delete mediafile metadata first.
81    mediamosa_db::db_delete(mediamosa_asset_mediafile_metadata_db::TABLE_NAME)
82      ->condition(mediamosa_asset_mediafile_metadata_db::MEDIAFILE_ID, $a_mediafile_ids, 'IN')
83      ->execute();
84
85    // Delete from SAN/NAS.
86    $query = mediamosa_db::db_select(mediamosa_asset_mediafile_db::TABLE_NAME, 'mf');
87    $query->fields('mf', array(mediamosa_asset_mediafile_db::APP_ID, mediamosa_asset_mediafile_db::SANNAS_MOUNT_POINT, mediamosa_asset_mediafile_db::ID));
88    $query->condition(mediamosa_asset_mediafile_db::ID, $a_mediafile_ids, 'IN');
89
90    // Now delete the file of each found mediafile.
91    foreach ($query->execute() as $a_mediafile) {
92      mediamosa_io::unlink(mediamosa_configuration_storage::mediafile_filename_get($a_mediafile));
93    }
94
95    // Delete mediafile from DB.
96    $query = mediamosa_db::db_delete(mediamosa_asset_mediafile_db::TABLE_NAME);
97    $query->condition(mediamosa_asset_mediafile_db::ID, $a_mediafile_ids, 'IN');
98    $query->execute();
99
100    // Update the asset information.
101    foreach ($a_mediafile_ids as $mediafile_id) {
102      mediamosa_asset::update_asset_info($mediafile_id);
103    }
104  }
105
106  /**
107   * Delete unofficial mediafiles.
108   *
109   * @param string $asset_id
110   */
111  static public function delete_transcoded_unoriginal_mediafiles($asset_id) {
112    $query = mediamosa_db::db_select(mediamosa_asset_mediafile_db::TABLE_NAME, 'mf');
113    $query->addField('mf', mediamosa_asset_mediafile_db::ID);
114    $query->condition(mediamosa_asset_mediafile_db::ASSET_ID, $asset_id);
115    $query->condition(mediamosa_asset_mediafile_db::IS_ORIGINAL_FILE, mediamosa_asset_mediafile_db::IS_ORIGINAL_FILE_FALSE);
116    $result = $query->execute()->fetchCol();
117
118    // Delete mediafiles.
119    if (!empty($result)) {
120      self::delete($result);
121    }
122  }
123
124  /**
125   * Enrich the response with mediafile data.
126   *
127   * 1.x _media_management_return_mediafile_list()
128   *
129   * Merged with 1.x _media_management_process_mediafile_output.
130   *
131   * @param array $a_mediafile_ids
132   * @param array $mixed_app_id
133   *  Either array or integer application ID.
134   * @param boolean $is_oai
135   *  Include extended EGA Play Urls. (WAS hack is_oai on _POST/_GET (!))
136   * @param boolean $show_stills
137   */
138  static public function enrich_response_mediafile(array $a_mediafile_ids, $mixed_app_id, $is_oai, $show_stills = TRUE) {
139
140    // Can be empty or null.
141    if (empty($a_mediafile_ids) || is_null(reset($a_mediafile_ids))) {
142      return;
143    }
144
145    // Both are allowed and needed.
146    $app_id = is_array($mixed_app_id) ? reset($mixed_app_id) : $mixed_app_id;
147    $a_app_ids = is_array($mixed_app_id) ? $mixed_app_id : array($mixed_app_id);
148
149    // Prefix for metadata in array.
150    $prefix = 'mediafile_metadata_';
151
152    // Get the columns from the schema.
153    $a_columns = mediamosa_db::db_get_columns(mediamosa_asset_mediafile_metadata_db::TABLE_NAME);
154
155    $query = mediamosa_db::db_select(mediamosa_asset_mediafile_db::TABLE_NAME, 'mf');
156    $query->leftJoin(mediamosa_asset_mediafile_metadata_db::TABLE_NAME, 'mfm', 'mfm.mediafile_id = mf.mediafile_id');
157    $query->leftJoin(mediamosa_asset_db::TABLE_NAME, 'a', 'mf.asset_id = a.asset_id');
158    $query->condition('mf.' . mediamosa_asset_mediafile_db::ID, $a_mediafile_ids, 'IN');
159    $query->fields('mf');
160    $query->addField('a', mediamosa_asset_db::PARENT_ID);
161
162    // Now select the metadata columns to the query.
163    foreach ($a_columns as $column) {
164      if (in_array(
165        $column,
166        array(
167          mediamosa_asset_mediafile_metadata_db::MEDIAFILE_ID,
168          mediamosa_asset_mediafile_metadata_db::ID,
169          mediamosa_asset_mediafile_metadata_db::STILL_TIME_CODE,
170          mediamosa_asset_mediafile_metadata_db::STILL_ORDER,
171          mediamosa_asset_mediafile_metadata_db::STILL_FORMAT,
172          mediamosa_asset_mediafile_metadata_db::STILL_TYPE,
173          mediamosa_asset_mediafile_metadata_db::STILL_DEFAULT
174        )
175      )) {
176        continue; // Some columns need to be skipped.
177      }
178
179      // Prefix the metadata in the result.
180      $query->addField('mfm', $column, $prefix . $column);
181    }
182
183    // Execute query.
184    $result = $query->execute();
185
186    // Add to item.
187    $a_items = array();
188    foreach ($result as $a_row) {
189      $a_items[$a_row[mediamosa_asset_mediafile_db::ID]] = $a_row;
190    }
191
192    // Now we know which mediafiles where found.
193    $a_mediafile_ids_found = array_keys($a_items);
194
195    // Lets include the still, if we need them.
196    if (!empty($a_mediafile_ids_found) && $show_stills) {
197      // Get the stills.
198      $query = mediamosa_db::db_select(mediamosa_asset_mediafile_db::TABLE_NAME, 'mf');
199      $query->fields('mf');
200      $query->leftJoin(mediamosa_asset_mediafile_metadata_db::TABLE_NAME, 'mfm', 'mfm.mediafile_id = mf.mediafile_id');
201      $query->fields('mfm');
202      $query->condition('mf.' . mediamosa_asset_mediafile_db::MEDIAFILE_ID_SOURCE, $a_mediafile_ids_found, 'IN');
203      $query->condition('mf.' . mediamosa_asset_mediafile_db::IS_STILL, mediamosa_asset_mediafile_db::IS_STILL_TRUE);
204      $query->orderBy('mfm.' . mediamosa_asset_mediafile_metadata_db::STILL_ORDER, 'ASC');
205      $result = $query->execute();
206
207      $i = 0;
208      foreach ($result as $a_row) {
209        // Create unique ID.
210        $ticket = mediamosa_db::uuid($app_id);
211
212        // Create ticket.
213        mediamosa_ticket::create_play_proxy(
214          $ticket,
215          NULL,
216          mediamosa_asset_mediafile_play_proxy::RESPONSE_TYPE_STILL,
217          $app_id,
218          $a_row[mediamosa_asset_mediafile_db::OWNER_ID],
219          $a_row[mediamosa_asset_mediafile_db::ID]
220        );
221
222        // Create response.
223        $response = mediamosa_asset_mediafile_play_proxy::create_response_still($ticket, $app_id);
224        $a_row['still_ticket'] = $response['output'];
225
226        // Add still to mediafile.
227        assert(!empty($a_row[mediamosa_asset_mediafile_db::MEDIAFILE_ID_SOURCE])); // Make sure its here.
228        $a_items[$a_row[mediamosa_asset_mediafile_db::MEDIAFILE_ID_SOURCE]]['still']['#'. $i++] = $a_row;
229      }
230    }
231
232    // Get the app.
233    $a_app = mediamosa_app::get_by_appid($app_id);
234
235    $a_patterns = array(
236      '/{asset_id}/i',
237      '/{mediafile_id}/i',
238      '/{mediafile_filename}/i',
239    );
240
241    // Result array.
242    $a_items_result = array();
243
244    $i = 1;
245
246    // Now add to result array.
247    // Must be in the same order as $a_mediafile_ids.
248    foreach ($a_mediafile_ids as $mediafile_id) {
249      if (!isset($a_items[$mediafile_id])) { // In case the mediafile was not found.
250        continue;
251      }
252
253      // Set empty array for metadata.
254      $a_items[$mediafile_id]['metadata'] = array();
255
256      // If its a child, then unparent it.
257      if (isset($a_items[$mediafile_id][mediamosa_asset_db::PARENT_ID])) {
258        // Copy parent to main asset_id.
259        $a_items[$mediafile_id][mediamosa_asset_db::ID] = $a_items[$mediafile_id][mediamosa_asset_db::PARENT_ID];
260
261        // Unset the parent value.
262        unset($a_items[$mediafile_id][mediamosa_asset_db::PARENT_ID]);
263      }
264
265      // Test for downloadable.
266      $is_downloadable = mediamosa_lib::boolstr2bool($a_items[$mediafile_id][mediamosa_asset_mediafile_db::IS_DOWNLOADABLE]);
267
268      // Download URI replacements.
269      $a_replacements = array(
270        $a_items[$mediafile_id][mediamosa_asset_db::ID],
271        $a_items[$mediafile_id][mediamosa_asset_mediafile_db::ID],
272        $a_items[$mediafile_id][mediamosa_asset_mediafile_db::FILENAME],
273      );
274
275      // Default empty.
276      $a_items[$mediafile_id]['ega_download_url'] = '';
277
278      // If downloadable and application has its download URL set, then include it in our output.
279      if ($is_downloadable && !empty($a_app[mediamosa_app_db::DOWNLOAD_URL])) {
280
281        // Set EGA download url.
282        $a_items[$mediafile_id]['ega_download_url'] = preg_replace($a_patterns, $a_replacements, $a_app[mediamosa_app_db::DOWNLOAD_URL]);
283      }
284
285      // Default empty.
286      $a_items[$mediafile_id]['ega_stream_url'] = '';
287
288      // Stream URL, only if streamable.
289      if (mediamosa_server::is_streamable($a_items[$mediafile_id][$prefix . mediamosa_asset_mediafile_metadata_db::CONTAINER_TYPE])) {
290        $a_items[$mediafile_id]['ega_play_url'] = preg_replace($a_patterns, $a_replacements, $a_app[mediamosa_app_db::PLAY_PROXY_URL]);
291
292        // Output extra?
293        if ($is_oai) {
294          // Stream URL(s) for OAI.
295          $mediafile_app_id = $a_items[$mediafile_id][mediamosa_asset_mediafile_db::APP_ID];
296
297          // Check if mediafile APP ID is in the requested app_ids.
298          if (in_array($mediafile_app_id, $a_app_ids)) {
299            $a_items[$mediafile_id]['ega_stream_url'][] = !empty($a_app[mediamosa_app_db::STREAM_URL]) ? preg_replace($a_patterns, $a_replacements, $a_app[mediamosa_app_db::STREAM_URL]) : '';
300          }
301
302          // Get masters of this mediafile.
303          $a_app_id_master = mediamosa_aut_app_master_slave::master_get($mediafile_app_id, mediamosa_aut::AUT_TYPE_MEDIAFILE, $a_items[$mediafile_id][mediamosa_asset_mediafile_db::ID]);
304
305          foreach ($a_app_id_master as $app_id_master) {
306            if (in_array($app_id_master, $a_app_ids)) {
307              // Get the master app.
308              $a_app_tmp = mediamosa_app::get_by_appid($app_id_master);
309
310              // Set the ega_stream_url of the master.
311              $a_items[$mediafile_id]['ega_stream_url'][] = preg_replace($a_patterns, $a_replacements, $a_app_tmp[mediamosa_app_db::STREAM_URL]);
312            }
313          }
314        }
315        else {
316          $a_items[$mediafile_id]['ega_stream_url'][] = !empty($a_app[mediamosa_app_db::STREAM_URL]) ? preg_replace($a_patterns, $a_replacements, $a_app[mediamosa_app_db::STREAM_URL]) : '';
317        }
318      }
319
320      // Remove the prefix from the metadata and move into the metadata array of the asset.
321      foreach ($a_items[$mediafile_id] as $key => $value) {
322        if (mediamosa_unicode::strpos($key, $prefix) === 0) { // is het een metadata tag?
323          $new_key = mediamosa_unicode::substr($key, mediamosa_unicode::strlen($prefix));
324          $a_items[$mediafile_id]['metadata'][$new_key] = $a_items[$mediafile_id][$key];
325          unset($a_items[$mediafile_id][$key]);
326        }
327      }
328
329      // Unset these;
330      unset($a_items[$mediafile_id][mediamosa_asset_mediafile_db::SANNAS_MOUNT_POINT]);
331
332      // Add to result.
333      $a_items_result['mediafile']['#' . serialize(array('id' => $i++))] = $a_items[$mediafile_id];
334    }
335
336    return $a_items_result;
337  }
338
339  /**
340   * Search for mediafiles.
341   * Normally called _media_management_return_mediafile_list (enrich_response_mediafile) at the end.
342   *
343   * 1.x _media_management_search_mediafiles
344   *
345   * @param string $asset_id
346   * @param string $tag
347   * @param boolean $is_still
348   */
349  static public function mediafiles_search($asset_id, $tag = NULL, $is_still = FALSE) {
350
351    assert($asset_id !== FALSE);
352
353      // Asset must exist.
354    mediamosa_db::db_must_exists(
355      mediamosa_asset_db::TABLE_NAME,
356      array(
357        mediamosa_asset_db::ID => $asset_id
358      )
359    );
360
361    // FIXME write me to normal db_query.
362    $a_query = array();
363    $a_query[mediamosa_db_query::A_SELECT_EXPR][] = "mf.mediafile_id";
364    $a_query[mediamosa_db_query::A_FROM][] = "{mediamosa_asset} AS a";
365
366    $a_query[mediamosa_db_query::ALLOW_DISTINCT] = FALSE;
367
368    // No left join here, only include assets that have mediafiles
369    $a_query[mediamosa_db_query::A_JOIN]["mediafile"][] = "JOIN {mediamosa_asset_mediafile} AS mf ON a.asset_id = mf.asset_id_root";
370
371    $a_query[mediamosa_db_query::A_WHERE][mediamosa_db_query::WHERE_AND]['asset'][] = sprintf("(a.asset_id = '%s' OR a.parent_id = '%s')", mediamosa_db::escape_string($asset_id), mediamosa_db::escape_string($asset_id));
372    $a_query[mediamosa_db_query::A_WHERE][mediamosa_db_query::WHERE_AND]['asset'][] = sprintf("mf.is_still = '%s'", $is_still ? mediamosa_asset_mediafile_db::IS_STILL_TRUE :  mediamosa_asset_mediafile_db::IS_STILL_FALSE);
373
374    if ($tag) {
375      $a_query[mediamosa_db_query::A_WHERE][mediamosa_db_query::WHERE_AND]['tag'] = sprintf("mf.tag = '%s'", mediamosa_db::escape_string($tag));
376    }
377
378    // Create the query
379    $query = mediamosa_db_query::query_select($a_query);
380
381    // Do the query and return found mediafiles as an array with mediafile_ids.
382    return mediamosa_db::db_query($query)->fetchCol();
383  }
384
385  /**
386   * Get all transcoded mediafiles of given asset ID.
387   *
388   * @param $asset_id
389   */
390  static public function get_all_transcoded($asset_id) {
391    // FIXME: just wondering if it must be asset_root_id here.
392    return mediamosa_db::db_select(mediamosa_asset_mediafile_db::TABLE_NAME)
393      ->condition(mediamosa_asset_mediafile_db::ASSET_ID, $asset_id)
394      ->condition(mediamosa_asset_mediafile_db::IS_ORIGINAL_FILE, mediamosa_asset_mediafile_db::IS_ORIGINAL_FILE_FALSE)
395      ->isNotNull(mediamosa_asset_mediafile_db::TOOL)
396      ->isNotNull(mediamosa_asset_mediafile_db::COMMAND)
397      ->isNotNull(mediamosa_asset_mediafile_db::FILE_EXTENSION)
398      ->execute();
399  }
400
401  /**
402   * Analyse the mediafile and store it into the database metadata of mediafile.
403   *
404   * 1.x: vpx_jobs_get_analysis_upload
405   *
406   * @param $app_id
407   * @param $mediafile_id
408   */
409  static public function analyse($app_id, $mediafile_id) {
410
411    // Remove all metadata.
412    // FIXME: why now? (also done when we insert it)
413    mediamosa_asset_mediafile_metadata::delete_by_mediafileid($mediafile_id);
414
415    // Get the app.
416    $a_mediamosa_app = mediamosa_app::get_by_appid($app_id);
417
418    $a_options = array();
419
420    if ($a_mediamosa_app[mediamosa_app_db::ALWAYS_HINT_MP4] == mediamosa_app_db::ALWAYS_HINT_MP4_TRUE) {
421      $a_options[] =  mediamosa_settings::ANALYSE_FILE_ALWAYS_HINT_MP4_OPTION;
422    }
423
424    if ($a_mediamosa_app[mediamosa_app_db::ALWAYS_INSERT_MD] == mediamosa_app_db::ALWAYS_INSERT_MD_TRUE) {
425      $a_options[] =  mediamosa_settings::ANALYSE_FILE_ALWAYS_INSERT_MD_OPTION;
426    }
427
428    $execution_string = sprintf('%s %s %s',
429      mediamosa_settings::analyse_file(),
430      mediamosa_configuration_storage::mount_point_get() . DIRECTORY_SEPARATOR . mediamosa_configuration_storage::data_location_get(),
431      $mediafile_id
432    );
433
434    $execution_string .= (count($a_options) ? ' ' . implode(' ', $a_options) : '');
435
436    $a_output = array();
437    mediamosa_io::exec($execution_string . " 2>&1", $a_output);
438
439    return $a_output;
440  }
441
442  /**
443   * Returns TRUE/FALSE if the mediafile is an original.
444   *
445   * @param array $a_mediafile
446   */
447  static public function is_original($a_asset_mediafile) {
448    // FIXME: will need to convert into mediafile_id_source.
449    return ($a_asset_mediafile[mediamosa_asset_mediafile_db::IS_ORIGINAL_FILE] == mediamosa_asset_mediafile_db::IS_ORIGINAL_FILE_TRUE);
450  }
451
452
453  /**
454   * Update the mediafile.
455   *
456   * @param integer $app_id
457   * @param string $mediafile_id
458   * @param string $user_id
459   * @param string $type
460   * @param array $a_fields
461   */
462  static public function update($app_id, $mediafile_id, $user_id, array $a_fields) {
463    // Cant mix input of uri/filename/is_downloadable.
464    if (isset($a_fields[mediamosa_asset_mediafile_db::URI]) && (isset($a_fields[mediamosa_asset_mediafile_db::FILENAME]) || isset($a_fields[mediamosa_asset_mediafile_db::IS_DOWNLOADABLE]))) {
465      throw new mediamosa_exception_error(mediamosa_error::ERRORCODE_MIX_OF_URI_AND_FILE);
466    }
467
468    // Mediafile must exists.
469    $a_mediafile = mediamosa_asset_mediafile::must_exists($mediafile_id);
470
471    // Does the user has access?
472    mediamosa_aut::owner_check(
473      $app_id,
474      $user_id,
475      $a_mediafile[mediamosa_asset_mediafile_db::APP_ID],
476      $a_mediafile[mediamosa_asset_mediafile_db::OWNER_ID]
477    );
478
479    // Can't change the type.
480    if (!empty($a_mediafile[mediamosa_asset_mediafile_db::URI]) && ( isset($a_fields[mediamosa_asset_mediafile_db::FILENAME]) || isset($a_fields[mediamosa_asset_mediafile_db::IS_DOWNLOADABLE]) ) || (!empty($a_mediafile[mediamosa_asset_mediafile_db::FILENAME]) && isset($a_fields[mediamosa_asset_mediafile_db::URI])) ) {
481      throw new mediamosa_exception_error(mediamosa_error::ERRORCODE_CHANGE_URI_AND_FILE);
482    }
483
484    // Update the timestamps of the asset
485    mediamosa_asset::update_asset_timestamps($a_mediafile[mediamosa_asset_mediafile_db::ASSET_ID]);
486
487    // Add changed field.
488    $a_fields = mediamosa_db::db_update_enrich($a_fields);
489
490    // Build the query.
491    mediamosa_db::db_update(mediamosa_asset_mediafile_db::TABLE_NAME)
492      ->fields($a_fields)
493      ->condition(mediamosa_asset_mediafile_db::ID, $mediafile_id)
494      ->execute();
495
496    // Set the external.
497    mediamosa_asset::update_asset_info_is_external($mediafile_id);
498    // Set the empty asset.
499    mediamosa_asset::update_asset_info_is_empty_asset($mediafile_id);
500
501  }
502
503  /**
504   * Create the mediafile.
505   *
506   * @param string $mediafile_id
507   *  Provide the new mediafile_id.
508   * @param integer $app_id
509   * @param string $asset_id
510   *  Parent asset.
511   * @param string $user_id
512   *  The new owner.
513   * @param array $a_fields
514   *  Optional fields. See mediamosa_asset_mediafile_db.
515   */
516  static public function create($mediafile_id, $app_id, $asset_id, $user_id, array $a_fields = array()) {
517    // Is original with mediafile_id_source combo.
518    assert(
519      (
520        isset($a_fields[mediamosa_asset_mediafile_db::MEDIAFILE_ID_SOURCE]) && $a_fields[mediamosa_asset_mediafile_db::MEDIAFILE_ID_SOURCE] != ''
521        &&
522        $a_fields[mediamosa_asset_mediafile_db::IS_ORIGINAL_FILE] == mediamosa_asset_mediafile_db::IS_ORIGINAL_FILE_FALSE
523      )
524      ||
525      (
526        (!isset($a_fields[mediamosa_asset_mediafile_db::MEDIAFILE_ID_SOURCE]) || $a_fields[mediamosa_asset_mediafile_db::MEDIAFILE_ID_SOURCE] == '')
527        &&
528        $a_fields[mediamosa_asset_mediafile_db::IS_ORIGINAL_FILE] == mediamosa_asset_mediafile_db::IS_ORIGINAL_FILE_TRUE
529      )
530    );
531
532    $a_fields[mediamosa_asset_mediafile_db::ID] = $mediafile_id;
533    $a_fields[mediamosa_asset_mediafile_db::APP_ID] = $app_id;
534    $a_fields[mediamosa_asset_mediafile_db::ASSET_ID] = $asset_id;
535    $a_fields[mediamosa_asset_mediafile_db::ASSET_ID_ROOT] = $asset_id; // depricated, set to own asset.
536    $a_fields[mediamosa_asset_mediafile_db::OWNER_ID] = $user_id;
537
538    // Enrich for created/changed.
539    $a_fields = mediamosa_db::db_insert_enrich($a_fields);
540
541    // Insert it.
542    mediamosa_db::db_insert(mediamosa_asset_mediafile_db::TABLE_NAME)
543      ->fields($a_fields)
544      ->execute();
545
546    // Set the external.
547    mediamosa_asset::update_asset_info_is_external($mediafile_id);
548    // Set the empty asset.
549    mediamosa_asset::update_asset_info_is_empty_asset($mediafile_id);
550
551    // Return the mediafile ID.
552    return $mediafile_id;
553  }
554}
Note: See TracBrowser for help on using the browser.