45
45
use OCP \Share \IManager as IShareManager ;
46
46
use OCP \Share \IShare ;
47
47
use OCP \Share \IShareProvider ;
48
+ use Symfony \Component \EventDispatcher \EventDispatcherInterface ;
49
+ use Symfony \Component \EventDispatcher \GenericEvent ;
48
50
49
51
/**
50
52
* Share provider for room shares.
@@ -76,6 +78,9 @@ class RoomShareProvider implements IShareProvider {
76
78
/** @var IRootFolder */
77
79
private $ rootFolder ;
78
80
81
+ /** @var EventDispatcherInterface */
82
+ private $ dispatcher ;
83
+
79
84
/** @var IL10N */
80
85
private $ l ;
81
86
@@ -90,6 +95,7 @@ class RoomShareProvider implements IShareProvider {
90
95
* @param IUserManager $userManager
91
96
* @param IShareManager $shareManager
92
97
* @param IRootFolder $rootFolder
98
+ * @param EventDispatcherInterface $dispatcher
93
99
* @param IL10N $l10n
94
100
* @param Manager $manager
95
101
*/
@@ -99,6 +105,7 @@ public function __construct(
99
105
IUserManager $ userManager ,
100
106
IShareManager $ shareManager ,
101
107
IRootFolder $ rootFolder ,
108
+ EventDispatcherInterface $ dispatcher ,
102
109
IL10N $ l ,
103
110
Manager $ manager
104
111
) {
@@ -107,6 +114,7 @@ public function __construct(
107
114
$ this ->userManager = $ userManager ;
108
115
$ this ->shareManager = $ shareManager ;
109
116
$ this ->rootFolder = $ rootFolder ;
117
+ $ this ->dispatcher = $ dispatcher ;
110
118
$ this ->l = $ l ;
111
119
$ this ->manager = $ manager ;
112
120
}
@@ -145,6 +153,7 @@ public function create(IShare $share) {
145
153
$ existingShares = $ this ->getSharesByPath ($ share ->getNode ());
146
154
foreach ($ existingShares as $ existingShare ) {
147
155
if ($ existingShare ->getSharedWith () === $ share ->getSharedWith ()) {
156
+ $ this ->dispatcher ->dispatch (self ::class . ':: ' . 'share_file_again ' , new GenericEvent ($ existingShare ));
148
157
throw new GenericShareException ("Already shared " , $ this ->l ->t ('Path is already shared with this room ' ), 403 );
149
158
}
150
159
}
0 commit comments