29 if (! empty($_SESSION[
'Folder'])) {
30 return ($_SESSION[
'Folder']);
36 $sql =
"SELECT root_folder_fk FROM users ORDER BY user_pk ASC LIMIT 1";
39 $row = pg_fetch_assoc($result);
40 pg_free_result($result);
41 return($row[
'root_folder_fk']);
55 $user_pk = Auth::getUserId();
58 if (empty($user_pk)) {
59 return "__FILE__:__LINE__ GetUserRootFolder(Not logged in)<br>";
63 $sql =
"select root_folder_fk from users where user_pk=$user_pk";
66 $UsersRow = pg_fetch_assoc($result);
67 $root_folder_fk = $UsersRow[
'root_folder_fk'];
68 pg_free_result($result);
69 if (empty($root_folder_fk)) {
70 $text = _(
"Missing root_folder_fk for user ");
71 fatal(
"<h2>".$text.$user_pk.
"</h2>", __FILE__, __LINE__);
73 return $root_folder_fk;
93 $FolderList = array();
96 if (empty($folder_pk)) {
97 return __FILE__.
":".__LINE__.
" Folder2Browse(empty)<br>";
104 $sql =
"select folder_pk, folder_name from folder where folder_pk='$folder_pk'";
107 $FolderRow = pg_fetch_assoc($result);
108 pg_free_result($result);
109 array_unshift($FolderList, $FolderRow);
113 if (($folder_pk == $root_folder_fk) || (count($FolderList)>20)) {
117 $sql =
"select parent_fk from foldercontents where child_id='$folder_pk' and foldercontents_mode=".FolderDao::MODE_FOLDER;
120 $FolderRow = pg_fetch_assoc($result);
121 pg_free_result($result);
122 $folder_pk = $FolderRow[
'parent_fk'];
143 if (empty($uploadtree_pk) && empty($upload_pk)) {
144 return "__FILE__:__LINE__ GetFolderFromItem(empty)<br>";
147 if (empty($upload_pk)) {
148 $UTrec =
GetSingleRec(
"uploadtree",
"where uploadtree_pk=$uploadtree_pk");
149 $upload_pk = $UTrec[
'upload_fk'];
152 $sql =
"select parent_fk from foldercontents where child_id='$upload_pk' and foldercontents_mode=".FolderDao::MODE_UPLOAD;
155 $FolderRow = pg_fetch_assoc($result);
156 pg_free_result($result);
157 return $FolderRow[
'parent_fk'];
178 function FolderListOption($ParentFolder,$Depth, $IncludeTop=1, $SelectId=-1, $linkParent=
false, $OldParent=0)
182 $dbManager = $container->get(
'db.manager');
183 $folderDao = $container->get(
'dao.folder');
185 if ($ParentFolder ==
"-1") {
188 if (empty($ParentFolder)) {
192 $ParentFolder = intval($ParentFolder);
194 $statementName = __METHOD__ .
'.folderTree';
195 $sql = $folderDao->getFolderTreeCte($ParentFolder) .
"
196 SELECT folder_pk, parent_fk, folder_name, depth
200 $dbManager->prepare($statementName, $sql);
201 $res = $dbManager->execute($statementName, array($ParentFolder));
204 while ($row = $dbManager->fetchArray($res)) {
205 $folderDepth = intval($row[
'depth']);
206 $folderPk = $row[
'folder_pk'];
207 $parentFk = $row[
'parent_fk'];
209 if ($folderDepth == 0 && !$IncludeTop) {
213 if ($folderPk == $SelectId) {
214 $V .=
"<option value='$folderPk' SELECTED>";
215 } elseif ($linkParent) {
216 $parent = empty($parentFk) ? 0 : $parentFk;
217 $V .=
"<option value='$parent $folderPk'>";
219 $V .=
"<option value='$folderPk'>";
222 for ($i = 0; $i < $folderDepth; $i++) {
223 $V .=
" ";
226 $Name =
trim($row[
'folder_name']);
230 $V .= htmlentities($Name, ENT_HTML5 | ENT_QUOTES);
253 $sql =
"SELECT folder_name,foldercontents.parent_fk FROM folder
254 LEFT JOIN foldercontents ON foldercontents_mode = ".FolderDao::MODE_FOLDER.
"
255 AND child_id = '$FolderPk'
256 WHERE folder_pk = '$FolderPk'
260 $row = pg_fetch_assoc($result);
261 $Parent = $row[
'parent_fk'];
262 $Name = $row[
'folder_name'];
263 if (! empty($Parent) && ($FolderPk != $Top)) {
284 if (empty($Uploadpk)) {
290 if ($Folder == $Stop) {
299 $sql =
"SELECT foldercontents.parent_fk,folder_name FROM foldercontents
300 INNER JOIN folder ON foldercontents.parent_fk = folder.folder_pk
301 AND foldercontents.foldercontents_mode = " . FolderDao::MODE_UPLOAD.
"
302 WHERE foldercontents.child_id = $Parm LIMIT 1;";
306 $sql =
"SELECT foldercontents.parent_fk,folder_name FROM foldercontents
307 INNER JOIN folder ON foldercontents.parent_fk = folder.folder_pk
308 AND foldercontents.foldercontents_mode = 1
309 WHERE foldercontents.child_id = $Parm LIMIT 1;";
313 $R = pg_fetch_assoc($result);
314 if (empty($R[
'parent_fk'])) {
315 pg_free_result($result);
319 $V[
'folder_pk'] = $R[
'parent_fk'];
320 $V[
'folder_name'] = $R[
'folder_name'];
321 if ($R[
'parent_fk'] != 0) {
328 pg_free_result($result);
352 if (empty($ParentFolder)) {
355 if ($ParentFolder ==
"-1") {
358 $groupId = Auth::getGroupId();
360 $uploadDao = $GLOBALS[
'container']->get(
'dao.upload');
365 $sql =
"SELECT upload_pk, upload_desc, upload_ts, upload_filename
366 FROM foldercontents,upload
367 INNER JOIN uploadtree ON upload_fk = upload_pk AND upload.pfile_fk = uploadtree.pfile_fk AND parent IS NULL AND lft IS NOT NULL
368 WHERE foldercontents.parent_fk = '$ParentFolder'
369 AND foldercontents.foldercontents_mode = ".FolderDao::MODE_UPLOAD.
"
370 AND foldercontents.child_id = upload.upload_pk
371 ORDER BY upload_filename,upload_pk;";
374 while ($R = pg_fetch_assoc($result)) {
375 if (empty($R[
'upload_pk'])) {
379 ! $uploadDao->isAccessible($R[
'upload_pk'], $groupId)) {
383 ! $uploadDao->isEditable($R[
'upload_pk'], $groupId)) {
388 $New[
'upload_pk'] = $R[
'upload_pk'];
389 $New[
'upload_desc'] = $R[
'upload_desc'];
391 $New[
'name'] = $R[
'upload_filename'];
394 pg_free_result($result);
419 if (empty($ParentFolder)) {
425 if ($ParentFolder ==
"-1") {
428 $groupId = Auth::getGroupId();
430 $uploadDao = $GLOBALS[
'container']->get(
'dao.upload');
435 $sql =
"SELECT upload_pk, upload_desc, ufile_name, folder_name FROM folder,foldercontents,uploadtree, upload
437 foldercontents.parent_fk = '$ParentFolder'
438 AND foldercontents.foldercontents_mode = ". FolderDao::MODE_UPLOAD .
"
439 AND foldercontents.child_id = upload.upload_pk
440 AND folder.folder_pk = $ParentFolder
441 AND uploadtree.upload_fk = upload.upload_pk
442 AND uploadtree.parent is null
443 ORDER BY uploadtree.ufile_name,upload.upload_desc";
446 while ($R = pg_fetch_assoc($result)) {
447 if (empty($R[
'upload_pk'])) {
451 ! $uploadDao->isAccessible($R[
'upload_pk'], $groupId)) {
455 ! $uploadDao->isEditable($R[
'upload_pk'], $groupId)) {
460 $New[
'upload_pk'] = $R[
'upload_pk'];
461 $New[
'upload_desc'] = $R[
'upload_desc'];
462 $New[
'name'] = $R[
'ufile_name'];
463 $New[
'folder'] = $FolderPath .
"/" . $R[
'folder_name'];
466 pg_free_result($result);
470 $sql =
"SELECT A.child_id AS id,B.folder_name AS folder,B.folder_name AS subfolder
471 FROM foldercontents AS A
472 INNER JOIN folder AS B ON A.parent_fk = B.folder_pk
473 AND A.foldercontents_mode = ". FolderDao::MODE_FOLDER .
"
474 AND A.parent_fk = '$ParentFolder'
475 AND B.folder_pk = $ParentFolder
476 ORDER BY B.folder_name;";
479 while ($R = pg_fetch_assoc($result)) {
480 if (empty($R[
'id'])) {
485 $List = array_merge($List,$SubList);
487 pg_free_result($result);
513 if ($RootFolder ==
"-1") {
516 if (empty($RootFolder)) {
521 $sql =
"SELECT folder_name, folder_pk FROM folder WHERE folder_pk=$RootFolder LIMIT 1;";
524 $row = pg_fetch_assoc($result);
525 pg_free_result($result);
527 $Name =
trim($row[
'folder_name']);
528 $FolderArray[$row[
'folder_pk']] = $row[
'folder_name'];
531 $sql =
"SELECT folder.folder_pk, folder.folder_name,
532 foldercontents.parent_fk
533 FROM folder, foldercontents
534 WHERE foldercontents.foldercontents_mode = ".FolderDao::MODE_FOLDER.
"
535 AND foldercontents.parent_fk =$RootFolder
536 AND foldercontents.child_id = folder.folder_pk
537 AND folder.folder_pk is not null
538 ORDER BY folder_name";
541 if (pg_num_rows($result) > 0) {
542 while ($row = pg_fetch_assoc($result)) {
546 pg_free_result($result);
559 $excluding_length = 0;
561 if ($ExcludingText) {
562 $excluding_length = strlen($ExcludingText);
566 if ($excluding_length > 0 && strstr($FilePath, $ExcludingText)) {
569 if (
'/' != $ExcludingText[0] &&
'/' == $ExcludingText[$excluding_length - 1] &&
570 ! strstr($FilePath,
'/'.$ExcludingText)) {
574 return $excluding_flag;
Contains the constants and helpers for authentication of user.
DBCheckResult($result, $sql, $filenm, $lineno)
Check the postgres result for unexpected errors. If found, treat them as fatal.
GetSingleRec($Table, $Where="")
Retrieve a single database record.
ContainExcludeString($FilePath, $ExcludingText)
Check if one file path contains an excluding text.
FolderGetName($FolderPk, $Top=-1)
Given a folder_pk, return the full path to this folder.
GetUserRootFolder()
Get the top-of-tree folder_pk for the current user. Fail if there is no user session.
FolderListOption($ParentFolder, $Depth, $IncludeTop=1, $SelectId=-1, $linkParent=false, $OldParent=0)
Create the folder tree, using OPTION tags.
GetFolderArray($RootFolder, &$FolderArray)
Get an array of all the folders from a $RootFolder on down.
FolderListUploadsRecurse($ParentFolder=-1, $FolderPath='', $perm=Auth::PERM_READ)
Get uploads and folder info, starting from $ParentFolder.
GetFolderFromItem($upload_pk="", $uploadtree_pk="")
Find what folder an item is in.
FolderGetTop()
DEPRECATED! Find the top-of-tree folder_pk for the current user.
FolderGetFromUpload($Uploadpk, $Folder=-1, $Stop=-1)
DEPRECATED! Given an upload number, return the folder path in an array containing folder_pk and name.
Folder2Path($folder_pk)
Return an array of folder_pk, folder_name from the users.root_folder_fk to $folder_pk.
FolderListUploads_perm($ParentFolder, $perm)
Returns an array of uploads in a folder.
Convert2BrowserTime($server_time)
Convert the server time to browser time.
char * trim(char *ptext)
Trimming whitespace.
#define PERM_WRITE
Read-Write permission.
#define PERM_READ
Read-only permission.
foreach($Options as $Option=> $OptVal) if(0==$reference_flag &&0==$nomos_flag) $PG_CONN