/** * Edit media cast item */ function editCastItemObject() { global $tpl, $ilToolbar, $ilCtrl; $this->checkPermission("write"); // conversion toolbar include_once "./Services/MediaObjects/classes/class.ilFFmpeg.php"; if (ilFFmpeg::enabled()) { $this->mcst_item = new ilNewsItem($_GET["item_id"]); include_once "./Services/MediaObjects/classes/class.ilObjMediaObjectGUI.php"; $mob = new ilObjMediaObject($this->mcst_item->getMobId()); $conv_cnt = 0; // we had other purposes as source as well, but // currently only "Standard" is implemented in the convertFile method foreach (array("Standard") as $p) { /* $med = $mob->getMediaItem($p); if (is_object($med)) { $options = ilFFmpeg::getPossibleTargetMimeTypes($med->getFormat()); if (count($options) > 0) { if ($conv_cnt > 0) { $ilToolbar->addSeparator(); } include_once("./Services/Form/classes/class.ilSelectInputGUI.php"); $si = new ilSelectInputGUI($this->lng->txt("mcst_conv_". strtolower($p)."_to"), "target_format"); $si->setOptions($options); $ilToolbar->addInputItem($si, true); $si = new ilSelectInputGUI(", ".$this->lng->txt("mcst_target").": ", "target_purpose"); $si->setOptions(array("Standard" => $this->lng->txt("mcst_purpose_standard"), "VideoAlternative" => $this->lng->txt("mcst_purpose_videoalternative") )); $si->setValue($p); $ilToolbar->addInputItem($si, true); $ilToolbar->addFormButton($this->lng->txt("mcst_convert"), "convertFile"); $conv_cnt++; } } */ $med = $mob->getMediaItem($p); if (is_object($med)) { if (ilFFmpeg::supportsImageExtraction($med->getFormat())) { // second include_once "./Services/Form/classes/class.ilTextInputGUI.php"; $ni = new ilTextInputGUI($this->lng->txt("mcst_second"), "sec"); $ni->setMaxLength(4); $ni->setSize(4); $ni->setValue(1); $ilToolbar->addInputItem($ni, true); $ilToolbar->addFormButton($this->lng->txt("mcst_extract_preview_image"), "extractPreviewImage"); $ilToolbar->setFormAction($ilCtrl->getFormAction($this)); } } /*if ($conv_cnt > 0) { $ilToolbar->setFormAction($ilCtrl->getFormAction($this)); }*/ } } $this->initAddCastItemForm("edit"); $this->getCastItemValues(); $tpl->setContent($this->form_gui->getHTML()); }
/** * Function to parse incoming data from form input value $value. returns the string/number/etc. to store in the database. * * @param $value * @param ilDataCollectionRecordField $record_field * * @return int|string */ public function parseValue($value, ilDataCollectionRecordField $record_field) { $return = false; if ($this->id == ilDataCollectionDatatype::INPUTFORMAT_FILE) { $file = $value; if (is_array($file) && $file['tmp_name']) { $file_obj = new ilObjFile(); $file_obj->setType("file"); $file_obj->setTitle($file["name"]); $file_obj->setFileName($file["name"]); $file_obj->setFileType(ilMimeTypeUtil::getMimeType("", $file["name"], $file["type"])); $file_obj->setFileSize($file["size"]); $file_obj->setMode("object"); $file_obj->create(); $file_obj->getUploadFile($file["tmp_name"], $file["name"]); $file_id = $file_obj->getId(); $return = $file_id; } else { $return = $record_field->getValue(); } } elseif ($this->id == ilDataCollectionDatatype::INPUTFORMAT_MOB) { if ($value == -1) { return 0; } $media = $value; if (is_array($media) && $media['tmp_name']) { $mob = new ilObjMediaObject(); $mob->setTitle($media['name']); $mob->create(); $mob_dir = ilObjMediaObject::_getDirectory($mob->getId()); if (!is_dir($mob_dir)) { $mob->createDirectory(); } $media_item = new ilMediaItem(); $mob->addMediaItem($media_item); $media_item->setPurpose("Standard"); $file_name = ilUtil::getASCIIFilename($media['name']); $file_name = str_replace(" ", "_", $file_name); $file = $mob_dir . "/" . $file_name; $title = $file_name; $location = $file_name; ilUtil::moveUploadedFile($media['tmp_name'], $file_name, $file); ilUtil::renameExecutables($mob_dir); // Check image/video $format = ilObjMediaObject::getMimeType($file); if ($format == 'image/jpeg') { list($width, $height, $type, $attr) = getimagesize($file); $arr_properties = $record_field->getField()->getProperties(); $new_width = $arr_properties[ilDataCollectionField::PROPERTYID_WIDTH]; $new_height = $arr_properties[ilDataCollectionField::PROPERTYID_HEIGHT]; if ($new_width || $new_height) { //only resize if it is bigger, not if it is smaller if ($new_height < $height && $new_width < $width) { //resize proportional if (!$new_height || !$new_width) { $format = ilObjMediaObject::getMimeType($file); $wh = ilObjMediaObject::_determineWidthHeight("", "", $format, "File", $file, "", true, false, $arr_properties[ilDataCollectionField::PROPERTYID_WIDTH], (int) $arr_properties[ilDataCollectionField::PROPERTYID_HEIGHT]); } else { $wh['width'] = (int) $arr_properties[ilDataCollectionField::PROPERTYID_WIDTH]; $wh['height'] = (int) $arr_properties[ilDataCollectionField::PROPERTYID_HEIGHT]; } $location = ilObjMediaObject::_resizeImage($file, $wh['width'], $wh['height'], false); } } } ilObjMediaObject::_saveUsage($mob->getId(), "dcl:html", $record_field->getRecord()->getTable()->getCollectionObject()->getId()); $media_item->setFormat($format); $media_item->setLocation($location); $media_item->setLocationType("LocalFile"); // FSX MediaPreview include_once "./Services/MediaObjects/classes/class.ilFFmpeg.php"; if (ilFFmpeg::supportsImageExtraction($format)) { $med = $mob->getMediaItem("Standard"); $mob_file = ilObjMediaObject::_getDirectory($mob->getId()) . "/" . $med->getLocation(); $a_target_dir = ilObjMediaObject::_getDirectory($mob->getId()); try { $new_file = ilFFmpeg::extractImage($mob_file, "mob_vpreview.png", $a_target_dir, 1); } catch (ilFFmpegException $e) { ilUtil::sendFailure($e->getMessage(), true); } } $mob->update(); $return = $mob->getId(); } else { $return = $record_field->getValue(); } } elseif ($this->id == ilDataCollectionDatatype::INPUTFORMAT_DATETIME) { return $value["date"] . " " . $value["time"]; } elseif ($this->id == ilDataCollectionDatatype::INPUTFORMAT_BOOLEAN) { $return = $value ? 1 : 0; } elseif ($this->id == ilDataCollectionDatatype::INPUTFORMAT_TEXT) { $arr_properties = $record_field->getField()->getProperties(); if ($arr_properties[ilDataCollectionField::PROPERTYID_TEXTAREA]) { $return = nl2br($value); } else { $return = $value; } } else { if ($this->id == ilDataCollectionDatatype::INPUTFORMAT_NUMBER) { $return = $value == '' ? NULL : $value; //SW, Ilias Mantis #0011799: Return null otherwise '' is casted to 0 in DB } else { $return = $value; } } return $return; }