4 # FILE: FolderFactory.php
6 # Part of the Collection Workflow Information System (CWIS)
7 # Copyright 2012 Edward Almasy and Internet Scout
8 # http://scout.wisc.edu
17 # ---- PUBLIC INTERFACE --------------------------------------------------
27 # set up item factory base class
28 $this->
ItemFactory(
"Folder",
"Folders",
"FolderId",
"FolderName", NULL, TRUE);
31 if ($OwnerId !== NULL)
33 $this->OwnerId = intval($OwnerId);
45 function CreateFolder($ItemType, $FolderName = NULL, $OwnerId = NULL)
47 # retrieve numerical item type
49 ? $ItemType : Folder::GetItemTypeId($ItemType);
51 # use default owner if available and none specified
52 if (($OwnerId === NULL) & ($this->OwnerId !== NULL))
53 { $OwnerId = $this->OwnerId; }
55 # add new folder to database
56 $this->DB->Query(
"INSERT INTO Folders SET"
57 .
" ContentType = ".$ItemTypeId
58 .($FolderName ?
", FolderName = '".addslashes($FolderName).
"'" :
"")
59 .(($OwnerId !== NULL) ?
", OwnerId = ".intval($OwnerId) :
""));
61 # retrieve ID of new folder
62 $Id = $this->DB->LastInsertId(
"Folders");
64 # create new folder object and return it to caller
76 # create new mixed-content folder and return it to caller
87 ?
"OwnerId = ".intval($this->OwnerId) : NULL);
101 # use default owner if available and none specified
102 if (($OwnerId === NULL) & ($this->OwnerId !== NULL))
103 { $OwnerId = $this->OwnerId; }
105 # query database for folder ID
106 $FolderId = $this->DB->Query(
"SELECT FolderId FROM Folders"
107 .
" WHERE NormalizedName = '".addslashes($NormalizedName).
"'"
108 .(($OwnerId !== NULL) ?
" AND OwnerId = ".$this->OwnerId :
"")
109 .
" ORDER BY FolderId ASC",
112 # if folder found with specified name and owner
113 if ($FolderId !== FALSE)
115 # create folder object and return it to caller
116 return new Folder($FolderId);
120 # return NULL to caller to indicate folder not found
135 # assume we won't find any folders
139 $ItemId = is_object($Item) ? $Item->Id() : $Item;
141 # retrieve numerical item type
143 ? $ItemType : Folder::GetItemTypeId($ItemType);
145 # use default owner if available and none specified
146 if (($OwnerId === NULL) & ($this->OwnerId !== NULL))
147 { $OwnerId = $this->OwnerId; }
149 # query database for IDs of all folders that contain item
151 SELECT DISTINCT FolderItemInts.FolderId
154 ON FolderItemInts.FolderId = Folders.FolderId
155 WHERE FolderItemInts.ItemId = '".intval($ItemId).
"'
156 AND (FolderItemInts.ItemTypeId = '".intval($ItemTypeId).
"'
157 OR Folders.ContentType = '".intval($ItemTypeId).
"')
158 ".(($OwnerId !== NULL) ?
" AND Folders.OwnerId = ".intval($OwnerId) :
"").
"
159 ".(($SharedFoldersOnly) ?
" AND Folders.IsShared = 1" :
""));
160 $FolderIds = $this->DB->FetchColumn(
"FolderId");
162 # create array of folders from folder IDs
163 foreach ($FolderIds as $Id)
165 $Folders[$Id] =
new Folder($Id);
168 # return folders (if any) to caller
187 function GetFolders($ItemType = NULL, $OwnerId = NULL, $Name = NULL,
188 $Offset = 0, $Count = NULL)
190 # retrieve numerical item type
192 ? $ItemType : Folder::GetItemTypeId($ItemType);
194 # retrieve IDs of all folders that match specified parameters
195 $Condition = ($ItemTypeId !== NULL) ?
"ContentType = ".intval($ItemTypeId) : NULL;
196 if (($OwnerId !== NULL) || ($this->OwnerId !== NULL))
198 $Condition .= ($Condition ?
" AND " :
"").
"OwnerId = "
199 .intval(($OwnerId !== NULL) ? $OwnerId : $this->OwnerId);
203 $Condition .= ($Condition ?
" AND " :
"").
"FolderName = '"
204 .addslashes($Name).
"'";
208 # pare down list to requested range
209 if ($Offset || $Count)
211 $FolderIds = $Count ? array_slice($FolderIds, $Offset, $Count)
212 : array_slice($FolderIds, $Offset);
215 # create array of folders based on IDs
217 foreach ($FolderIds as $FolderId)
219 $Folders[$FolderId] =
new Folder($FolderId);
222 # return folders (if any) to caller
227 # ---- PRIVATE INTERFACE -------------------------------------------------