function synchroniseGroupToSource($oGroup)
 {
     $oGroup =& KTUtil::getObject('Group', $oGroup);
     $iSourceId = $oGroup->getAuthenticationSourceId();
     $oAuthenticator = KTAuthenticationUtil::getAuthenticatorForSource($iSourceId);
     return $oAuthenticator->synchroniseGroup($oGroup);
 }
 function fieldsetsForDocument($oDocument, $iTypeOverride = null)
 {
     global $default;
     $oDocument = KTUtil::getObject('Document', $oDocument);
     $iMetadataVersionId = $oDocument->getMetadataVersionId();
     $iDocumentTypeId = $oDocument->getDocumentTypeId();
     if (!is_null($iTypeOverride)) {
         $iDocumentTypeId = $iTypeOverride;
     }
     $sQuery = "SELECT DISTINCT F.id AS fieldset_id " . "FROM {$default->document_metadata_version_table} AS DM INNER JOIN document_fields_link AS DFL ON DM.id = DFL.metadata_version_id " . "INNER JOIN {$default->document_fields_table} AS DF ON DF.ID = DFL.document_field_id " . "INNER JOIN {$default->fieldsets_table} AS F ON F.id = DF.parent_fieldset " . "WHERE DM.id = ?" . "AND F.disabled = false";
     $aParam = array($iMetadataVersionId);
     $aDocumentFieldsetIds = DBUtil::getResultArrayKey(array($sQuery, $aParam), 'fieldset_id');
     $aGenericFieldsetIds = KTFieldset::getGenericFieldsets(array('ids' => true));
     $aSpecificFieldsetIds = KTFieldset::getForDocumentType($iDocumentTypeId, array('ids' => true));
     $aFieldsetIds = kt_array_merge($aDocumentFieldsetIds, $aGenericFieldsetIds, $aSpecificFieldsetIds);
     $aFieldsetIds = array_unique($aFieldsetIds);
     sort($aFieldsetIds);
     $aRet = array();
     foreach ($aFieldsetIds as $iID) {
         $aRet[] = call_user_func(array('KTFieldset', 'get'), $iID);
     }
     return $aRet;
 }
Esempio n. 3
0
 function testConditionOnFolder($oSearch, $oFolder)
 {
     $oSearch =& KTUtil::getObject('KTSavedSearch', $oSearch);
     $iFolderId = KTUtil::getId($oFolder);
     /*
      * Make a new criteria set, an AND of the existing criteria set
      * and the sql statement requiring that D.id be the document id
      * given to us.
      */
     $aCriteriaSet = array("join" => "AND", "subgroup" => array($oSearch->getSearch(), array("join" => "AND", "values" => array(array("sql" => array("F.id = ?", array($iFolderId)))))));
     $aOptions = array('select' => 'COUNT(DISTINCT(F.id)) AS cnt');
     $aQuery = KTSearchUtil::criteriaToFolderQuery($aCriteriaSet, null, null, $aOptions);
     if (PEAR::isError($aQuery)) {
         // caused by no permissions being set.
         return false;
     }
     $cnt = DBUtil::getOneResultKey($aQuery, 'cnt');
     if (PEAR::isError($cnt)) {
         return $cnt;
     }
     if (is_null($cnt)) {
         return false;
     }
     if (!is_numeric($cnt)) {
         return PEAR::raiseError(_kt("Non-integer returned when looking for count"));
     }
     return $cnt > 0;
 }
 function getAllowedForDescriptor($oDescriptor)
 {
     $oDescriptor =& KTUtil::getObject('KTPermissionDescriptor', $oDescriptor);
     return $oDescriptor->getAllowed();
 }
 function synchroniseGroup($oGroup)
 {
     $oGroup =& KTUtil::getObject('Group', $oGroup);
     $dn = $oGroup->getAuthenticationDetails();
     $aAttr = $this->getGroup($dn, array('member'));
     if (PEAR::isError($aAttr)) {
         return $aAttr;
     }
     $aMembers = KTUtil::arrayGet($aAttr, 'member', array());
     if (!is_array($aMembers)) {
         $aMembers = array($aMembers);
     }
     $aUserIds = array();
     foreach ($aMembers as $sMember) {
         $iUserId = User::getByAuthenticationSourceAndDetails($this->oSource, $sMember, array('ids' => true));
         if (PEAR::isError($iUserId)) {
             continue;
         }
         $aUserIds[] = $iUserId;
     }
     $oGroup->setMembers($aUserIds);
 }
Esempio n. 6
0
 function &getByField($oField)
 {
     $oField =& KTUtil::getObject('DocumentField', $oField);
     $iFieldsetId = $oField->getParentFieldsetId();
     return KTFieldset::get($iFieldsetId);
 }
 /**
  * Gets the workflow state that applies to the given document,
  * returning null if there is no workflow assigned.
  */
 function getWorkflowStateForDocument($oDocument, $aOptions = null)
 {
     $ids = KTUtil::arrayGet($aOptions, 'ids', false);
     if (is_a($oDocument, 'KTDocumentCore')) {
         $oDocument = $oDocument->getId();
     }
     $oDocument = KTUtil::getObject('Document', $oDocument);
     $iWorkflowStateId = $oDocument->getWorkflowStateId();
     if (PEAR::isError($iWorkflowStateId)) {
         return $iWorkflowStateId;
     }
     if (is_null($iWorkflowStateId)) {
         return $iWorkflowStateId;
     }
     if ($ids) {
         return $iWorkflowStateId;
     }
     return KTWorkflowState::get($iWorkflowStateId);
 }
Esempio n. 8
0
 function breadcrumbsForFolder($oFolder, $aOptions = null)
 {
     $oFolder =& KTUtil::getObject('Folder', $oFolder);
     $sAction = KTUtil::arrayGet($aOptions, 'folderaction');
     if (PEAR::isError($oFolder)) {
         $url = KTUtil::addQueryStringSelf('fFolderId=1');
         if (!empty($sAction)) {
             $url = generateControllerUrl($sAction, 'fFolderId=1');
         }
         return array(array('url' => $url, 'name' => '…'));
     }
     $bFinal = KTUtil::arrayGet($aOptions, 'final', true, false);
     $bFolderBrowseBase = KTUtil::arrayGet($aOptions, 'folderbase', '');
     $aBreadcrumbs = array();
     // skip root.
     //$folder_path_names = $oFolder->getPathArray();
     $folder_path_ids = array_slice(explode(',', $oFolder->getParentFolderIds()), 1);
     $parents = count($folder_path_ids);
     // we have made the "default" folder non-root, so we need to be able
     // to reach "Root" (Folder::get(1)).
     $url = KTUtil::addQueryStringSelf('fFolderId=1');
     if (!empty($sAction)) {
         $url = generateControllerUrl($sAction, 'fFolderId=1');
     }
     $aBreadcrumbs[] = array('url' => $url, 'name' => _kt('Folders'));
     $oUser = User::get($_SESSION['userID']);
     if ($parents != 0) {
         foreach (range(0, $parents - 1) as $index) {
             $id = $folder_path_ids[$index];
             $oThisFolder = Folder::get($id);
             $sFolderName = $oThisFolder->getName();
             $url = KTUtil::addQueryStringSelf('fFolderId=' . $id);
             if (!empty($sAction)) {
                 $url = generateControllerUrl($sAction, 'fFolderId=' . $id);
             }
             if (!KTPermissionUtil::userHasPermissionOnItem($oUser, 'ktcore.permissions.folder_details', $oThisFolder)) {
                 if (KTBrowseUtil::inAdminMode($oUser, $oThisFolder)) {
                     $aBreadcrumbs[] = array('url' => $url, 'name' => sprintf('(%s)', $sFolderName));
                 } else {
                     $aBreadcrumbs[] = array('name' => '...');
                 }
                 continue;
             }
             $aBreadcrumbs[] = array('url' => $url, 'name' => $sFolderName);
         }
     }
     // now add this folder, _if we aren't in 1_.
     if ($oFolder->getId() != 1) {
         $id = $oFolder->getId();
         $url = KTUtil::addQueryStringSelf('fFolderId=' . $id);
         if (!empty($sAction)) {
             $url = generateControllerUrl($sAction, 'fFolderId=' . $id);
         }
         if (!KTPermissionUtil::userHasPermissionOnItem($oUser, 'ktcore.permissions.folder_details', $oFolder)) {
             if (KTBrowseUtil::inAdminMode($oUser, $oFolder)) {
                 $aBreadcrumbs[] = array('url' => $url, 'name' => sprintf('(%s)', $oFolder->getName()));
             } else {
                 $aBreadcrumbs[] = array('name' => '...');
             }
         } else {
             if ($bFinal) {
                 $aBreadcrumbs[] = array('name' => $oFolder->getName());
             } else {
                 $aBreadcrumbs[] = array('url' => $url, 'name' => $oFolder->getName());
             }
         }
     }
     $aCompactBreadcrumbs = array();
     $lastdotdotdot = false;
     foreach ($aBreadcrumbs as $aBreadcrumb) {
         if ($aBreadcrumb['name'] == '...') {
             if ($lastdotdotdot == true) {
                 continue;
             }
             $lastdotdotdot = true;
         } else {
             $lastdotdotdot = false;
         }
         $aCompactBreadcrumbs[] = $aBreadcrumb;
     }
     return $aCompactBreadcrumbs;
 }
 function &getForUser($oUser)
 {
     $oUser =& KTUtil::getObject('User', $oUser);
     $iAuthenticationSourceId = $oUser->getAuthenticationSourceId();
     if (empty($iAuthenticationSourceId)) {
         return null;
     }
     return KTAuthenticationSource::get($iAuthenticationSourceId);
 }
Esempio n. 10
0
 function &getByDocument($oDocument)
 {
     $oDocument =& KTUtil::getObject('Document', $oDocument);
     $iStateId = $oDocument->getWorkflowStateId();
     if (PEAR::isError($iStateId)) {
         return $iStateId;
     }
     if (is_null($iStateId)) {
         return $iStateId;
     }
     return KTWorkflowState::get($iStateId);
 }
Esempio n. 11
0
 /**
  * Delete a selected version of the document.
  */
 function deleteVersion($oDocument, $iVersionID, $sReason)
 {
     $oDocument =& KTUtil::getObject('Document', $oDocument);
     $oVersion =& KTDocumentMetadataVersion::get($iVersionID);
     $oStorageManager =& KTStorageManagerUtil::getSingleton();
     global $default;
     if (empty($sReason)) {
         return PEAR::raiseError(_kt('Deletion requires a reason'));
     }
     if (PEAR::isError($oDocument) || $oDocument == false) {
         return PEAR::raiseError(_kt('Invalid document object.'));
     }
     if (PEAR::isError($oVersion) || $oVersion == false) {
         return PEAR::raiseError(_kt('Invalid document version object.'));
     }
     $iContentId = $oVersion->getContentVersionId();
     $oContentVersion = KTDocumentContentVersion::get($iContentId);
     if (PEAR::isError($oContentVersion) || $oContentVersion == false) {
         return PEAR::raiseError(_kt('Invalid document content version object.'));
     }
     // Check that the document content is not the same as the current content version
     $sDocStoragePath = $oDocument->getStoragePath();
     $sVersionStoragePath = $oContentVersion->getStoragePath();
     if ($sDocStoragePath == $sVersionStoragePath) {
         return PEAR::raiseError(_kt("Can't delete version: content is the same as the current document content."));
     }
     DBUtil::startTransaction();
     // now delete the document version
     $res = $oStorageManager->deleteVersion($oVersion);
     if (PEAR::isError($res) || $res == false) {
         //could not delete the document version from the file system
         $default->log->error('Deletion: Filesystem error deleting the metadata version ' . $oVersion->getMetadataVersion() . ' of the document ' . $oDocument->getFileName() . ' from folder ' . Folder::getFolderPath($oDocument->getFolderID()) . ' id=' . $oDocument->getFolderID());
         // we use a _real_ transaction here ...
         DBUtil::rollback();
         return PEAR::raiseError(_kt('There was a problem deleting the document from storage.'));
     }
     // change status for the metadata version
     $oVersion->setStatusId(VERSION_DELETED);
     $oVersion->update();
     // set the storage path to empty
     //        $oContentVersion->setStoragePath('');
     DBUtil::commit();
 }