2626
2727use  Doctrine \DBAL \Driver \Statement ;
2828use  OCP \AppFramework \Utility \ITimeFactory ;
29+ use  OCP \DB \QueryBuilder \IQueryBuilder ;
2930use  OCP \IConfig ;
3031use  OCP \IDBConnection ;
3132use  OCP \IGroupManager ;
@@ -98,27 +99,35 @@ private function deleteShare(int $id) {
9899	 * @return int 
99100	 */ 
100101	private  function  getTotal (): int  {
101- 		$ sql'SELECT COUNT(*) AS `total`  
102-  		FROM `*PREFIX*share` 
103- 		WHERE `id` IN ( 
104- 			SELECT `s1`.`id` 
105- 			FROM ( 
106- 				SELECT * 
107- 				FROM `*PREFIX*share` 
108- 				WHERE `parent` IS NOT NULL 
109- 				AND `share_type` = 3 
110- 			) AS s1 
111- 			JOIN `*PREFIX*share` AS s2 
112- 			ON `s1`.`parent` = `s2`.`id` 
113- 			WHERE (`s2`.`share_type` = 1 OR `s2`.`share_type` = 2) 
114- 			AND `s1`.`item_source` = `s2`.`item_source` 
115- 		) '
116- 		$ cursor$ this connection ->executeQuery ($ sql
117- 		$ data$ cursorfetchAll ();
118- 		$ totalint )$ data0 ]['total ' ];
119- 		$ cursorcloseCursor ();
120- 
121- 		return  $ total
102+ 		$ subSubQuery$ this connection ->getQueryBuilder ();
103+ 		$ subSubQueryselect ('* ' )
104+ 			->from ('share ' )
105+ 			->where ($ subSubQueryexpr ()->isNotNull ('parent ' ))
106+ 			->andWhere ($ subSubQueryexpr ()->eq ('share_type ' , $ subSubQueryexpr ()->literal (3 , IQueryBuilder::PARAM_INT )));
107+ 
108+ 		$ subQuery$ this connection ->getQueryBuilder ();
109+ 		$ subQueryselect ('s1.id ' )
110+ 			->from ($ subQuerycreateFunction ('( '  . $ subSubQuerygetSQL () . ') ' ), 's1 ' )
111+ 			->join (
112+ 				's1 ' , 'share ' , 's2 ' ,
113+ 				$ subQueryexpr ()->eq ('s1.parent ' , 's2.id ' )
114+ 			)
115+ 			->where ($ subQueryexpr ()->orX (
116+ 				$ subQueryexpr ()->eq ('s2.share_type ' , $ subQueryexpr ()->literal (1 , IQueryBuilder::PARAM_INT )),
117+ 				$ subQueryexpr ()->eq ('s2.share_type ' , $ subQueryexpr ()->literal (2 , IQueryBuilder::PARAM_INT ))
118+ 			))
119+ 			->andWhere ($ subQueryexpr ()->eq ('s1.item_source ' , 's2.item_source ' ));
120+ 
121+ 		$ query$ this connection ->getQueryBuilder ();
122+ 		$ queryselect ($ queryfunc ()->count ('* ' , 'total ' ))
123+ 			->from ('share ' )
124+ 			->where ($ queryexpr ()->in ('id ' , $ querycreateFunction ('( '  . $ subQuerygetSQL () . ') ' )));
125+ 
126+ 		$ result$ queryexecute ();
127+ 		$ data$ resultfetch ();
128+ 		$ resultcloseCursor ();
129+ 
130+ 		return  (int ) $ data'total ' ];
122131	}
123132
124133	/** 
@@ -127,19 +136,25 @@ private function getTotal(): int {
127136	 * @return \Doctrine\DBAL\Driver\Statement 
128137	 */ 
129138	private  function  getShares (): Statement 
130- 		$ sql'SELECT `s1`.`id`, `s1`.`uid_owner`, `s1`.`uid_initiator`  
131- 			FROM ( 
132- 				SELECT * 
133- 				FROM `*PREFIX*share` 
134- 				WHERE `parent` IS NOT NULL 
135- 				AND `share_type` = 3 
136- 			) AS s1 
137- 			JOIN `*PREFIX*share` AS s2 
138- 			ON `s1`.`parent` = `s2`.`id` 
139- 			WHERE (`s2`.`share_type` = 1 OR `s2`.`share_type` = 2) 
140- 			AND `s1`.`item_source` = `s2`.`item_source` '
141- 		$ cursor$ this connection ->executeQuery ($ sql
142- 		return  $ cursor
139+ 		$ subQuery$ this connection ->getQueryBuilder ();
140+ 		$ subQueryselect ('* ' )
141+ 			->from ('share ' )
142+ 			->where ($ subQueryexpr ()->isNotNull ('parent ' ))
143+ 			->andWhere ($ subQueryexpr ()->eq ('share_type ' , $ subQueryexpr ()->literal (3 , IQueryBuilder::PARAM_INT )));
144+ 
145+ 		$ query$ this connection ->getQueryBuilder ();
146+ 		$ queryselect ('s1.id ' , 's1.uid_owner ' , 's1.uid_initiator ' )
147+ 			->from ($ querycreateFunction ('( '  . $ subQuerygetSQL () . ') ' ), 's1 ' )
148+ 			->join (
149+ 				's1 ' , 'share ' , 's2 ' ,
150+ 				$ queryexpr ()->eq ('s1.parent ' , 's2.id ' )
151+ 			)
152+ 			->where ($ queryexpr ()->orX (
153+ 				$ queryexpr ()->eq ('s2.share_type ' , $ queryexpr ()->literal (1 , IQueryBuilder::PARAM_INT )),
154+ 				$ queryexpr ()->eq ('s2.share_type ' , $ queryexpr ()->literal (2 , IQueryBuilder::PARAM_INT ))
155+ 			))
156+ 			->andWhere ($ queryexpr ()->eq ('s1.item_source ' , 's2.item_source ' ));
157+ 		return  $ queryexecute ();
143158	}
144159
145160	/** 
0 commit comments