diff options
| author | Jan-Hendrik Willms <tleilax+github@gmail.com> | 2021-07-22 16:07:19 +0200 |
|---|---|---|
| committer | Jan-Hendrik Willms <tleilax+github@gmail.com> | 2021-07-22 16:19:12 +0200 |
| commit | a3da1483a9e689846179159355badfec8073dbec (patch) | |
| tree | 770dcca6bdf5f6f2a11b0e7fcbbeda6919a3fc52 /lib/filesystem/FileType.php | |
current code from svn, revision 62608
Diffstat (limited to 'lib/filesystem/FileType.php')
| -rw-r--r-- | lib/filesystem/FileType.php | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/lib/filesystem/FileType.php b/lib/filesystem/FileType.php new file mode 100644 index 0000000..003ee85 --- /dev/null +++ b/lib/filesystem/FileType.php @@ -0,0 +1,205 @@ +<?php + +interface FileType +{ + /** + * Returns the name of the icon shape that shall be used with the FileType implementation. + * + * @param string $role role of icon + * @return Icon icon for the FileType implementation. + */ + public function getIcon($role); + + /** + * Returns the id of the file which is most likely the id of the FileRef object + * within the FileType object. + * @return mixed + */ + public function getId(); + + /** + * Filename of the FileType-object. + * @return mixed + */ + public function getFilename(); + + /** + * The user_id in Stud.IP if the author has Stud.IP account. If it has none, return null. + * @return mixed|null + */ + public function getUserId(); + + /** + * Return the name of the author as a string. + * @return string|null + */ + public function getUserName(); + + + /** + * @returns The User object representing the author. + */ + public function getUser(); + + + /** + * Returns the size of the file in bytes. If this is null, the file doesn't exist + * physically - is probably only a weblink or a request for libraries. + * @return integer|null + */ + public function getSize(); + + /** + * Returns the URL to download the file. May be sendfile.php?... or an external link. + * @return string|null + */ + public function getDownloadURL(); + + /** + * Returns the number of downloads this file already has. Returns null if information is not available. + * @return integer|null + */ + public function getDownloads(); + + + /** + * Returns the (real) file system path for the file. + * This is only relevant for FileType implementations storing real files + * on the server disk. Other implementations shall just return + * an empty string. + * + * @returns The file system path for the file or an empty string if the + * file doesn't have a path in the file system. + */ + public function getPath() : string; + + /** + * Returns the UNIX-Timestamp of the last change or null if this information is unknown. + * @return integer|null + */ + public function getLastChangeDate(); + + /** + * Returns the UNIX-timestamp of creation of that file + * @return integer|null + */ + public function getMakeDate(); + + /** + * Returns the description of that FileType object. + * @return string|null + */ + public function getDescription(); + + /** + * Returns the mime-type of that FileType-object. + * @return string + */ + public function getMimeType(); + + /** + * @return ContentTermsOfUse + */ + public function getTermsOfUse(); + + /** + * Returns an instance of ActionMenu. + * @return ActionMenu|null + */ + public function getActionmenu(); + + + /** + * Returns a list of Stud.IP button objects that represent actions + * that shall be visible for the file type in the info dialog. + * + * @param array $extra_link_params An optional array of URL parameters + * that should be added to Button URLs, if reasonable. The parameter + * names are the keys of the array while their values are also the + * array item values. + * + * @returns Interactable[] A list of Stud.IP buttons (LinkButton or Button). + */ + public function getInfoDialogButtons(array $extra_link_params = []) : array; + + + /** + * Deletes that file. + * @return bool : true on success + */ + public function delete(); + + /** + * Returns the FolderTyp of the parent folder. + * @return FolderType + */ + public function getFolderType(); + + /** + * Determines whether the file is visible for a user. + * + * @param string $user_id The user for which the visibility of the file + * shall be determined. + * + * @return boolean True, if the user is permitted to see the file, false otherwise. + */ + public function isVisible($user_id = null); + + /** + * Determines if a user may download the file. + * @param string $user_id The user who wishes to download the file. + * @return boolean True, if the user is permitted to download the file, false otherwise. + */ + public function isDownloadable($user_id = null); + + /** + * Determines if a user may edit the file. + * @param string $user_id The user who wishes to edit the file. + * @return boolean True, if the user is permitted to edit the file, false otherwise. + */ + public function isEditable($user_id = null); + + /** + * Determines if a user may write to the file. + * @param string $user_id The user who wishes to write to the file. + * @return boolean True, if the user is permitted to write to the file, false otherwise. + */ + public function isWritable($user_id = null); + + /** + * Returns an object of the class StandardFile or a derived class. + * @return StandardFile + */ + public function convertToStandardFile(); + + /** + * Returns the content for that additional column, if it exists. You can return null a string + * or a Flexi_Template as the content. + * @param string $column_index + * @return null|string|Flexi_Template + */ + public function getContentForAdditionalColumn($column_index); + + /** + * Returns an integer that marks the value the content of the given column should be + * ordered by. + * @param string $column_index + * @return integer : order value + */ + public function getAdditionalColumnOrderWeigh($column_index); + + + /** + * Generates a Flexi_Template containing additional information that are + * displayes in the information dialog of a file. + * + * @param bool $include_downloadable_infos Whether to include information + * like file previews that can be downloaded (true) or to not + * include them (false). Defaults to false. + * + * @returns Flexi_Template|null Either a Flexi_Template containing + * additional information or null if no such information shall be + * displayed in the information dialog. + */ + public function getInfoTemplate(bool $include_downloadable_infos = false); +} |
