Go to the documentation of this file.00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 include_once("classes/class.ilObjectAccess.php");
00025
00034 class ilObjFileAccess extends ilObjectAccess
00035 {
00036
00049 function _getCommands()
00050 {
00051 $commands = array
00052 (
00053 array("permission" => "read", "cmd" => "sendfile", "lang_var" => "download",
00054 "default" => true),
00055 array("permission" => "write", "cmd" => "edit", "lang_var" => "edit"),
00056 array("permission" => "read", "cmd" => "versions", "lang_var" => "versions")
00057 );
00058
00059 return $commands;
00060 }
00061
00065 function _checkGoto($a_target)
00066 {
00067 global $ilAccess;
00068
00069 $t_arr = explode("_", $a_target);
00070
00071 if ($t_arr[0] != "file" || ((int) $t_arr[1]) <= 0)
00072 {
00073 return false;
00074 }
00075
00076 if ($ilAccess->checkAccess("visible", "", $t_arr[1]))
00077 {
00078 return true;
00079 }
00080 return false;
00081 }
00082
00086 function _lookupVersion($a_id)
00087 {
00088 global $ilDB;
00089
00090 $q = "SELECT * FROM file_data WHERE file_id = '".$a_id."'";
00091 $r = $ilDB->query($q);
00092 $row = $r->fetchRow(DB_FETCHMODE_OBJECT);
00093
00094 return ilUtil::stripSlashes($row->version);
00095 }
00096
00100 function _lookupFileSize($a_id, $a_as_string = false)
00101 {
00102 global $ilDB;
00103
00104 $q = "SELECT * FROM file_data WHERE file_id = '".$a_id."'";
00105 $r = $ilDB->query($q);
00106 $row = $r->fetchRow(DB_FETCHMODE_OBJECT);
00107
00108 $file = ilUtil::getDataDir()."/files/file_".$a_id."/".$row->file_name;
00109
00110 if (@!is_file($file))
00111 {
00112 $version_subdir = "/".sprintf("%03d", ilObjFileAccess::_lookupVersion($a_id));
00113 $file = ilUtil::getDataDir()."/files/file_".$a_id.$version_subdir."/".$row->file_name;
00114 }
00115
00116 if (is_file($file))
00117 {
00118 $size = filesize($file);
00119 }
00120 else
00121 {
00122 $size = 0;
00123 }
00124
00125 if ($a_as_string)
00126 {
00127 if ($size > 1000000)
00128 {
00129 return round($size/1000000,1)." MB";
00130 }
00131 else if ($size > 1000)
00132 {
00133 return round($size/1000,1)." KB";
00134 }
00135 else
00136 {
00137 return $size." Bytes";
00138 }
00139
00140 }
00141
00142 return $size;
00143 }
00144
00148 function _lookupSuffix($a_id)
00149 {
00150 global $ilDB;
00151
00152 $q = "SELECT * FROM file_data WHERE file_id = '".$a_id."'";
00153 $r = $ilDB->query($q);
00154 $row = $r->fetchRow(DB_FETCHMODE_OBJECT);
00155
00156 $file = ilUtil::getDataDir()."/files/file_".$a_id."/".$row->file_name;
00157
00158 if (@!is_file($file))
00159 {
00160 $version_subdir = "/".sprintf("%03d", ilObjFileAccess::_lookupVersion($a_id));
00161 $file = ilUtil::getDataDir()."/files/file_".$a_id.$version_subdir."/".$row->file_name;
00162 }
00163
00164 if (is_file($file))
00165 {
00166 $pi = pathinfo($file);
00167 return ".".$pi["extension"];
00168 }
00169
00170 return "";
00171 }
00172
00173 }
00174
00175 ?>