ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilDclMobRecordFieldModel.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
14 {
15  public function parseValue($value)
16  {
17  if ($value == -1) { //marked for deletion.
18  return 0;
19  }
20 
21  $media = $value;
22  $has_save_confirmation = ($this->getRecord()->getTable()->getSaveConfirmation() && !isset($_GET['record_id']));
23  $is_confirmed = (bool) (isset($_POST['save_confirmed']));
24 
25  if (is_array($media) && $media['tmp_name'] != "" && (!$has_save_confirmation || $is_confirmed)) {
26  $mob = new ilObjMediaObject();
27  $mob->setTitle($media['name']);
28  $mob->create();
29  $mob_dir = ilObjMediaObject::_getDirectory($mob->getId());
30  if (!is_dir($mob_dir)) {
31  $mob->createDirectory();
32  }
33  $media_item = new ilMediaItem();
34  $mob->addMediaItem($media_item);
35  $media_item->setPurpose("Standard");
36  $file_name = ilUtil::getASCIIFilename($media['name']);
37  $file_name = str_replace(" ", "_", $file_name);
38  $file = $mob_dir . "/" . $file_name;
39  $title = $file_name;
40  $location = $file_name;
41  if ($has_save_confirmation) {
42  $move_file = ilDclPropertyFormGUI::getTempFilename($_POST['ilfilehash'], 'field_' . $this->getField()->getId(), $media["name"], $media["type"]);
43  ilFileUtils::rename($move_file, $file);
44  } else {
45  ilUtil::moveUploadedFile($media['tmp_name'], $file_name, $file);
46  }
47 
48  ilUtil::renameExecutables($mob_dir);
49  // Check image/video
51 
52  if ($format == 'image/jpeg') {
53  list($width, $height, $type, $attr) = getimagesize($file);
54  $field = $this->getField();
55  $new_width = $field->getProperty(ilDclBaseFieldModel::PROP_WIDTH);
56  $new_height = $field->getProperty(ilDclBaseFieldModel::PROP_HEIGHT);
57  if ($new_width || $new_height) {
58  //only resize if it is bigger, not if it is smaller
59  if ($new_height < $height && $new_width < $width) {
60  //resize proportional
61  if (!$new_height || !$new_width) {
63  $wh
65  $format,
66  "File",
67  $file,
68  "",
69  true,
70  false,
72  (int) $field->getProperty(ilDclBaseFieldModel::PROP_HEIGHT)
73  );
74  } else {
75  $wh['width'] = (int) $field->getProperty(ilDclBaseFieldModel::PROP_WIDTH);
76  $wh['height'] = (int) $field->getProperty(ilDclBaseFieldModel::PROP_HEIGHT);
77  }
78 
79  $location = ilObjMediaObject::_resizeImage($file, $wh['width'], $wh['height'], false);
80  }
81  }
82  }
83 
84  ilObjMediaObject::_saveUsage($mob->getId(), "dcl:html", $this->getRecord()->getTable()->getCollectionObject()->getId());
85  $media_item->setFormat($format);
86  $media_item->setLocation($location);
87  $media_item->setLocationType("LocalFile");
88 
89  // FSX MediaPreview
91  $med = $mob->getMediaItem("Standard");
92  $mob_file = ilObjMediaObject::_getDirectory($mob->getId()) . "/" . $med->getLocation();
93  $a_target_dir = ilObjMediaObject::_getDirectory($mob->getId());
94  try {
95  $new_file = ilFFmpeg::extractImage($mob_file, "mob_vpreview.png", $a_target_dir, 1);
96  } catch (Exception $e) {
97  ilUtil::sendFailure($e->getMessage(), true);
98  }
99  }
100 
101  $mob->update();
102  $return = $mob->getId();
103  // handover for save-confirmation
104  } else {
105  if (is_array($media) && isset($media['tmp_name']) && $media['tmp_name'] != '') {
106  $return = $media;
107  } else {
108  $return = $this->getValue();
109  }
110  }
111 
112  return $return;
113  }
114 
115 
123  public function parseExportValue($value)
124  {
125  $file = $value;
126  if (is_numeric($file)) {
127  $mob = new ilObjMediaObject($file, false);
128  $mob_name = $mob->getTitle();
129 
130  return $mob_name;
131  }
132 
133  return $file;
134  }
135 
136 
140  public function addHiddenItemsToConfirmation(ilConfirmationGUI &$confirmation)
141  {
142  if (is_array($this->getValue())) {
143  foreach ($this->getValue() as $key => $value) {
144  $confirmation->addHiddenItem('field_' . $this->field->getId() . '[' . $key . ']', $value);
145  }
146  }
147  }
148 
149 
159  public function parseSortingValue($value, $link = true)
160  {
161  $mob = new ilObjMediaObject($value, false);
162 
163  return $mob->getTitle();
164  }
165 
166 
170  public function setValueFromForm($form)
171  {
172  $value = $form->getInput("field_" . $this->getField()->getId());
173  if ($form->getItemByPostVar("field_" . $this->getField()->getId())->getDeletionFlag()) {
174  $value = -1;
175  }
176  $this->setValue($value);
177  }
178 
179 
180  public function afterClone()
181  {
185 
186  if (!$record_field || !$record_field->getValue()) {
187  return;
188  }
189 
190  $mob_old = new ilObjMediaObject($record_field->getValue());
191  $mob_new = $mob_old->duplicate();
192 
193  $this->setValue($mob_new->getId(), true);
194  $this->doUpdate();
195  }
196 }
static getCloneOf($id, $type)
addHiddenItem($a_post_var, $a_value)
Add hidden item.
static getMimeType($a_file, $a_external=null)
get mime type for file
$type
static _resizeImage($a_file, $a_width, $a_height, $a_constrain_prop=false)
resize image and return new image file ("_width_height" string appended)
$_GET["client_id"]
$location
Definition: buildRTE.php:44
setValue($value, $omit_parsing=false)
Set value for record field.
addHiddenItemsToConfirmation(ilConfirmationGUI &$confirmation)
parseSortingValue($value, $link=true)
Returns sortable value for the specific field-types.
parseExportValue($value)
Function to parse incoming data from form input value $value.
static getASCIIFilename($a_filename)
convert utf8 to ascii filename
static _getDirectory($a_mob_id)
Get absolute directory.
static rename($a_source, $a_target)
Rename a file.
static extractImage( $a_file, $a_target_filename, $a_target_dir="", $a_sec=1)
Extract image from video file.
doUpdate()
Update object in database.
getId()
get object id public
static moveUploadedFile($a_file, $a_name, $a_target, $a_raise_errors=true, $a_mode="move_uploaded")
move uploaded file
Class ilMediaItem.
$format
Definition: metadata.php:218
Class ilObjMediaObject.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static getRecordFieldCache($record, $field)
static renameExecutables($a_dir)
Rename uploaded executables for security reasons.
Class ilDclMobRecordFieldModel.
duplicate()
Duplicate media object, return new media object.
static enabled()
Checks, whether FFmpeg support is enabled (path is set in the setup)
static _determineWidthHeight( $a_format, $a_type, $a_file, $a_reference, $a_constrain_proportions, $a_use_original, $a_user_width, $a_user_height)
Determine width and height.
static _saveUsage($a_mob_id, $a_type, $a_id, $a_usage_hist_nr=0, $a_lang="-")
Save usage of mob within another container (e.g.
$_POST["username"]
Confirmation screen class.
static supportsImageExtraction($a_mime)
Check if mime type supports image extraction.
static getTempFilename($a_hash, $a_field, $a_name, $a_type, $a_index=null, $a_sub_index=null)
return temp-filename