3 declare(strict_types=1);
38 int $container_ref_id,
51 throw new Forbidden(
"The error info file is virtual and can therefore not be overwritten");
62 return self::PROBLEM_INFO_FILE_NAME;
82 throw new Forbidden(
"The error info file cannot be renamed");
90 $already_seen_titles = array();
92 $problem_infos = array(
93 self::PROBLEM_DUPLICATE_OBJECTNAME => array(),
94 self::PROBLEM_FORBIDDEN_CHARACTERS => array(),
95 self::PROBLEM_INFO_NAME_DUPLICATE =>
false 98 foreach ($this->repo_helper->getChildrenOfRefId($this->container_ref_id) as
$ref_id) {
100 $dav_object = $this->dav_object_factory->retrieveDAVObjectByRefID(
$ref_id);
102 $title = $dav_object->getName();
104 if ($title === self::PROBLEM_INFO_FILE_NAME) {
105 $problem_infos[self::PROBLEM_INFO_NAME_DUPLICATE] =
true;
106 } elseif (in_array($title, $already_seen_titles)) {
107 $problem_infos[self::PROBLEM_DUPLICATE_OBJECTNAME][] = $title;
109 $already_seen_titles[] = $title;
113 $title = $this->repo_helper->getObjectTitleFromRefId(
$ref_id);
114 $problem_infos[self::PROBLEM_FORBIDDEN_CHARACTERS][] = $title;
120 return $problem_infos;
128 $message_string =
"";
130 if ($problem_infos[self::PROBLEM_INFO_NAME_DUPLICATE]) {
131 $message_string .=
"# " . $this->
language->txt(
'webdav_problem_info_duplicate') .
"\n\n";
134 $duplicates_list = $problem_infos[self::PROBLEM_DUPLICATE_OBJECTNAME];
135 if (count($duplicates_list) > 0) {
136 $message_string .=
"# " . $this->
language->txt(
'webdav_duplicate_detected_title') .
"\n";
137 foreach ($duplicates_list as $duplicate_title) {
138 $message_string .= $duplicate_title .
"\n";
140 $message_string .=
"\n";
143 $forbidden_character_titles_list = $problem_infos[self::PROBLEM_FORBIDDEN_CHARACTERS];
144 if (count($forbidden_character_titles_list) > 0) {
145 $message_string .=
"# " . $this->
language->txt(
'webdav_forbidden_chars_title') .
"\n";
146 foreach ($forbidden_character_titles_list as $forbidden_character_title) {
147 $message_string .= $forbidden_character_title .
"\n";
149 $message_string .=
"\n";
152 if (strlen($message_string) === 0) {
153 $message_string = $this->
language->txt(
'webdav_problem_free_container');
156 return $message_string;
159 public function delete():
void 161 throw new Forbidden(
"It is not possible to delete this file since it is just virtual.");
const PROBLEM_INFO_FILE_NAME
const OBJECT_TITLE_NOT_DAVABLE
const PROBLEM_INFO_NAME_DUPLICATE
__construct(int $container_ref_id, ilWebDAVRepositoryHelper $repo_helper, ilWebDAVObjFactory $dav_object_factory, ilLanguage $language)
ilWebDAVRepositoryHelper $repo_helper
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
createMessageStringFromProblemInfoArray(array $problem_infos)
analyseObjectsOfDAVContainer()
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const PROBLEM_FORBIDDEN_CHARACTERS
const PROBLEM_DUPLICATE_OBJECTNAME
ilWebDAVObjFactory $dav_object_factory