lib/private/Repair/OldGroupMembershipShares.php
/**
	 * Run repair step.
	 * Must throw exception on error.
	 *
	 * @throws \Exception in case of failure
	 */
Run repair step.
Must throw exception on error.

@throws \Exception in case of failure
Run repair step . Must throw exception on error . @throws \ Exception in case of failure
public function run(IOutput $output) {
		$deletedEntries = 0;
		$query = $this->connection->getQueryBuilder();
		$query->select('s1.id')->selectAlias('s1.share_with', 'user')->selectAlias('s2.share_with', 'group')
			->from('share', 's1')
			->where($query->expr()->isNotNull('s1.parent'))
				->andWhere($query->expr()->eq('s1.share_type', $query->expr()->literal(2)))
				->andWhere($query->expr()->isNotNull('s2.id'))
				->andWhere($query->expr()->eq('s2.share_type', $query->expr()->literal(Share::SHARE_TYPE_GROUP)))
			->leftJoin('s1', 'share', 's2', $query->expr()->eq('s1.parent', 's2.id'));
		$deleteQuery = $this->connection->getQueryBuilder();
		$deleteQuery->delete('share')
			->where($query->expr()->eq('id', $deleteQuery->createParameter('share')));
		$result = $query->execute();
		while ($row = $result->fetch()) {
			if (!$this->isMember($row['group'], $row['user'])) {
				$deletedEntries += $deleteQuery->setParameter('share', (int) $row['id'])
					->execute();
			}
		}
		$result->closeCursor();
		if ($deletedEntries) {
			$output->info('Removed ' . $deletedEntries . ' shares where user is not a member of the group anymore');
		}
	}
public function run ( IOutput $ output ) { $ deletedEntries = 0 ; $ query = $ this -> connection -> getQueryBuilder ( ) ; $ query -> select ( 's1.id' ) -> selectAlias ( 's1.share_with' , 'user' ) -> selectAlias ( 's2.share_with' , 'group' ) -> from ( 'share' , 's1' ) -> where ( $ query -> expr ( ) -> isNotNull ( 's1.parent' ) ) -> andWhere ( $ query -> expr ( ) -> eq ( 's1.share_type' , $ query -> expr ( ) -> literal ( 2 ) ) ) -> andWhere ( $ query -> expr ( ) -> isNotNull ( 's2.id' ) ) -> andWhere ( $ query -> expr ( ) -> eq ( 's2.share_type' , $ query -> expr ( ) -> literal ( Share :: SHARE_TYPE_GROUP ) ) ) -> leftJoin ( 's1' , 'share' , 's2' , $ query -> expr ( ) -> eq ( 's1.parent' , 's2.id' ) ) ; $ deleteQuery = $ this -> connection -> getQueryBuilder ( ) ; $ deleteQuery -> delete ( 'share' ) -> where ( $ query -> expr ( ) -> eq ( 'id' , $ deleteQuery -> createParameter ( 'share' ) ) ) ; $ result = $ query -> execute ( ) ; while ( $ row = $ result -> fetch ( ) ) { if ( ! $ this -> isMember ( $ row [ 'group' ] , $ row [ 'user' ] ) ) { $ deletedEntries += $ deleteQuery -> setParameter ( 'share' , ( int ) $ row [ 'id' ] ) -> execute ( ) ; } } $ result -> closeCursor ( ) ; if ( $ deletedEntries ) { $ output -> info ( 'Removed ' . $ deletedEntries . ' shares where user is not a member of the group anymore' ) ; } }
Run repair step.
Run repair step .
// \OC\Share\Constant::$shareTypeGroupUserUnique === 2