Passed
Push — 1.11.x ( 31fff3...86e7ae )
by Yannick
15:37 queued 10s
created

OnlyofficePlugin   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 72
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 23
dl 0
loc 72
rs 10
c 1
b 0
f 0
wmc 7

6 Methods

Rating   Name   Duplication   Size   Complexity  
A create() 0 5 2
A uninstallHook() 0 10 1
A __construct() 0 9 1
A uninstall() 0 3 1
A install() 0 3 1
A installHook() 0 10 1
1
<?php
2
/**
3
 *
4
 * (c) Copyright Ascensio System SIA 2021
5
 *
6
 * Licensed under the Apache License, Version 2.0 (the "License");
7
 * you may not use this file except in compliance with the License.
8
 * You may obtain a copy of the License at
9
 *
10
 *     http://www.apache.org/licenses/LICENSE-2.0
11
 *
12
 * Unless required by applicable law or agreed to in writing, software
13
 * distributed under the License is distributed on an "AS IS" BASIS,
14
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
 * See the License for the specific language governing permissions and
16
 * limitations under the License.
17
 *
18
 */
19
20
/**
21
 * Plugin class for the Onlyoffice plugin.
22
 *
23
 * @author Asensio System SIA
24
 */
25
class OnlyofficePlugin extends Plugin implements HookPluginInterface
26
{
27
    /**
28
     * OnlyofficePlugin constructor.
29
     */
30
    protected function __construct()
31
    {
32
        parent::__construct(
33
            "1.0",
34
            "Asensio System SIA",
35
            [
36
                "enable_onlyoffice_plugin" => "boolean",
37
                "document_server_url" => "text",
38
                "jwt_secret" => "text"
39
            ]
40
        );
41
    }
42
43
    /**
44
     * Create OnlyofficePlugin object
45
     */
46
    public static function create(): OnlyofficePlugin
47
    {
48
        static $result = null;
49
50
        return $result ?: $result = new self();
51
    }
52
53
    /**
54
     * This method install the plugin tables.
55
     */
56
    public function install()
57
    {
58
        $this->installHook();
59
    }
60
61
    /**
62
     * This method drops the plugin tables.
63
     */
64
    public function uninstall()
65
    {
66
        $this->uninstallHook();
67
    }
68
69
    /**
70
     * Install the "create" hooks.
71
     */
72
    public function installHook()
73
    {
74
        $itemActionObserver = OnlyofficeItemActionObserver::create();
75
        HookDocumentItemAction::create()->attach($itemActionObserver);
76
77
        $actionObserver = OnlyofficeActionObserver::create();
78
        HookDocumentAction::create()->attach($actionObserver);
79
80
        $viewObserver = OnlyofficeItemViewObserver::create();
81
        HookDocumentItemView::create()->attach($viewObserver);
82
    }
83
84
    /**
85
     * Uninstall the "create" hooks.
86
     */
87
    public function uninstallHook()
88
    {
89
        $itemActionObserver = OnlyofficeItemActionObserver::create();
90
        HookDocumentItemAction::create()->detach($itemActionObserver);
91
92
        $actionObserver = OnlyofficeActionObserver::create();
93
        HookDocumentAction::create()->detach($actionObserver);
94
95
        $viewObserver = OnlyofficeItemViewObserver::create();
96
        HookDocumentItemView::create()->detach($viewObserver);
97
    }
98
}
99