1818
1919declare (strict_types=1 );
2020
21+ use ILIAS \MediaObjects \MediaObjectRepository ;
22+ use ILIAS \ResourceStorage \Identification \ResourceIdentification ;
23+ use ILIAS \ResourceStorage \Services as ResourceStorage ;
2124use ILIAS \Test \Participants \ParticipantRepository ;
2225use ILIAS \Test \Results \Data \Repository ;
2326use ILIAS \Test \TestDIC ;
@@ -145,6 +148,8 @@ class ilObjTest extends ilObject
145148 protected Repository $ test_result_repository ;
146149
147150 protected LOMetadata $ lo_metadata ;
151+ protected MediaObjectRepository $ media_object_repository ;
152+ protected ResourceStorage $ irss ;
148153
149154 /**
150155 * Constructor
@@ -166,6 +171,8 @@ public function __construct(int $id = 0, bool $a_call_by_reference = true)
166171 $ this ->component_factory = $ DIC ['component.factory ' ];
167172 $ this ->filesystem_web = $ DIC ->filesystem ()->web ();
168173 $ this ->lo_metadata = $ DIC ->learningObjectMetadata ();
174+ $ this ->media_object_repository = $ DIC ->mediaObjects ()->internal ()->repo ()->mediaObject ();
175+ $ this ->irss = $ DIC ->resourceStorage ();
169176
170177 $ local_dic = $ this ->getLocalDIC ();
171178 $ this ->participant_access_filter = $ local_dic ['participant.access_filter.factory ' ];
@@ -3732,7 +3739,13 @@ public function exportXMLMediaObjects(&$a_xml_writer, $a_inst, $a_target_dir, &$
37323739 ilFileUtils::createDirectory ($ target_dir );
37333740 $ media_obj = new ilObjMediaObject ((int ) $ mob_id );
37343741 $ media_obj ->exportXML ($ a_xml_writer , (int ) $ a_inst );
3742+ /** @var ilMediaItem $item */
37353743 foreach ($ media_obj ->getMediaItems () as $ item ) {
3744+ $ rid = $ this ->media_object_repository ->getById ($ item ->getMobId ())['rid ' ] ?? null ;
3745+ if (!is_string ($ rid ) || !$ this ->irss ->manage ()->find ($ rid ) instanceof ResourceIdentification) {
3746+ $ expLog ->write (date ('[y-m-d H:i:s] ' ) . "The resource for Media Object {$ item ->getMobId ()} does not exist (skipping) " );
3747+ continue ;
3748+ }
37363749 $ stream = $ item ->getLocationStream ();
37373750 file_put_contents ($ target_dir . DIRECTORY_SEPARATOR . $ item ->getLocation (), $ stream );
37383751 $ stream ->close ();
0 commit comments