/** * Returns an overview of certain documents * * @param Array $documents Ids of the documents in question * @param mixed $open Array containing open states of documents * @return string Overview of documents as html, ready to be displayed */ function show_documents($documents, $open = null) { if (!is_array($documents)) { return; } if (!is_null($open) && !is_array($open)) { $open = null; } if (is_array($open)) { reset($open); $ank = key($open); } if (!empty($documents)) { $query = "SELECT {$GLOBALS['_fullname_sql']['full']} AS fullname, username, user_id,\n dokument_id, filename, filesize, downloads, protected, url, description,\n IF(IFNULL(name, '') = '', filename, name) AS t_name,\n GREATEST(a.chdate, a.mkdate) AS chdate\n FROM dokumente AS a\n LEFT JOIN auth_user_md5 USING (user_id)\n LEFT JOIN user_info USING (user_id)\n WHERE dokument_id IN (?)\n ORDER BY a.chdate DESC"; $statement = DBManager::get()->prepare($query); $statement->execute(array($documents)); $documents = $statement->fetchAll(PDO::FETCH_ASSOC); } foreach ($documents as $index => $document) { $type = empty($document['url']) ? 0 : 6; $is_open = is_null($open) || $open[$document['dokument_id']] ? 'open' : 'close'; $extension = getFileExtension($document['filename']); // Create icon $icon = sprintf('<a href="%s">%s</a>', GetDownloadLink($document['dokument_id'], $document['filename'], $type), GetFileIcon($extension, true)->asImg()); // Create open/close link $link = $is_open === 'open' ? URLHelper::getLink('#dok_anker', array('close' => $document['dokument_id'])) : URLHelper::getLink('#dok_anker', array('open' => $document['dokument_id'])); // Create title including filesize and number of downloads $size = $document['filesize'] > 1024 * 1024 ? sprintf('%u MB', round($document['filesize'] / 1024 / 1024)) : sprintf('%u kB', round($document['filesize'] / 1024)); $downloads = $document['downloads'] == 1 ? '1 ' . _('Download') : $document['downloads'] . ' ' . _('Downloads'); $title = sprintf('<a href="%s"%s class="tree">%s</a> (%s / %s)', $link, $ank == $document['dokument_id'] ? ' name="dok_anker"' : '', htmlReady(mila($document['t_name'])), $size, $downloads); // Create additional information $addon = sprintf('<a href="%s">%s</a> %s', URLHelper::getLink('dispatch.php/profile', array('username' => $document['username'])), $document['fullname'], date('d.m.Y H:i', $document['chdate'])); if ($document['protected']) { $addon = tooltipicon(_('Diese Datei ist urheberrechtlich geschützt!')) . ' ' . $addon; } if (!empty($document['url'])) { $addon .= ' ' . Icon::create('link-extern', 'clickable', ['title' => _('Diese Datei wird von einem externen Server geladen!')])->asImg(16); } // Attach created variables to document $documents[$index]['addon'] = $addon; $documents[$index]['extension'] = $extension; $documents[$index]['icon'] = $icon; $documents[$index]['is_open'] = $is_open; $documents[$index]['link'] = $link; $documents[$index]['title'] = $title; $documents[$index]['type'] = $type; } $template = $GLOBALS['template_factory']->open('user_activities/files-details'); $template->documents = $documents; return $template->render(); }
static function loadFiles($id, $type = 'file') { if ($type === 'folder') { $query = "SELECT dokument_id AS document_id, user_id, name, description, mkdate, chdate,\n filename, filesize, downloads, protected\n FROM dokumente\n WHERE range_id = ?"; } else { $query = "SELECT dokument_id AS document_id, user_id, name, description, mkdate, chdate,\n filename, filesize, downloads, protected\n FROM dokumente\n WHERE dokument_id IN (?)"; } $statement = DBManager::get()->prepare($query); $statement->execute(array($id)); $files = $statement->fetchAll(PDO::FETCH_ASSOC); foreach ($files as &$file) { $file['protected'] = !empty($file['protected']); $file['mime_type'] = get_mime_type($file['filename']); $file['icon'] = Assets::image_path(GetFileIcon(getFileExtension($file['filename']))); } return $type !== 'folder' && !is_array($id) ? reset($files) : $files; }
</div> <? if (count($message->attachments)) : ?> <h3><?php echo Icon::create('staple', 'inactive')->asImg(20, ["class" => "text-bottom"]); echo _("Anhang"); ?> </h3> <ul class="message_attachments"> <? foreach ($message->attachments as $attachment) : ?> <li> <? $mime_type = get_mime_type($attachment['filename']) ?> <h4><a href="<?php echo GetDownloadLink($attachment->getId(), $attachment['filename'], 7, 'force'); ?> "><?php echo GetFileIcon(substr($attachment['filename'], strrpos($attachment["filename"], ".") + 1))->asImg(); echo htmlReady($attachment['name']); ?> </a></h4> <? if (substr($mime_type, 0, 5) === "image") : ?> <div><img src="<?php echo GetDownloadLink($attachment->getId(), $attachment['filename'], 7, 'normal'); ?> " style="max-width: 400px;"></div> <? endif ?> </li> <? endforeach ?> </ul> <? endif ?> <div align="center" data-dialog-button>
/** * Displays one file/document with all of its information and options. * */ function display_file_line ($datei, $folder_id, $open, $change, $move, $upload, $all, $refresh=FALSE, $filelink="", $anchor_id, $position = "middle") { global $_fullname_sql,$SessionSeminar,$SessSemName, $rechte, $anfang, $user, $SemSecLevelWrite, $SemUserStatus, $check_all, $countfiles; //Einbinden einer Klasse, die Informationen über den ganzen Baum enthält $folder_tree = TreeAbstract::GetInstance('StudipDocumentTree', array('range_id' => $SessionSeminar)); $javascriptok = true; print "\n\t<div class=\"".($rechte ? "draggable" : "")."\" id=\"file_".$folder_id."_$countfiles\">"; print "<div style=\"display:none\" id=\"getmd5_fi".$folder_id."_$countfiles\">".$datei['dokument_id']."</div>"; print "<table cellpadding=0 border=0 cellspacing=0 width=\"100%\"><tr class=\"handle\">"; if (!$all) { print "<td class=\"tree-elbow-end\">" . Assets::img("datatree_2.gif") . "</td>"; } //Farbe des Pfeils bestimmen: $chdate = (($datei["chdate"]) ? $datei["chdate"] : $datei["mkdate"]); if (object_get_visit($SessSemName[1], "documents") < $chdate) $timecolor = "#FF0000"; else { $timediff = (int) log((time() - doc_newest($folder_id)) / 86400 + 1) * 15; if ($timediff >= 68) $timediff = 68; $red = dechex(255 - $timediff); $other = dechex(119 + $timediff); $timecolor= "#" . $red . $other . $other; } if ($open[$datei["dokument_id"]]) { print "<td id=\"file_".$datei["dokument_id"]."_arrow_td\" nowrap valign=\"top\"" . "align=\"left\" width=1% bgcolor=\"$timecolor\" class=\"printhead3\" valign=\"bottom\"><a href=\""; print URLHelper::getLink("?close=".$datei["dokument_id"]."#anker"); print "\" class=\"tree\" onClick=\"return STUDIP.Filesystem.changefilebody('". $datei["dokument_id"]."', '".$SessionSeminar."')\">". Assets::img('forumgraurunt2.png', tooltip2(_('Objekt zuklappen')) + array('id' => 'file_'. $datei["dokument_id"] . '_arrow_img')). "</a></td>"; } else { print "<td id=\"file_".$datei["dokument_id"]."_arrow_td\" nowrap valign=\"top\" align=\"left\" width=1% bgcolor=\"$timecolor\" class=\"printhead2\" valign=\"bottom\"><a href=\""; print URLHelper::getLink("?open=".$datei["dokument_id"]."#anker"); print "\" class=\"tree\" onClick=\"return STUDIP.Filesystem.changefilebody('". $datei["dokument_id"]."', '".$SessionSeminar."')\">". Assets::img('forumgrau2.png', tooltip2(_('Objekt aufklappen')) + array('id' => 'file_'. $datei["dokument_id"] . '_arrow_img')). "</a></td>"; } // -> Pfeile zum Verschieben (bzw. die Ziehfläche) if ((!$all) && ($rechte)) { $countfiles++; $bewegeflaeche = "<span class=\"updown_marker\" id=\"pfeile_".$datei["dokument_id"]."\">"; if (($position == "middle") || ($position == "bottom")) { $bewegeflaeche .= "<a href=\"".URLHelper::getLink('?open='.$datei['dokument_id'])."_mfu_\" title=\""._("Datei nach oben schieben"). "\">" . Icon::create('arr_2up', 'sort')->asImg(['class' => 'text-top']) . "</a>"; } if (($position == "middle") || ($position == "top")) { $bewegeflaeche .= "<a href=\"".URLHelper::getLink('?open='. $datei['dokument_id'])."_mfd_\" title=\""._("Datei nach unten schieben"). "\">". Icon::create('arr_2down', 'sort')->asImg(['class' => 'text-top']) . "</a>"; } $bewegeflaeche .= "</span>"; } print "<td class=\"printhead\" valign=\"bottom\">"; if ($change == $datei["dokument_id"]) { print "<span id=\"file_".$datei["dokument_id"]."_header\" style=\"font-weight: bold\"><a href=\"".URLHelper::getLink("?close=".$datei["dokument_id"]."#anker")."\" class=\"tree\""; print ' name="anker"></a>'; print GetFileIcon(getFileExtension($datei['filename']))->asImg(); print "<input style=\"font-size: 8pt; width: 50%;\" type=\"text\" size=\"20\" maxlength=\"255\" name=\"change_name\" aria-label=\"Ordnername eingeben\" value=\"".htmlReady($datei["name"])."\"></b>"; } else { if (($move == $datei["dokument_id"]) || ($upload == $datei["dokument_id"]) || ($anchor_id == $datei["dokument_id"])) { print "<a name=\"anker\"></a>"; } $type = ($datei['url'] != '')? 6 : 0; // LUH Spezerei: if (check_protected_download($datei["dokument_id"])) { print "<a href=\"".GetDownloadLink( $datei["dokument_id"], $datei["filename"], $type, "normal")."\" class=\"extern\">".GetFileIcon(getFileExtension($datei['filename']))->asImg()."</a>"; } else { print Icon::create('info-circle', 'inactive')->asImg(); } //Jetzt folgt der Link zum Aufklappen if ($open[$datei["dokument_id"]]) { print "<a href=\"".URLHelper::getLink("?close=".$datei["dokument_id"]."#anker")."\" class=\"tree\" onClick=\"return STUDIP.Filesystem.changefilebody('".$datei["dokument_id"]."')\">"; print " <span id=\"file_".$datei["dokument_id"]."_header\" style=\"font-weight: bold\">"; } else { print "<a href=\"".URLHelper::getLink("?open=".$datei["dokument_id"]."#anker")."\" class=\"tree\" onClick=\"return STUDIP.Filesystem.changefilebody('".$datei["dokument_id"]."')\">"; print " <span id=\"file_".$datei["dokument_id"]."_header\" style=\"font-weight: normal\">"; } print htmlReady($datei['t_name']); print "</span>"; } //add the size print ' (' . relsize($datei['filesize'], $datei['filesize'] < 1024); //add number of downloads print " / ".(($datei["downloads"] == 1) ? $datei["downloads"]." "._("Download") : $datei["downloads"]." "._("Downloads")).")"; //So und jetzt die rechtsbündigen Sachen: print "</a></td><td align=\"right\" class=\"printhead\" valign=\"bottom\">"; if ($datei['username']) { print "<a href=\"".URLHelper::getLink('dispatch.php/profile?username='******'username'])."\">".htmlReady($datei['fullname'])."</a> "; } else { print htmlReady($datei['author_name']); } print $bewegeflaeche." "; //Workaround for older data from previous versions (chdate is 0) print " ".date("d.m.Y - H:i", (($datei["chdate"]) ? $datei["chdate"] : $datei["mkdate"])); if ($all) { if ((!$upload) && ($datei["url"]=="") && check_protected_download($datei["dokument_id"])) { $checked = ($check_all || in_array($datei["dokument_id"], Request::getArray('download_ids'))) ? 'checked' : ''; $box = sprintf ("<input type=\"CHECKBOX\" %s name=\"download_ids[]\" value=\"%s\">",$checked , $datei["dokument_id"]); print $box; } else { echo Icon::create('decline', 'inactive', ['title' => _("Diese Datei kann nicht als ZIP-Archiv heruntergeladen werden."), 'style' => 'padding-left:5px;'])->asImg(); } } print "</td></tr>"; //Ab jetzt kommt der Bereich zum Runterladen und Bearbeiten: if (isset($open[$datei["dokument_id"]])) { //Dokument-Content ausgeben print "<tr id=\"file_".$datei["dokument_id"]."_body_row\">".(($all) ? "" : "<td></td>")."<td colspan=3><div id=\"file_".$datei["dokument_id"]."_body\">"; //Der eigentliche Teil ist outsourced in die folgende Funktion, //damit der Körper auch über Ajax abgerufen werden kann. display_file_body($datei, $folder_id, $open, $change, $move, $upload, $all, $refresh, $filelink); } else { print "<tr id=\"file_".$datei["dokument_id"]."_body_row\">".(($all) ? "" : "<td></td>")."<td colspan=3><div id=\"file_".$datei["dokument_id"]."_body\" style=\"display:none\">"; } print "</div></td></tr></table>\n\t</div>"; }
function callSafeguard($evalAction, $evalID = "", $showrangeID = NULL, $search = NULL, $referer = NULL) { global $perm, $auth, $user; if (!($evalAction || $evalAction == "search")) { return " "; } if (!$perm->have_studip_perm("tutor", $showrangeID) && $user->id != $showrangeID && !(isDeputyEditAboutActivated() && isDeputy($user->id, $showrangeID, true))) { return $this->createSafeguard("ausruf", sprintf(_("Sie haben keinen Zugriff auf diesen Bereich."))); } $evalDB = new EvaluationDB(); $evalChanged = NULL; $safeguard = " "; /* Actions without any permissions ---------------------------------- */ switch ($evalAction) { case "search_template": $search = trim($search); $templates = $evalDB->getPublicTemplateIDs($search); if (strlen($search) < EVAL_MIN_SEARCHLEN) { $report = EvalCommon::createReportMessage(sprintf(_("Bitte einen Suchbegriff mit mindestens %d Buchstaben eingeben."), EVAL_MIN_SEARCHLEN), EVAL_PIC_ERROR, EVAL_CSS_ERROR); } elseif (count($templates) == 0) { $report = EvalCommon::createReportMessage(_("Es wurden keine passenden öffentlichen Evaluationsvorlagen gefunden."), EVAL_PIC_ERROR, EVAL_CSS_ERROR); } else { $report = EvalCommon::createReportMessage(sprintf(_("Es wurde(n) %d passende öffentliche Evaluationsvorlagen gefunden."), count($templates)), EVAL_PIC_SUCCESS, EVAL_CSS_SUCCESS); } $safeguard .= $report->createContent(); return $safeguard; case "export_request": /* Check permissions ------------------------------------------- */ $haveNoPerm = YES; $eval = new Evaluation($evalID, NULL, EVAL_LOAD_NO_CHILDREN); $haveNoPerm = EvaluationObjectDB::getEvalUserRangesWithNoPermission($eval); if ($haveNoPerm == YES) { $report = EvalCommon::createReportMessage(_("Sie haben nicht die Berechtigung diese Evaluation zu exportieren."), EVAL_PIC_ERROR, EVAL_CSS_ERROR); return $report->createContent(); } /* -------------------------------------- end: check permissions */ /* Export evaluation ------------------------------------------- */ $exportManager = new EvaluationExportManagerCSV($evalID); $exportManager->export(); /* -------------------------------------- end: export evaluation */ /* Create link ------------------------------------------------- */ $link = new HTML("a"); $link->addAttr('href', GetDownloadLink($exportManager->getTempFilename(), $exportManager->getFilename(), 2)); $link->addHTMLContent(GetFileIcon('csv')->asImg()); $link->addContent(_("auf diese Verknüpfung")); /* -------------------------------------------- end: create link */ /* Create report ----------------------------------------------- */ if ($exportManager->isError()) { $report = EvalCommon::createErrorReport($exportManager, _("Fehler beim Exportieren")); } else { $report = EvalCommon::createReportMessage(_("Die Daten wurden erfolgreich exportiert. Sie können die Ausgabedatei jetzt herunterladen."), EVAL_PIC_SUCCESS, EVAL_CSS_SUCCESS); $report = $report->createContent(); $report .= sprintf(_("Bitte klicken Sie %s um die Datei herunter zu laden.") . "<br><br>", $link->createContent()); } $safeguard .= $report; /* ------------------------------------------ end: create report */ return $safeguard; } /* ----------------------------------- end: actions without permissions */ $eval = new Evaluation($evalID, NULL, EVAL_LOAD_NO_CHILDREN); $evalName = htmlready($eval->getTitle()); /* Check for errors while loading ------------------------------------- */ if ($eval->isError()) { EvalCommon::createErrorReport($eval); return $this->createSafeguard("", EvalCommon::createErrorReport($eval)); } /* -------------------------------------- end: errorcheck while loading */ /* Check for permissions in all ranges of the evaluation -------------- */ if (!$eval->isTemplate() && $user->id != $eval->getAuthorID()) { $no_permisson = EvaluationObjectDB::getEvalUserRangesWithNoPermission($eval); if ($no_permisson > 0) { if ($no_permisson == 1) { $no_permission_msg .= sprintf(_("Die Evaluation <b>%s</b> ist einem Bereich zugeordnet, für den Sie keine Veränderungsrechte besitzen."), $evalName); } else { $no_permission_msg .= sprintf(_("Die Evaluation <b>%s</b> ist %s Bereichen zugeordnet, für die Sie keine Veränderungsrechte besitzen."), $evalName, $no_permisson); } if ($evalAction != "save") { $no_permission_msg .= " " . _("Der Besitzer wurde durch eine systeminterne Nachricht informiert."); $sms = new messaging(); $sms->insert_message(sprintf(_("Benutzer **%s** hat versucht eine unzulässige Änderung an Ihrer Evaluation **%s** vorzunehmen."), get_username($auth->auth["uid"]), $eval->getTitle()), get_username($eval->getAuthorID()), "____%system%____", FALSE, FALSE, "1", FALSE, _("Versuchte Änderung an Ihrer Evaluation")); } } } else { if ($eval->isTemplate() && $user->id != $eval->getAuthorID() && $evalAction != "copy_public_template" && $evalAction != "search_showrange") { $sms = new messaging(); $sms->insert_message(sprintf(_("Benutzer **%s** hat versucht eine unzulässige Änderung an Ihrem Template **%s** vorzunehmen."), get_username($auth->auth["uid"]), $eval->getTitle()), get_username($eval->getAuthorID()), "____%system%____", FALSE, FALSE, "1", FALSE, _("Versuchte Änderung an Ihrem Template")); return $this->createSafeguard("ausruf", sprintf(_("Sie besitzen keine Rechte für das Tempate <b>%s</b>. Der Besitzer wurde durch eine systeminterne Nachricht informiert."), $evalName)); } } /* ----------------------------------------- end: check for permissions */ switch ($evalAction) { case "share_template": if ($eval->isShared()) { $eval->setShared(NO); $eval->save(); if ($eval->isError()) { $safeguard .= $this->createSafeguard("", EvalCommon::createErrorReport($eval)); return $safeguard; } $safeguard .= $this->createSafeguard("ok", sprintf(_("Die Evaluationsvorlage <b>%s</b> kann jetzt nicht mehr von anderen Benutzern gefunden werden."), $evalName)); } else { $eval->setShared(YES); $eval->save(); if ($eval->isError()) { $safeguard .= $this->createSafeguard("", EvalCommon::createErrorReport($eval)); return $safeguard; } $safeguard .= $this->createSafeguard("ok", sprintf(_("Die Evaluationsvorlage <b>%s</b> kann jetzt von anderen Benutzern gefunden werden."), $evalName)); } break; case "copy_public_template": $eval = new Evaluation($evalID, NULL, EVAL_LOAD_ALL_CHILDREN); $newEval = $eval->duplicate(); $newEval->setAuthorID($auth->auth["uid"]); $newEval->setShared(NO); $newEval->setStartdate(NULL); $newEval->setStopdate(NULL); $newEval->setTimespan(NULL); $newEval->removeRangeIDs(); $newEval->save(); if ($newEval->isError()) { $safeguard .= $this->createSafeguard("", EvalCommon::createErrorReport($newEval)); return $safeguard; } $safeguard .= $this->createSafeguard("ok", sprintf(_("Die öffentliche Evaluationsvorlage <b>%s</b> wurde zu den eigenen Evaluationsvorlagen kopiert."), $evalName)); break; case "start": if ($no_permission_msg) { return $this->createSafeguard("ausruf", $no_permission_msg . "<br>" . _("Die Evaluation wurde nicht gestartet.")); } $eval->setStartdate(time() - 500); $eval->save(); if ($eval->isError()) { $safeguard .= $this->createSafeguard("", EvalCommon::createErrorReport($eval)); return $safeguard; } $safeguard .= $this->createSafeguard("ok", sprintf(_("Die Evaluation <b>%s</b> wurde gestartet."), $evalName)); $evalChanged = YES; break; case "stop": if ($no_permission_msg) { return $this->createSafeguard("ausruf", $no_permission_msg . "<br>" . _("Die Evaluation wurde nicht beendet.")); } $eval->setStopdate(time()); $eval->save(); if ($eval->isError()) { EvalCommon::createErrorReport($eval); $safeguard .= $this->createSafeguard("", EvalCommon::createErrorReport($eval)); return $safeguard; } $safeguard .= $this->createSafeguard("ok", sprintf(_("Die Evaluation <b>%s</b> wurde beendet."), $evalName)); $evalChanged = YES; break; case "continue": if ($no_permission_msg) { return $this->createSafeguard("ausruf", $no_permission_msg . "<br>" . _("Die Evaluation wurde nicht fortgesetzt.")); } $eval->setStopdate(NULL); $eval->setStartdate(time() - 500); $eval->save(); if ($eval->isError()) { $safeguard .= $this->createSafeguard("", EvalCommon::createErrorReport($eval)); return $safeguard; } $safeguard .= $this->createSafeguard("ok", sprintf(_("Die Evaluation <b>%s</b> wurde fortgesetzt."), $evalName)); $evalChanged = YES; break; case "restart_request": if ($no_permission_msg) { return $this->createSafeguard("ausruf", $no_permission_msg . "<br>" . _("Die Evaluation wurde nicht zurücksetzen.")); } $safeguard .= $this->createSafeguard("ausruf", sprintf(_("Die Evaluation <b>%s</b> wirklich zurücksetzen? Dabei werden alle bisher abgegebenen Antworten gelöscht!"), $evalName), "restart_request", $evalID, $showrangeID, $referer); break; case "restart_confirmed": if ($no_permission_msg) { return $this->createSafeguard("ausruf", $no_permission_msg . "<br>" . _("Die Evaluation wurde nicht zurücksetzen.")); } $eval = new Evaluation($evalID, NULL, EVAL_LOAD_ALL_CHILDREN); $eval->resetAnswers(); $evalDB->removeUser($eval->getObjectID()); $eval->setStartdate(NULL); $eval->setStopdate(NULL); $eval->save(); if ($eval->isError()) { $safeguard .= $this->createSafeguard("", EvalCommon::createErrorReport($eval)); return $safeguard; } $safeguard .= $this->createSafeguard("ok", sprintf(_("Die Evaluation <b>%s</b> wurde zurückgesetzt."), $evalName)); $evalChanged = YES; break; case "restart_aborted": $safeguard .= $this->createSafeguard("ok", sprintf(_("Die Evaluation <b>%s</b> wurde nicht zurückgesetzt."), $evalName), "", "", "", $referer); break; case "copy_own_template": $eval = new Evaluation($evalID, NULL, EVAL_LOAD_ALL_CHILDREN); $newEval = $eval->duplicate(); $newEval->setShared(NO); $newEval->save(); if ($newEval->isError()) { $safeguard .= $this->createSafeguard("", EvalCommon::createErrorReport($newEval)); return $safeguard; } $safeguard .= $this->createSafeguard("ok", sprintf(_("Die Evaluationsvorlage <b>%s</b> wurde kopiert."), $evalName)); break; case "delete_request": if ($no_permission_msg) { return $this->createSafeguard("ausruf", $no_permission_msg . "<br>" . _("Die Evaluation wurde nicht gelöscht.")); } $text = $eval->isTemplate() ? sprintf(_("Die Evaluationsvorlage <b>%s </b>wirklich löschen?"), $evalName) : sprintf(_("Die Evaluation <b>%s </b>wirklich löschen?"), $evalName); $safeguard .= $this->createSafeguard("ausruf", $text, "delete_request", $evalID, $showrangeID, $referer); break; case "delete_confirmed": if ($no_permission_msg) { return $this->createSafeguard("ausruf", $no_permission_msg . "<br>" . _("Die Evaluation wurde nicht gelöscht.")); } $eval = new Evaluation($evalID, NULL, EVAL_LOAD_ALL_CHILDREN); $eval->delete(); if ($eval->isError()) { $safeguard .= $this->createSafeguard("", EvalCommon::createErrorReport($eval)); return $safeguard; } $text = $eval->isTemplate() ? _("Die Evaluationsvorlage <b>%s</b> wurde gelöscht.") : _("Die Evaluation <b>%s</b> wurde gelöscht."); $safeguard .= $this->createSafeguard("ok", sprintf($text, $evalName), "", "", "", $referer); $evalChanged = YES; break; case "delete_aborted": $text = $eval->isTemplate() ? _("Die Evaluationsvorlage <b>%s</b> wurde nicht gelöscht.") : _("Die Evaluation <b>%s</b> wurde nicht gelöscht."); $safeguard .= $this->createSafeguard("ok", sprintf($text, $evalName), "", "", "", $referer); break; case "unlink_delete_aborted": $text = _("Die Evaluation <b>%s</b> wurde nicht verändert."); $safeguard .= $this->createSafeguard("ok", sprintf($text, $evalName), "", "", "", $referer); break; case "unlink_and_move": if ($no_permission_msg) { return $this->createSafeguard("ausruf", $no_permission_msg . "<br>" . _("Die Evaluation wurde nicht ausgehängt und zu den eigenen Evaluationsvorlagen verschoben.")); } $eval = new Evaluation($evalID, NULL, EVAL_LOAD_ALL_CHILDREN); $eval->removeRangeIDs(); $eval->setAuthorID($auth->auth["uid"]); $eval->resetAnswers(); $evalDB->removeUser($eval->getObjectID()); $eval->setStartdate(NULL); $eval->setStopdate(NULL); $eval->save(); if ($eval->isError()) { $safeguard .= $this->createSafeguard("", EvalCommon::createErrorReport($eval)); return $safeguard; } $text = _("Die Evaluation <b>%s</b> wurde aus allen Bereichen ausgehängt und zu den eigenen Evaluationsvorlagen verschoben."); $safeguard .= $this->createSafeguard("ok", sprintf($text, $evalName), "", "", "", $referer); break; case "created": $safeguard .= $this->createSafeguard("ok", sprintf(_("Die Evaluation <b>%s</b> wurde angelegt."), $evalName)); break; case "save2": case "save": $eval = new Evaluation($evalID, NULL, EVAL_LOAD_ALL_CHILDREN); $update_message = sprintf(_("Die Evaluation <b>%s</b> wurde mit den Veränderungen gespeichert."), $evalName); /* Timesettings ---------------------------------------------------- */ if (Request::option("startMode")) { switch (Request::option("startMode")) { case "manual": $startDate = NULL; break; case "timeBased": $startDate = EvalCommon::date2timestamp(Request::int("startDay"), Request::int("startMonth"), Request::int("startYear"), Request::int("startHour"), Request::int("startMinute")); break; case "immediate": $startDate = time() - 1; break; } if ($no_permission_msg && $eval->getStartdate != $startDate) { $time_msg = $no_permission_msg . "<br>" . _("Die Einstellungen zur Startzeit wurden nicht verändert."); } } if (Request::option("stopMode")) { switch (Request::option("stopMode")) { case "manual": $stopDate = NULL; $timeSpan = NULL; break; case "timeBased": $stopDate = EvalCommon::date2timestamp(Request::int("stopDay"), Request::int("stopMonth"), Request::int("stopYear"), Request::int("stopHour"), Request::int("stopMinute")); $timeSpan = NULL; break; case "timeSpanBased": $stopDate = NULL; $timeSpan = Request::get("timeSpan"); break; } if ($no_permission_msg && ($eval->getStopdate != $stopDate && $eval->getTimespan != $timeSpan)) { $time_msg = $time_msg ? $time_msg . "<br>" : $no_permission_msg; $time_msg .= _("Die Einstellungen zur Endzeit wurden nicht verändert."); } } /* ----------------------------------------------- end: timesettings */ /* link eval to ranges --------------------------------------------- */ $link_range_Array = Request::optionArray("link_range"); if ($link_range_Array) { $isTemplate = $eval->isTemplate(); if ($isTemplate) { $newEval = $eval->duplicate(); if ($newEval->isError()) { $safeguard .= $this->createSafeguard("", EvalCommon::createErrorReport($newEval)); return $safeguard; } $update_message = sprintf(_("Die Evaluationsvorlage <b>%s</b> wurde als Evaluation angelegt."), $evalName); $newEval->setStartdate($startDate); $newEval->setStopdate($stopDate); $newEval->setTimespan($timeSpan); $newEval->setShared(NO); } else { $newEval =& $eval; } $counter_linked = 0; foreach ($link_range_Array as $link_rangeID => $v) { if ($userid = get_userid($link_rangeID)) { $link_rangeID = $userid; } $newEval->addRangeID($link_rangeID); $counter_linked++; } if ($isTemplate) { $newEval->save(); } if ($newEval->isError()) { $safeguard .= $this->createSafeguard("ausruf", _("Fehler beim Einhängen von Bereichen.") . EvalCommon::createErrorReport($newEval)); return $safeguard; } $message .= $message ? "<br>" : " "; $message .= $counter_linked > 1 ? sprintf(_("Die Evaluation wurde in %s Bereiche eingehängt."), $counter_linked) : sprintf(_("Die Evaluation wurde in einen Bereich eingehängt."), $counter_linked); } /* ---------------------------------------- end: link eval to ranges */ /* copy eval to ranges --------------------------------------------- */ $copy_range_Array = Request::optionArray("copy_range"); if (!empty($copy_range_Array)) { $counter_copy = 0; foreach ($copy_range_Array as $copy_rangeID => $v) { if ($userid = get_userid($copy_rangeID)) { $copy_rangeID = $userid; } $newEval = $eval->duplicate(); if (Request::option("startMode")) { $newEval->setStartdate($startDate); } if (Request::get("stopMode")) { $newEval->setStopdate($stopDate); $newEval->setTimespan($timeSpan); } $newEval->setShared(NO); $newEval->removeRangeIDs(); $evalDB->removeUser($newEval->getObjectID()); $newEval->addRangeID($copy_rangeID); $newEval->save(); $counter_copy++; if ($newEval->isError()) { $safeguard .= $this->createSafeguard("ausruf", _("Fehler beim Kopieren von Evaluationen in Bereiche.") . EvalCommon::createErrorReport($newEval)); return $safeguard; } } $message .= $message ? "<br>" : " "; $message .= $counter_copy > 1 ? sprintf(_("Die Evaluation wurde in %s Bereiche kopiert."), $counter_copy) : sprintf(_("Die Evaluation wurde in einen Bereich kopiert."), $counter_copy); } /* ------------------------------------------- end: copy eval to ranges */ /* unlink ranges ------------------------------------------------------- */ $remove_range_Array = Request::optionArray("remove_range"); if (!empty($remove_range_Array)) { /* if all rangeIDs will be removed, so ask if it should be deleted -- */ if (sizeof($remove_range_Array) == $eval->getNumberRanges()) { $text = _("Sie wollen die Evaluation <b>%s</b> aus allen ihr zugeordneten Bereichen aushängen.<br>Soll die Evaluation gelöscht oder zu Ihren eigenen Evaluationsvorlagen verschoben werden?"); $safeguard .= $this->createSafeguard("ausruf", sprintf($text, $evalName), "unlink_delete_request", $evalID, $showrangeID, $referer); $update_message = NULL; return $safeguard; } /* -------------------------------- end: ask if it should be deleted */ $no_permission_ranges = EvaluationObjectDB::getEvalUserRangesWithNoPermission($eval, YES); $counter_no_permisson = 0; if (is_array($no_permission_ranges)) { foreach ($remove_range_Array as $remove_rangeID => $v) { if ($userid = get_userid($remove_rangeID)) { $remove_rangeID = $userid; } // no permisson to unlink this range if (in_array($remove_rangeID, $no_permission_ranges)) { $counter_no_permisson++; } } } // if there are no_permisson_ranges to unlink, return if ($counter_no_permisson > 0) { if ($counter_no_permisson == 1) { $safeguard .= $this->createSafeguard("ausruf", _("Sie wollen die Evaluation aus einem Bereich aushängen, für den Sie keine Berechtigung besitzten.<br> Die Aktion wurde nicht ausgeführt.")); } else { $safeguard .= $this->createSafeguard("ausruf", sprintf(_("Sie wollen die Evaluation aus %d Bereichen aushängen, für die Sie keine Berechtigung besitzten.<br> Die Aktion wurde nicht ausgeführt."), $counter_no_permisson)); } return $safeguard; } reset($remove_range_Array); $counter_copy = 0; foreach ($remove_range_Array as $remove_rangeID => $v) { if ($userid = get_userid($remove_rangeID)) { $remove_rangeID = $userid; } // the current range will be removed if ($showrangeID == $remove_rangeID) { $current_range_removed = 1; } $eval->removeRangeID($remove_rangeID); $counter_copy++; } if ($eval->isError()) { $safeguard .= $this->createSafeguard("ausruf", _("Fehler beim Aushängen von Bereichen.") . EvalCommon::createErrorReport($eval)); return $safeguard; } $message .= $message ? "<br>" : " "; $message .= $counter_copy > 1 ? sprintf(_("Die Evaluation wurde aus %s Bereichen ausgehängt."), $counter_copy) : sprintf(_("Die Evaluation wurde aus einem Bereich ausgehängt."), $counter_copy); if ($eval->getNumberRanges() == 0) { $message .= $message ? "<br>" : ""; $message .= _("Sie ist nun keinem Bereich mehr zugeordnet und wurde zu den eigenen Evaluationsvorlagen verschoben."); $eval->setStartdate(NULL); $eval->setStopdate(NULL); $evalDB->removeUser($eval->getObjectID()); if ($eval->isError()) { $safeguard .= $this->createSafeguard("ausruf", _("Fehler beim Kopieren von Evaluationen in Bereiche.") . EvalCommon::createErrorReport($newEval)); return $safeguard; } } else { $no_permission_ranges = EvaluationObjectDB::getEvalUserRangesWithNoPermission($eval); $number_of_ranges = $eval->getNumberRanges(); if ($number_of_ranges == $no_permission_ranges) { $return["msg"] = $this->createSafeguard("ausruf", $message . "<br>" . sprintf(_("Sie haben die Evaluation <b>%s</b> aus allen ihren Bereichen ausgehängt."), $evalName)); $return["option"] = DISCARD_OPENID; $eval->save(); if ($eval->isError()) { $safeguard = $this->createSafeguard("ausruf", _("Fehler beim Aushängen einer Evaluationen aus allen Bereichen auf die Sie Zugriff haben.") . EvalCommon::createErrorReport($newEval)); return $safeguard; } return $return; } } } if ($eval->isTemplate()) { if (empty($link_range) && empty($copy_range) && empty($remove_range)) { $update_message = sprintf(_("Es wurden keine Veränderungen an der Evaluationsvorlage <b>%s</b> gespeichert."), $evalName); } } else { // nothing changed if (!Request::option('startMode') && !Request::option('stopMode') && empty($link_range) && empty($copy_range) && empty($remove_range)) { $update_message = _("Es wurden keine Veränderungen gespeichert."); } // set new start date if (Request::option("startMode") && !$time_msg) { $eval->setStartDate($startDate); if ($startDate != NULL && $startDate <= time() - 1) { $message .= $message ? "<br>" : " "; $message .= _("Die Evaluation wurde gestartet."); } } // set new stop date if (Request::get("stopMode") && !$time_msg) { $eval->setStopDate($stopDate); $eval->setTimeSpan($timeSpan); if ($stopDate != NULL && $stopDate <= time() - 1 || $timeSpan != NULL && $eval->getStartdate() != NULL && $eval->getStartdate() + $timeSpan <= time() - 1) { $message .= $message ? "<br>" : " "; $message .= _("Die Evaluation wurde beendet."); } } if ($eval->isError()) { $safeguard .= $this->createSafeguard("", EvalCommon::createErrorReport($eval)); return $safeguard; } $eval->save(); } $evalChanged = YES; // start/endtime aren't saved, because of ranges with no permisson if ($time_msg) { $safeguard .= $this->createSafeguard("ausruf", $time_msg); } // everything is just fine so print the all messages if ($update_message && !$time_msg) { $safeguard .= $this->createSafeguard("ok", $update_message . "<br>" . $message); } elseif ($time_msg && $message) { $safeguard .= $this->createSafeguard("ok", $message); } break; case "search_showrange": case "search_range": $search = Request::get("search"); if (EvaluationObjectDB::getGlobalPerm(YES) < 31) { $safeguard = $this->createSafeguard("ausruf", _("Sie besitzen keine Berechtigung eine Suche durchzuführen.")); return $safeguard; } $results = $evalDB->search_range($search); if (empty($search)) { $safeguard .= $this->createSafeguard("ausruf", _("Bitte einen Suchbegriff eingeben."), $search); } elseif (sizeof($results) == 0) { $safeguard .= $this->createSafeguard("ausruf", sprintf(_("Es wurde kein Bereich gefunden, der den Suchbegriff <b>%s</b> enthält."), htmlReady($search)), $search); } else { $safeguard .= $this->createSafeguard("ok", sprintf(_("Es wurden %s Bereiche gefunden, die den Suchbegriff <b>%s</b> enthalten."), sizeof($results), htmlReady($search)), $search); } break; case "check_abort_creation": # check if the evaluation is new and not yet edited $eval = new Evaluation($evalID, NULL, EVAL_LOAD_NO_CHILDREN); $abort_creation = false; if ($eval->getTitle() == _("Neue Evaluation") && $eval->getText() == "") { # the evaluationen may be not edited yet ... so continue checking $eval = new Evaluation($evalID, NULL, EVAL_LOAD_ALL_CHILDREN); $number_of_childs = $eval->getNumberChildren(); $child = $eval->getNextChild(); if ($number_of_childs == 1 && $child && $child->getTitle() == _("Erster Gruppierungsblock") && $child->getChildren() == NULL && $child->getText() == "") { $abort_creation = true; } } if ($abort_creation != true) { break; } # continue abort_creation # continue abort_creation case "abort_creation": $eval = new Evaluation($evalID, NULL, EVAL_LOAD_ALL_CHILDREN); $eval->delete(); // error_ausgabe if ($eval->isError()) { $safeguard .= $this->createSafeguard("", EvalCommon::createErrorReport($eval)); return $safeguard; } $safeguard .= $this->createSafeguard("ok", _("Die Erstellung einer Evaluation wurde abgebrochen."), "", "", "", $referer); break; case "nothing": break; default: $safeguard .= $this->createSafeguard("ausruf", _("Fehler! Es wurde versucht, eine nicht vorhandene Aktion auszuführen.")); break; } /* Send SMS when eval has been modified by admin/root ----------------- */ if ($evalChanged && $eval->getAuthorID() != $auth->auth["uid"]) { $sms = new messaging(); $sms->insert_message(sprintf(_("An Ihrer Evaluation \"%s\" wurden von %s Änderungen vorgenommen."), $eval->getTitle(), get_username($auth->auth["uid"])), get_username($eval->getAuthorID()), "____%system%____", FALSE, FALSE, "1"); } /* ------------------------------------------------------ end: send SMS */ // the current range has been removed from the eval if ($current_range_removed) { $return["msg"] = $safeguard; $return["option"] = DISCARD_OPENID; return $return; } else { return $safeguard; } }
public function upload_attachment_action() { if ($GLOBALS['user']->id === "nobody") { throw new AccessDeniedException(); } if (!$GLOBALS['ENABLE_EMAIL_ATTACHMENTS']) { throw new AccessDeniedException(_('Mailanhänge sind nicht erlaubt.')); } $file = studip_utf8decode($_FILES['file']); $output = array('name' => $file['name'], 'size' => $file['size']); $output['message_id'] = Request::option("message_id"); if (!validate_upload($file)) { list($type, $error) = explode("§", $GLOBALS['msg']); throw new Exception($error); } $document = new StudipDocument(); $document->setValue('range_id', 'provisional'); $document->setValue('seminar_id', $GLOBALS['user']->id); $document->setValue('name', $output['name']); $document->setValue('filename', $document->getValue('name')); $document->setValue('filesize', (int) $output['size']); $document->setValue('autor_host', $_SERVER['REMOTE_ADDR']); $document->setValue('user_id', $GLOBALS['user']->id); $document->setValue('description', Request::option('message_id')); $success = $document->store(); if (!$success) { throw new Exception("Unable to handle uploaded file."); } $file_moved = move_uploaded_file($file['tmp_name'], get_upload_file_path($document->getId())); if (!$file_moved) { throw new Exception("No permission to move file to destination."); } $output['document_id'] = $document->getId(); $output['icon'] = GetFileIcon(getFileExtension($output['name']))->asImg(['class' => "text-bottom"]); $this->render_json($output); }