4 require_once(
"Services/MediaObjects/classes/class.ilMapArea.php");
38 $this->parameters = array();
39 $this->mapareas = array();
76 $this->mob_id = $a_mob_id;
109 $this->text_representation = $a_val;
119 return $this->text_representation;
130 $item_id = $ilDB->nextId(
"media_item");
131 $query =
"INSERT INTO media_item (id,mob_id, purpose, location, ".
132 "location_type, format, width, ".
133 "height, halign, caption, nr, text_representation) VALUES ".
135 $ilDB->quote($item_id,
"integer").
",".
136 $ilDB->quote($this->
getMobId(),
"integer").
",".
137 $ilDB->quote($this->
getPurpose(),
"text").
",".
140 $ilDB->quote($this->
getFormat(),
"text").
",".
141 $ilDB->quote($this->
getWidth(),
"text").
",".
142 $ilDB->quote($this->
getHeight(),
"text").
",".
143 $ilDB->quote($this->
getHAlign(),
"text").
",".
144 $ilDB->quote($this->
getCaption(),
"text").
",".
145 $ilDB->quote($this->
getNr(),
"integer").
",".
147 $ilDB->manipulate(
$query);
149 $this->
setId($item_id);
153 foreach($params as $name => $value)
155 $query =
"INSERT INTO mob_parameter (med_item_id, name, value) VALUES ".
156 "(".$ilDB->quote($item_id,
"integer").
",".
157 $ilDB->quote($name,
"text").
",".
158 $ilDB->quote($value,
"text").
")";
159 $ilDB->manipulate(
$query);
163 for ($i=0; $i < count($this->mapareas); $i++)
165 if (is_object($this->mapareas[$i]))
167 $this->mapareas[$i]->setItemId($this->
getId());
168 $this->mapareas[$i]->setNr($i + 1);
169 $this->mapareas[$i]->create();
181 $query =
"UPDATE media_item SET ".
182 " mob_id = ".$ilDB->quote($this->
getMobId(),
"integer").
",".
183 " purpose = ".$ilDB->quote($this->
getPurpose(),
"text").
",".
184 " location = ".$ilDB->quote($this->
getLocation(),
"text").
",".
185 " location_type = ".$ilDB->quote($this->
getLocationType(),
"text").
",".
186 " format = ".$ilDB->quote($this->
getFormat(),
"text").
",".
187 " width = ".$ilDB->quote($this->
getWidth(),
"text").
",".
188 " height = ".$ilDB->quote($this->
getHeight(),
"text").
",".
189 " halign = ".$ilDB->quote($this->
getHAlign(),
"text").
",".
190 " caption = ".$ilDB->quote($this->
getCaption(),
"text").
",".
191 " nr = ".$ilDB->quote($this->
getNr(),
"integer").
",".
193 " WHERE id = ".$ilDB->quote($this->
getId(),
"integer");
194 $ilDB->manipulate(
$query);
197 $query =
"DELETE FROM mob_parameter WHERE med_item_id = ".
198 $ilDB->quote($this->
getId(),
"integer");
202 foreach($params as $name => $value)
204 $query =
"INSERT INTO mob_parameter (med_item_id, name, value) VALUES ".
205 "(".$ilDB->quote($this->
getId(),
"integer").
",".
206 $ilDB->quote($name,
"text").
",".
207 $ilDB->quote($value,
"text").
")";
208 $ilDB->manipulate(
$query);
222 $query =
"INSERT INTO mob_parameter (med_item_id, name, value) VALUES ".
223 "(".$ilDB->quote($this->
getId(),
"integer").
",".
224 $ilDB->quote($a_name,
"text").
",".
225 $ilDB->quote($a_value,
"text").
")";
226 $ilDB->manipulate(
$query);
236 $item_id = $this->
getId();
242 $query =
"SELECT * FROM media_item WHERE id = ".
243 $ilDB->quote($this->
getId(),
"integer");
247 $query =
"SELECT * FROM media_item WHERE mob_id = ".
248 $ilDB->quote($this->
getMobId(),
"integer").
" ".
249 "AND nr=".$ilDB->quote($this->
getNr(),
"integer");
253 $item_set = $ilDB->query(
$query);
254 $item_rec = $ilDB->fetchAssoc($item_set);
259 $this->
setWidth($item_rec[
"width"]);
264 $this->
setNr($item_rec[
"nr"]);
265 $this->
setMobId($item_rec[
"mob_id"]);
266 $this->
setId($item_rec[
"id"]);
271 $query =
"SELECT * FROM mob_parameter WHERE med_item_id = ".
272 $ilDB->quote($this->
getId(),
"integer");
273 $par_set = $ilDB->query(
$query);
274 while ($par_rec = $ilDB->fetchAssoc($par_set))
276 $this->
setParameter($par_rec[
"name"], $par_rec[
"value"]);
281 for ($i = 1; $i <= $max; $i++)
297 $q =
"UPDATE media_item SET tried_thumb = ".
298 $ilDB->quote($a_tried,
"text").
299 " WHERE id = ".$ilDB->quote($this->
getId(),
"integer");
301 $ilDB->manipulate($q);
315 $query =
"SELECT * FROM media_item WHERE mob_id = ".
316 $ilDB->quote($a_mob_id,
"integer").
" ".
317 "AND purpose = ".$ilDB->quote($a_purpose,
"text");
318 $set = $ilDB->query(
$query);
319 if ($rec = $ilDB->fetchAssoc($set))
321 return $rec[
"location"];
337 $query =
"SELECT * FROM media_item WHERE id = ".
338 $ilDB->quote($a_med_id,
"integer");
339 $set = $ilDB->query(
$query);
340 if ($rec = $ilDB->fetchAssoc($set))
342 return $rec[
"mob_id"];
359 $query =
"SELECT * FROM media_item WHERE mob_id = ".
360 $ilDB->quote($a_mobId,
"integer").
" ".
361 "AND purpose=" . $ilDB->quote($a_purpose,
"text").
" ORDER BY nr";
362 $item_set = $ilDB->query(
$query);
364 while ($item_rec = $ilDB->fetchAssoc($item_set))
381 $query =
"SELECT * FROM media_item WHERE mob_id = ".
382 $ilDB->quote($a_mob->getId(),
"integer").
" ".
384 $item_set = $ilDB->query(
$query);
385 while ($item_rec = $ilDB->fetchAssoc($item_set))
388 $media_item->setNr($item_rec[
"nr"]);
389 $media_item->setId($item_rec[
"id"]);
390 $media_item->setLocation($item_rec[
"location"]);
391 $media_item->setLocationType($item_rec[
"location_type"]);
392 $media_item->setFormat($item_rec[
"format"]);
393 $media_item->setWidth($item_rec[
"width"]);
394 $media_item->setHeight($item_rec[
"height"]);
395 $media_item->setHAlign($item_rec[
"halign"]);
396 $media_item->setCaption($item_rec[
"caption"]);
397 $media_item->setPurpose($item_rec[
"purpose"]);
398 $media_item->setMobId($item_rec[
"mob_id"]);
399 $media_item->setThumbTried($item_rec[
"tried_thumb"]);
400 $media_item->setTextRepresentation($item_rec[
"text_representation"]);
403 $query =
"SELECT * FROM mob_parameter WHERE med_item_id = ".
404 $ilDB->quote($item_rec[
"id"],
"integer");
405 $par_set = $ilDB->query(
$query);
406 while ($par_rec = $ilDB->fetchAssoc($par_set))
408 $media_item->setParameter($par_rec[
"name"], $par_rec[
"value"]);
413 for ($i = 1; $i <= $max; $i++)
415 $area =&
new ilMapArea($media_item->getId(), $i);
416 $media_item->addMapArea($area);
420 $a_mob->addMediaItem($media_item);
432 $query =
"SELECT * FROM media_item WHERE mob_id = ".
433 $ilDB->quote($a_mob_id,
"integer");
434 $item_set = $ilDB->query(
$query);
435 while ($item_rec = $ilDB->fetchAssoc($item_set))
438 $query =
"DELETE FROM mob_parameter WHERE med_item_id = ".
439 $ilDB->quote($item_rec[
"id"],
"integer");
440 $ilDB->manipulate(
$query);
443 $query =
"DELETE FROM map_area WHERE item_id = ".
444 $ilDB->quote($item_rec[
"id"],
"integer");
445 $ilDB->manipulate(
$query);
449 $query =
"DELETE FROM media_item WHERE mob_id = ".
450 $ilDB->quote($a_mob_id,
"integer");
451 $ilDB->manipulate(
$query);
456 $this->purpose = $a_purpose;
466 $this->location = $a_location;
476 $this->location_type = $a_type;
486 $this->format = $a_format;
496 $this->tried_thumb = $a_tried;
501 return $this->tried_thumb;
519 $this->mapareas[$i-2] =& $this->mapareas[$i-1];
520 $this->mapareas[$i-2]->setNr($i-1);
523 if($nr <= $this->map_cnt)
525 unset($this->mapareas[$this->map_cnt - 1]);
535 return $this->mapareas[
$nr-1];
559 $this->width = $a_width;
575 $this->height = $a_height;
595 $size = @getimagesize($loc);
599 return array(
"width" =>
$size[0],
"height" =>
$size[1]);
611 $this->caption = $a_caption;
627 $this->halign = $a_halign;
647 $this->parameters[$a_name] = $a_value;
655 $this->parameters = array();
667 if(is_array($par_arr))
669 foreach($par_arr as $par => $val)
700 return $this->parameters[$a_name];
721 if(!@is_dir($work_dir))
734 return $loc_arr[count($loc_arr) - 1];
753 $o_file = $file_arr[count($file_arr) - 1];
754 $file_arr = explode(
".", $o_file);
755 unset($file_arr[count($file_arr) - 1]);
756 $file = implode($file_arr,
".");
758 if (!$a_reference_copy)
789 if (is_int(strpos($this->
getFormat(),
"image")))
800 if (is_file($thumb_file))
804 if (is_file($thumb_file_small))
806 unlink($thumb_file_small);
812 if (is_file($med_file))
819 if ($a_size ==
"small")
821 if (is_file($thumb_file_small))
824 $this->
getPurpose().
"_small.jpeg?dummy=".rand(1, 999999);
829 if (is_file($thumb_file))
832 $this->
getPurpose().
".jpeg?dummy=".rand(1, 999999);
862 if ($handle && $lcopy)
864 while (!feof($handle))
866 $content = fread($handle, 4096);
867 fwrite($lcopy, $content);
919 for ($i=0; $i < count($this->mapareas); $i++)
921 if ( ((($i+1) == $a_area_nr) && !$a_exclude) ||
922 ((($i+1) != $a_area_nr) && $a_exclude) ||
926 $area =& $this->mapareas[$i];
927 $area->draw($this->
getMapWorkImage(), $this->color1, $this->color2,
true,
963 $area->setShape($a_shape);
964 $area->setCoords($a_coords);
965 $area->draw($this->
getMapWorkImage(), $this->color1, $this->color2,
false,
978 header(
"Pragma: no-cache");
979 header(
"Expires: 0");
1010 if (imagecolorstotal($this->map_image) > 250)
1012 $this->color1 = imagecolorclosest($this->map_image, 0, 0, 0);
1013 $this->color2 = imagecolorclosest($this->map_image, 255, 255, 255);
1017 $this->color1 = imagecolorallocate($this->map_image, 0, 0, 0);
1018 $this->color2 = imagecolorallocate($this->map_image, 255, 255, 255);
1046 ImageDestroy($this->map_image);
1066 for ($i=0; $i < count($this->mapareas); $i++)
1068 $area =& $this->mapareas[$i];
1072 if ($area->getHighlightMode() !=
"")
1074 $hm =
' HighlightMode="'.$area->getHighlightMode().
'" ';
1075 $hcl = ($area->getHighlightClass() !=
"")
1076 ? $area->getHighlightClass()
1078 $hm.=
'HighlightClass="'.$hcl.
'" ';
1081 $xml .=
"<MapArea Shape=\"".$area->getShape().
"\" Coords=\"".$area->getCoords().
"\" ".$hm.
">";
1084 $target_frame = $area->getTargetFrame();
1086 if ($area->getType() ==
"GlossaryItem" && $target_frame ==
"")
1088 $target_frame =
"Glossary";
1091 $tf_str = ($target_frame ==
"")
1093 :
"TargetFrame=\"".$target_frame.
"\"";
1095 $xml .=
"<IntLink Target=\"".$area->getTarget($a_insert_inst, $a_inst).
"\" Type=\"".
1096 $area->getType().
"\" $tf_str>";
1098 $xml .= htmlspecialchars($area->getTitle(), ENT_QUOTES);
1099 $xml .=
"</IntLink>";
1103 $xml .=
"<ExtLink Href=\"".str_replace(
"&",
"&",$area->getHref()).
"\" Title=\"".
1104 $area->getExtTitle().
"\">";
1105 $xml .= $area->getTitle();
1106 $xml .=
"</ExtLink>";
1108 $xml .=
"</MapArea>";
1126 $query =
"SELECT * FROM media_item WHERE mob_id = ".
1127 $ilDB->quote($a_mob_id,
"integer").
" ".
1129 $item_set = $ilDB->query(
$query);
1130 while ($item_rec = $ilDB->fetchAssoc($item_set))
1146 $query =
"SELECT * FROM media_item WHERE mob_id = ".
1147 $ilDB->quote($a_mob_id,
"integer").
" ORDER BY nr";
1149 $item_set = $ilDB->query(
$query);
1151 while ($item_rec = $ilDB->fetchAssoc($item_set))
1154 foreach($map_links as $key => $map_link)
1156 $links[$key] = $map_link;
1167 include_once(
"./Services/MediaObjects/classes/class.ilExternalMediaAnalyzer.php");
1170 foreach ($par as $k => $v)