ILIAS  trunk Revision v11.0_alpha-2638-g80c1d007f79
class.ilMediaPoolExportOptionXMLMasterNoMedia.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
24 use ILIAS\Export\ExportHandler\I\Consumer\Context\HandlerInterface as ilExportHandlerConsumerContextInterface;
25 use ILIAS\Export\ExportHandler\I\Consumer\File\Identifier\CollectionInterface as ilExportHandlerConsumerFileIdentifierCollectionInterface;
26 use ILIAS\Export\ExportHandler\I\Consumer\File\Identifier\HandlerInterface as ilExportHandlerConsumerFileIdentifierInterface;
27 use ILIAS\Export\ExportHandler\I\Info\File\CollectionInterface as ilExportHandlerFileInfoCollectionInterface;
30 
31 class ilMediaPoolExportOptionXMLMasterNoMedia extends ilBasicLegacyExportOption
32 {
33  protected ilLanguage $lng;
34  protected ilDBInterface $db;
35 
36  public function init(Container $DIC): void
37  {
38  $this->lng = $DIC->language();
39  $this->db = $DIC->database();
40  parent::init($DIC);
41  }
42 
43  public function getExportType(): string
44  {
45  return 'xml_masternomedia';
46  }
47 
48  public function getExportOptionId(): string
49  {
50  return 'mep_exp_option_xml_masternomedia';
51  }
52 
53  public function getSupportedRepositoryObjectTypes(): array
54  {
55  return ['mep'];
56  }
57 
58  public function getLabel(): string
59  {
60  $this->lng->loadLanguageModule('exp');
61  return "XML (" . $this->lng->txt("mep_master_language_only_no_media") . ")";
62  }
63 
64  public function onDownloadFiles(
65  ilExportHandlerConsumerContextInterface $context,
66  ilExportHandlerConsumerFileIdentifierCollectionInterface $file_identifiers
67  ): void {
68  foreach ($file_identifiers as $file_identifier) {
69  $file = explode(":", trim($file_identifier->getIdentifier()));
70  $export_dir = ilExport::_getExportDirectory(
71  $context->exportObject()->getId(),
72  "",
73  $context->exportObject()->getType()
74  );
75  $export_dir = substr($export_dir, 0, strlen($export_dir) - 1);
76  $file[1] = basename($file[1]);
78  $export_dir . "/" . $file[1],
79  $file[1]
80  );
81  }
82  }
83 
84  public function onDownloadWithLink(
85  ReferenceId $reference_id,
86  ilExportHandlerConsumerFileIdentifierInterface $file_identifier
87  ): void {
88  $object_id = $reference_id->toObjectId()->toInt();
89  $type = ilObject::_lookupType($object_id);
90  $file = explode(":", trim($file_identifier->getIdentifier()));
91  $export_dir = ilExport::_getExportDirectory(
92  $object_id,
93  "",
94  $type
95  );
96  $export_dir = substr($export_dir, 0, strlen($export_dir) - 1);
97  $file[1] = basename($file[1]);
99  $export_dir . "/" . $file[1],
100  $file[1]
101  );
102  }
103 
104  public function onDeleteFiles(
105  ilExportHandlerConsumerContextInterface $context,
106  ilExportHandlerConsumerFileIdentifierCollectionInterface $file_identifiers
107  ): void {
108  foreach ($file_identifiers as $file_identifier) {
109  $file = explode(":", $file_identifier->getIdentifier());
110  $file[1] = basename($file[1]);
111  $export_dir = ilExport::_getExportDirectory(
112  $context->exportObject()->getId(),
113  "",
114  $context->exportObject()->getType()
115  );
116  $export_dir = substr($export_dir, 0, strlen($export_dir) - 1);
117  $exp_file = $export_dir . "/" . str_replace("..", "", $file[1]);
118  $exp_dir = $export_dir . "/" . substr($file[1], 0, strlen($file[1]) - 4);
119  if (is_file($exp_file)) {
120  unlink($exp_file);
121  }
122  if (
123  is_dir($exp_dir) and
124  count(scandir($exp_dir)) === 2
125  ) {
126  ilFileUtils::delDir($exp_dir);
127  }
128  }
129  }
130 
131  public function getFiles(
132  ilExportHandlerConsumerContextInterface $context
133  ): ilExportHandlerFileInfoCollectionInterface {
134  # The export files of ilMediaPoolExportOptionXMLMaster and ilMediaPoolExportOptionXMLMasterNoMedia
135  # cannot be differentiated, therefore only ilMediaPoolExportOptionXMLMaster returns files.
136  return $context->fileCollectionBuilder()->collection();
137  }
138 
139  public function isObjectSupported(ObjectId $object_id): bool
140  {
141  $ot = (new TranslationsRepository($this->db))->getFor($object_id->toInt());
142  return $ot->getContentTranslationActivated();
143  }
144 
145  public function onExportOptionSelected(ilExportHandlerConsumerContextInterface $context): void
146  {
147  if ($this->isObjectSupported(new ObjectId($context->exportObject()->getId()))) {
148  $opt = ilUtil::stripSlashes("masternomedia");
149  $context->exportObject()->exportXML($opt);
150  }
151  $this->ctrl->redirectByClass(ilExportGUI::class, ilExportGUI::CMD_LIST_EXPORT_FILES);
152  }
153 }
$context
Definition: webdav.php:31
onDownloadFiles(ilExportHandlerConsumerContextInterface $context, ilExportHandlerConsumerFileIdentifierCollectionInterface $file_identifiers)
onExportOptionSelected(ilExportHandlerConsumerContextInterface $context)
database()
Get interface to the Database.
Definition: Container.php:42
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")
static _getExportDirectory(int $a_obj_id, string $a_type="xml", string $a_obj_type="", string $a_entity="")
Get export directory for an repository object
Customizing of pimple-DIC for ILIAS.
Definition: Container.php:35
static deliverFileLegacy(string $a_file, ?string $a_filename=null, ?string $a_mime=null, ?bool $isInline=false, ?bool $removeAfterDelivery=false, ?bool $a_exit_after=true)
onDownloadWithLink(ReferenceId $reference_id, ilExportHandlerConsumerFileIdentifierInterface $file_identifier)
static delDir(string $a_dir, bool $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively
onDeleteFiles(ilExportHandlerConsumerContextInterface $context, ilExportHandlerConsumerFileIdentifierCollectionInterface $file_identifiers)
global $DIC
Definition: shib_login.php:26
language()
Get interface to the i18n service.
Definition: Container.php:95
const CMD_LIST_EXPORT_FILES
static _lookupType(int $id, bool $reference=false)
getFiles(ilExportHandlerConsumerContextInterface $context)