| 
									
										
										
										
											2013-06-30 20:53:42 +02:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							| 
									
										
										
										
											2013-08-28 12:02:27 +02:00
										 |  |  |  * ownCloud - Documents App | 
					
						
							| 
									
										
										
										
											2013-06-30 20:53:42 +02:00
										 |  |  |  * | 
					
						
							|  |  |  |  * @author Frank Karlitschek | 
					
						
							| 
									
										
										
										
											2014-04-09 19:04:33 +03:00
										 |  |  |  * @copyright 2013-2014 Frank Karlitschek frank@owncloud.org | 
					
						
							| 
									
										
										
										
											2013-06-30 20:53:42 +02:00
										 |  |  |  *  | 
					
						
							|  |  |  |  * This library is free software; you can redistribute it and/or | 
					
						
							|  |  |  |  * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE | 
					
						
							|  |  |  |  * License as published by the Free Software Foundation; either  | 
					
						
							|  |  |  |  * version 3 of the License, or any later version. | 
					
						
							|  |  |  |  *  | 
					
						
							|  |  |  |  * This library is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |  * GNU AFFERO GENERAL PUBLIC LICENSE for more details. | 
					
						
							|  |  |  |  *   | 
					
						
							|  |  |  |  * You should have received a copy of the GNU Lesser General Public  | 
					
						
							|  |  |  |  * License along with this library.  If not, see <http://www.gnu.org/licenses/>. | 
					
						
							|  |  |  |  *  | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-08-28 12:02:27 +02:00
										 |  |  | namespace OCA\Documents; | 
					
						
							| 
									
										
										
										
											2013-06-30 20:53:42 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | class Storage { | 
					
						
							| 
									
										
										
										
											2013-12-26 15:42:28 +00:00
										 |  |  | 	const MIMETYPE_LIBREOFFICE_WORDPROCESSOR = 'application/vnd.oasis.opendocument.text'; | 
					
						
							| 
									
										
										
										
											2013-06-30 20:53:42 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	public static function getDocuments() { | 
					
						
							| 
									
										
										
										
											2013-09-03 17:53:05 +03:00
										 |  |  | 		$list = array_filter( | 
					
						
							| 
									
										
										
										
											2013-12-26 18:14:11 +00:00
										 |  |  | 				self::searchDocuments(), | 
					
						
							| 
									
										
										
										
											2013-09-03 17:53:05 +03:00
										 |  |  | 				function($item){ | 
					
						
							|  |  |  | 					//filter Deleted
 | 
					
						
							|  |  |  | 					if (strpos($item['path'], '_trashbin')===0){ | 
					
						
							|  |  |  | 						return false; | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 					return true; | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 		); | 
					
						
							|  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2013-07-01 19:46:30 +03:00
										 |  |  | 		return $list; | 
					
						
							| 
									
										
										
										
											2013-06-30 20:53:42 +02:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2013-09-07 19:49:48 +03:00
										 |  |  | 	 | 
					
						
							| 
									
										
										
										
											2013-12-18 22:22:32 +03:00
										 |  |  | 	public static function resolvePath($fileId){ | 
					
						
							|  |  |  | 		$list = array_filter( | 
					
						
							| 
									
										
										
										
											2013-12-26 18:14:11 +00:00
										 |  |  | 				self::searchDocuments(), | 
					
						
							| 
									
										
										
										
											2013-12-18 22:22:32 +03:00
										 |  |  | 				function($item) use ($fileId){ | 
					
						
							|  |  |  | 					return intval($item['fileid'])==$fileId; | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 		); | 
					
						
							|  |  |  | 		if (count($list)>0){ | 
					
						
							|  |  |  | 			$item = current($list); | 
					
						
							|  |  |  | 			return $item['path']; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		return false; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	 | 
					
						
							| 
									
										
										
										
											2013-09-07 19:49:48 +03:00
										 |  |  | 	/** | 
					
						
							| 
									
										
										
										
											2013-09-07 21:26:22 +03:00
										 |  |  | 	 * @brief Cleanup session data on removing the document | 
					
						
							| 
									
										
										
										
											2013-09-07 19:49:48 +03:00
										 |  |  | 	 * @param array | 
					
						
							|  |  |  | 	 * | 
					
						
							|  |  |  | 	 * This function is connected to the delete signal of OC_Filesystem | 
					
						
							| 
									
										
										
										
											2013-09-07 21:26:22 +03:00
										 |  |  | 	 * to delete the related info from database | 
					
						
							| 
									
										
										
										
											2013-09-07 19:49:48 +03:00
										 |  |  | 	 */ | 
					
						
							|  |  |  | 	public static function onDelete($params) { | 
					
						
							| 
									
										
										
										
											2013-09-07 21:26:22 +03:00
										 |  |  | 		$info = \OC\Files\Filesystem::getFileInfo($params['path']); | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | 		$fileId = @$info['fileid']; | 
					
						
							|  |  |  | 		if (!$fileId){ | 
					
						
							|  |  |  | 			return; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2014-04-11 23:12:23 +03:00
										 |  |  | 		$session = new Db_Session(); | 
					
						
							|  |  |  | 		$session->loadBy('file_id', $fileId); | 
					
						
							| 
									
										
										
										
											2013-09-27 18:43:10 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-11 23:12:23 +03:00
										 |  |  | 		if (!$session->getEsId()){ | 
					
						
							| 
									
										
										
										
											2013-09-07 21:26:22 +03:00
										 |  |  | 			return; | 
					
						
							| 
									
										
										
										
											2013-09-07 19:49:48 +03:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2013-09-07 21:26:22 +03:00
										 |  |  | 		 | 
					
						
							| 
									
										
										
										
											2014-03-18 00:35:09 +03:00
										 |  |  | 		$member = new Db_Member(); | 
					
						
							| 
									
										
										
										
											2014-04-11 23:12:23 +03:00
										 |  |  | 		$sessionMembers = $member->getCollectionBy('es_id', $session->getEsId()); | 
					
						
							| 
									
										
										
										
											2014-03-18 00:35:09 +03:00
										 |  |  | 		foreach ($sessionMembers as $memberData){ | 
					
						
							|  |  |  | 			if (intval($memberData['status'])===Db_Member::MEMBER_STATUS_ACTIVE){ | 
					
						
							|  |  |  | 				return; | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2014-04-11 23:12:23 +03:00
										 |  |  | 		Db_Session::cleanUp($session->getEsId()); | 
					
						
							| 
									
										
										
										
											2013-09-07 19:49:48 +03:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2013-12-26 18:14:11 +00:00
										 |  |  | 	 | 
					
						
							|  |  |  | 	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()	 | 
					
						
							|  |  |  | 		); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2013-06-30 20:53:42 +02:00
										 |  |  | } |