/**
  * Gets tags of a given record where user has the required right to
  * The tags are stored in the records $_tagsProperty.
  *
  * @param Tinebase_Record_Abstract  $_record        the record object
  * @param string                    $_tagsProperty  the property in the record where the tags are in (defaults: 'tags')
  * @param string                    $_right         the required right current user must have on the tags
  * @return Tinebase_Record_RecordSet tags of record
  */
 public function getTagsOfRecord($_record, $_tagsProperty = 'tags', $_right = Tinebase_Model_TagRight::VIEW_RIGHT)
 {
     $recordId = $_record->getId();
     $tags = new Tinebase_Record_RecordSet('Tinebase_Model_Tag');
     if (!empty($recordId)) {
         $select = $this->_getSelect($recordId, Tinebase_Application::getInstance()->getApplicationByName($_record->getApplication())->getId());
         Tinebase_Model_TagRight::applyAclSql($select, $_right, $this->_db->quoteIdentifier('tagging.tag_id'));
         Tinebase_Backend_Sql_Abstract::traitGroup($select);
         foreach ($this->_db->fetchAssoc($select) as $tagArray) {
             $tags->addRecord(new Tinebase_Model_Tag($tagArray, true));
         }
     }
     $_record[$_tagsProperty] = $tags;
     return $tags;
 }
 /**
  * get path for record attachments
  * 
  * @param Tinebase_Record_Abstract $record
  * @param boolean $createDirIfNotExists
  * @throws Tinebase_Exception_InvalidArgument
  * @return string
  */
 public function getRecordAttachmentPath(Tinebase_Record_Abstract $record, $createDirIfNotExists = FALSE)
 {
     if (!$record->getId()) {
         throw new Tinebase_Exception_InvalidArgument('record needs an identifier');
     }
     $parentPath = $this->_fsController->getApplicationBasePath($record->getApplication(), Tinebase_FileSystem::FOLDER_TYPE_RECORDS);
     $recordPath = $parentPath . '/' . get_class($record) . '/' . $record->getId();
     if ($createDirIfNotExists && !$this->_fsController->fileExists($recordPath)) {
         $this->_fsController->mkdir($recordPath);
     }
     return $recordPath;
 }