Completed
Pull Request — master (#3829)
by Maxence
12:57
created
apps/files_sharing/lib/Activity/Providers/Groups.php 1 patch
Indentation   +78 added lines, -78 removed lines patch added patch discarded remove patch
@@ -25,92 +25,92 @@
 block discarded – undo
25 25
 
26 26
 class Groups extends Base {
27 27
 
28
-	const SUBJECT_SHARED_GROUP_SELF = 'shared_group_self';
29
-	const SUBJECT_RESHARED_GROUP_BY = 'reshared_group_by';
30
-	const SUBJECT_UNSHARED_GROUP_SELF = 'unshared_group_self';
31
-	const SUBJECT_UNSHARED_GROUP_BY = 'unshared_group_by';
28
+    const SUBJECT_SHARED_GROUP_SELF = 'shared_group_self';
29
+    const SUBJECT_RESHARED_GROUP_BY = 'reshared_group_by';
30
+    const SUBJECT_UNSHARED_GROUP_SELF = 'unshared_group_self';
31
+    const SUBJECT_UNSHARED_GROUP_BY = 'unshared_group_by';
32 32
 
33
-	/**
34
-	 * @param IEvent $event
35
-	 * @return IEvent
36
-	 * @throws \InvalidArgumentException
37
-	 * @since 11.0.0
38
-	 */
39
-	public function parseShortVersion(IEvent $event) {
40
-		$parsedParameters = $this->getParsedParameters($event);
33
+    /**
34
+     * @param IEvent $event
35
+     * @return IEvent
36
+     * @throws \InvalidArgumentException
37
+     * @since 11.0.0
38
+     */
39
+    public function parseShortVersion(IEvent $event) {
40
+        $parsedParameters = $this->getParsedParameters($event);
41 41
 
42
-		if ($event->getSubject() === self::SUBJECT_SHARED_GROUP_SELF) {
43
-			$subject = $this->l->t('Shared with group {group}');
44
-		} else if ($event->getSubject() === self::SUBJECT_UNSHARED_GROUP_SELF) {
45
-			$subject = $this->l->t('Removed share for group {group}');
46
-		} else if ($event->getSubject() === self::SUBJECT_RESHARED_GROUP_BY) {
47
-			$subject = $this->l->t('{actor} shared with group {group}');
48
-		} else if ($event->getSubject() === self::SUBJECT_UNSHARED_GROUP_BY) {
49
-			$subject = $this->l->t('{actor} removed share for group {group}');
50
-		} else {
51
-			throw new \InvalidArgumentException();
52
-		}
42
+        if ($event->getSubject() === self::SUBJECT_SHARED_GROUP_SELF) {
43
+            $subject = $this->l->t('Shared with group {group}');
44
+        } else if ($event->getSubject() === self::SUBJECT_UNSHARED_GROUP_SELF) {
45
+            $subject = $this->l->t('Removed share for group {group}');
46
+        } else if ($event->getSubject() === self::SUBJECT_RESHARED_GROUP_BY) {
47
+            $subject = $this->l->t('{actor} shared with group {group}');
48
+        } else if ($event->getSubject() === self::SUBJECT_UNSHARED_GROUP_BY) {
49
+            $subject = $this->l->t('{actor} removed share for group {group}');
50
+        } else {
51
+            throw new \InvalidArgumentException();
52
+        }
53 53
 
54
-		$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg')));
55
-		$this->setSubjects($event, $subject, $parsedParameters);
54
+        $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg')));
55
+        $this->setSubjects($event, $subject, $parsedParameters);
56 56
 
57
-		return $event;
58
-	}
57
+        return $event;
58
+    }
59 59
 
60
-	/**
61
-	 * @param IEvent $event
62
-	 * @return IEvent
63
-	 * @throws \InvalidArgumentException
64
-	 * @since 11.0.0
65
-	 */
66
-	public function parseLongVersion(IEvent $event) {
67
-		$parsedParameters = $this->getParsedParameters($event);
60
+    /**
61
+     * @param IEvent $event
62
+     * @return IEvent
63
+     * @throws \InvalidArgumentException
64
+     * @since 11.0.0
65
+     */
66
+    public function parseLongVersion(IEvent $event) {
67
+        $parsedParameters = $this->getParsedParameters($event);
68 68
 
69
-		if ($event->getSubject() === self::SUBJECT_SHARED_GROUP_SELF) {
70
-			$subject = $this->l->t('You shared {file} with group {group}');
71
-		} else if ($event->getSubject() === self::SUBJECT_UNSHARED_GROUP_SELF) {
72
-			$subject = $this->l->t('You removed group {group} from {file}');
73
-		} else if ($event->getSubject() === self::SUBJECT_RESHARED_GROUP_BY) {
74
-			$subject = $this->l->t('{actor} shared {file} with group {group}');
75
-		} else if ($event->getSubject() === self::SUBJECT_UNSHARED_GROUP_BY) {
76
-			$subject = $this->l->t('{actor} removed group {group} from {file}');
77
-		} else {
78
-			throw new \InvalidArgumentException();
79
-		}
69
+        if ($event->getSubject() === self::SUBJECT_SHARED_GROUP_SELF) {
70
+            $subject = $this->l->t('You shared {file} with group {group}');
71
+        } else if ($event->getSubject() === self::SUBJECT_UNSHARED_GROUP_SELF) {
72
+            $subject = $this->l->t('You removed group {group} from {file}');
73
+        } else if ($event->getSubject() === self::SUBJECT_RESHARED_GROUP_BY) {
74
+            $subject = $this->l->t('{actor} shared {file} with group {group}');
75
+        } else if ($event->getSubject() === self::SUBJECT_UNSHARED_GROUP_BY) {
76
+            $subject = $this->l->t('{actor} removed group {group} from {file}');
77
+        } else {
78
+            throw new \InvalidArgumentException();
79
+        }
80 80
 
81
-		$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg')));
82
-		$this->setSubjects($event, $subject, $parsedParameters);
81
+        $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg')));
82
+        $this->setSubjects($event, $subject, $parsedParameters);
83 83
 
84
-		return $event;
85
-	}
84
+        return $event;
85
+    }
86 86
 
87
-	protected function getParsedParameters(IEvent $event) {
88
-		$subject = $event->getSubject();
89
-		$parameters = $event->getSubjectParameters();
87
+    protected function getParsedParameters(IEvent $event) {
88
+        $subject = $event->getSubject();
89
+        $parameters = $event->getSubjectParameters();
90 90
 
91
-		switch ($subject) {
92
-			case self::SUBJECT_RESHARED_GROUP_BY:
93
-			case self::SUBJECT_UNSHARED_GROUP_BY:
94
-				return [
95
-					'file' => $this->getFile($parameters[0], $event),
96
-					'group' => [
97
-						'type' => 'group',
98
-						'id' => $parameters[2],
99
-						'name' => $parameters[2],
100
-					],
101
-					'actor' => $this->getUser($parameters[1]),
102
-				];
103
-			case self::SUBJECT_SHARED_GROUP_SELF:
104
-			case self::SUBJECT_UNSHARED_GROUP_SELF:
105
-				return [
106
-					'file' => $this->getFile($parameters[0], $event),
107
-					'group' => [
108
-						'type' => 'group',
109
-						'id' => $parameters[1],
110
-						'name' => $parameters[1],
111
-					],
112
-				];
113
-		}
114
-		return [];
115
-	}
91
+        switch ($subject) {
92
+            case self::SUBJECT_RESHARED_GROUP_BY:
93
+            case self::SUBJECT_UNSHARED_GROUP_BY:
94
+                return [
95
+                    'file' => $this->getFile($parameters[0], $event),
96
+                    'group' => [
97
+                        'type' => 'group',
98
+                        'id' => $parameters[2],
99
+                        'name' => $parameters[2],
100
+                    ],
101
+                    'actor' => $this->getUser($parameters[1]),
102
+                ];
103
+            case self::SUBJECT_SHARED_GROUP_SELF:
104
+            case self::SUBJECT_UNSHARED_GROUP_SELF:
105
+                return [
106
+                    'file' => $this->getFile($parameters[0], $event),
107
+                    'group' => [
108
+                        'type' => 'group',
109
+                        'id' => $parameters[1],
110
+                        'name' => $parameters[1],
111
+                    ],
112
+                ];
113
+        }
114
+        return [];
115
+    }
116 116
 }
Please login to merge, or discard this patch.
apps/files_sharing/lib/Activity/Providers/Users.php 1 patch
Indentation   +99 added lines, -99 removed lines patch added patch discarded remove patch
@@ -26,103 +26,103 @@
 block discarded – undo
26 26
 class Users extends Base {
27 27
 
28 28
 
29
-	const SUBJECT_SHARED_USER_SELF = 'shared_user_self';
30
-	const SUBJECT_RESHARED_USER_BY = 'reshared_user_by';
31
-	const SUBJECT_UNSHARED_USER_SELF = 'unshared_user_self';
32
-	const SUBJECT_UNSHARED_USER_BY = 'unshared_user_by';
33
-
34
-	const SUBJECT_SHARED_WITH_BY = 'shared_with_by';
35
-	const SUBJECT_UNSHARED_BY = 'unshared_by';
36
-
37
-	/**
38
-	 * @param IEvent $event
39
-	 * @return IEvent
40
-	 * @throws \InvalidArgumentException
41
-	 * @since 11.0.0
42
-	 */
43
-	public function parseShortVersion(IEvent $event) {
44
-		$parsedParameters = $this->getParsedParameters($event);
45
-
46
-		if ($event->getSubject() === self::SUBJECT_SHARED_USER_SELF) {
47
-			$subject = $this->l->t('Shared with {user}');
48
-		} else if ($event->getSubject() === self::SUBJECT_UNSHARED_USER_SELF) {
49
-			$subject = $this->l->t('Removed share for {user}');
50
-		} else if ($event->getSubject() === self::SUBJECT_RESHARED_USER_BY) {
51
-			$subject = $this->l->t('{actor} shared with {user}');
52
-		} else if ($event->getSubject() === self::SUBJECT_UNSHARED_USER_BY) {
53
-			$subject = $this->l->t('{actor} removed share for {user}');
54
-		} else if ($event->getSubject() === self::SUBJECT_SHARED_WITH_BY) {
55
-			$subject = $this->l->t('Shared by {actor}');
56
-		} else if ($event->getSubject() === self::SUBJECT_UNSHARED_BY) {
57
-			$subject = $this->l->t('{actor} removed share');
58
-
59
-		} else {
60
-			throw new \InvalidArgumentException();
61
-		}
62
-
63
-		$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg')));
64
-		$this->setSubjects($event, $subject, $parsedParameters);
65
-
66
-		return $event;
67
-	}
68
-
69
-	/**
70
-	 * @param IEvent $event
71
-	 * @return IEvent
72
-	 * @throws \InvalidArgumentException
73
-	 * @since 11.0.0
74
-	 */
75
-	public function parseLongVersion(IEvent $event) {
76
-		$parsedParameters = $this->getParsedParameters($event);
77
-
78
-		if ($event->getSubject() === self::SUBJECT_SHARED_USER_SELF) {
79
-			$subject = $this->l->t('You shared {file} with {user}');
80
-		} else if ($event->getSubject() === self::SUBJECT_UNSHARED_USER_SELF) {
81
-			$subject = $this->l->t('You removed {user} from {file}');
82
-		} else if ($event->getSubject() === self::SUBJECT_RESHARED_USER_BY) {
83
-			$subject = $this->l->t('{actor} removed {user} from {file}');
84
-		} else if ($event->getSubject() === self::SUBJECT_UNSHARED_USER_BY) {
85
-			$subject = $this->l->t('{actor} removed {user} from {file}');
86
-		} else if ($event->getSubject() === self::SUBJECT_SHARED_WITH_BY) {
87
-			$subject = $this->l->t('{actor} shared {file} with you');
88
-		} else if ($event->getSubject() === self::SUBJECT_UNSHARED_BY) {
89
-			$subject = $this->l->t('{actor} removed you from {file}');
90
-
91
-		} else {
92
-			throw new \InvalidArgumentException();
93
-		}
94
-
95
-		$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg')));
96
-		$this->setSubjects($event, $subject, $parsedParameters);
97
-
98
-		return $event;
99
-	}
100
-
101
-	protected function getParsedParameters(IEvent $event) {
102
-		$subject = $event->getSubject();
103
-		$parameters = $event->getSubjectParameters();
104
-
105
-		switch ($subject) {
106
-			case self::SUBJECT_SHARED_USER_SELF:
107
-			case self::SUBJECT_UNSHARED_USER_SELF:
108
-				return [
109
-					'file' => $this->getFile($parameters[0], $event),
110
-					'user' => $this->getUser($parameters[1]),
111
-				];
112
-			case self::SUBJECT_SHARED_WITH_BY:
113
-			case self::SUBJECT_UNSHARED_BY:
114
-				return [
115
-					'file' => $this->getFile($parameters[0], $event),
116
-					'actor' => $this->getUser($parameters[1]),
117
-				];
118
-			case self::SUBJECT_RESHARED_USER_BY:
119
-			case self::SUBJECT_UNSHARED_USER_BY:
120
-				return [
121
-					'file' => $this->getFile($parameters[0], $event),
122
-					'user' => $this->getUser($parameters[2]),
123
-					'actor' => $this->getUser($parameters[1]),
124
-				];
125
-		}
126
-		return [];
127
-	}
29
+    const SUBJECT_SHARED_USER_SELF = 'shared_user_self';
30
+    const SUBJECT_RESHARED_USER_BY = 'reshared_user_by';
31
+    const SUBJECT_UNSHARED_USER_SELF = 'unshared_user_self';
32
+    const SUBJECT_UNSHARED_USER_BY = 'unshared_user_by';
33
+
34
+    const SUBJECT_SHARED_WITH_BY = 'shared_with_by';
35
+    const SUBJECT_UNSHARED_BY = 'unshared_by';
36
+
37
+    /**
38
+     * @param IEvent $event
39
+     * @return IEvent
40
+     * @throws \InvalidArgumentException
41
+     * @since 11.0.0
42
+     */
43
+    public function parseShortVersion(IEvent $event) {
44
+        $parsedParameters = $this->getParsedParameters($event);
45
+
46
+        if ($event->getSubject() === self::SUBJECT_SHARED_USER_SELF) {
47
+            $subject = $this->l->t('Shared with {user}');
48
+        } else if ($event->getSubject() === self::SUBJECT_UNSHARED_USER_SELF) {
49
+            $subject = $this->l->t('Removed share for {user}');
50
+        } else if ($event->getSubject() === self::SUBJECT_RESHARED_USER_BY) {
51
+            $subject = $this->l->t('{actor} shared with {user}');
52
+        } else if ($event->getSubject() === self::SUBJECT_UNSHARED_USER_BY) {
53
+            $subject = $this->l->t('{actor} removed share for {user}');
54
+        } else if ($event->getSubject() === self::SUBJECT_SHARED_WITH_BY) {
55
+            $subject = $this->l->t('Shared by {actor}');
56
+        } else if ($event->getSubject() === self::SUBJECT_UNSHARED_BY) {
57
+            $subject = $this->l->t('{actor} removed share');
58
+
59
+        } else {
60
+            throw new \InvalidArgumentException();
61
+        }
62
+
63
+        $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg')));
64
+        $this->setSubjects($event, $subject, $parsedParameters);
65
+
66
+        return $event;
67
+    }
68
+
69
+    /**
70
+     * @param IEvent $event
71
+     * @return IEvent
72
+     * @throws \InvalidArgumentException
73
+     * @since 11.0.0
74
+     */
75
+    public function parseLongVersion(IEvent $event) {
76
+        $parsedParameters = $this->getParsedParameters($event);
77
+
78
+        if ($event->getSubject() === self::SUBJECT_SHARED_USER_SELF) {
79
+            $subject = $this->l->t('You shared {file} with {user}');
80
+        } else if ($event->getSubject() === self::SUBJECT_UNSHARED_USER_SELF) {
81
+            $subject = $this->l->t('You removed {user} from {file}');
82
+        } else if ($event->getSubject() === self::SUBJECT_RESHARED_USER_BY) {
83
+            $subject = $this->l->t('{actor} removed {user} from {file}');
84
+        } else if ($event->getSubject() === self::SUBJECT_UNSHARED_USER_BY) {
85
+            $subject = $this->l->t('{actor} removed {user} from {file}');
86
+        } else if ($event->getSubject() === self::SUBJECT_SHARED_WITH_BY) {
87
+            $subject = $this->l->t('{actor} shared {file} with you');
88
+        } else if ($event->getSubject() === self::SUBJECT_UNSHARED_BY) {
89
+            $subject = $this->l->t('{actor} removed you from {file}');
90
+
91
+        } else {
92
+            throw new \InvalidArgumentException();
93
+        }
94
+
95
+        $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg')));
96
+        $this->setSubjects($event, $subject, $parsedParameters);
97
+
98
+        return $event;
99
+    }
100
+
101
+    protected function getParsedParameters(IEvent $event) {
102
+        $subject = $event->getSubject();
103
+        $parameters = $event->getSubjectParameters();
104
+
105
+        switch ($subject) {
106
+            case self::SUBJECT_SHARED_USER_SELF:
107
+            case self::SUBJECT_UNSHARED_USER_SELF:
108
+                return [
109
+                    'file' => $this->getFile($parameters[0], $event),
110
+                    'user' => $this->getUser($parameters[1]),
111
+                ];
112
+            case self::SUBJECT_SHARED_WITH_BY:
113
+            case self::SUBJECT_UNSHARED_BY:
114
+                return [
115
+                    'file' => $this->getFile($parameters[0], $event),
116
+                    'actor' => $this->getUser($parameters[1]),
117
+                ];
118
+            case self::SUBJECT_RESHARED_USER_BY:
119
+            case self::SUBJECT_UNSHARED_USER_BY:
120
+                return [
121
+                    'file' => $this->getFile($parameters[0], $event),
122
+                    'user' => $this->getUser($parameters[2]),
123
+                    'actor' => $this->getUser($parameters[1]),
124
+                ];
125
+        }
126
+        return [];
127
+    }
128 128
 }
Please login to merge, or discard this patch.
apps/files_sharing/lib/Activity/Settings/Shared.php 1 patch
Indentation   +59 added lines, -59 removed lines patch added patch discarded remove patch
@@ -27,72 +27,72 @@
 block discarded – undo
27 27
 
28 28
 class Shared implements ISetting {
29 29
 
30
-	/** @var IL10N */
31
-	protected $l;
30
+    /** @var IL10N */
31
+    protected $l;
32 32
 
33
-	/**
34
-	 * @param IL10N $l
35
-	 */
36
-	public function __construct(IL10N $l) {
37
-		$this->l = $l;
38
-	}
33
+    /**
34
+     * @param IL10N $l
35
+     */
36
+    public function __construct(IL10N $l) {
37
+        $this->l = $l;
38
+    }
39 39
 
40
-	/**
41
-	 * @return string Lowercase a-z and underscore only identifier
42
-	 * @since 11.0.0
43
-	 */
44
-	public function getIdentifier() {
45
-		return 'shared';
46
-	}
40
+    /**
41
+     * @return string Lowercase a-z and underscore only identifier
42
+     * @since 11.0.0
43
+     */
44
+    public function getIdentifier() {
45
+        return 'shared';
46
+    }
47 47
 
48
-	/**
49
-	 * @return string A translated string
50
-	 * @since 11.0.0
51
-	 */
52
-	public function getName() {
53
-		return $this->l->t('A file or folder has been <strong>shared</strong>');
54
-	}
48
+    /**
49
+     * @return string A translated string
50
+     * @since 11.0.0
51
+     */
52
+    public function getName() {
53
+        return $this->l->t('A file or folder has been <strong>shared</strong>');
54
+    }
55 55
 
56
-	/**
57
-	 * @return int whether the filter should be rather on the top or bottom of
58
-	 * the admin section. The filters are arranged in ascending order of the
59
-	 * priority values. It is required to return a value between 0 and 100.
60
-	 * @since 11.0.0
61
-	 */
62
-	public function getPriority() {
63
-		return 10;
64
-	}
56
+    /**
57
+     * @return int whether the filter should be rather on the top or bottom of
58
+     * the admin section. The filters are arranged in ascending order of the
59
+     * priority values. It is required to return a value between 0 and 100.
60
+     * @since 11.0.0
61
+     */
62
+    public function getPriority() {
63
+        return 10;
64
+    }
65 65
 
66
-	/**
67
-	 * @return bool True when the option can be changed for the stream
68
-	 * @since 11.0.0
69
-	 */
70
-	public function canChangeStream() {
71
-		return true;
72
-	}
66
+    /**
67
+     * @return bool True when the option can be changed for the stream
68
+     * @since 11.0.0
69
+     */
70
+    public function canChangeStream() {
71
+        return true;
72
+    }
73 73
 
74
-	/**
75
-	 * @return bool True when the option can be changed for the stream
76
-	 * @since 11.0.0
77
-	 */
78
-	public function isDefaultEnabledStream() {
79
-		return true;
80
-	}
74
+    /**
75
+     * @return bool True when the option can be changed for the stream
76
+     * @since 11.0.0
77
+     */
78
+    public function isDefaultEnabledStream() {
79
+        return true;
80
+    }
81 81
 
82
-	/**
83
-	 * @return bool True when the option can be changed for the mail
84
-	 * @since 11.0.0
85
-	 */
86
-	public function canChangeMail() {
87
-		return true;
88
-	}
82
+    /**
83
+     * @return bool True when the option can be changed for the mail
84
+     * @since 11.0.0
85
+     */
86
+    public function canChangeMail() {
87
+        return true;
88
+    }
89 89
 
90
-	/**
91
-	 * @return bool True when the option can be changed for the stream
92
-	 * @since 11.0.0
93
-	 */
94
-	public function isDefaultEnabledMail() {
95
-		return true;
96
-	}
90
+    /**
91
+     * @return bool True when the option can be changed for the stream
92
+     * @since 11.0.0
93
+     */
94
+    public function isDefaultEnabledMail() {
95
+        return true;
96
+    }
97 97
 }
98 98
 
Please login to merge, or discard this patch.
apps/files_sharing/lib/Activity/Settings/PublicLinks.php 1 patch
Indentation   +59 added lines, -59 removed lines patch added patch discarded remove patch
@@ -27,72 +27,72 @@
 block discarded – undo
27 27
 
28 28
 class PublicLinks implements ISetting {
29 29
 
30
-	/** @var IL10N */
31
-	protected $l;
30
+    /** @var IL10N */
31
+    protected $l;
32 32
 
33
-	/**
34
-	 * @param IL10N $l
35
-	 */
36
-	public function __construct(IL10N $l) {
37
-		$this->l = $l;
38
-	}
33
+    /**
34
+     * @param IL10N $l
35
+     */
36
+    public function __construct(IL10N $l) {
37
+        $this->l = $l;
38
+    }
39 39
 
40
-	/**
41
-	 * @return string Lowercase a-z and underscore only identifier
42
-	 * @since 11.0.0
43
-	 */
44
-	public function getIdentifier() {
45
-		return 'public_links';
46
-	}
40
+    /**
41
+     * @return string Lowercase a-z and underscore only identifier
42
+     * @since 11.0.0
43
+     */
44
+    public function getIdentifier() {
45
+        return 'public_links';
46
+    }
47 47
 
48
-	/**
49
-	 * @return string A translated string
50
-	 * @since 11.0.0
51
-	 */
52
-	public function getName() {
53
-		return $this->l->t('A file or folder shared by mail or by public link was <strong>downloaded</strong>');
54
-	}
48
+    /**
49
+     * @return string A translated string
50
+     * @since 11.0.0
51
+     */
52
+    public function getName() {
53
+        return $this->l->t('A file or folder shared by mail or by public link was <strong>downloaded</strong>');
54
+    }
55 55
 
56
-	/**
57
-	 * @return int whether the filter should be rather on the top or bottom of
58
-	 * the admin section. The filters are arranged in ascending order of the
59
-	 * priority values. It is required to return a value between 0 and 100.
60
-	 * @since 11.0.0
61
-	 */
62
-	public function getPriority() {
63
-		return 20;
64
-	}
56
+    /**
57
+     * @return int whether the filter should be rather on the top or bottom of
58
+     * the admin section. The filters are arranged in ascending order of the
59
+     * priority values. It is required to return a value between 0 and 100.
60
+     * @since 11.0.0
61
+     */
62
+    public function getPriority() {
63
+        return 20;
64
+    }
65 65
 
66
-	/**
67
-	 * @return bool True when the option can be changed for the stream
68
-	 * @since 11.0.0
69
-	 */
70
-	public function canChangeStream() {
71
-		return true;
72
-	}
66
+    /**
67
+     * @return bool True when the option can be changed for the stream
68
+     * @since 11.0.0
69
+     */
70
+    public function canChangeStream() {
71
+        return true;
72
+    }
73 73
 
74
-	/**
75
-	 * @return bool True when the option can be changed for the stream
76
-	 * @since 11.0.0
77
-	 */
78
-	public function isDefaultEnabledStream() {
79
-		return true;
80
-	}
74
+    /**
75
+     * @return bool True when the option can be changed for the stream
76
+     * @since 11.0.0
77
+     */
78
+    public function isDefaultEnabledStream() {
79
+        return true;
80
+    }
81 81
 
82
-	/**
83
-	 * @return bool True when the option can be changed for the mail
84
-	 * @since 11.0.0
85
-	 */
86
-	public function canChangeMail() {
87
-		return true;
88
-	}
82
+    /**
83
+     * @return bool True when the option can be changed for the mail
84
+     * @since 11.0.0
85
+     */
86
+    public function canChangeMail() {
87
+        return true;
88
+    }
89 89
 
90
-	/**
91
-	 * @return bool True when the option can be changed for the stream
92
-	 * @since 11.0.0
93
-	 */
94
-	public function isDefaultEnabledMail() {
95
-		return false;
96
-	}
90
+    /**
91
+     * @return bool True when the option can be changed for the stream
92
+     * @since 11.0.0
93
+     */
94
+    public function isDefaultEnabledMail() {
95
+        return false;
96
+    }
97 97
 }
98 98
 
Please login to merge, or discard this patch.
apps/files_sharing/lib/Activity/Settings/RemoteShare.php 1 patch
Indentation   +59 added lines, -59 removed lines patch added patch discarded remove patch
@@ -27,72 +27,72 @@
 block discarded – undo
27 27
 
28 28
 class RemoteShare implements ISetting {
29 29
 
30
-	/** @var IL10N */
31
-	protected $l;
30
+    /** @var IL10N */
31
+    protected $l;
32 32
 
33
-	/**
34
-	 * @param IL10N $l
35
-	 */
36
-	public function __construct(IL10N $l) {
37
-		$this->l = $l;
38
-	}
33
+    /**
34
+     * @param IL10N $l
35
+     */
36
+    public function __construct(IL10N $l) {
37
+        $this->l = $l;
38
+    }
39 39
 
40
-	/**
41
-	 * @return string Lowercase a-z and underscore only identifier
42
-	 * @since 11.0.0
43
-	 */
44
-	public function getIdentifier() {
45
-		return 'remote_share';
46
-	}
40
+    /**
41
+     * @return string Lowercase a-z and underscore only identifier
42
+     * @since 11.0.0
43
+     */
44
+    public function getIdentifier() {
45
+        return 'remote_share';
46
+    }
47 47
 
48
-	/**
49
-	 * @return string A translated string
50
-	 * @since 11.0.0
51
-	 */
52
-	public function getName() {
53
-		return $this->l->t('A file or folder was shared from <strong>another server</strong>');
54
-	}
48
+    /**
49
+     * @return string A translated string
50
+     * @since 11.0.0
51
+     */
52
+    public function getName() {
53
+        return $this->l->t('A file or folder was shared from <strong>another server</strong>');
54
+    }
55 55
 
56
-	/**
57
-	 * @return int whether the filter should be rather on the top or bottom of
58
-	 * the admin section. The filters are arranged in ascending order of the
59
-	 * priority values. It is required to return a value between 0 and 100.
60
-	 * @since 11.0.0
61
-	 */
62
-	public function getPriority() {
63
-		return 11;
64
-	}
56
+    /**
57
+     * @return int whether the filter should be rather on the top or bottom of
58
+     * the admin section. The filters are arranged in ascending order of the
59
+     * priority values. It is required to return a value between 0 and 100.
60
+     * @since 11.0.0
61
+     */
62
+    public function getPriority() {
63
+        return 11;
64
+    }
65 65
 
66
-	/**
67
-	 * @return bool True when the option can be changed for the stream
68
-	 * @since 11.0.0
69
-	 */
70
-	public function canChangeStream() {
71
-		return true;
72
-	}
66
+    /**
67
+     * @return bool True when the option can be changed for the stream
68
+     * @since 11.0.0
69
+     */
70
+    public function canChangeStream() {
71
+        return true;
72
+    }
73 73
 
74
-	/**
75
-	 * @return bool True when the option can be changed for the stream
76
-	 * @since 11.0.0
77
-	 */
78
-	public function isDefaultEnabledStream() {
79
-		return true;
80
-	}
74
+    /**
75
+     * @return bool True when the option can be changed for the stream
76
+     * @since 11.0.0
77
+     */
78
+    public function isDefaultEnabledStream() {
79
+        return true;
80
+    }
81 81
 
82
-	/**
83
-	 * @return bool True when the option can be changed for the mail
84
-	 * @since 11.0.0
85
-	 */
86
-	public function canChangeMail() {
87
-		return true;
88
-	}
82
+    /**
83
+     * @return bool True when the option can be changed for the mail
84
+     * @since 11.0.0
85
+     */
86
+    public function canChangeMail() {
87
+        return true;
88
+    }
89 89
 
90
-	/**
91
-	 * @return bool True when the option can be changed for the stream
92
-	 * @since 11.0.0
93
-	 */
94
-	public function isDefaultEnabledMail() {
95
-		return true;
96
-	}
90
+    /**
91
+     * @return bool True when the option can be changed for the stream
92
+     * @since 11.0.0
93
+     */
94
+    public function isDefaultEnabledMail() {
95
+        return true;
96
+    }
97 97
 }
98 98
 
Please login to merge, or discard this patch.
apps/files_sharing/lib/Activity/Filter.php 1 patch
Indentation   +56 added lines, -56 removed lines patch added patch discarded remove patch
@@ -27,69 +27,69 @@
 block discarded – undo
27 27
 use OCP\IURLGenerator;
28 28
 
29 29
 class Filter implements IFilter {
30
-	const TYPE_REMOTE_SHARE = 'remote_share';
31
-	const TYPE_SHARED = 'shared';
30
+    const TYPE_REMOTE_SHARE = 'remote_share';
31
+    const TYPE_SHARED = 'shared';
32 32
 
33
-	/** @var IL10N */
34
-	protected $l;
33
+    /** @var IL10N */
34
+    protected $l;
35 35
 
36
-	/** @var IURLGenerator */
37
-	protected $url;
36
+    /** @var IURLGenerator */
37
+    protected $url;
38 38
 
39
-	public function __construct(IL10N $l, IURLGenerator $url) {
40
-		$this->l = $l;
41
-		$this->url = $url;
42
-	}
39
+    public function __construct(IL10N $l, IURLGenerator $url) {
40
+        $this->l = $l;
41
+        $this->url = $url;
42
+    }
43 43
 
44
-	/**
45
-	 * @return string Lowercase a-z only identifier
46
-	 * @since 11.0.0
47
-	 */
48
-	public function getIdentifier() {
49
-		return 'files_sharing';
50
-	}
44
+    /**
45
+     * @return string Lowercase a-z only identifier
46
+     * @since 11.0.0
47
+     */
48
+    public function getIdentifier() {
49
+        return 'files_sharing';
50
+    }
51 51
 
52
-	/**
53
-	 * @return string A translated string
54
-	 * @since 11.0.0
55
-	 */
56
-	public function getName() {
57
-		return $this->l->t('File shares');
58
-	}
52
+    /**
53
+     * @return string A translated string
54
+     * @since 11.0.0
55
+     */
56
+    public function getName() {
57
+        return $this->l->t('File shares');
58
+    }
59 59
 
60
-	/**
61
-	 * @return int
62
-	 * @since 11.0.0
63
-	 */
64
-	public function getPriority() {
65
-		return 31;
66
-	}
60
+    /**
61
+     * @return int
62
+     * @since 11.0.0
63
+     */
64
+    public function getPriority() {
65
+        return 31;
66
+    }
67 67
 
68
-	/**
69
-	 * @return string Full URL to an icon, empty string when none is given
70
-	 * @since 11.0.0
71
-	 */
72
-	public function getIcon() {
73
-		return $this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg'));
74
-	}
68
+    /**
69
+     * @return string Full URL to an icon, empty string when none is given
70
+     * @since 11.0.0
71
+     */
72
+    public function getIcon() {
73
+        return $this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg'));
74
+    }
75 75
 
76
-	/**
77
-	 * @param string[] $types
78
-	 * @return string[] An array of allowed apps from which activities should be displayed
79
-	 * @since 11.0.0
80
-	 */
81
-	public function filterTypes(array $types) {
82
-		return array_intersect([
83
-			self::TYPE_SHARED,
84
-			self::TYPE_REMOTE_SHARE
85
-		], $types);
86
-	}
76
+    /**
77
+     * @param string[] $types
78
+     * @return string[] An array of allowed apps from which activities should be displayed
79
+     * @since 11.0.0
80
+     */
81
+    public function filterTypes(array $types) {
82
+        return array_intersect([
83
+            self::TYPE_SHARED,
84
+            self::TYPE_REMOTE_SHARE
85
+        ], $types);
86
+    }
87 87
 
88
-	/**
89
-	 * @return string[] An array of allowed apps from which activities should be displayed
90
-	 * @since 11.0.0
91
-	 */
92
-	public function allowedApps() {
93
-		return ['files_sharing'];
94
-	}
88
+    /**
89
+     * @return string[] An array of allowed apps from which activities should be displayed
90
+     * @since 11.0.0
91
+     */
92
+    public function allowedApps() {
93
+        return ['files_sharing'];
94
+    }
95 95
 }
Please login to merge, or discard this patch.
apps/files_sharing/lib/Cache.php 1 patch
Indentation   +99 added lines, -99 removed lines patch added patch discarded remove patch
@@ -37,103 +37,103 @@
 block discarded – undo
37 37
  * don't use this class directly if you need to get metadata, use \OC\Files\Filesystem::getFileInfo instead
38 38
  */
39 39
 class Cache extends CacheJail {
40
-	/**
41
-	 * @var \OCA\Files_Sharing\SharedStorage
42
-	 */
43
-	private $storage;
44
-
45
-	/**
46
-	 * @var ICacheEntry
47
-	 */
48
-	private $sourceRootInfo;
49
-
50
-	private $rootUnchanged = true;
51
-
52
-	private $ownerDisplayName;
53
-
54
-	/**
55
-	 * @param \OCA\Files_Sharing\SharedStorage $storage
56
-	 * @param ICacheEntry $sourceRootInfo
57
-	 */
58
-	public function __construct($storage, ICacheEntry $sourceRootInfo) {
59
-		$this->storage = $storage;
60
-		$this->sourceRootInfo = $sourceRootInfo;
61
-		parent::__construct(
62
-			null,
63
-			$this->sourceRootInfo->getPath()
64
-		);
65
-	}
66
-
67
-	public function getCache() {
68
-		if (is_null($this->cache)) {
69
-			$this->cache = $this->storage->getSourceStorage()->getCache();
70
-		}
71
-		return $this->cache;
72
-	}
73
-
74
-	public function getNumericStorageId() {
75
-		if (isset($this->numericId)) {
76
-			return $this->numericId;
77
-		} else {
78
-			return false;
79
-		}
80
-	}
81
-
82
-	public function get($file) {
83
-		if ($this->rootUnchanged && ($file === '' || $file === $this->sourceRootInfo->getId())) {
84
-			return $this->formatCacheEntry(clone $this->sourceRootInfo);
85
-		}
86
-		return parent::get($file);
87
-	}
88
-
89
-	public function update($id, array $data) {
90
-		$this->rootUnchanged = false;
91
-		parent::update($id, $data);
92
-	}
93
-
94
-	public function insert($file, array $data) {
95
-		$this->rootUnchanged = false;
96
-		return parent::insert($file, $data);
97
-	}
98
-
99
-	public function remove($file) {
100
-		$this->rootUnchanged = false;
101
-		parent::remove($file);
102
-	}
103
-
104
-	public function moveFromCache(\OCP\Files\Cache\ICache $sourceCache, $sourcePath, $targetPath) {
105
-		$this->rootUnchanged = false;
106
-		return parent::moveFromCache($sourceCache, $sourcePath, $targetPath);
107
-	}
108
-
109
-	protected function formatCacheEntry($entry) {
110
-		$path = isset($entry['path']) ? $entry['path'] : '';
111
-		$entry = parent::formatCacheEntry($entry);
112
-		$sharePermissions = $this->storage->getPermissions($path);
113
-		if (isset($entry['permissions'])) {
114
-			$entry['permissions'] &= $sharePermissions;
115
-		} else {
116
-			$entry['permissions'] = $sharePermissions;
117
-		}
118
-		$entry['uid_owner'] = $this->storage->getOwner($path);
119
-		$entry['displayname_owner'] = $this->getOwnerDisplayName();
120
-		if ($path === '') {
121
-			$entry['is_share_mount_point'] = true;
122
-		}
123
-		return $entry;
124
-	}
125
-
126
-	private function getOwnerDisplayName() {
127
-		if (!$this->ownerDisplayName) {
128
-			$this->ownerDisplayName = \OC_User::getDisplayName($this->storage->getOwner(''));
129
-		}
130
-		return $this->ownerDisplayName;
131
-	}
132
-
133
-	/**
134
-	 * remove all entries for files that are stored on the storage from the cache
135
-	 */
136
-	public function clear() {
137
-		// Not a valid action for Shared Cache
138
-	}
40
+    /**
41
+     * @var \OCA\Files_Sharing\SharedStorage
42
+     */
43
+    private $storage;
44
+
45
+    /**
46
+     * @var ICacheEntry
47
+     */
48
+    private $sourceRootInfo;
49
+
50
+    private $rootUnchanged = true;
51
+
52
+    private $ownerDisplayName;
53
+
54
+    /**
55
+     * @param \OCA\Files_Sharing\SharedStorage $storage
56
+     * @param ICacheEntry $sourceRootInfo
57
+     */
58
+    public function __construct($storage, ICacheEntry $sourceRootInfo) {
59
+        $this->storage = $storage;
60
+        $this->sourceRootInfo = $sourceRootInfo;
61
+        parent::__construct(
62
+            null,
63
+            $this->sourceRootInfo->getPath()
64
+        );
65
+    }
66
+
67
+    public function getCache() {
68
+        if (is_null($this->cache)) {
69
+            $this->cache = $this->storage->getSourceStorage()->getCache();
70
+        }
71
+        return $this->cache;
72
+    }
73
+
74
+    public function getNumericStorageId() {
75
+        if (isset($this->numericId)) {
76
+            return $this->numericId;
77
+        } else {
78
+            return false;
79
+        }
80
+    }
81
+
82
+    public function get($file) {
83
+        if ($this->rootUnchanged && ($file === '' || $file === $this->sourceRootInfo->getId())) {
84
+            return $this->formatCacheEntry(clone $this->sourceRootInfo);
85
+        }
86
+        return parent::get($file);
87
+    }
88
+
89
+    public function update($id, array $data) {
90
+        $this->rootUnchanged = false;
91
+        parent::update($id, $data);
92
+    }
93
+
94
+    public function insert($file, array $data) {
95
+        $this->rootUnchanged = false;
96
+        return parent::insert($file, $data);
97
+    }
98
+
99
+    public function remove($file) {
100
+        $this->rootUnchanged = false;
101
+        parent::remove($file);
102
+    }
103
+
104
+    public function moveFromCache(\OCP\Files\Cache\ICache $sourceCache, $sourcePath, $targetPath) {
105
+        $this->rootUnchanged = false;
106
+        return parent::moveFromCache($sourceCache, $sourcePath, $targetPath);
107
+    }
108
+
109
+    protected function formatCacheEntry($entry) {
110
+        $path = isset($entry['path']) ? $entry['path'] : '';
111
+        $entry = parent::formatCacheEntry($entry);
112
+        $sharePermissions = $this->storage->getPermissions($path);
113
+        if (isset($entry['permissions'])) {
114
+            $entry['permissions'] &= $sharePermissions;
115
+        } else {
116
+            $entry['permissions'] = $sharePermissions;
117
+        }
118
+        $entry['uid_owner'] = $this->storage->getOwner($path);
119
+        $entry['displayname_owner'] = $this->getOwnerDisplayName();
120
+        if ($path === '') {
121
+            $entry['is_share_mount_point'] = true;
122
+        }
123
+        return $entry;
124
+    }
125
+
126
+    private function getOwnerDisplayName() {
127
+        if (!$this->ownerDisplayName) {
128
+            $this->ownerDisplayName = \OC_User::getDisplayName($this->storage->getOwner(''));
129
+        }
130
+        return $this->ownerDisplayName;
131
+    }
132
+
133
+    /**
134
+     * remove all entries for files that are stored on the storage from the cache
135
+     */
136
+    public function clear() {
137
+        // Not a valid action for Shared Cache
138
+    }
139 139
 }
Please login to merge, or discard this patch.
apps/files_sharing/lib/Migration.php 1 patch
Indentation   +247 added lines, -247 removed lines patch added patch discarded remove patch
@@ -39,252 +39,252 @@
 block discarded – undo
39 39
  */
40 40
 class Migration {
41 41
 
42
-	/** @var IDBConnection */
43
-	private $connection;
44
-
45
-	/** @var  IConfig */
46
-	private $config;
47
-
48
-	/** @var  ICache with all shares we already saw */
49
-	private $shareCache;
50
-
51
-	/** @var string */
52
-	private $table = 'share';
53
-
54
-	public function __construct(IDBConnection $connection, IConfig $config) {
55
-		$this->connection = $connection;
56
-		$this->config = $config;
57
-
58
-		// We cache up to 10k share items (~20MB)
59
-		$this->shareCache = new CappedMemoryCache(10000);
60
-	}
61
-
62
-	/**
63
-	 * move all re-shares to the owner in order to have a flat list of shares
64
-	 * upgrade from oC 8.2 to 9.0 with the new sharing
65
-	 */
66
-	public function removeReShares() {
67
-
68
-		$stmt = $this->getReShares();
69
-
70
-		$owners = [];
71
-		while($share = $stmt->fetch()) {
72
-
73
-			$this->shareCache[$share['id']] = $share;
74
-
75
-			$owners[$share['id']] = [
76
-					'owner' => $this->findOwner($share),
77
-					'initiator' => $share['uid_owner'],
78
-					'type' => $share['share_type'],
79
-			];
80
-
81
-			if (count($owners) === 1000) {
82
-				$this->updateOwners($owners);
83
-				$owners = [];
84
-			}
85
-		}
86
-
87
-		$stmt->closeCursor();
88
-
89
-		if (count($owners)) {
90
-			$this->updateOwners($owners);
91
-		}
92
-	}
93
-
94
-	/**
95
-	 * update all owner information so that all shares have an owner
96
-	 * and an initiator for the upgrade from oC 8.2 to 9.0 with the new sharing
97
-	 */
98
-	public function updateInitiatorInfo() {
99
-		while (true) {
100
-			$shares = $this->getMissingInitiator(1000);
101
-
102
-			if (empty($shares)) {
103
-				break;
104
-			}
105
-
106
-			$owners = [];
107
-			foreach ($shares as $share) {
108
-				$owners[$share['id']] = [
109
-					'owner' => $share['uid_owner'],
110
-					'initiator' => $share['uid_owner'],
111
-					'type' => $share['share_type'],
112
-				];
113
-			}
114
-			$this->updateOwners($owners);
115
-		}
116
-	}
117
-
118
-	/**
119
-	 * this was dropped for Nextcloud 11 in favour of share by mail
120
-	 */
121
-	public function removeSendMailOption() {
122
-		$this->config->deleteAppValue('core', 'shareapi_allow_mail_notification');
123
-		$this->config->deleteAppValue('core', 'shareapi_allow_public_notification');
124
-	}
125
-
126
-	/**
127
-	 * find the owner of a re-shared file/folder
128
-	 *
129
-	 * @param array $share
130
-	 * @return array
131
-	 */
132
-	private function findOwner($share) {
133
-		$currentShare = $share;
134
-		while(!is_null($currentShare['parent'])) {
135
-			if (isset($this->shareCache[$currentShare['parent']])) {
136
-				$currentShare = $this->shareCache[$currentShare['parent']];
137
-			} else {
138
-				$currentShare = $this->getShare((int)$currentShare['parent']);
139
-				$this->shareCache[$currentShare['id']] = $currentShare;
140
-			}
141
-		}
142
-
143
-		return $currentShare['uid_owner'];
144
-	}
145
-
146
-	/**
147
-	 * Get $n re-shares from the database
148
-	 *
149
-	 * @param int $n The max number of shares to fetch
150
-	 * @return \Doctrine\DBAL\Driver\Statement
151
-	 */
152
-	private function getReShares() {
153
-		$query = $this->connection->getQueryBuilder();
154
-		$query->select(['id', 'parent', 'uid_owner', 'share_type'])
155
-			->from($this->table)
156
-			->where($query->expr()->in(
157
-				'share_type',
158
-				$query->createNamedParameter(
159
-					[
160
-						\OCP\Share::SHARE_TYPE_USER,
161
-						\OCP\Share::SHARE_TYPE_GROUP,
162
-						\OCP\Share::SHARE_TYPE_LINK,
163
-						\OCP\Share::SHARE_TYPE_REMOTE,
164
-					],
165
-					Connection::PARAM_INT_ARRAY
166
-				)
167
-			))
168
-			->andWhere($query->expr()->in(
169
-				'item_type',
170
-				$query->createNamedParameter(
171
-					['file', 'folder'],
172
-					Connection::PARAM_STR_ARRAY
173
-				)
174
-			))
175
-			->andWhere($query->expr()->isNotNull('parent'))
176
-			->orderBy('id', 'asc');
177
-		return $query->execute();
178
-
179
-
180
-		$shares = $result->fetchAll();
181
-		$result->closeCursor();
182
-
183
-		$ordered = [];
184
-		foreach ($shares as $share) {
185
-			$ordered[(int)$share['id']] = $share;
186
-		}
187
-
188
-		return $ordered;
189
-	}
190
-
191
-	/**
192
-	 * Get $n re-shares from the database
193
-	 *
194
-	 * @param int $n The max number of shares to fetch
195
-	 * @return array
196
-	 */
197
-	private function getMissingInitiator($n = 1000) {
198
-		$query = $this->connection->getQueryBuilder();
199
-		$query->select(['id', 'uid_owner', 'share_type'])
200
-			->from($this->table)
201
-			->where($query->expr()->in(
202
-				'share_type',
203
-				$query->createNamedParameter(
204
-					[
205
-						\OCP\Share::SHARE_TYPE_USER,
206
-						\OCP\Share::SHARE_TYPE_GROUP,
207
-						\OCP\Share::SHARE_TYPE_LINK,
208
-						\OCP\Share::SHARE_TYPE_REMOTE,
209
-					],
210
-					Connection::PARAM_INT_ARRAY
211
-				)
212
-			))
213
-			->andWhere($query->expr()->in(
214
-				'item_type',
215
-				$query->createNamedParameter(
216
-					['file', 'folder'],
217
-					Connection::PARAM_STR_ARRAY
218
-				)
219
-			))
220
-			->andWhere($query->expr()->isNull('uid_initiator'))
221
-			->orderBy('id', 'asc')
222
-			->setMaxResults($n);
223
-		$result = $query->execute();
224
-		$shares = $result->fetchAll();
225
-		$result->closeCursor();
226
-
227
-		$ordered = [];
228
-		foreach ($shares as $share) {
229
-			$ordered[(int)$share['id']] = $share;
230
-		}
231
-
232
-		return $ordered;
233
-	}
234
-
235
-	/**
236
-	 * get a specific share
237
-	 *
238
-	 * @param int $id
239
-	 * @return array
240
-	 */
241
-	private function getShare($id) {
242
-		$query = $this->connection->getQueryBuilder();
243
-		$query->select(['id', 'parent', 'uid_owner'])
244
-			->from($this->table)
245
-			->where($query->expr()->eq('id', $query->createNamedParameter($id)));
246
-		$result = $query->execute();
247
-		$share = $result->fetchAll();
248
-		$result->closeCursor();
249
-
250
-		return $share[0];
251
-	}
252
-
253
-	/**
254
-	 * update database with the new owners
255
-	 *
256
-	 * @param array $owners
257
-	 * @throws \Exception
258
-	 */
259
-	private function updateOwners($owners) {
260
-
261
-		$this->connection->beginTransaction();
262
-
263
-		try {
264
-
265
-			foreach ($owners as $id => $owner) {
266
-				$query = $this->connection->getQueryBuilder();
267
-				$query->update($this->table)
268
-					->set('uid_owner', $query->createNamedParameter($owner['owner']))
269
-					->set('uid_initiator', $query->createNamedParameter($owner['initiator']));
270
-
271
-
272
-				if ((int)$owner['type'] !== \OCP\Share::SHARE_TYPE_LINK) {
273
-					$query->set('parent', $query->createNamedParameter(null));
274
-				}
275
-
276
-				$query->where($query->expr()->eq('id', $query->createNamedParameter($id)));
277
-
278
-				$query->execute();
279
-			}
280
-
281
-			$this->connection->commit();
282
-
283
-		} catch (\Exception $e) {
284
-			$this->connection->rollBack();
285
-			throw $e;
286
-		}
287
-
288
-	}
42
+    /** @var IDBConnection */
43
+    private $connection;
44
+
45
+    /** @var  IConfig */
46
+    private $config;
47
+
48
+    /** @var  ICache with all shares we already saw */
49
+    private $shareCache;
50
+
51
+    /** @var string */
52
+    private $table = 'share';
53
+
54
+    public function __construct(IDBConnection $connection, IConfig $config) {
55
+        $this->connection = $connection;
56
+        $this->config = $config;
57
+
58
+        // We cache up to 10k share items (~20MB)
59
+        $this->shareCache = new CappedMemoryCache(10000);
60
+    }
61
+
62
+    /**
63
+     * move all re-shares to the owner in order to have a flat list of shares
64
+     * upgrade from oC 8.2 to 9.0 with the new sharing
65
+     */
66
+    public function removeReShares() {
67
+
68
+        $stmt = $this->getReShares();
69
+
70
+        $owners = [];
71
+        while($share = $stmt->fetch()) {
72
+
73
+            $this->shareCache[$share['id']] = $share;
74
+
75
+            $owners[$share['id']] = [
76
+                    'owner' => $this->findOwner($share),
77
+                    'initiator' => $share['uid_owner'],
78
+                    'type' => $share['share_type'],
79
+            ];
80
+
81
+            if (count($owners) === 1000) {
82
+                $this->updateOwners($owners);
83
+                $owners = [];
84
+            }
85
+        }
86
+
87
+        $stmt->closeCursor();
88
+
89
+        if (count($owners)) {
90
+            $this->updateOwners($owners);
91
+        }
92
+    }
93
+
94
+    /**
95
+     * update all owner information so that all shares have an owner
96
+     * and an initiator for the upgrade from oC 8.2 to 9.0 with the new sharing
97
+     */
98
+    public function updateInitiatorInfo() {
99
+        while (true) {
100
+            $shares = $this->getMissingInitiator(1000);
101
+
102
+            if (empty($shares)) {
103
+                break;
104
+            }
105
+
106
+            $owners = [];
107
+            foreach ($shares as $share) {
108
+                $owners[$share['id']] = [
109
+                    'owner' => $share['uid_owner'],
110
+                    'initiator' => $share['uid_owner'],
111
+                    'type' => $share['share_type'],
112
+                ];
113
+            }
114
+            $this->updateOwners($owners);
115
+        }
116
+    }
117
+
118
+    /**
119
+     * this was dropped for Nextcloud 11 in favour of share by mail
120
+     */
121
+    public function removeSendMailOption() {
122
+        $this->config->deleteAppValue('core', 'shareapi_allow_mail_notification');
123
+        $this->config->deleteAppValue('core', 'shareapi_allow_public_notification');
124
+    }
125
+
126
+    /**
127
+     * find the owner of a re-shared file/folder
128
+     *
129
+     * @param array $share
130
+     * @return array
131
+     */
132
+    private function findOwner($share) {
133
+        $currentShare = $share;
134
+        while(!is_null($currentShare['parent'])) {
135
+            if (isset($this->shareCache[$currentShare['parent']])) {
136
+                $currentShare = $this->shareCache[$currentShare['parent']];
137
+            } else {
138
+                $currentShare = $this->getShare((int)$currentShare['parent']);
139
+                $this->shareCache[$currentShare['id']] = $currentShare;
140
+            }
141
+        }
142
+
143
+        return $currentShare['uid_owner'];
144
+    }
145
+
146
+    /**
147
+     * Get $n re-shares from the database
148
+     *
149
+     * @param int $n The max number of shares to fetch
150
+     * @return \Doctrine\DBAL\Driver\Statement
151
+     */
152
+    private function getReShares() {
153
+        $query = $this->connection->getQueryBuilder();
154
+        $query->select(['id', 'parent', 'uid_owner', 'share_type'])
155
+            ->from($this->table)
156
+            ->where($query->expr()->in(
157
+                'share_type',
158
+                $query->createNamedParameter(
159
+                    [
160
+                        \OCP\Share::SHARE_TYPE_USER,
161
+                        \OCP\Share::SHARE_TYPE_GROUP,
162
+                        \OCP\Share::SHARE_TYPE_LINK,
163
+                        \OCP\Share::SHARE_TYPE_REMOTE,
164
+                    ],
165
+                    Connection::PARAM_INT_ARRAY
166
+                )
167
+            ))
168
+            ->andWhere($query->expr()->in(
169
+                'item_type',
170
+                $query->createNamedParameter(
171
+                    ['file', 'folder'],
172
+                    Connection::PARAM_STR_ARRAY
173
+                )
174
+            ))
175
+            ->andWhere($query->expr()->isNotNull('parent'))
176
+            ->orderBy('id', 'asc');
177
+        return $query->execute();
178
+
179
+
180
+        $shares = $result->fetchAll();
181
+        $result->closeCursor();
182
+
183
+        $ordered = [];
184
+        foreach ($shares as $share) {
185
+            $ordered[(int)$share['id']] = $share;
186
+        }
187
+
188
+        return $ordered;
189
+    }
190
+
191
+    /**
192
+     * Get $n re-shares from the database
193
+     *
194
+     * @param int $n The max number of shares to fetch
195
+     * @return array
196
+     */
197
+    private function getMissingInitiator($n = 1000) {
198
+        $query = $this->connection->getQueryBuilder();
199
+        $query->select(['id', 'uid_owner', 'share_type'])
200
+            ->from($this->table)
201
+            ->where($query->expr()->in(
202
+                'share_type',
203
+                $query->createNamedParameter(
204
+                    [
205
+                        \OCP\Share::SHARE_TYPE_USER,
206
+                        \OCP\Share::SHARE_TYPE_GROUP,
207
+                        \OCP\Share::SHARE_TYPE_LINK,
208
+                        \OCP\Share::SHARE_TYPE_REMOTE,
209
+                    ],
210
+                    Connection::PARAM_INT_ARRAY
211
+                )
212
+            ))
213
+            ->andWhere($query->expr()->in(
214
+                'item_type',
215
+                $query->createNamedParameter(
216
+                    ['file', 'folder'],
217
+                    Connection::PARAM_STR_ARRAY
218
+                )
219
+            ))
220
+            ->andWhere($query->expr()->isNull('uid_initiator'))
221
+            ->orderBy('id', 'asc')
222
+            ->setMaxResults($n);
223
+        $result = $query->execute();
224
+        $shares = $result->fetchAll();
225
+        $result->closeCursor();
226
+
227
+        $ordered = [];
228
+        foreach ($shares as $share) {
229
+            $ordered[(int)$share['id']] = $share;
230
+        }
231
+
232
+        return $ordered;
233
+    }
234
+
235
+    /**
236
+     * get a specific share
237
+     *
238
+     * @param int $id
239
+     * @return array
240
+     */
241
+    private function getShare($id) {
242
+        $query = $this->connection->getQueryBuilder();
243
+        $query->select(['id', 'parent', 'uid_owner'])
244
+            ->from($this->table)
245
+            ->where($query->expr()->eq('id', $query->createNamedParameter($id)));
246
+        $result = $query->execute();
247
+        $share = $result->fetchAll();
248
+        $result->closeCursor();
249
+
250
+        return $share[0];
251
+    }
252
+
253
+    /**
254
+     * update database with the new owners
255
+     *
256
+     * @param array $owners
257
+     * @throws \Exception
258
+     */
259
+    private function updateOwners($owners) {
260
+
261
+        $this->connection->beginTransaction();
262
+
263
+        try {
264
+
265
+            foreach ($owners as $id => $owner) {
266
+                $query = $this->connection->getQueryBuilder();
267
+                $query->update($this->table)
268
+                    ->set('uid_owner', $query->createNamedParameter($owner['owner']))
269
+                    ->set('uid_initiator', $query->createNamedParameter($owner['initiator']));
270
+
271
+
272
+                if ((int)$owner['type'] !== \OCP\Share::SHARE_TYPE_LINK) {
273
+                    $query->set('parent', $query->createNamedParameter(null));
274
+                }
275
+
276
+                $query->where($query->expr()->eq('id', $query->createNamedParameter($id)));
277
+
278
+                $query->execute();
279
+            }
280
+
281
+            $this->connection->commit();
282
+
283
+        } catch (\Exception $e) {
284
+            $this->connection->rollBack();
285
+            throw $e;
286
+        }
287
+
288
+    }
289 289
 
290 290
 }
Please login to merge, or discard this patch.
apps/files_sharing/lib/ExpireSharesJob.php 1 patch
Indentation   +38 added lines, -38 removed lines patch added patch discarded remove patch
@@ -29,49 +29,49 @@
 block discarded – undo
29 29
  */
30 30
 class ExpireSharesJob extends TimedJob {
31 31
 
32
-	/**
33
-	 * sets the correct interval for this timed job
34
-	 */
35
-	public function __construct() {
36
-		// Run once a day
37
-		$this->setInterval(24 * 60 * 60);
38
-	}
32
+    /**
33
+     * sets the correct interval for this timed job
34
+     */
35
+    public function __construct() {
36
+        // Run once a day
37
+        $this->setInterval(24 * 60 * 60);
38
+    }
39 39
 
40
-	/**
41
-	 * Makes the background job do its work
42
-	 *
43
-	 * @param array $argument unused argument
44
-	 */
45
-	public function run($argument) {
46
-		$connection = \OC::$server->getDatabaseConnection();
47
-		$logger = \OC::$server->getLogger();
40
+    /**
41
+     * Makes the background job do its work
42
+     *
43
+     * @param array $argument unused argument
44
+     */
45
+    public function run($argument) {
46
+        $connection = \OC::$server->getDatabaseConnection();
47
+        $logger = \OC::$server->getLogger();
48 48
 
49
-		//Current time
50
-		$now = new \DateTime();
51
-		$now = $now->format('Y-m-d H:i:s');
49
+        //Current time
50
+        $now = new \DateTime();
51
+        $now = $now->format('Y-m-d H:i:s');
52 52
 
53
-		/*
53
+        /*
54 54
 		 * Expire file link shares only (for now)
55 55
 		 */
56
-		$qb = $connection->getQueryBuilder();
57
-		$qb->select('id', 'file_source', 'uid_owner', 'item_type')
58
-			->from('share')
59
-			->where(
60
-				$qb->expr()->andX(
61
-					$qb->expr()->eq('share_type', $qb->expr()->literal(\OCP\Share::SHARE_TYPE_LINK)),
62
-					$qb->expr()->lte('expiration', $qb->expr()->literal($now)),
63
-					$qb->expr()->orX(
64
-						$qb->expr()->eq('item_type', $qb->expr()->literal('file')),
65
-						$qb->expr()->eq('item_type', $qb->expr()->literal('folder'))
66
-					)
67
-				)
68
-			);
56
+        $qb = $connection->getQueryBuilder();
57
+        $qb->select('id', 'file_source', 'uid_owner', 'item_type')
58
+            ->from('share')
59
+            ->where(
60
+                $qb->expr()->andX(
61
+                    $qb->expr()->eq('share_type', $qb->expr()->literal(\OCP\Share::SHARE_TYPE_LINK)),
62
+                    $qb->expr()->lte('expiration', $qb->expr()->literal($now)),
63
+                    $qb->expr()->orX(
64
+                        $qb->expr()->eq('item_type', $qb->expr()->literal('file')),
65
+                        $qb->expr()->eq('item_type', $qb->expr()->literal('folder'))
66
+                    )
67
+                )
68
+            );
69 69
 
70
-		$shares = $qb->execute();
71
-		while($share = $shares->fetch()) {
72
-			\OCP\Share::unshare($share['item_type'], $share['file_source'], \OCP\Share::SHARE_TYPE_LINK, null, $share['uid_owner']);
73
-		}
74
-		$shares->closeCursor();
75
-	}
70
+        $shares = $qb->execute();
71
+        while($share = $shares->fetch()) {
72
+            \OCP\Share::unshare($share['item_type'], $share['file_source'], \OCP\Share::SHARE_TYPE_LINK, null, $share['uid_owner']);
73
+        }
74
+        $shares->closeCursor();
75
+    }
76 76
 
77 77
 }
Please login to merge, or discard this patch.