. * */ namespace OCA\Documents; class Storage { const MIMETYPE_LIBREOFFICE_WORDPROCESSOR = 'application/vnd.oasis.opendocument.text'; public static function getDocuments() { $list = array_filter( self::searchDocuments(), function($item){ //filter Deleted if (strpos($item['path'], '_trashbin')===0){ return false; } return true; } ); return $list; } public static function resolvePath($fileId){ $list = array_filter( self::searchDocuments(), function($item) use ($fileId){ return intval($item['fileid'])==$fileId; } ); if (count($list)>0){ $item = current($list); return $item['path']; } return false; } /** * @brief Cleanup session data on removing the document * @param array * * This function is connected to the delete signal of OC_Filesystem * to delete the related info from database */ public static function onDelete($params) { $info = \OC\Files\Filesystem::getFileInfo($params['path']); $fileId = @$info['fileid']; if (!$fileId){ return; } $sessionObj = new Db_Session(); $session = $sessionObj ->loadBy('file_id', $fileId) ->getData() ; if (!is_array($session) || !isset($session['es_id'])){ return; } $member = new Db_Member(); $sessionMembers = $member->getCollectionBy('es_id', $session['es_id']); foreach ($sessionMembers as $memberData){ if (intval($memberData['status'])===Db_Member::MEMBER_STATUS_ACTIVE){ return; } } Db_Session::cleanUp($session['es_id']); } protected static function searchDocuments(){ $documents = array(); foreach (self::getSupportedMimetypes() as $mime){ $documents = array_merge($documents, \OCP\Files::searchByMime($mime)); } return $documents; } protected static function getSupportedMimetypes(){ return array_merge( array(self::MIMETYPE_LIBREOFFICE_WORDPROCESSOR), Filter::getAll() ); } }