function check() { $this->browse_mode = KTUtil::arrayGet($_REQUEST, 'fBrowseMode', 'folder'); $action = KTUtil::arrayGet($_REQUEST, $this->event_var, 'main'); $this->editable = false; // catch the alternative actions. if ($action != 'main') { return true; } // if we're going to main ... // folder browse mode if ($this->browse_mode == 'folder') { $in_folder_id = KTUtil::arrayGet($_REQUEST, 'fFolderId'); if (empty($in_folder_id)) { $oConfig = KTConfig::getSingleton(); if ($oConfig->get('tweaks/browseToUnitFolder')) { $iHomeFolderId = $this->oUser->getHomeFolderId(); if ($iHomeFolderId) { $in_folder_id = $iHomeFolderId; } } } $folder_id = (int) $in_folder_id; // conveniently, will be 0 if not possible. if ($folder_id == 0) { $folder_id = 1; } $_REQUEST['fBrowseMode'] = 'folder'; // here we need the folder object to do the breadcrumbs. $oFolder =& Folder::get($folder_id); if (PEAR::isError($oFolder)) { return false; // just fail. } // check whether the user can edit this folder $oPerm = KTPermission::getByName('ktcore.permissions.write'); if (KTPermissionUtil::userHasPermissionOnItem($this->oUser, $oPerm, $oFolder)) { $this->editable = true; } else { $this->editable = false; } // set the title and breadcrumbs... $this->oPage->setTitle(_kt('Browse')); if (KTPermissionUtil::userHasPermissionOnItem($this->oUser, 'ktcore.permissions.folder_details', $oFolder)) { $this->oPage->setSecondaryTitle($oFolder->getName()); } else { if (KTBrowseUtil::inAdminMode($this->oUser, $oFolder)) { $this->oPage->setSecondaryTitle(sprintf('(%s)', $oFolder->getName())); } else { $this->oPage->setSecondaryTitle('...'); } } //Figure out if we came here by navigating trough a shortcut. //If we came here from a shortcut, the breadcrumbspath should be relative //to the shortcut folder. $iSymLinkFolderId = KTUtil::arrayGet($_REQUEST, 'fShortcutFolder', null); if (is_numeric($iSymLinkFolderId)) { $oBreadcrumbsFolder = Folder::get($iSymLinkFolderId); $this->aBreadcrumbs = kt_array_merge($this->aBreadcrumbs, KTBrowseUtil::breadcrumbsForFolder($oBreadcrumbsFolder, array('final' => false))); $this->aBreadcrumbs[] = array('name' => $oFolder->getName()); } else { $this->aBreadcrumbs = kt_array_merge($this->aBreadcrumbs, KTBrowseUtil::breadcrumbsForFolder($oFolder)); } $this->oFolder =& $oFolder; // we now have a folder, and need to create the query. $aOptions = array('ignorepermissions' => KTBrowseUtil::inAdminMode($this->oUser, $oFolder)); $this->oQuery = new BrowseQuery($oFolder->getId(), $this->oUser, $aOptions); $this->resultURL = KTUtil::addQueryString($_SERVER['PHP_SELF'], sprintf('fFolderId=%d', $oFolder->getId())); // and the portlets $portlet = new KTActionPortlet(sprintf(_kt('About this folder'))); $aActions = KTFolderActionUtil::getFolderInfoActionsForFolder($this->oFolder, $this->oUser); $portlet->setActions($aActions, $this->sName); $this->oPage->addPortlet($portlet); $portlet = new KTActionPortlet(sprintf(_kt('Actions on this folder'))); $aActions = KTFolderActionUtil::getFolderActionsForFolder($oFolder, $this->oUser); $portlet->setActions($aActions, null); $this->oPage->addPortlet($portlet); } else { if ($this->browse_mode == 'lookup_value') { // browsing by a lookup value $this->editable = false; // check the inputs $field = KTUtil::arrayGet($_REQUEST, 'fField', null); $oField = DocumentField::get($field); if (PEAR::isError($oField) || $oField == false) { $this->errorRedirectToMain('No Field selected.'); exit(0); } $value = KTUtil::arrayGet($_REQUEST, 'fValue', null); $oValue = MetaData::get($value); if (PEAR::isError($oValue) || $oValue == false) { $this->errorRedirectToMain('No Value selected.'); exit(0); } $this->oQuery = new ValueBrowseQuery($oField, $oValue); $this->resultURL = KTUtil::addQueryString($_SERVER['PHP_SELF'], sprintf('fBrowseMode=lookup_value&fField=%d&fValue=%d', $field, $value)); // setup breadcrumbs $this->aBreadcrumbs = array(array('name' => _kt('Lookup Values'), 'url' => KTUtil::addQueryString($_SERVER['PHP_SELF'], 'action=selectField')), array('name' => $oField->getName(), 'url' => KTUtil::addQueryString($_SERVER['PHP_SELF'], 'action=selectLookup&fField=' . $oField->getId())), array('name' => $oValue->getName(), 'url' => KTUtil::addQueryString($_SERVER['PHP_SELF'], sprintf('fBrowseMode=lookup_value&fField=%d&fValue=%d', $field, $value)))); } else { if ($this->browse_mode == 'document_type') { // browsing by document type $this->editable = false; $doctype = KTUtil::arrayGet($_REQUEST, 'fType', null); $oDocType = DocumentType::get($doctype); if (PEAR::isError($oDocType) || $oDocType == false) { $this->errorRedirectToMain('No Document Type selected.'); exit(0); } $this->oQuery = new TypeBrowseQuery($oDocType); // FIXME probably want to redirect to self + action=selectType $this->aBreadcrumbs[] = array('name' => _kt('Document Types'), 'url' => KTUtil::addQueryString($_SERVER['PHP_SELF'], 'action=selectType')); $this->aBreadcrumbs[] = array('name' => $oDocType->getName(), 'url' => KTUtil::addQueryString($_SERVER['PHP_SELF'], 'fBrowseMode=document_type&fType=' . $oDocType->getId())); $this->resultURL = KTUtil::addQueryString($_SERVER['PHP_SELF'], sprintf('fType=%s&fBrowseMode=document_type', $doctype)); } else { // FIXME what should we do if we can't initiate the browse? we "pretend" to have no perms. return false; } } } return true; }
function &getFolderInfoActionsForFolder($oFolder, $oUser) { $aObjects = array(); foreach (KTFolderActionUtil::getFolderInfoActions() as $aAction) { list($sClassName, $sPath, $sPlugin) = $aAction; $oRegistry =& KTPluginRegistry::getSingleton(); $oPlugin =& $oRegistry->getPlugin($sPlugin); if (!empty($sPath)) { require_once $sPath; } $aObjects[] = new $sClassName($oFolder, $oUser, $oPlugin); } return $aObjects; }