forked from cydemo/rx-module-preview
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpreview.class.php
More file actions
174 lines (160 loc) · 4.9 KB
/
preview.class.php
File metadata and controls
174 lines (160 loc) · 4.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
<?php
/**
* 링크 프리뷰
* Copyright (c) 윤삼
* Generated with https://www.poesis.org/tools/modulegen/
*/
class Preview extends ModuleObject
{
/**
* 등록할 트리거를 여기에 선언하면 자동으로 등록된다.
* checkUpdate(), moduleUpdate() 등에서 체크 및 생성 루틴을 중복으로 작성하지 않아도 된다.
*/
protected static $_insert_triggers = array(
array('display', 'before', 'controller', 'triggerPreviewAction'),
// array('document.insertDocument', 'after', 'controller', 'triggerAfterInsertDocument'),
// array('document.updateDocument', 'after', 'controller', 'triggerAfterUpdateDocument'),
// array('document.deleteDocument', 'after', 'controller', 'triggerAfterDeleteDocument'),
);
/**
* 이전 버전에서 등록했던 트리거를 삭제하려면 위와 동일한 문법으로 여기에 선언하면 된다.
* 사용하지 않는 트리거는 삭제해 주는 것이 성능에 도움이 된다.
*/
protected static $_delete_triggers = array(
// array('comment.insertComment', 'after', 'controller', 'triggerAfterInsertComment'),
// array('comment.updateComment', 'after', 'controller', 'triggerAfterUpdateComment'),
// array('comment.deleteComment', 'after', 'controller', 'triggerAfterDeleteComment'),
);
// =========================== 이 부분 아래는 수정하지 않아도 된다 ============================
/**
* 모듈 설정 캐시를 위한 변수.
*/
protected static $_config_cache = null;
/**
* 모듈 설정을 가져오는 함수.
*
* 캐시 처리되기 때문에 ModuleModel을 직접 호출하는 것보다 효율적이다.
* 모듈 내에서 설정을 불러올 때는 반드시 이 함수를 사용하도록 한다.
*
* @return object
*/
public function getConfig()
{
if (self::$_config_cache === null)
{
self::$_config_cache = ModuleModel::getModuleConfig($this->module) ?: new stdClass;
}
return self::$_config_cache;
}
/**
* 모듈 설정을 저장하는 함수.
*
* 설정을 변경할 필요가 있을 때 ModuleController를 직접 호출하지 말고 이 함수를 사용한다.
* getConfig()으로 가져온 설정을 적절히 변경하여 setConfig()으로 다시 저장하는 것이 정석.
*
* @param object $config
* @return object
*/
public function setConfig($config)
{
$oModuleController = ModuleController::getInstance();
$result = $oModuleController->insertModuleConfig($this->module, $config);
if ($result->toBool())
{
self::$_config_cache = $config;
}
return $result;
}
/**
* 트리거 확인 함수.
*
* 위에서 선언한 트리거 목록을 참조하여 자동으로 등록 및 삭제한다.
*
* @return bool
*/
public function checkTriggers()
{
foreach (self::$_insert_triggers as $trigger)
{
if (!ModuleModel::getTrigger($trigger[0], $this->module, $trigger[2], $trigger[3], $trigger[1]))
{
return true;
}
}
foreach (self::$_delete_triggers as $trigger)
{
if (ModuleModel::getTrigger($trigger[0], $this->module, $trigger[2], $trigger[3], $trigger[1]))
{
return true;
}
}
return false;
}
/**
* 트리거 등록 함수.
*
* 위에서 선언한 트리거 목록을 참조하여 자동으로 등록 및 삭제한다.
*
* @return object
*/
public function registerTriggers()
{
$oModuleController = ModuleController::getInstance();
foreach (self::$_insert_triggers as $trigger)
{
if (!ModuleModel::getTrigger($trigger[0], $this->module, $trigger[2], $trigger[3], $trigger[1]))
{
$oModuleController->insertTrigger($trigger[0], $this->module, $trigger[2], $trigger[3], $trigger[1]);
}
}
foreach (self::$_delete_triggers as $trigger)
{
if (ModuleModel::getTrigger($trigger[0], $this->module, $trigger[2], $trigger[3], $trigger[1]))
{
$oModuleController->deleteTrigger($trigger[0], $this->module, $trigger[2], $trigger[3], $trigger[1]);
}
}
return new BaseObject(0, 'success_updated');
}
/**
* 모듈 설치 콜백 함수.
*
* 트리거 등록 외에 따로 할 일이 없다면 수정할 필요 없다.
*
* @return object
*/
public function moduleInstall()
{
return $this->registerTriggers();
}
/**
* 모듈 업데이트 확인 콜백 함수.
*
* 트리거 등록 외에 따로 할 일이 없다면 수정할 필요 없다.
*
* @return bool
*/
public function checkUpdate()
{
return $this->checkTriggers();
}
/**
* 모듈 업데이트 콜백 함수.
*
* 트리거 등록 외에 따로 할 일이 없다면 수정할 필요 없다.
*
* @return object
*/
public function moduleUpdate()
{
return $this->registerTriggers();
}
/**
* 캐시파일 재생성 콜백 함수.
*
* @return void
*/
public function recompileCache()
{
}
}