Compare commits

...

4993 commits

Author SHA1 Message Date
Lastorder-DC
158609ddce fanbinit 12-24 2025-12-24 21:36:28 +09:00
Lastorder
881b0fbac1 Merge remote-tracking branch 'upstream/master' 2025-12-24 03:07:48 +00:00
Kijin Sung
aaf3791a78 Version 2.1.29 2025-12-18 13:40:08 +09:00
Kijin Sung
3f29726e24 Fix warning when update_log_setting attribute is not set 2025-12-18 00:47:43 +09:00
Kijin Sung
620fee05cf Fix duplicate hidden input when a form includes mid or act as a <select> 2025-12-17 21:32:03 +09:00
Kijin Sung
0c018f1daf Update references to deprecated global function checkCSRF() 2025-12-17 18:00:48 +09:00
Kijin Sung
cc17bbe05a Clean up HTML filtering and emoji encoding #2631 2025-12-17 17:53:46 +09:00
Kijin Sung
307661b57b Support methods to load and check CAPTCHA wherever a developer wants 2025-12-17 17:37:03 +09:00
Kijin Sung
01984210b6 Fix board list config not being copied 2025-12-17 17:11:57 +09:00
Kijin Sung
7bbb03d835 Add option to allow spaces in nick_name 2025-12-17 16:59:27 +09:00
Kijin Sung
f3ff338711 Return more information from DB::getColumnInfo() and DB::getIndexInfo() 2025-12-17 16:43:18 +09:00
Kijin Sung
a9045b956d Add methods to enable searching and counting commnets by document_srl AND member_srl #2625 2025-12-17 16:20:47 +09:00
Kijin Sung
42219d4709 Add module_srl and document_srl conditions to some comment-related queries #2625 2025-12-17 16:12:33 +09:00
Kijin Sung
72be83cb3c Fix incorrect comment on getCommentCountByDate() 2025-12-17 16:10:40 +09:00
Kijin Sung
a7b73e1fed Allow use of target_srl in scrapping-related controller actions #2634 2025-12-17 11:58:23 +09:00
Kijin Sung
6c76ab613a Fix insertDocument query error when email_address is null #2620 2025-12-17 11:54:17 +09:00
Kijin Sung
14ad25abd2 Add icons in board list to help identify boards with special features #2623 2025-12-17 11:50:54 +09:00
Kijin Sung
0c8aa306ec Fix incorrect timestamp display when timestamp is zero #2621 2025-12-17 11:32:37 +09:00
Kijin Sung
8e5480674d Exclude functions and closures from scope conversion #2617 2025-11-29 11:50:43 +09:00
Kijin Sung
50dd010e2d Remove empty class and style attributes when compiling template v2 2025-11-29 11:07:15 +09:00
Kijin Sung
cd3af499e8 Fix missing file list when editing a partial section of a widget page
https://rhymix.org/qna/1924307
2025-11-23 23:14:42 +09:00
Kijin Sung
385067b005 Convert outdated <script language="javascript"> to <script> #2615 2025-11-22 21:47:29 +09:00
Kijin Sung
e586552b29 Update PHP install script for unit test, now that PHP 8.5 is official 2025-11-22 21:02:26 +09:00
Kijin Sung
950b1c4074 Don't use imagedestroy() in PHP 8.0 or higher 2025-11-17 09:41:47 +09:00
Kijin Sung
2eaf869eba Improve calculation of GD memory usage to support larger images 2025-11-13 22:18:31 +09:00
Kijin Sung
a8749f1078 Clean up dead code #2612 2025-11-12 21:55:49 +09:00
Kijin Sung
64d9982978 Fix missing message options in admin document manage modal #2610 2025-11-12 21:50:02 +09:00
Kijin Sung
f5389fb964 Add admin/ to cleanup list 2025-11-12 21:43:18 +09:00
Kijin Sung
b9d79949b1 Fix type mismatch when filename argument is missing 2025-11-07 12:57:19 +09:00
Kijin Sung
df3e6b157a Fix uninitialized variable 2025-11-05 11:55:32 +09:00
Kijin Sung
47cb8ca4ff Fix double escape of filename in short download URL #2611 2025-11-05 11:51:56 +09:00
Kijin Sung
d671f0468c Explicitly mark _loadDesktopJSCSS() as public, to ensure backward compatibility 2025-11-05 11:51:07 +09:00
Kijin Sung
0ca46654aa Rename $columnList to $reload_counts in getDocument() 2025-10-30 12:39:37 +09:00
Kijin Sung
30d7912054 Fix inefficient extra_vars loading query 2025-10-29 16:55:15 +09:00
Kijin Sung
af8e510ca2 Clear cache after modifying document_extra_keys table 2025-10-29 10:25:45 +09:00
Kijin Sung
dd2b5aecb3 Version 2.1.28 2025-10-29 10:19:07 +09:00
Lastorder-DC
1c8ae0d766 Merge remote-tracking branch 'upstream/master' into master 2025-10-27 23:09:27 +09:00
Kijin Sung
2a9b336988 Add option to always reencode images #2601 2025-10-25 12:36:18 +09:00
Kijin Sung
e676949669 Allow users to edit existing documents, even if they belong in categories they don't have permission to write in anymore 2025-10-24 17:51:33 +09:00
Kijin Sung
b119578209 Add prefix index on value column of document_extra_vars table 2025-10-24 09:04:18 +09:00
Kijin Sung
f7301b0a22 Prevent warning when NOT sorting by extra var as number 2025-10-23 23:27:18 +09:00
Kijin Sung
77379fe230 Add PHP 8.5 to test matrix 2025-10-23 16:41:50 +09:00
Kijin Sung
bc6eaae544 Remove old Flash-based uploader plugin 2025-10-23 13:42:21 +09:00
Kijin Sung
bef2871ce7 Cleanup related to document_extra_vars 2025-10-23 13:10:21 +09:00
Kijin Sung
2a7eeebcbd Add numeric value column to extra vars, and add option to mark extra var as sortable #2604 #2559 2025-10-23 11:17:24 +09:00
Kijin Sung
978aecd7a8 Support SQL expressions in the "default" attribute of XML query 2025-10-23 10:53:12 +09:00
Kijin Sung
ad293fa4d0 Add empty paragraph after <video> tag in CKEditor 2025-10-22 23:02:15 +09:00
Kijin Sung
e2124ed1c0 Refactor checkCSRF() to use Sec-Fetch-Site and Origin headers
- 최근 브라우저에서 지원하는 헤더를 사용하여 더 정확하게 체크
- Sec-Fetch-Site, Origin 헤더를 지원하지 않는 경우 기존처럼 Referer 체크
- CSRF 토큰은 더이상 기본 방법보다 보안이 더 뛰어나다고 말하기 힘듬
2025-10-22 22:53:45 +09:00
Kijin Sung
f536f0f382 Delete message about point reversion, because it is now customizable per module 2025-10-22 17:56:47 +09:00
Kijin Sung
ee48d4efea Fix inconsistent length of ipaddress column #2605 2025-10-22 17:52:30 +09:00
Kijin Sung
82de42dfc8 Fix invalid widget info shown in server environment page 2025-10-22 15:30:14 +09:00
Kijin Sung
f3494e8a11 Fix failure to convert palette-based PNG to WebP #2608 2025-10-22 15:21:36 +09:00
Kijin Sung
fd0e2a1cc3 Fix missing temp directory when admin resizes image using magick 2025-10-22 15:18:15 +09:00
Lastorder
a5c3dc8ae5
Merge branch 'rhymix:master' into master 2025-10-13 20:09:50 +09:00
Kijin Sung
8671c058d5 Fix incorrect page range when there are not enough pages #2602 2025-09-30 22:45:28 +09:00
Kijin Sung
32c9c91b82 Fix stretching of image on mobile 2025-09-30 22:35:10 +09:00
Kijin Sung
653ca4f697 Add "TABLE" to list of keywords to recognize in addPrefixes() 2025-09-30 22:27:36 +09:00
Kijin Sung
5dcc0f92a4 Fix incorrect request_uri and other JS variables if accessed on an unconfigured domain 2025-09-30 22:16:35 +09:00
Kijin Sung
4869d4384d Remove unnecessary <br> tag from uploader error messages 2025-09-30 22:07:57 +09:00
Kijin Sung
847415f1af Fix warning when domain is not given 2025-09-30 20:49:40 +09:00
Kijin Sung
16b6544f9d Fix null return value when regexp replace fails on invalid input 2025-09-20 11:34:54 +09:00
Kijin Sung
dcd84033cf Set default layout_file depending on the current layout_path 2025-09-18 19:39:37 +09:00
Kijin Sung
61ea93064a Remove deprecated exec_xml() from signup value check function 2025-09-16 20:33:54 +09:00
Kijin Sung
6d25f663b1 Fix double escape of summary in RSS 2025-09-16 14:35:47 +09:00
Kijin Sung
5d52df9c9a Use empty() instead of simple ! to check superglobals 2025-09-16 14:26:34 +09:00
Kijin Sung
146ff27801 Fix error when editing a domain whose index module has been deleted 2025-09-15 00:34:38 +09:00
Kijin Sung
60552ba96b Throw error in filterValue() if an unstringable object is given 2025-09-15 00:30:00 +09:00
Kijin Sung
85be8b7669 Fix fatal error if getUnlinkedMenu() fails during module insert 2025-09-15 00:27:41 +09:00
Kijin Sung
c3102da73f Fix #2600 misplaced decoding line 2025-09-10 07:42:38 +09:00
Kijin Sung
40067c0b53 Support generated columns #2596 2025-09-09 17:18:31 +09:00
Kijin Sung
5e4b48f19b Prevent direct access to cron.php on CLI 2025-09-09 15:30:29 +09:00
Kijin Sung
9734473b49 Initialize $_SESSION to an empty array even in CLI, to prevent spurious warnings later on 2025-09-09 15:25:24 +09:00
Kijin Sung
3c3e510c2e Fix double escaping of document and comment summary 2025-09-09 15:24:54 +09:00
Lastorder
2fd8df9de6
Merge branch 'rhymix:master' into master 2025-09-06 15:48:53 +09:00
Kijin Sung
173bed7c2a Version 2.1.27 2025-09-06 13:45:10 +09:00
Kijin Sung
893b08a742 Clarify message sending options when managing documents 2025-09-06 13:31:00 +09:00
Kijin Sung
87a3256fa0 Fix incorrect method and act 2025-09-06 13:08:04 +09:00
Kijin Sung
0e0f14d8e7 Clean up help text and format of admin_mail 2025-09-05 21:39:26 +09:00
Kijin Sung
0b33bb39e5 Clean up help text 2025-09-05 21:00:59 +09:00
Kijin Sung
4e6591af13 Fix most links pointing to default domain even when unregistered domain action is set to "display" 2025-09-05 18:03:54 +09:00
Kijin Sung
cafddbfc67 Fix undefined variable $layout_info in widget skin 2025-09-05 18:02:55 +09:00
Kijin Sung
c643e80447 Fix implicitly nullable type declarations in SwiftMailer
SwiftMailer는 지원이 종료되었으므로 차기 버전에서 Symfony Mailer로 교체 예정
2025-09-05 15:46:49 +09:00
Kijin Sung
629c2ab73a Don't generate warning if admin_mail setting does not exist 2025-09-04 22:00:20 +09:00
Kijin Sung
7a6400f39d Allow point reversion policies to be customized for each module 2025-09-04 21:47:28 +09:00
Kijin Sung
5f8586ec8f Fix empty values being set to 0 when module point config is modified 2025-09-04 21:31:09 +09:00
Kijin Sung
4a84f52edb Optimize index structure of counter_log table for quick querying when a new visitor arrives 2025-09-04 01:14:43 +09:00
Kijin Sung
9b18c48256 Fix types and sizes in counter module tables 2025-09-04 01:03:37 +09:00
Kijin Sung
fdb19f2e39 Fix broken link to document and comment when module belongs to a different domain 2025-09-04 00:58:56 +09:00
Kijin Sung
87e5a9e32a Delete AI-generated garbage 2025-09-04 00:45:11 +09:00
Kijin Sung
e3fea89dbc Fix broken link in to module in document, comment, file list when module belongs to a different domain 2025-09-04 00:42:54 +09:00
Kijin Sung
ae8a8662b1 Exclude admin actions from redirect based on document_srl 2025-09-03 23:34:29 +09:00
Kijin Sung
f4f81ba258 Fix type error when menu_srl or menu_item_srl does not exist 2025-09-02 23:18:14 +09:00
Kijin Sung
ee13ce551e Fix fatal error when preg_split() fails on a legacy template 2025-09-02 23:18:01 +09:00
Kijin Sung
51762315de Support "if" in <group> inside <groups> #2595 2025-09-01 00:31:20 +09:00
Kijin Sung
386f93fc6c Fix vote_log_view nad update_view display in permission panel in sitemap not showing currently selected groups 2025-09-01 00:23:15 +09:00
Kijin Sung
ba7a91b150 Fix incorrect redirect if a member action is added to a document URL
일부 레거시 스킨에서 글읽기 화면 -> 로그인 화면으로 전환하는 링크를
getUrl('act', 'dispMemberLoginForm') 이렇게 해 놓아서
mid=board&document_srl=123&act=dispMemberLoginForm 이런 형태의 URL이 생성됨.
이런 주소로 접속하면 document_srl을 기준으로 글읽기 화면의 짧은주소로
리다이렉트되는데, 이것은 원래의 의도에 어긋나므로
act를 기준으로 로그인 화면으로 리다이렉트하도록 변경함.
회원가입, 회원정보 보기, 쪽지함 보기 등 회원 메뉴에 소속된 대부분의 act 포함.
2025-09-01 00:05:13 +09:00
Kijin Sung
b79af31d0e Fix domain restriction not being enforced when $document_srl is set 2025-08-31 23:55:17 +09:00
Lastorder
ef9967fc1d
Merge branch 'rhymix:master' into master 2025-08-27 17:08:18 +09:00
Kijin Sung
70e04a1dc5 Fix infamous "내용 값은 필수입니다" in legacy sketchbook skin 2025-08-25 23:55:00 +09:00
Kijin Sung
771dbfe114 Experimental method to clear APC cache from PHP-CLI #2554 #1943 2025-08-24 22:16:39 +09:00
Kijin Sung
e0033ac2fc Add select box to filter by module in document, comment, and file list 2025-08-24 21:35:50 +09:00
Kijin Sung
02c2f343cd Fix grant being reset to "manager only" in menu settings if the default value is "manager" 2025-08-24 21:11:30 +09:00
Kijin Sung
0d03d2a3dd Remove unnecessary information from password reset email #2594 2025-08-22 00:09:35 +09:00
Kijin Sung
6d95dd9fc8 Remove unnecessary logout.html and related XML filter #2593 2025-08-22 00:03:12 +09:00
Kijin Sung
f1b2b4eaec Fix double escape of comment summary 2025-08-21 13:43:14 +09:00
Kijin Sung
23190bd2f5 Remove all use of global variables as debug timers 2025-08-20 00:34:57 +09:00
Kijin Sung
f91bd86fb1 Consolidate a few timers into an array in the Debug class 2025-08-20 00:25:20 +09:00
Kijin Sung
e7d14be6bb Fix inappropriate quoting of "distinct" in XML query
https://rhymix.org/qna/1914711
2025-08-19 00:22:02 +09:00
Kijin Sung
6917a76726 Apply x_full-width to skin and layout config items of type=textarea 2025-08-18 22:29:47 +09:00
Kijin Sung
451d0b95ac Disable all conversion inside verbatim section of template v2 2025-08-18 22:24:48 +09:00
Kijin Sung
f7543e4c9a In template v2, process escape filters before other filters 2025-08-18 22:09:31 +09:00
Kijin Sung
3b2fa4208d Display error count in debug panel for ajax requests 2025-08-13 21:31:17 +09:00
Kijin Sung
4497b68366 Update dependencies 2025-08-13 21:19:10 +09:00
Kijin Sung
fad0bc9153
Merge pull request #2592 from rhymix/dependabot/composer/common/enshrined/svg-sanitize-0.22.0
Bump enshrined/svg-sanitize from 0.21.0 to 0.22.0 in /common
2025-08-13 21:16:48 +09:00
Kijin Sung
08fc4d72d9 Fix incorrect error message when a document/comment is voted/blamed already #2590 2025-08-13 21:15:11 +09:00
Kijin Sung
316cfc43b0 Fix type error if extra_vars does not unserialize into an object #2591 2025-08-13 21:05:31 +09:00
Kijin Sung
b00f956d6b Fix incorrect XML header in some environments 2025-08-13 21:03:03 +09:00
dependabot[bot]
ac90dcf16c
Bump enshrined/svg-sanitize from 0.21.0 to 0.22.0 in /common
Bumps [enshrined/svg-sanitize](https://github.com/darylldoyle/svg-sanitizer) from 0.21.0 to 0.22.0.
- [Release notes](https://github.com/darylldoyle/svg-sanitizer/releases)
- [Commits](https://github.com/darylldoyle/svg-sanitizer/compare/0.21.0...0.22.0)

---
updated-dependencies:
- dependency-name: enshrined/svg-sanitize
  dependency-version: 0.22.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-13 04:52:29 +00:00
Kijin Sung
36d7dcebcd Fix double escaping of title when cut_str() is used on it 2025-08-07 01:32:22 +09:00
Kijin Sung
a0b045b087 Hide countries with no calling code assigned 2025-08-07 01:32:00 +09:00
Kijin Sung
bcf81bce4d Prevent infinite addition of sequence numbers to $_SESSION 2025-08-03 22:33:51 +09:00
Lastorder
0598ae4b95
Merge branch 'rhymix:master' into master 2025-07-28 19:02:10 +09:00
Kijin Sung
3ba27ef156 Version 2.1.26 2025-07-24 11:19:10 +09:00
Kijin Sung
64ca8e775a Fix incorrect prefixing when CTE has an alias #2587 2025-07-23 01:07:25 +09:00
Kijin Sung
393c847cee Fix first line of backtrace missing in query error display 2025-07-22 21:54:22 +09:00
Kijin Sung
d544365399 Display filename and line of user code when Rhymix\Framework\Exception is thrown 2025-07-22 20:55:29 +09:00
Kijin Sung
c213652ccd Fix importer error when processing attachments 2025-07-21 22:19:43 +09:00
Kijin Sung
f00d2800b5 Fix missing type="module" when js files are concatenated #2581 2025-07-21 21:48:25 +09:00
Kijin Sung
a2281edc7a Fix incorrect textarea sizing when lang selector is active 2025-07-21 21:36:00 +09:00
Kijin Sung
796ecec247 Fix incorrect prefixing of CTE names and ON DUPLICATE KEY UPDATE ... #2587 2025-07-21 00:57:47 +09:00
Kijin Sung
8b8758f296
Merge pull request #2586 from Waterticket/admin-colspan-fix
Fix 관리자 페이지에서 th의 colspan을 반영하여 데이터의 colspan을 수정하도록 개선
2025-07-21 00:16:12 +09:00
Kijin Sung
5d7ab9e0b3
Merge pull request #2584 from Lastorder-DC/codex/update-incorrect-translation-strings
영문 주석과 번역의 오타 수정
2025-07-21 00:16:03 +09:00
Waterticket
93f0c10ade Fix: 관리자 페이지에서 th의 colspan을 반영하여 데이터의 colspan을 수정하도록 개선 2025-07-18 03:25:05 +09:00
Lastorder
580588bbdc Fix typos in documentation and translation strings 2025-07-15 01:23:48 +00:00
Lastorder
e15c8f4e52
Merge branch 'rhymix:master' into master 2025-07-15 10:09:11 +09:00
Kijin Sung
9d98e47c53 Try one more time before throwing error on template cache file write 2025-07-12 20:30:15 +09:00
Kijin Sung
4193edde25 Replce array_first_key() with array_key_first(), etc. 2025-07-12 12:24:20 +09:00
Kijin Sung
1c92b1baf5 Use array_key_first() and array_key_last() internally 2025-07-12 12:20:20 +09:00
Kijin Sung
b5a22b2aa8 Prepare for array_first() and array_last() becoming available in PHP 8.5
https://wiki.php.net/rfc/array_first_last
2025-07-12 12:18:45 +09:00
Kijin Sung
901f565a81 Restore backward compatible behavior when an ajax form submission returns both a message and a redirect URL 2025-07-06 17:31:13 +09:00
Kijin Sung
4b26a67ca0 Fix blank screen when editing article page with admin layout #2577 2025-07-06 17:28:10 +09:00
Kijin Sung
bd8de66c78 Fix incorrect category selected by default when editing a document and a default category is set 2025-07-06 17:16:19 +09:00
Kijin Sung
94869286ce Fix missing category_srl in updateDocument return value #2575 2025-07-06 17:06:52 +09:00
Kijin Sung
7ce1f17bea
Merge pull request #2578 from Waterticket/fk-issue
Fix #2576 자신을 참조하는 외래키는 생성 순서에 영향을 주지 않도록 변경
2025-07-06 16:39:28 +09:00
Kijin Sung
b7bb45ca48
Merge pull request #2580 from Waterticket/mx_record_fix
Fix: 한국 MX 레코드 검증시 도메인이 아닌 MX 레코드의 아이피로 검증하도록 수정 #2579
2025-07-06 16:37:41 +09:00
Waterticket
04b24bb0d1 Fix: 한국 MX 레코드 검증시 도메인이 아닌 MX 레코드의 아이피로 검증하도록 수정 2025-07-06 02:49:25 +09:00
Waterticket
108da2eac3 자신을 참조하는 외래키는 생성 순서에 영향을 주지 않도록 변경 #2576 2025-07-04 18:44:01 +09:00
Kijin Sung
ba12e1b3a4 Disable unsafe selections when the default value for a grant is manager 2025-06-28 11:00:51 +09:00
Kijin Sung
a90f991f6c Also apply monospace font to legacy layout edit screen 2025-06-28 10:54:33 +09:00
Kijin Sung
e05e39a32f Apply monospace font to header/footer script textarea for better readability 2025-06-28 10:52:42 +09:00
Kijin Sung
f047e57521 Fix unresizable textarea that isn't x_full-width 2025-06-28 10:39:07 +09:00
Kijin Sung
47e45c4076 Fix type error when module_name is null 2025-06-28 10:33:13 +09:00
Kijin Sung
6df4d38e04 Set permissions properly after copying or moving a custom file 2025-06-28 10:20:16 +09:00
Kijin Sung
9e453fe102
Merge pull request #2574 from Lastorder-DC/patch-1
Fix #2572 포함할 게시판 설정에 mid도 표시
2025-06-28 10:13:27 +09:00
Lastorder-DC
d39d363334 Merge branch 'master' of github.com:Lastorder-DC/rhymix
Some checks failed
PHP Lint & Codeception / PHP 7.4 (push) Has been cancelled
PHP Lint & Codeception / PHP 8.0 (push) Has been cancelled
PHP Lint & Codeception / PHP 8.1 (push) Has been cancelled
PHP Lint & Codeception / PHP 8.2 (push) Has been cancelled
PHP Lint & Codeception / PHP 8.3 (push) Has been cancelled
PHP Lint & Codeception / PHP 8.4 (push) Has been cancelled
2025-06-27 05:35:02 +00:00
Lastorder
b894362419
Merge branch 'rhymix:master' into master 2025-06-27 14:34:35 +09:00
Lastorder-DC
116d27ee40 yeokbox 2025-06-27 05:32:25 +00:00
Lastorder
a46217eb7e
Fix #2572 Also show mid at Include Boards setting 2025-06-27 14:28:55 +09:00
Kijin Sung
cbf9cb8ccc Improve backward compatibility with old widgets 2025-06-21 08:29:05 +09:00
Kijin Sung
4eebbf36b5 Fix undefined key when unload() is called with invalid args 2025-06-21 08:28:46 +09:00
Kijin Sung
6e06f72e3a Version 2.1.25 2025-06-20 09:53:30 +09:00
Kijin Sung
10677c1945
Merge pull request #2570 from kijin/pr/async-ajax
Rhymix.ajax()에서 callback 방식과 Promise 방식을 동시 지원 #2565
2025-06-19 23:51:06 +09:00
Kijin Sung
cea2370520 Always stop after calling the error callback function, regardless of whether it returns false 2025-06-19 23:47:06 +09:00
Kijin Sung
47ac592b33 Set default permission to 'member' for vote log and update log view 2025-06-19 23:27:47 +09:00
Kijin Sung
57d3006492 Don't hide guest option even if default permission is 'member' 2025-06-19 23:27:04 +09:00
Kijin Sung
64efb20f2b Fix incorrect defaults shown in module grant screen 2025-06-19 23:20:23 +09:00
Kijin Sung
fcf679e750 Fix incorrect display of default permissions in sitemap 2025-06-19 23:05:56 +09:00
Kijin Sung
d3606c07db Fix iframe closed too early in Safari #2571 2025-06-19 22:59:20 +09:00
Kijin Sung
614ed353d1 Fix potentially undefined variables in message.view.php 2025-06-19 18:35:57 +09:00
Kijin Sung
dfdb3386d6 Ensure that a promise is always either fulfilled or rejected, even when callback_error prevents error from being shown 2025-06-19 00:35:09 +09:00
Kijin Sung
87980cd35c Add support for passing URL to Rhymix.ajax() 2025-06-19 00:07:56 +09:00
Kijin Sung
bb86fc2fe2 Accommodate copilot suggestions for common.js 2025-06-18 19:22:21 +09:00
Kijin Sung
083abbeacd Fix inconsistent unhandledrejection behavior when polyfill is used 2025-06-18 18:54:07 +09:00
Kijin Sung
87e34246f2 Add polyfill for FormData 2025-06-18 18:51:02 +09:00
Kijin Sung
2b62780b90 Miscellaneous fixes to Rhymix.ajax() handling 2025-06-18 16:55:43 +09:00
Kijin Sung
213b354891 Update parameter names of Rhymix.ajaxForm() for consistency with Rhymix.ajax() 2025-06-18 02:09:10 +09:00
Kijin Sung
f09cce5d1a Allow redirects to be canceled by Promise.then() after AJAX call 2025-06-18 01:36:46 +09:00
Kijin Sung
2c5b3e072f Consolidate callback version and Promise version of Rhymix.ajax() 2025-06-18 01:31:52 +09:00
Kijin Sung
f64a15d971 Merge branch 'master' into pr/async-ajax 2025-06-17 21:24:07 +09:00
Kijin Sung
52a1178528 Add local cache for widget and widgetstyle info 2025-06-17 21:22:14 +09:00
Kijin Sung
69a27d7835 Ensure that all widget variables always exist #2564 2025-06-17 21:15:37 +09:00
Kijin Sung
34840508f7 Fix warnings in widget editor and support default values in info.xml 2025-06-17 18:45:16 +09:00
Kijin Sung
18b0e28a76 Revert "Fix incorrect pattern due to template syntax"
This reverts commit ad6aeb4c00.
2025-06-17 17:16:25 +09:00
Kijin Sung
dd4d4fe979 Treat pattern attribute of form elements as JS context in Template v2 2025-06-17 17:15:49 +09:00
Kijin Sung
170aab3ca8 Fix exposure of menu items that should be visible only to non-members 2025-06-17 17:08:16 +09:00
Kijin Sung
eaa0aee988 Update file count after copying document or comment with its files #2569 2025-06-17 13:37:26 +09:00
Kijin Sung
5e9cf872e7 Fix incorrect permission check when check_var is set but mid is not 2025-06-16 23:36:32 +09:00
Kijin Sung
ad6aeb4c00 Fix incorrect pattern due to template syntax 2025-06-16 10:22:13 +09:00
Kijin Sung
0ea9778682 Add script to support <input type="text" inputmode="numeric"> 2025-06-15 01:33:35 +09:00
Kijin Sung
d7fb2422fe Clean up extravar support script for upload type 2025-06-15 01:28:45 +09:00
Kijin Sung
3ac26150d5 Fix error when adding a new extra var 2025-06-14 16:36:03 +09:00
Kijin Sung
f29080bb62 Disable autocomplete and autocapitalize for password extravar input 2025-06-14 16:35:46 +09:00
Kijin Sung
c855440893 Change number extravar input to <input type="text" inputmode="numeric"> 2025-06-14 16:29:41 +09:00
Kijin Sung
20f6703f79 Revert "Call Rhymix.ajax() in procFilter()"
Don't call new function from legacy function

This reverts commit 64f0ffbd91.
2025-06-14 15:53:43 +09:00
Kijin Sung
388091ed82 Fix incorrect migration of is_def() from previous version 2025-06-14 13:52:14 +09:00
Kijin Sung
3c44f96f63 Fix empty procDocumentAddCart request (2.1.24 regression) #2568 2025-06-14 13:49:48 +09:00
Kijin Sung
b15fc8deb3 Fix not_member granted menu showing up as group restricted 2025-06-14 12:19:42 +09:00
Kijin Sung
c949e797b0 Separate default value from options in member extra vars, too 2025-06-14 12:16:31 +09:00
Kijin Sung
82feb232f6 WIP 2025-06-13 17:31:44 +09:00
Kijin Sung
dc21fc3007 Add polyfill for Promise (yes, we still support IE11) 2025-06-13 16:54:06 +09:00
Kijin Sung
5cb4a00113 Remove unncessary async keyword 2025-06-13 16:44:58 +09:00
Kijin Sung
2bac2744a5 Convert Rhymix.ajax() into async function 2025-06-12 21:25:59 +09:00
Kijin Sung
4b2cc8c9cf Improve backward compatibility with legacy default values for extra vars 2025-06-12 21:01:42 +09:00
Kijin Sung
7ffe499a66 Fix multiple default values being shown on extravar edit screen 2025-06-12 20:30:09 +09:00
Kijin Sung
4c609f9827 Version 2.1.24 2025-06-10 11:50:57 +09:00
Kijin Sung
e3eaa7d9a7 Also apply #2562 fix to comment.item.php 2025-06-08 23:41:53 +09:00
Kijin Sung
85e583a111 Remove duplicate meta viewport tag
https://rhymix.org/tip/1909080
2025-06-08 23:38:41 +09:00
Kijin Sung
ab55d8f724 Fix string * float error when height is auto #2562 2025-06-08 23:29:45 +09:00
Lastorder
2871f4e14b
Merge branch 'rhymix:master' into master
Some checks failed
PHP Lint & Codeception / PHP 7.4 (push) Has been cancelled
PHP Lint & Codeception / PHP 8.0 (push) Has been cancelled
PHP Lint & Codeception / PHP 8.1 (push) Has been cancelled
PHP Lint & Codeception / PHP 8.2 (push) Has been cancelled
PHP Lint & Codeception / PHP 8.3 (push) Has been cancelled
PHP Lint & Codeception / PHP 8.4 (push) Has been cancelled
2025-06-07 22:09:53 +09:00
Kijin Sung
8410e0ef14 Cleanup #2561 2025-06-05 12:29:11 +09:00
Kijin Sung
e6dd789cd3 Fix missing window.XE for backward compatibility #2561 2025-06-04 23:51:42 +09:00
Lastorder
f48c90a363
Merge branch 'rhymix:master' into master
Some checks failed
PHP Lint & Codeception / PHP 7.4 (push) Has been cancelled
PHP Lint & Codeception / PHP 8.0 (push) Has been cancelled
PHP Lint & Codeception / PHP 8.1 (push) Has been cancelled
PHP Lint & Codeception / PHP 8.2 (push) Has been cancelled
PHP Lint & Codeception / PHP 8.3 (push) Has been cancelled
PHP Lint & Codeception / PHP 8.4 (push) Has been cancelled
2025-06-04 22:46:21 +09:00
Kijin Sung
007ea76774 Fix type hints 2025-06-03 23:00:52 +09:00
Kijin Sung
d0ba53407c Remove remaining parameters named targetIe 2025-06-03 15:37:23 +09:00
Kijin Sung
0e5797882f Support passing a single array to Context::gets() 2025-06-03 15:27:21 +09:00
Kijin Sung
202c0172b3 Adjust types and visibility settings of some methods 2025-06-03 15:24:18 +09:00
Kijin Sung
e54c50e39f Support custom delimiter in Context::addBrowserTitle() and Context::prependBrowserTitle() 2025-06-03 12:14:33 +09:00
Kijin Sung
a2160d8787 Remove unused method parameters 2025-06-03 11:17:37 +09:00
Kijin Sung
f4a686ce47 Fix comment about nullable return type 2025-06-03 11:17:18 +09:00
Kijin Sung
e3f08ef322 Fix broken unit test 2025-06-02 22:44:57 +09:00
Kijin Sung
e2af4512e0 Fix missing or incorrect doc comments, type declarations, etc. 2025-06-02 22:33:04 +09:00
Lastorder
7fec210203
Merge branch 'rhymix:master' into master
Some checks failed
PHP Lint & Codeception / PHP 7.4 (push) Has been cancelled
PHP Lint & Codeception / PHP 8.0 (push) Has been cancelled
PHP Lint & Codeception / PHP 8.1 (push) Has been cancelled
PHP Lint & Codeception / PHP 8.2 (push) Has been cancelled
PHP Lint & Codeception / PHP 8.3 (push) Has been cancelled
PHP Lint & Codeception / PHP 8.4 (push) Has been cancelled
2025-06-02 21:32:36 +09:00
Kijin Sung
6624ba21df Round border widths to compensate for fractional devicePixelRatio
https://rhymix.org/qna/1908627
https://rhymix.org/qna/1634120
2025-06-01 18:55:07 +09:00
Kijin Sung
32cde33701 Fix warning when image info doesn't contain channels 2025-06-01 18:54:37 +09:00
Kijin Sung
eba7b75c3a Fix undefined values and other warnings 2025-06-01 18:45:46 +09:00
Kijin Sung
702eebaa92 Fix undefined values in various modules 2025-06-01 17:58:00 +09:00
Kijin Sung
28de1335a7 Fix null defaults in extravar skin 2025-06-01 17:36:51 +09:00
Kijin Sung
936e1931c0 Ensure that all board config variables are available on all config screens #2433 2025-06-01 17:32:07 +09:00
Kijin Sung
967f67ec99 Fix various warnings in board configuration submenus 2025-06-01 15:51:02 +09:00
Kijin Sung
eb76f9d8bb Fix missing configuration items in file module config 2025-06-01 15:41:22 +09:00
Kijin Sung
b849c597bc Reimplement skin XML parser 2025-06-01 15:28:37 +09:00
Kijin Sung
07e3298eb1 Reimplement layout XML parser using modern alternatives 2025-06-01 02:35:15 +09:00
Kijin Sung
f556e5e3fa Add more XE-era files and directories to cleanup list 2025-05-31 12:27:18 +09:00
Kijin Sung
f9d93450aa Remove unnecessary files 2025-05-31 12:15:56 +09:00
Kijin Sung
7f6553fd47 Add more detailed note about editor_mid 2025-05-30 17:24:30 +09:00
Kijin Sung
6e325526c8 Add notnull property to <group> tag in conditions 2025-05-29 23:08:05 +09:00
Kijin Sung
fda92b368d Show error when unique index creation fails 2025-05-29 22:27:55 +09:00
Kijin Sung
4632a10a31 Show helpful error when unique_mid index creation fails, and remove unnecessary idx_mid index 2025-05-29 22:24:47 +09:00
Kijin Sung
2df0474a06 Fix category color not being updated when set to empty value 2025-05-29 09:47:10 +09:00
Kijin Sung
0501671271 Add underscores to some internal methods to mark them as private 2025-05-27 01:13:39 +09:00
Kijin Sung
e80b0d4570 Remove duplicate CSRF token from AJAX requests 2025-05-27 01:03:05 +09:00
Kijin Sung
2830632a93 Remove reliance on XeXmlParser in admin module 2025-05-26 22:59:57 +09:00
Kijin Sung
da584bb40c Clean up references to WidgetModel and others 2025-05-26 22:54:35 +09:00
Kijin Sung
14dbac7890 Clean up non-static method calls in Widget module 2025-05-26 22:49:29 +09:00
Kijin Sung
810be0710b
Merge pull request #2558 from mmx900/fix-hidden-attribute-bootstrap5
Bootstrap 4+ 환경에서 위젯페이지 버튼, 게시판 설정 도움말이 표시되지 않는 문제 수정
2025-05-26 22:07:35 +09:00
Kijin Sung
59bb9c1043 Submit raw JSON in Rhymix.ajax() 2025-05-26 22:05:26 +09:00
Lastorder
cb1fd188ef
Merge branch 'rhymix:master' into master 2025-05-26 06:58:12 +09:00
Soyu Kim
e933ab18bd fix: replace '[hidden]' with '.x_hide' for Bootstrap 5 compatibility 2025-05-25 21:45:59 +09:00
Kijin Sung
a339d88a2e Don't set X-AJAX-Compat header when a request is made from Rhymix.ajax() 2025-05-25 16:47:17 +09:00
Kijin Sung
1568cb3790 Add Rhymix.getBaseUrl() and remove internal cache variable "baseurl" 2025-05-25 16:29:39 +09:00
Kijin Sung
341df211ee Add missing deprecated mark 2025-05-25 00:13:50 +09:00
Soyu Kim
bef1b19caf
fix: replace .show() with removeAttr('hidden') for Bootstrap 5 compatibility 2025-05-24 20:47:32 +09:00
Kijin Sung
0be03f216f Fix setting lang codes directly to xe object, not xe.lang 2025-05-23 20:51:36 +09:00
Kijin Sung
dbd46edcc2 Add client-side Rhymix.lang() to get or set lang codes 2025-05-23 20:33:04 +09:00
Kijin Sung
bb95f24617 Fix TypeError in page.view.php if an array is passed in the URL 2025-05-23 20:26:24 +09:00
Kijin Sung
f99102ca33 Clean up handling of table schemas that are marked as deleted in XML 2025-05-23 15:31:02 +09:00
Kijin Sung
14cb0e7977 Make the reordering handle easier to grab 2025-05-23 15:29:51 +09:00
Kijin Sung
e5ea2e5a6d Relabel var_idx after reordering extra keys 2025-05-23 15:19:03 +09:00
Kijin Sung
4155f9fe9c Consolidate queries 2025-05-23 15:16:36 +09:00
Kijin Sung
8291cd671e Remove double extensions from filenames #2556 2025-05-22 23:10:19 +09:00
Kijin Sung
464985b1ef Disable external entity loading unconditionally #2556 2025-05-22 22:58:28 +09:00
Kijin Sung
2af43ee6a7 Remove md5 from list of acceptable hashes in unit test 2025-05-22 22:48:42 +09:00
Kijin Sung
6a29c54e78 Default to best supported password algorithm, although we never fell back to MD5 anyway #2556 2025-05-22 22:44:48 +09:00
Kijin Sung
3c0048d4ba Apply FilenameFilter::clean() to all uploaded files, even if not passed to procFileUpload() #2556 2025-05-22 22:22:08 +09:00
Kijin Sung
8e85abf97e Clean up some admin scripts 2025-05-22 21:35:44 +09:00
Kijin Sung
a1e5a51b06 Allow reordering extra keys with drag and drop #2526 2025-05-22 21:20:59 +09:00
Kijin Sung
82fa67be5b Fix missing function getEditorSkinColorList() 2025-05-22 20:08:47 +09:00
Kijin Sung
b5e9cd9343 Display required level in "Not permitted" error message ##2548 2025-05-22 13:36:23 +09:00
Kijin Sung
bb4cd62e31 Return different "Not permitted" error message depending on what is required #2548 2025-05-22 13:20:48 +09:00
Kijin Sung
7cba835065 Optimize Permission management logic 2025-05-22 12:38:17 +09:00
Kijin Sung
4916a589aa Support not_member permission in module.xml #2499 2025-05-22 00:59:21 +09:00
Kijin Sung
8e151d7cfa Add not_member option to grant selection #2499 2025-05-22 00:52:48 +09:00
Kijin Sung
c89af17410 Store all grant-related information in Permission class 2025-05-21 23:00:29 +09:00
Kijin Sung
d97eb36bbd Add search by regdate #2545 2025-05-21 20:38:57 +09:00
Kijin Sung
bacf067f87 Implement graceful shutdown for background task runner #2451 2025-05-21 19:04:45 +09:00
Kijin Sung
8014413163 Implement high and low priority for queued tasks #2453 2025-05-21 18:33:19 +09:00
Kijin Sung
9ca2f79dce Move all CLI scripts except common.cron to the "scripts" directory under the corresponding module 2025-05-21 18:07:04 +09:00
Kijin Sung
792ea89e64 Fix incorrect image extension "N" after upgrading from older version 2025-05-21 16:26:01 +09:00
Kijin Sung
3fb9d0acaa Fix incorrect short URL for POST requests made by Rhymix.ajax() 2025-05-21 15:07:15 +09:00
Kijin Sung
3c741ec8bc Remove inconsistently applied short URL patterns
https://rhymix.org/qna/1907191
2025-05-21 14:47:17 +09:00
Kijin Sung
ad02de4f93 Remove unnecessary attributes from iframe modals 2025-05-21 14:38:33 +09:00
Kijin Sung
b229738808 Clean up editable preview handling code 2025-05-21 14:37:18 +09:00
Kijin Sung
d6da245166 Remove outdated JS unit tests 2025-05-21 14:21:08 +09:00
Kijin Sung
51983aad8f Restore default success callback of ajaxForm() so that successful messages are printed 2025-05-21 14:19:43 +09:00
Kijin Sung
7e53bef104 Call Rhymix.ajax() in doCallModuleAction() 2025-05-21 14:19:10 +09:00
Kijin Sung
64f0ffbd91 Call Rhymix.ajax() in procFilter() 2025-05-21 14:15:20 +09:00
Kijin Sung
a0606dcf60 Move Rhymix.ajaxForm() to common.js 2025-05-21 14:12:10 +09:00
Kijin Sung
94b4c1bd2b Fix error when Validator tries to load a directory 2025-05-21 14:07:52 +09:00
Kijin Sung
0f554c6d51 Consoliate all debug-related variables under the Rhymix object 2025-05-21 14:07:34 +09:00
Kijin Sung
3d64c26232 Remove window.rhymix_debug_pending_data 2025-05-21 13:58:39 +09:00
Kijin Sung
a778c46afa Reorder event handlers defined at document.ready 2025-05-21 13:56:21 +09:00
Kijin Sung
e7fbeee414 Update rx_ajax to use Rhymix.ajax() underneath 2025-05-21 13:49:31 +09:00
Kijin Sung
688c9ea87c Implement Rhymix.ajax() 2025-05-21 13:36:32 +09:00
Kijin Sung
0915863ba9 Complete reorganization of common.js 2025-05-21 00:50:48 +09:00
Kijin Sung
c546af7bf5 Also handle modal layers of any kind 2025-05-20 18:01:39 +09:00
Kijin Sung
5bddaa1bd3 Rename openFullscreenIframe() to openModalIframe() and handle the back button properly 2025-05-20 17:58:21 +09:00
Kijin Sung
e60bbb7e7c Remove unused variables 2025-05-20 17:40:04 +09:00
Kijin Sung
24c8f4bd06 Remove MSIE-specific polyfill 2025-05-20 17:39:24 +09:00
Kijin Sung
6a46c39851 Improve fullscreen iframe handling 2025-05-20 17:38:50 +09:00
Kijin Sung
954ebf6caa Automaticallly fill default values if addon is turned on without saving config 2025-05-20 13:28:33 +09:00
Kijin Sung
32fa327eb6 Fix undefined variable warnings 2025-05-19 23:57:29 +09:00
Kijin Sung
66e040b3f9 Use RulesetParser instead of XeXmlParser in Validator 2025-05-19 23:52:08 +09:00
Kijin Sung
a77b9a5d3a Implement RulesetParser 2025-05-19 22:44:32 +09:00
Kijin Sung
ba638c394d Replace all remaining reference to XeXmlParser in ttimport.class.php 2025-05-19 21:54:09 +09:00
Kijin Sung
ec6ade4e26 Replace all remaining use of XE XML Parser with SimpleXML in widget module 2025-05-19 21:50:16 +09:00
Kijin Sung
278369b70e Replace widget and widgetstyle XML parsing and caching logic 2025-05-19 21:38:58 +09:00
Kijin Sung
6727b124cd Always initialize extra_vars attribute 2025-05-19 21:29:25 +09:00
Kijin Sung
86118dbf50 Update XML parsers for more backward compatibility 2025-05-19 20:56:22 +09:00
Kijin Sung
3f6dbf847d Remove references to old XeXmlParser in widget module 2025-05-18 22:04:18 +09:00
Kijin Sung
170e183f8f Remove references to old XeXmlParser in most modules 2025-05-18 22:00:09 +09:00
Kijin Sung
a3d682a294 Rewrite addon info.xml parser and support default values 2025-05-18 21:42:36 +09:00
Kijin Sung
addf4d9972 Fix incorrect type hints 2025-05-17 23:46:58 +09:00
Kijin Sung
8c87d9ee1d Allow dynamic properties in XEXMLParser 2025-05-17 13:06:54 +09:00
Kijin Sung
e0ba5aa5b6 Prevent undefined property errors in XEXMLParser use cases 2025-05-17 13:02:29 +09:00
Kijin Sung
bfa8ea5ddc Fix undefined property access in Validator class 2025-05-17 12:58:31 +09:00
Kijin Sung
52f106968a Add unit test for XEXMLParser 2025-05-17 12:54:47 +09:00
Kijin Sung
db72b670d8 Replace XE XML parser with new implementation based on SimpleXML 2025-05-17 12:44:04 +09:00
Kijin Sung
a1f452fa83 Fix missing extra vars when document cache is cleared in the middle of a script #2553 2025-05-15 20:11:49 +09:00
Lastorder
0739f82c49
Merge branch 'rhymix:master' into master 2025-05-14 18:42:06 +09:00
Kijin Sung
1d558204d1 Also apply iframe solution to dispCommentDeclare etc. 2025-05-14 02:43:04 +09:00
Kijin Sung
bd3e642d37 Also apply iframe solution to dispDocumentDeclare 2025-05-14 02:37:17 +09:00
Kijin Sung
d1d278719c Also apply iframe solution to dispTempSavedList 2025-05-14 02:32:23 +09:00
Kijin Sung
7157181726 Consolidate popup/iframe handling code in common areas 2025-05-14 02:13:04 +09:00
Kijin Sung
262560ce04 Add close buttons to all editor component popups, in case they are used in an iframe 2025-05-14 01:10:27 +09:00
Kijin Sung
f6313d44d9 Use iframe instead of popup window to display editor components in mobile 2025-05-14 01:09:59 +09:00
Kijin Sung
833cf111bd Enable editor components in mobile CKEditor 2025-05-14 00:41:28 +09:00
Kijin Sung
5a867a3a8b Add overflow-wrap: anywhere to .rhymix_content to prevent excessively long words from breaking layout 2025-05-14 00:24:19 +09:00
Kijin Sung
f55609eac8 Add syndication module to blacklist 2025-05-14 00:23:54 +09:00
Kijin Sung
a1ae74837f Fix incorrect return type when HTTP::download() cannot write to target file or parent directory 2025-05-12 12:25:52 +09:00
Kijin Sung
087f5a2265 Fix import error when email address is empty or invalid 2025-05-11 22:57:38 +09:00
Kijin Sung
2ddf5aa8d8 Update unit tests to cover situations like #2550 2025-05-11 13:47:47 +09:00
Kijin Sung
b46e51acb1 Fix outdated codeception config directive 2025-05-11 13:47:14 +09:00
Kijin Sung
b249df71b6 Fix #2550 incorrect handling of absolute URLs in imported SCSS files 2025-05-11 13:46:44 +09:00
Kijin Sung
80729f2aaf Fix undefined extra_vars in importer module 2025-05-11 01:10:41 +09:00
Kijin Sung
a7f32afb21 Normalize whitespace 2025-05-11 01:10:30 +09:00
Kijin Sung
18cf4e7c0a Add origin module_srl to $oDocument in dispBoardWrite 2025-05-06 12:56:09 +09:00
Lastorder
d327bb1926
Merge branch 'rhymix:master' into master 2025-05-02 17:07:35 +09:00
Kijin Sung
b09477a873 Fix incorrect extension when old file module config is used without updating 2025-05-02 11:30:35 +09:00
Kijin Sung
e2040b881d Version 2.1.23 2025-04-30 09:50:07 +09:00
Kijin Sung
197295ba43 Improve filtering of user layout image filename 2025-04-29 23:56:02 +09:00
Kijin Sung
b77fcb747d Fix missing default value when extravar is not migrated from previous version 2025-04-29 23:39:15 +09:00
Kijin
67c0066f90 Allow page skin to contain content_modify.blade.php or content_modify.html #2500 2025-04-28 22:04:50 +09:00
Kijin
cac3ec1165 Fix potentially erroneous response size in debug output #2546 2025-04-28 21:46:45 +09:00
Kijin Sung
24e90e43fa
Merge pull request #2538 from dewekk/fix-signup-config-1
가입 폼 순서 변경 시 하위 필드 값 초기화 문제 수정
2025-04-28 21:42:02 +09:00
Kijin Sung
0a3fa5c77b Prevent unnecessary length calculation if minlength/maxlength are not set 2025-04-16 12:06:57 +09:00
Kijin Sung
a6fbf6e2e5 Fix unfilled sprintf code in msg_user_not_confirmed
https://rhymix.org/qna/1905384
2025-03-31 23:06:07 +09:00
Kijin Sung
fc2bdd7253 Make _v2_escape() more lenient about types 2025-03-31 15:14:58 +09:00
Kijin Sung
ba74b47a29 Fix matching of partial attribute names #2537 2025-03-31 01:11:51 +09:00
dewekk
b94b16d081
가입 폼 이동 시 하위 input id, name 속성 제거
가입 폼 이동 시 복제되는 input의 id, name 속성을 제거하여, 중복을 방지합니다.
2025-03-30 14:13:02 +09:00
Kijin Sung
f613841a1b Version 2.1.22 2025-03-27 16:40:40 +09:00
Kijin Sung
b4098ce804 Separate widget cache by lang type 2025-03-27 11:02:46 +09:00
Kijin Sung
efaeda640d Fix widget cache for all assets loaded from all types of templates
https://rhymix.org/community/1905161
2025-03-27 10:58:48 +09:00
Kijin Sung
5ccd4f68d9 Use FrontEndFileHandler as a singleton 2025-03-27 10:46:09 +09:00
Kijin Sung
df1c365872 Enable logging in FrontEndFileHandler 2025-03-27 10:28:13 +09:00
Kijin Sung
f019236976 Fix undefined variable #2534 2025-03-25 21:11:18 +09:00
Kijin Sung
1be734edc1 Clean up procBoardRevertDocument #2515 2025-03-25 19:46:50 +09:00
Kijin Sung
b9014efb9d Fix condition for displaying update log button in xedition skin #2488 2025-03-25 19:36:55 +09:00
Kijin Sung
0b0b8f58a3 Remove unnecessary method overload 2025-03-23 20:58:47 +09:00
Kijin Sung
3003c31189 Update copyright notice #2436 2025-03-23 20:58:28 +09:00
Kijin Sung
6ead6ae434 Increase length of password columns for document and comment tables #2530 2025-03-23 20:50:48 +09:00
Kijin Sung
e0aaad0d0a
Merge pull request #2531 from kijin/pr/template-v2-fixes
템플릿 v2 문법 일부 변경
2025-03-23 20:49:12 +09:00
Kijin Sung
e192bc0ff6 Add widget directive for Template v2 2025-03-20 14:01:56 +09:00
Kijin Sung
3e052d2d00 Improve detection of template v1-style syntax in CSS/JS contexts 2025-03-19 12:44:17 +09:00
Kijin Sung
04a7734b2e Add unit test for contextual escape 2025-03-19 11:23:56 +09:00
Kijin Sung
d7cf825a7d Use regular escape() for CSS contexts 2025-03-19 11:23:42 +09:00
Kijin Sung
01f34781df Don't parse template v1 syntax (single braces) in CSS/JS context 2025-03-19 00:42:01 +09:00
Kijin Sung
49f57980dd Add unit test for inline styles in template v2 2025-03-19 00:16:08 +09:00
Kijin Sung
0bc3635b6c Update unit tests for improved contextual escape 2025-03-19 00:12:57 +09:00
Kijin Sung
9689a1ed68 Implement better contextual escape for template v2 2025-03-19 00:12:39 +09:00
Kijin Sung
baadb36e37 Improve escape_css() to accept most common CSS expressions 2025-03-18 23:53:06 +09:00
Kijin Sung
62eb6b2aae Add more context switches for inline scripts and styles 2025-03-18 23:17:42 +09:00
Kijin Sung
800eb2f444 Change behavior of \@mobile directive in template v2 #2510 2025-03-18 22:51:22 +09:00
Kijin Sung
82195c3e14 #2527 보완: 유닛 테스트 추가 2025-03-18 22:38:07 +09:00
Kijin Sung
2c05d3f0c7 #2527 보완: \n 뒤에 공백 남을 수 있는 문제 수정 2025-03-18 22:37:51 +09:00
Kijin Sung
ec8003003c
Merge pull request #2527 from dewekk/fix-spaces2
utf8_normalize_spaces() 함수에서 공백 문자 추가 제거
2025-03-18 22:32:49 +09:00
dewekk
2276110b0f
utf8_normalize_spaces 함수에서 불필요한 공백 문자 추가 제거 2025-03-14 09:46:10 +09:00
Kijin Sung
3f553d4d9c Hide vote/blame log if respective setting is disabled #2523 2025-03-14 01:37:51 +09:00
Kijin Sung
bb3ea5c9aa Fix overlapping pagination links #2521 2025-03-14 01:22:32 +09:00
Kijin Sung
fd103ba67d Fix #2522 browser titles for member pages not following admin template 2025-03-13 23:21:33 +09:00
Kijin Sung
beec50f217 Prevent files from being deleted upon module deletion if they belong to documents or comments that have since been moved to a different module 2025-03-13 22:57:38 +09:00
Kijin Sung
b213fc1968 Fix module_srl not being updated for files attached to comments, when a document is moved to a different module 2025-03-13 22:38:05 +09:00
Lastorder
a40502885e
Merge branch 'rhymix:master' into master 2025-03-10 17:04:17 +09:00
Kijin Sung
f6a9d49db1 Add browser title for most items on the member menu 2025-03-09 20:41:13 +09:00
Kijin Sung
e072ba0391 Fix missing default mobile skin when a board is added in the menu #2510 2025-03-09 20:19:45 +09:00
Kijin Sung
fb1486ed1e Make layout header script textarea full-width #2516 2025-03-09 20:08:20 +09:00
Kijin Sung
3aa0d38a67 Make SEO info, header/footer text, and some other fields full width #2516 2025-03-09 20:06:28 +09:00
Kijin Sung
f980ea58c6 Improve description of mobile view setting, and hide mobile settings if mobile view is disabled #2510 2025-03-08 23:18:11 +09:00
Kijin Sung
b6c444c536 Add $sync parameter to send() method of Mail, SMS and Push classes #2402 2025-03-08 20:50:18 +09:00
Kijin Sung
7e9dd8f297 Move consultation setting above anonymous setting
관련없는 설정 사이에 끼어 있는 상담글 설정을 익명 설정 위로 이동
2025-03-08 19:14:50 +09:00
Kijin Sung
daf14d8e3e General reorganization of dispBoardContentList
- 상담글, 검색 목록 수 설정이 getDocumentPage 이후에 설정되어
  하단목록에 잘못된 페이지가 나올 수 있는 문제 수정
- 서로 연관된 조건은 동시에 처리
- 전반적 코드 품질 및 가독성 개선
2025-03-08 19:10:47 +09:00
Kijin Sung
59448bcfb1 Fix #2519 okay, let's fficially support comma-separated categories 2025-03-08 18:52:47 +09:00
Kijin Sung
5d1c6dd59a Make category_srl and document_srl nullable again #2519 2025-03-08 18:43:58 +09:00
Kijin Sung
ea1e0ef624 Enforce types of commonly used variables in board 2025-03-08 15:09:00 +09:00
Kijin Sung
18d1ace121 Enforce that values passed to urlencode() are strings 2025-03-08 15:08:42 +09:00
Kijin Sung
f33c52b20f Cast to string before verifying untrusted input 2025-03-08 14:57:24 +09:00
Kijin Sung
641bb89a9d Use typecast instead of trim, because these vars should already be trimmed 2025-03-08 14:52:01 +09:00
Kijin Sung
609e16fd62 Don't allow arrays in mid, vid, act, module parameters 2025-03-08 14:49:32 +09:00
Kijin Sung
445f760856 Merge remote-tracking branch 'master' 2025-03-08 14:48:55 +09:00
Kijin Sung
d53290861b Always define cache key 2025-03-08 14:47:25 +09:00
Kijin Sung
83a42081fa Fix fatal error when some important variables contain non-scalar values 2025-03-08 14:29:25 +09:00
Kijin Sung
7fce9fcc39 Fix fatal error when "lang" URL parameter is given on an external page 2025-03-08 14:07:44 +09:00
Kijin Sung
9429c7fbc8 Don't even touch point cache file if system-wide cache is enabled 2025-03-06 23:42:39 +09:00
Lastorder
81d91f2f83
Merge branch 'rhymix:master' into master 2025-03-06 21:57:47 +09:00
Kijin Sung
400d3bcec4 Fix implicitly nullable parameters in last version of scssphp that supports PHP 7.4 2025-03-05 20:37:01 +09:00
Kijin Sung
b5823e97e4 Update HTMLPurifier, Guzzle and scssphp 2025-03-05 20:32:15 +09:00
Kijin Sung
074873d844 Fix deprecation warning in PHP 8.4 2025-03-05 20:24:09 +09:00
Kijin Sung
823b83b3da Change menu description input to textarea #2506 2025-03-05 19:01:31 +09:00
Kijin Sung
6cc9511243 Simplify check for mbstring #2507 2025-03-05 18:53:50 +09:00
Kijin Sung
6aac58eddb Fix repeated variable in condition #2511 2025-03-05 18:52:54 +09:00
Kijin Sung
d615a42d7f Fix unresolved lang code in page edit screen #2512 2025-03-05 18:52:04 +09:00
Kijin Sung
fed2af3d13 Fix fatal error in CLI scripts in PHP 8.4 #2513 2025-03-05 18:48:38 +09:00
Lastorder
e5b729f8e9
Merge branch 'rhymix:master' into master 2025-03-03 10:47:47 +09:00
Hatsan
7786e2c44f just joke 2025-03-03 01:47:21 +00:00
Kijin Sung
5656189a19 Fix warnings in PHP 8.x 2025-03-01 16:33:06 +09:00
Kijin Sung
5e6b3483e2 Increase reCAPTCHA and Turnstile timeouts 2025-03-01 15:57:18 +09:00
Kijin Sung
187157cfcd Fix warning that E_STRICT is deprecated in PHP 8.4 2025-03-01 15:56:17 +09:00
Kijin Sung
bbd33e53ca Fix fatal error when parent comment is not defined 2025-03-01 12:07:24 +09:00
Kijin Sung
7fe2523f0e Use simple, hidden toolbar on mobile for sending messages, even if mobile view setting is off 2025-02-28 18:03:52 +09:00
Kijin Sung
c5e13d3cf7 Fix member module config and mid config out of sync #2496 2025-02-19 18:14:00 +09:00
Kijin Sung
9e41e9d6cd Version 2.1.21 2025-02-18 11:25:20 +09:00
Kijin Sung
5f5cd81f1b Merge branch 'security/rve-2025-1' 2025-02-18 11:23:19 +09:00
Kijin Sung
ecef7326f9 Add notice about SSO being removed soon 2025-02-17 22:08:01 +09:00
Kijin Sung
f4e5a0f21c Fix type error when referer is null #2493 2025-02-17 22:05:24 +09:00
Kijin Sung
97762fa43d Fix incorrect relative path in concatenated files #2492 2025-02-17 20:57:27 +09:00
Kijin Sung
d3dcb03a01 Prepend layout header script for backward compatibility 2025-02-17 20:10:09 +09:00
Kijin Sung
7d8c09750b Add option to prepend header/footer to existing content 2025-02-17 20:09:51 +09:00
Kijin Sung
a66b036dd5 Limit SMS verification attempts to 10 at a time #2480 2025-02-16 16:00:03 +09:00
Kijin Sung
2b8656eaf0 Add unit tests for RVE-2025-1 2025-02-16 14:55:50 +09:00
Kijin Sung
a208e0dbbc Fix RVE-2025-1 potential SQL injection via third-party program 2025-02-16 14:55:40 +09:00
Kijin Sung
ae0e13eca9 Add unit tests for if="var" support in XML query 2025-02-15 22:42:11 +09:00
Kijin Sung
658a28dfd8 Support "if" attribute in navigation elements of XML query 2025-02-15 22:32:42 +09:00
Kijin Sung
fd0491cb0d Reorder return values of VariableBase::getValue() so that the value can be quickly accessed 2025-02-15 22:25:25 +09:00
Kijin Sung
0d14aca1c0 Add unit test for type="module" and fix broken tests 2025-02-15 22:13:35 +09:00
Kijin Sung
5b575f9c30 Support type="module" for JS files loaded from template v2 #2482 2025-02-15 22:04:50 +09:00
Kijin Sung
4bf4aca762 Hide extra vars with no value #2486 2025-02-15 21:49:36 +09:00
Kijin Sung
7d6565766a Hide unnecessary fields in extravar config screen #2486 2025-02-15 21:43:27 +09:00
Kijin Sung
65918f67ea Fix incorrect checkbox handling in document_category.js #2486 2025-02-15 21:31:23 +09:00
Kijin Sung
ef751041dd Fix incorrect header script if member module uses its own layout #2474 2025-02-15 21:24:06 +09:00
Kijin Sung
a478127c61 Fix duplicate phone_number field in signup and modify pages #2472 2025-02-15 21:08:23 +09:00
Kijin Sung
5b22e22543 Hide identifier from non-admin member form #2472 2025-02-15 21:04:10 +09:00
Kijin Sung
2fe39a37dd Remove special treatment for identifierForm in admin insert_member template #2472 2025-02-15 21:00:38 +09:00
Kijin Sung
9c4212ddc3 Clean up admin insert_member form 2025-02-15 20:47:54 +09:00
Kijin Sung
a5b9e11831 Fix no autologin after signup if phone number is the only available identifier #2485 2025-02-14 21:14:58 +09:00
Kijin Sung
b5a16dad5e Show edit button for users who have modify permissions on an article page #2458 2025-02-14 21:05:08 +09:00
Kijin Sung
3fd2fad70e Clean up article page edit method #2458 2025-02-14 20:59:30 +09:00
Kijin Sung
63e2e9c681 Fix manager group not being given any scopes 2025-02-14 20:45:18 +09:00
Kijin Sung
08d6db7657 Don't convert Cloudflare IP if CF-Worker header is set 2025-02-13 22:43:46 +09:00
Kijin Sung
00db2ab402 Fix broken emoji and other HTML entities when using cut_str()
https://xetown.com/questions/1855257
2025-02-13 22:39:13 +09:00
Kijin Sung
651fa56c4f Add close button to document manage popup #2478 2025-02-13 22:32:18 +09:00
Kijin Sung
1aac6f8a41 Allow space in user name #2466 2025-02-13 22:19:22 +09:00
Kijin Sung
eccc337d44 Remove ogv from list of directly playable video formats #2469 2025-02-13 22:08:28 +09:00
Kijin Sung
8eb306e472 Make SMS auth codes expire after 10 minutes #2480 2025-02-13 22:05:43 +09:00
Kijin Sung
939c5d8160 Fix no admin mail if author is anonymous
https://xetown.com/questions/1858634
2025-02-13 21:43:55 +09:00
Kijin Sung
bcc11f253a Fix type error when category_srl contains an array 2025-02-10 17:27:50 +09:00
Kijin Sung
d7f2201905 Fix unit test for external media #2476 2025-02-07 18:02:08 +09:00
Kijin Sung
f5c1d095c9 Fix unit test for external media #2476 2025-02-07 17:59:40 +09:00
Kijin Sung
a43d77c153
Merge pull request #2476 from mAKEkr/mAKEkr-patch-2
Update common/defaults/whitelist.php
2025-02-07 17:59:10 +09:00
Jinhu Baek
d583f3620b
Update whitelist.php
공식 제공 embed 서비스들만 추가
2025-02-05 15:02:31 +09:00
Jinhu Baek
c44af2fac9
Update whitelist.php
typo fix
2025-01-30 22:28:19 +09:00
Jinhu Baek
2cb47d45fc
Update whitelist.php
폐쇄/지원되지 않는 서비스들 삭제, 공식적으로 embed를 지원하며 일부 규모가 있는 서비스 위주로 추가
2025-01-30 22:22:03 +09:00
Kijin Sung
ff499c56e6
Merge pull request #2471 from dewekk/fix-load-v2
템플릿 v2에서 load 지시자의 변수가 잘못 전달되는 문제 수정
2025-01-16 12:57:55 +09:00
dewekk
be64c9f5da
템플릿 v2에서 load 지시자의 변수가 잘못 전달되는 문제 수정 2025-01-15 20:59:12 +09:00
Kijin Sung
e9b035b423 Fix implicitly nullable argument 2025-01-13 21:18:46 +09:00
Kijin Sung
94e6efc6bf Display as "Deleted Domain" if a module belongs to a deleted domain #2463 2025-01-09 20:06:56 +09:00
Kijin Sung
4919ba7281 Add warning about disabling direct download of multimedia files 2025-01-09 19:52:47 +09:00
Kijin Sung
eceadd827a Change misleading config name about unregistered domains 2025-01-09 19:51:06 +09:00
Kijin Sung
c17243e02a Include in file list even if upload_target_type is null 2025-01-09 19:49:48 +09:00
Kijin Sung
42b879d628 Throw exception instead of just exiting 2025-01-02 20:17:51 +09:00
Min-Soo Kim
a3cc3a9781
Update Rhymix English Language Translations
Update Language Files of:
- Common Language File
- Addon Module
- Admin Module
- AutoInstall Module
- Board Module
- Comment Module
- Communication Module
- Document Module
- Editor Module
- File Module
- Korean Postal Code Module
- Notification Center Module
- Point Module
- Poll Module
- RSS Module
- Tag Module
- Recycle Bin Module
- AdminLogging Addon
- PhotoSwipe Addon
- XEdition Layout
- Content Widget
- ncenter_login Widget
- mcontent Widget
2024-12-31 10:41:06 -05:00
Kijin Sung
0e9c44387c Fix double escape of lang code in member group title #2459 2024-12-30 15:57:36 +09:00
Kijin Sung
19e8c367ac Add module_srl to dummy document so that a correct Editor will show up 2024-12-30 15:57:17 +09:00
Min-Soo Kim
adcaa5e6dd
알림센터 모듈의 영어 추가 번역 및 수정
1. 알림센터 모듈에서 영어 번역이 되어 있지 않은 항목을 추가 번역했습니다.
2. 원어민은 아니지만, 알림센터 모듈의 영어 중에 약간 어색하게 읽히는 문장을 살짝 수정했습니다.

- 단순 번역이고, 여러번 코드를 확인했을 때 별 문제가 없어보여서 머지 합니다.
2024-12-28 14:12:32 -05:00
Kijin Sung
9c68cb4e74 Check for existence of more functions before installation 2024-12-19 22:33:11 +09:00
Kijin Sung
ca99ca7f04 Version 2.1.20 2024-12-18 17:28:19 +09:00
Kijin Sung
31ae52164c
Merge pull request #2449 from kijin/pr/manual-image-conversion
이미지 포맷 변환 기능 강화
2024-12-17 20:49:36 +09:00
Kijin Sung
b52ae2f214
Merge pull request #2450 from dewekk/fix-file-count
확장변수 파일 등록 후 문서 수정 시 파일 처리 문제 수정
2024-12-17 20:49:22 +09:00
dewekk
dda4d8fbf9
문서 파일 목록에서 확장변수 파일 제외 2024-12-17 15:07:22 +09:00
dewekk
612fa92835
문서 파일 개수에서 확장변수 파일 개수 제외 2024-12-17 14:53:25 +09:00
Kijin Sung
10cb1b2e20 Use raw query and prepared statement to update document count 2024-12-16 22:49:20 +09:00
Kijin Sung
03de7d6392 Add button to recalculate the document count of categories 2024-12-16 21:52:26 +09:00
Kijin Sung
d27f89f730 Add option to convert to WebP when resizing oversized images 2024-12-16 20:47:48 +09:00
Kijin Sung
9f75788491 Support more options for image autoconv 2024-12-16 20:43:09 +09:00
Kijin Sung
7f8f303787 Display image size and video duration in file list 2024-12-16 20:04:28 +09:00
Kijin Sung
c60847d38a Record file changelog when admin resizes image manually 2024-12-16 20:00:50 +09:00
Kijin Sung
a806c0f0f7 Display more helpful message after image conversion 2024-12-16 01:57:59 +09:00
Kijin Sung
84acc21817 Add manual image conversion for admin 2024-12-16 01:50:44 +09:00
Kijin Sung
818fd54b00 Add mime_type, width, height, duration to all file-related responses 2024-12-15 18:39:05 +09:00
Kijin Sung
b66b31e8e7 Merge branch 'pr/scheduled-tasks' 2024-12-15 00:17:57 +09:00
Kijin Sung
8c5f96f8c5 Fix incorrect Content-Type in JSON callback responses #2448 2024-12-15 00:16:57 +09:00
Kijin Sung
4d5fac5d77 Fix exposed lang code in group names 2024-12-14 23:56:16 +09:00
Kijin Sung
78229aa944 Fix exposed lang code in editor module group list #2447 2024-12-14 23:53:19 +09:00
Kijin Sung
0748d0ebd5 Load user config after system config, providing an opportunity to manipulate system config before Rhymix takes any other action 2024-12-13 01:21:36 +09:00
Kijin Sung
d6dca30e0f Emit warning if an XML query returns 10000+ rows, probably because of missing condition 2024-12-13 01:20:45 +09:00
Kijin Sung
746afdacb3 Fix queue config interfering with unit tests 2024-12-12 21:37:53 +09:00
Kijin Sung
eebd9a0005 Modify current queue config for unit testing 2024-12-12 21:31:31 +09:00
Kijin Sung
50974a325e Add unit tests for scheduled tasks 2024-12-12 21:28:43 +09:00
Kijin Sung
90fd5502ce Fix parsing of intervals containing day of week and/or leading zero 2024-12-12 21:28:31 +09:00
Kijin Sung
924c98bf4e Decode args and options in getScheduledTask() 2024-12-12 21:06:38 +09:00
Kijin Sung
5ff2f15485 Add methods to manage scheduled tasks 2024-12-12 11:25:29 +09:00
Kijin Sung
caf882fed0 Delete unnecessary methods from dummy queue driver 2024-12-12 11:18:50 +09:00
Kijin Sung
a2cdd3d897 Update unit tests for dummy queue driver 2024-12-12 01:58:05 +09:00
Kijin Sung
b21b700570 Add placeholder methods to dummy queue driver 2024-12-12 01:56:21 +09:00
Kijin Sung
ffeb9133ab Update first_run timestamp of tasks run at an interval 2024-12-12 01:55:59 +09:00
Kijin Sung
f87429687a Assign task_srl to scheduled tasks 2024-12-12 01:49:38 +09:00
Kijin Sung
53cd6e807d Implement scheduled tasks 2024-12-12 00:49:18 +09:00
Kijin Sung
2f0ec84cc2 General cleanup of nonstandard syntax in board module classes 2024-12-10 23:02:42 +09:00
Kijin Sung
3f08dd1de2 General cleanup of nonstandard syntax in board.view.php 2024-12-10 22:59:59 +09:00
Kijin Sung
19919cf722 Clean up default values in board.class.php 2024-12-10 22:55:01 +09:00
Kijin Sung
351d2a452a Clean up unnecessary constructor 2024-12-10 22:50:55 +09:00
Kijin Sung
0d6fe46281 Clean up unnecessary board module uninstall method 2024-12-10 22:50:11 +09:00
Kijin Sung
ff727e3604 Clean up unnecessary dense code 2024-12-10 22:48:30 +09:00
Kijin Sung
955f4b0e29 Fix double escaping in ncenterlite summary/content #2445 2024-12-10 22:37:51 +09:00
Kijin Sung
4be2d59b69 Always return BaseObject in Value::validate() #2444 2024-12-10 22:34:16 +09:00
Kijin Sung
5a107c58fc
Merge pull request #2444 from dewekk/fix-extra-file
확장변수 파일 삭제 불가 문제 수정
2024-12-10 22:32:15 +09:00
dewekk
5502df5b81
확장변수 파일 삭제 불가 문제 수정
Call to a member function toBool() on null
2024-12-10 13:37:57 +09:00
Kijin Sung
6e5ee53ea3 Fix shortcut menu not selected when it is a URL link to an internal page #2439 2024-12-08 22:18:26 +09:00
Kijin Sung
27fb793080 Add "Select" option at top of extravar select element
https://xetown.com/tips/1847057
2024-12-08 22:03:58 +09:00
Kijin Sung
33c1d9a117 Fix missing category list if main board has no categories but included boards have categories #2437 2024-12-07 22:15:02 +09:00
Kijin Sung
7539d18c60 Fix ncenterlite config not saved when all types of notifications are unchecked #2443 2024-12-07 22:03:54 +09:00
Kijin Sung
6a93e0c12d Fix excessive session data after accessing and voting on many documents and comments 2024-12-07 21:55:14 +09:00
Kijin Sung
8f20339549 Fix type error when BoardModel::getListConfig() is called with invalid parameter 2024-12-07 21:46:50 +09:00
Kijin Sung
1bfe3740ff Clean up admin notification email format
https://xetown.com/questions/1847092
2024-12-05 01:28:52 +09:00
Kijin Sung
9e99acd8e6 Fix lang code in group list not recognized in group editing screen 2024-12-05 01:21:55 +09:00
Kijin Sung
c098b4d055 Don't set proxy for Guzzle if proxy config doesn't comtain valid host and port 2024-12-05 01:16:37 +09:00
Kijin Sung
0c815fc27b Fix incorrect return type of utf8_trim() if input string contains invalid UTF-8 sequence 2024-12-04 15:59:16 +09:00
Kijin Sung
3a322cdfce Fix warning in content widget if tab_type is null 2024-12-02 15:27:06 +09:00
Lastorder
42a0848a31
Merge branch 'rhymix:master' into master 2024-12-01 08:19:13 +09:00
Kijin Sung
6184797b22 Add PHP 8.4 to test matrix, and reorganize github CI configuration 2024-11-30 18:02:01 +09:00
Kijin Sung
ab242e9ebf When logging out, remove device_key cookie if present #2434 2024-11-30 17:15:13 +09:00
Lastorder
8ab45033e7
move wrong compare 2024-11-22 10:07:44 +09:00
Lastorder
f85acb1783
add option to hide default options 2024-11-22 10:05:12 +09:00
Lastorder
8c2c7178ea
debug 2024-11-22 09:52:08 +09:00
Lastorder
53bef2d341
search for [HIDE] 2024-11-22 09:50:11 +09:00
Lastorder
f9cf23a7dd
oops 2024-11-22 09:48:18 +09:00
Lastorder
06863a216d
apply at simple skin 2024-11-22 09:46:15 +09:00
Lastorder
3fdcefc092
add <HIDE> tag to hide default values 2024-11-22 09:45:39 +09:00
Lastorder
7ab8fb0564
revert temp changes 2024-11-22 09:43:50 +09:00
Lastorder
0fd0e336a0
TEMP: allow one option 2024-11-22 09:40:10 +09:00
Lastorder
690ba43271
TEMP: allow delete all options 2024-11-22 09:31:27 +09:00
Lastorder
710f20ab33
TEMP: allow empty poll if add item is on 2024-11-22 09:28:54 +09:00
Lastorder
6e84829da4
Merge branch 'rhymix:master' into develop 2024-11-22 09:24:12 +09:00
Kijin Sung
87573ef8e4 Highlight warning about merged board permissions #2437 2024-11-21 23:07:24 +09:00
Kijin Sung
3449705ae8
Merge pull request #2435 from dewekk/fix-manager
모듈 관리자 권한 문제 수정
2024-11-21 23:05:19 +09:00
dewekk
697eb5d909
불필요한 권한 설정 삭제
문서 관리 권한이 없음에도 모든 모듈 관리자의 isGranted() 값이 true로 지정되는 문제
2024-11-20 19:53:27 +09:00
dewekk
b6ba2cf685
모듈 관리자가 확장변수를 삭제 할 수 없는 문제 수정 2024-11-20 19:23:13 +09:00
Kijin Sung
d3b3dc7b0e Improve compatibility with old DB versions that can't take current_timestamp() as a default value for DATETIME column 2024-11-20 14:03:22 +09:00
Kijin Sung
84e57ff876 Update minimum PHP version in README 2024-11-19 00:52:51 +09:00
Kijin Sung
f7038ebde5 Remove PHP 7.2 and 7.3 from test matrix 2024-11-19 00:04:02 +09:00
Kijin Sung
7e142722d4 Remove polyfill for is_countable() 2024-11-19 00:00:45 +09:00
Kijin Sung
b2051f9934 Remove condition for PHP < 7.3 2024-11-18 23:59:02 +09:00
Kijin Sung
d5796b6f9d Fix #2273 change minimum PHP version to 7.4 2024-11-18 23:57:23 +09:00
Kijin Sung
a8016bd05c Version 2.1.19 2024-11-18 11:29:24 +09:00
Kijin Sung
28cc1fe113 Remove document context menu from default mobile skin, too #2415 2024-11-17 23:35:01 +09:00
Kijin Sung
f35ffad766 Call opcache_reset() after recreating cache files 2024-11-17 22:24:57 +09:00
Kijin Sung
8d1429b286 Always check filesystem case sensitivity in Linux 2024-11-17 22:23:15 +09:00
Kijin Sung
b6fc630f4a Use RX_WINDOWS consistently 2024-11-17 22:22:54 +09:00
Kijin Sung
7ffb1c50fc Define RX_WINDOWS based on PHP_OS_FAMILY 2024-11-17 22:18:38 +09:00
Kijin Sung
b3a311488b Fix #2432 untranslated group name 2024-11-17 21:59:26 +09:00
Kijin Sung
fe6625bfbb Allow selecting which actions to block if the user's IP is listed in spamfilter #2423 2024-11-17 21:32:26 +09:00
Kijin Sung
a04dc1270f Make all spamfilter model methods static 2024-11-17 20:58:59 +09:00
Kijin Sung
a90f444182 Block voting and reporting from spam IP #2423 2024-11-17 20:43:43 +09:00
Kijin Sung
737fc40b66 Add option to control handling of comments in spamfilter keyword #2429 2024-11-17 18:06:33 +09:00
Kijin Sung
5c654c94b7 Delete unnecessary init() method in adminloggingController 2024-11-16 22:38:39 +09:00
Kijin Sung
25564913b8 Record member_srl in admin_log table, and change request_vars format to JSON #2421 2024-11-16 22:36:37 +09:00
Kijin Sung
e61723ce5c Add member_srl column and reorder columns in admin_log table #2421 2024-11-16 22:32:56 +09:00
Kijin Sung
e4a100c896 Fix #2420 display module_srl in board and page list 2024-11-16 17:20:50 +09:00
Kijin Sung
ad76223531 Fix #2425 open admin board link in new tab 2024-11-16 17:17:58 +09:00
Kijin Sung
7517d94113 Fix #2430 remove meaningless constructor in member.class.php 2024-11-16 17:16:12 +09:00
Kijin Sung
41d33837f2 Fix #2431 undefined properties 2024-11-16 17:04:40 +09:00
Kijin Sung
b3b3fa73a4
Merge pull request #2416 from kijin/pr/manager-scopes
모듈 관리자 권한 세분화
2024-11-16 16:57:22 +09:00
Kijin Sung
7503223d26 Merge branch 'master' into pr/manager-scopes 2024-11-16 16:54:54 +09:00
Kijin Sung
cfa6d761aa Improve detection of invalid FCM tokens 2024-11-10 14:46:42 +09:00
Kijin Sung
70625171ca Keep content text in separate variable before decoding 2024-11-10 14:46:30 +09:00
Kijin Sung
4f00389484 Exclude extravar module from server env page 2024-11-05 20:12:36 +09:00
Kijin Sung
2620049b4e Merge branch 'master' into pr/manager-scopes 2024-10-27 23:09:40 +09:00
Kijin Sung
76bb57ad80 Move some meta tags back above the <title>
원칙적으로 순서는 관계가 없으나, description이 title보다 먼저 나와야 한다고
주장하는 변태들이 있으므로 빌미를 주지 않기 위해 상단으로 다시 옮김.
2024-10-27 23:07:23 +09:00
Kijin Sung
e6bd94855e Remove double escape of meta tag content 2024-10-27 23:01:07 +09:00
Kijin Sung
9c92ad1f05 Remove X-UA-Compatible meta tag in all browsers except IE 11 2024-10-27 22:59:12 +09:00
Kijin Sung
bf0093b56a Move most meta tags above the <title> to below it #2419 2024-10-27 22:50:02 +09:00
Kijin Sung
bf3d920a1d Improve crontab instructions for queue 2024-10-27 22:32:58 +09:00
Kijin Sung
8049d5a8c9 Use absolute path of the php executable in crontab example 2024-10-27 22:25:41 +09:00
Kijin Sung
a23308b728 Use proxy setting when making outgoing HTTP requests 2024-10-27 17:07:18 +09:00
Kijin Sung
ccf8806bb4 Add outgoing proxy setting 2024-10-27 17:05:10 +09:00
Kijin Sung
14c18ceb70 Merge remote-tracking branch master 2024-10-26 16:52:49 +09:00
Kijin Sung
4ebaa6b0cb Display errors and OK message in webcron result page 2024-10-26 16:50:14 +09:00
Kijin Sung
e8c03318e4 Close session before webcron processing 2024-10-26 16:40:31 +09:00
Kijin Sung
faf218c0ef
Merge pull request #2422 from mAKEkr/master
Apistore SMS 드라이버 삭제
2024-10-25 02:34:03 +09:00
Kijin Sung
c7d7cdda8b Remove APISTORE from unit tests 2024-10-25 02:21:55 +09:00
Kijin Sung
62ce762b4a Fix #2422 remove APISTORE SMS API 2024-10-25 02:20:37 +09:00
Jin Hu, Baek
f859b70537 delete ApiStore SMS Driver
Apistore.co.kr service terminated in Nov, 2022
2024-10-25 02:05:29 +09:00
Kijin Sung
8473eeabc3 Fix serialization error when sending email by SMTP in background task
https://xetown.com/questions/1842571
2024-10-25 01:46:46 +09:00
Lastorder
64e61593e1
Update turnstile.php 2024-10-19 10:06:52 +09:00
Lastorder
be7bb0b7be
Update Security.php 2024-10-19 10:06:21 +09:00
Lastorder
af21a9fb8a
Merge branch 'rhymix:master' into develop 2024-10-19 10:03:03 +09:00
Lastorder
715f71c41b
Update turnstile.php 2024-10-19 10:02:44 +09:00
Lastorder
da51d62e3d
Update Security.php 2024-10-19 09:59:56 +09:00
Kijin Sung
9e1772285a Try Ubuntu 24.04 for github CI 2024-10-19 01:55:10 +09:00
Kijin Sung
64b0d97fbb Add module.getModuleAdminScopes (after) event 2024-10-17 21:45:17 +09:00
Kijin Sung
a2e5434aec Support manager scopes in Template v2 "can" directive 2024-10-14 23:42:53 +09:00
Kijin Sung
8d8380a366 Apply manager scopes to Document and Comment isGranted() 2024-10-14 23:42:28 +09:00
Kijin Sung
8c6beff859 Apply manager scopes to commonly used modules 2024-10-14 23:42:06 +09:00
Kijin Sung
008a15bcd5 Use admin scopes to check manager privileges 2024-10-14 23:41:33 +09:00
Kijin Sung
b17c58f17f Implement admin scopes 2024-10-14 23:40:58 +09:00
Kijin Sung
ec6ac82ebd Remove unnecessary debugging code 2024-10-14 23:34:16 +09:00
Kijin Sung
1eb24871a0 Remove display_popupmenu config variable from page module default skins #2415 2024-10-14 23:21:15 +09:00
Kijin Sung
1e49a6aae0 Fix #2415 remove popup menu from document page content 2024-10-14 23:11:25 +09:00
Kijin Sung
75e9473724 Fix incompatibility with MySQL 8.0 2024-10-14 23:06:16 +09:00
Kijin Sung
4ec0b85270 Version 2.1.18 2024-10-14 09:30:20 +09:00
Kijin Sung
da74c46ba4 Remove duplicate check for $_SERVER['HTTPS'] emptiness 2024-10-14 01:11:02 +09:00
Kijin Sung
4849489d45 Don't display password input form when trying to edit a member's post 2024-10-13 20:42:53 +09:00
Lastorder
88b5281094
Merge branch 'rhymix:develop' into develop 2024-10-12 16:08:02 +09:00
Kijin Sung
ded0cd484d Add link to GPL help page in the official manual 2024-10-12 01:41:05 +09:00
Kijin Sung
e39c3bedd1
Merge pull request #2414 from kijin/pr/queue
비동기 처리를 위한 간단한 Queue 기능 #2402
2024-10-12 01:39:00 +09:00
Kijin Sung
36af489b15 Validate queue driver configuration before saving 2024-10-12 01:35:13 +09:00
Kijin Sung
0ee9747a22 Use SELECT ... FOR UPDATE to guard against race conditions in DB queue driver 2024-10-12 01:22:04 +09:00
Kijin Sung
f1eee10791 Remove unnecessary "lock" column from task_queue table 2024-10-12 01:21:43 +09:00
Kijin Sung
29837bdf4c Fix return type of QueueInterface::getInstance() 2024-10-11 23:38:29 +09:00
Kijin Sung
4b0b485a13 Add basic unit tests for Queue class using Dummy driver 2024-10-11 23:19:53 +09:00
Kijin Sung
5936ec9e8d Fix #2413 include module title in RSS config screen 2024-10-11 22:18:06 +09:00
Kijin Sung
b4e7d4aaad Integrate Push with Queue 2024-10-10 23:54:53 +09:00
Kijin Sung
a1abf5016f Integrate Mail and SMS with Queue 2024-10-10 23:46:25 +09:00
Kijin Sung
f6a458f648 Add RXQUEUE_CRON constant to distinguish when cron is running 2024-10-10 23:43:04 +09:00
Kijin Sung
0fd3b42885 Fill in error messages related to Queue configuration 2024-10-10 23:30:54 +09:00
Kijin Sung
61b9f57196 Implement multiprocessing, and try to make webcron more resilient 2024-10-10 23:22:42 +09:00
Kijin Sung
097cecece8 Add code samples to Queue config screen 2024-10-10 23:04:35 +09:00
Kijin Sung
d4cd5e3d75 Add notice and process count to Queue config screen 2024-10-10 09:43:41 +09:00
Kijin Sung
a2a1f3bcc6 Implement admin config screen for Queue 2024-10-10 01:45:14 +09:00
Kijin Sung
d8370ff59b Add dummy driver, clean up loose ends and start writing admin page 2024-10-10 00:07:35 +09:00
Kijin Sung
09fa4778c0 Add DB queue driver 2024-10-09 23:12:55 +09:00
Kijin Sung
78bbc2ffa5 Initial structure of Queue system, with Redis driver 2024-10-09 22:59:08 +09:00
Kijin Sung
574e89b028 Fix #2337 mark related notifications as read if a comment page is loaded 2024-10-09 20:21:38 +09:00
Kijin Sung
47afd4848b Add optional $page parameter to DocumentItem->getComments() 2024-10-09 20:11:03 +09:00
Kijin Sung
1326a5e507 Fix misleading argument description 2024-10-09 20:04:21 +09:00
Kijin Sung
ba6e6e0490 Simplify FormData detection in exec_json() 2024-10-09 19:59:33 +09:00
Kijin Sung
b598083a8c Replace rx_ajax iframe form submission with proper AJAX using FormData 2024-10-09 17:21:38 +09:00
Kijin Sung
206521a352
Merge pull request #2412 from kijin/pr/extra-vars
확장변수 기능 강화 (파일 업로드 지원 등)
2024-10-09 17:00:05 +09:00
Kijin Sung
96fc153b82 Hide comment reply button if max thread depth is reached 2024-10-09 16:49:25 +09:00
Kijin Sung
a4e9eb4a00 Add option to limit the maximum thread depth of comments 2024-10-09 16:45:36 +09:00
Kijin Sung
81d9f46098 Move help text below consultation checkbox 2024-10-09 16:18:45 +09:00
Kijin Sung
1a489a3f1c Add option to restrict excessively large data: URLs in inline images, enabled by default, 64KB by default 2024-10-09 16:13:17 +09:00
Kijin Sung
44608bbe90 Fix incorrect encoding of filenames with single quotes 2024-10-09 15:37:22 +09:00
Kijin Sung
0a92627c8a Show/hide vote and history buttons according to board settings #2399 2024-10-09 14:28:58 +09:00
Kijin Sung
559239dee0 Add board features class #2399 2024-10-09 14:27:16 +09:00
Kijin Sung
102df52ef4 Remove file upload type from member extra vars 2024-10-09 11:54:32 +09:00
Kijin Sung
a6d9f84147 Fix minor issues with backward compatibility 2024-10-09 11:50:38 +09:00
Kijin Sung
0a4216fa3f Preserve options of all extra var types 2024-10-09 11:39:24 +09:00
Kijin Sung
3ffeb63afb Enforce allowed filesize and type in extra var upload form 2024-10-09 11:36:14 +09:00
Kijin Sung
7fe2203cbd Change file delete checkbox to button 2024-10-09 02:46:48 +09:00
Kijin Sung
453f83db7d Fix error message when leaving current file unchanged in extra vars 2024-10-09 02:36:28 +09:00
Kijin Sung
65d68eec6d Fix incorrect download URL for files attached to extra vars 2024-10-09 02:12:19 +09:00
Kijin Sung
b0f582a4da Show proper link in admin list for files uploaded to extra vars 2024-10-09 01:59:11 +09:00
Kijin Sung
52c573fdba Skip extra var validation if manually inserted/updated 2024-10-09 01:47:21 +09:00
Kijin Sung
d0f0d7205d Improve backward compatibility with legacy |@| encoding 2024-10-09 00:34:20 +09:00
Kijin Sung
460736c04d Prepare forward compatibility for JSON-encoded extra vars 2024-10-09 00:28:59 +09:00
Kijin Sung
0398b64350 Display uploaded file name and link in extra vars section 2024-10-09 00:07:48 +09:00
Kijin Sung
50274a7f9b Support file upload in extra vars 2024-10-09 00:03:16 +09:00
Kijin Sung
d45c116c56 Patch exec_json() and related functions to support file uploads 2024-10-08 23:25:03 +09:00
Kijin Sung
0a625662f7 Add file upload type of extra vars 2024-10-08 23:15:45 +09:00
Kijin Sung
373c563469 Fix #1467 show default value for url and email extra vars 2024-10-08 22:29:04 +09:00
Kijin Sung
1a05fc97ae Fix #1631 add number type to extra vars 2024-10-08 22:26:27 +09:00
Kijin Sung
3de4f786b7 Fix whitespace 2024-10-08 22:18:58 +09:00
Kijin Sung
b438666ea7 Validate required and strict extra vars on document insert and update 2024-10-08 22:17:00 +09:00
Kijin Sung
f81c296a90 Fix #1467 allow default value in textarea extra vars 2024-10-08 21:59:57 +09:00
Kijin Sung
d237d9aabb Fix error when $selected_var is null 2024-10-08 21:59:28 +09:00
Kijin Sung
782df3a42e Implement options and default value in select/checkbox/radio extra vars 2024-10-08 21:57:59 +09:00
Kijin Sung
db4103b732 Implement is_strict and options fields 2024-10-08 21:46:56 +09:00
Kijin Sung
8fd72747fc Add is_strict and options columns to document_extra_keys table 2024-10-08 21:08:09 +09:00
Kijin Sung
8540140f51 Fix missing debug info when COUNT(*) query fails 2024-10-08 17:36:23 +09:00
Kijin Sung
b318e70fdf Allow calling setFilesValid() with specific list of file_srl 2024-10-08 15:26:43 +09:00
Kijin Sung
2ecb12430e Add file_srl condition to updateFileValid query 2024-10-08 15:25:10 +09:00
Kijin Sung
a4cfad0f03 Change <br> to proper LF character in login error message 2024-10-08 12:58:13 +09:00
Kijin Sung
4194021a04 Try Ubuntu 22.04 for Github CI 2024-10-07 22:53:11 +09:00
Kijin Sung
290ee1b0e8 Fix 404 when there is a slash after the document URL (XE allowed this) 2024-10-07 22:40:25 +09:00
Kijin Sung
6c07ce75e6 Make upload_target_type hint compatible with old 3-letter shortcuts 2024-10-07 22:38:53 +09:00
Kijin Sung
798733cf11 Fix incorrect type in doc comment 2024-10-07 22:36:43 +09:00
Kijin Sung
ef0ef45303 Allow filtering file list by upload target type 2024-10-07 22:35:50 +09:00
Kijin Sung
c0ddc46f46 Remove unnecessary object juggling in recordLoginError() 2024-10-07 22:24:22 +09:00
Kijin Sung
59115fd028 Prevent member_count_history from becoming too large 2024-10-07 22:22:48 +09:00
Kijin Sung
75a8184e59 Remove "Delete" button from installed addon, layout, module, and widget lists 2024-10-07 22:17:54 +09:00
Kijin Sung
405b047054 Add unit tests for new robots 2024-10-07 22:06:46 +09:00
Kijin Sung
ee3916670e Add meta-externalagent, GoogleOther, etc. to robot list 2024-10-07 22:04:02 +09:00
Kijin Sung
4abec2dfeb Enable skip_bottom_list_for_robot by default 2024-10-07 21:56:15 +09:00
Kijin Sung
bee30c0c40 Fix #2410 add "Delete" button to krzip search form 2024-10-07 21:52:42 +09:00
Kijin Sung
123a83cbd8 Fix #2411 misalignment when member address is empty 2024-10-07 21:31:26 +09:00
Kijin Sung
fd3029e834 Fix #2409 undefined property in member.view.php 2024-10-07 21:10:11 +09:00
Kijin Sung
18fb48e457 Automatically remove extra hyphens in SEO title 2024-10-07 21:08:47 +09:00
Kijin Sung
fc86ae24de Fix #2407 support $CATEGORY in document title SEO 2024-10-07 21:08:27 +09:00
Kijin Sung
12af0905f8 Fix #2406 support "fill" as thumbnail type in content widget 2024-10-07 20:58:40 +09:00
Kijin Sung
8b2fc81b8d Fix #2405 use video thumbnail as SEO image 2024-10-07 20:48:44 +09:00
Kijin Sung
3041d315b0 Fix missing array keys if files are uploaded as a two-dimensional array 2024-09-23 19:05:40 +09:00
Kijin Sung
d1527ecc90 Don't truncate upload_target_type in setFilesValid() 2024-09-03 22:10:41 +09:00
Kijin Sung
e2ac12e76a Always include self in category list (#2400 보완) 2024-09-03 20:41:20 +09:00
Kijin Sung
d371c9c872
Merge pull request #2400 from seungh/fix/document_category
통합게시판에 하위게시판의 글 카테고리 문제
2024-09-03 20:37:38 +09:00
vm
46094c9fdd modified to get all submodule categories included in combined board. 2024-08-29 20:18:59 +02:00
vm
3545dd6c87 Get category list based on document 2024-08-28 19:00:23 +02:00
Kijin Sung
f0c27773c4 Record error when JSON encoding fails in JSONDisplayHandler 2024-08-24 13:16:30 +09:00
Kijin Sung
ce11578617 Fix old simple tree library error in jQuery 3.x 2024-08-21 22:36:52 +09:00
Kijin Sung
7f3eb6d56c Fix incorrect query ID
Thanks to 에그시님
https://xetown.com/tips/1835006
2024-08-21 22:31:25 +09:00
Kijin Sung
23712bda19 Fix uploaded media not automatically inserted to SimpleEditor 2024-08-21 22:29:07 +09:00
Kijin Sung
a16364de6d Remove console.log() 2024-08-21 22:24:41 +09:00
Kijin Sung
78a70487de
Merge pull request #2398 from dewekk/fix-signup-config
회원가입 폼 설정의 추가항목을 사용 해제 할 수 없는 문제 수정
2024-08-21 20:08:34 +09:00
Kijin Sung
85ed9d2a43
Merge pull request #2397 from dewekk/add-sms-extra-vars
SMS solapi API에서 변수 지정 기능 추가
2024-08-21 20:06:08 +09:00
Kijin Sung
399c13851b Remove recommendation to duplicate layout 2024-08-21 20:02:02 +09:00
Kijin Sung
cec158ba41 Remove HTML/CSS editing function from site design setup 2024-08-21 19:59:38 +09:00
Kijin Sung
311a35c955 Fix #2396 display warning if exec() function is disabled 2024-08-21 19:54:59 +09:00
Kijin Sung
a72b4081b6 Merge branch 'malmani/patch-1' into develop 2024-08-21 19:48:32 +09:00
Kijin Sung
8bd895a749 Merge branch 'malmani/master' into develop 2024-08-21 19:47:32 +09:00
Kijin Sung
81ae8de155 Fix #2393 make add() a true alias to set() 2024-08-21 19:44:04 +09:00
dewekk
925891fb70
가입 폼 사용 해제 시 하위 필수/선택 설정을 비활성화 2024-08-21 15:19:25 +09:00
Kijin Sung
3b309b6392 Add guzzlehttp/psr7 to dependency list 2024-08-21 10:14:00 +09:00
dewekk
9c26552e3d
Add extra vars to solapi 2024-08-19 14:52:38 +09:00
Malmani
aa55a0d60c
Update content.class.php
Notice: Undefined variable: category_lists
오류를 수정합니다.
2024-08-16 19:49:04 +09:00
Malmani
28784b6540
Update ModuleHandler.class.php
Notice: Undefined property: stdClass::$menu_count
오류가 발생하는 부분을 수정합니다.
2024-08-16 19:46:05 +09:00
Lastorder
10e2116dd9
Merge branch 'rhymix:develop' into develop 2024-08-15 20:22:18 +09:00
Kijin Sung
7acf26d34d Version 2.1.17 2024-08-12 11:01:52 +09:00
Kijin Sung
ac1d53893c More cleanup of solapi SNS API, using v4/send-many to avoid creating a group 2024-08-12 10:14:12 +09:00
Kijin Sung
4c4b11ff35 Revert README.md for XEIcon to v1.0.4
실제 제공중인 버전은 1.0.4인데, 2.0.0의 README가 포함되어 있어서 혼란을 유발함
2024-08-12 09:24:14 +09:00
Kijin Sung
ec3fd6c933 Add links to Mail and SMS tests from notification config screen 2024-08-08 20:36:06 +09:00
Kijin Sung
be66ee4f21 Consolidate admin templates and lang codes for Mail and SMS API config keys 2024-08-08 20:31:08 +09:00
Kijin Sung
4e92689e6f Add Twilio SMS driver 2024-08-08 20:14:50 +09:00
Kijin Sung
75e32a6f08 General cleanup of solapi driver 2024-08-08 00:36:52 +09:00
Kijin Sung
17675ab32f Fix unwanted timezone change when using solapi SMS API 2024-08-08 00:28:20 +09:00
Kijin Sung
7056a44396 Clean up TagModel::getTagList() 2024-08-06 21:10:51 +09:00
Kijin Sung
aa237f8dd0
Merge pull request #2390 from seungh/feature/improve_board_write
통합게시판 글쓰기 방법 수정 / 통합게시판 관련 버그수정 / issue #1199
2024-08-06 21:04:59 +09:00
vm
39fadebe72 improved to get taglist of included modules as well 2024-07-30 22:08:07 +02:00
Kijin Sung
dd74d266f5 Fix legacy Validator trying to trim an object such as $lang 2024-07-29 23:32:59 +09:00
Kijin Sung
5ed8ef5ef1 Fix #2386 layout not visible if only layout.blade.php exists 2024-07-29 23:32:04 +09:00
Kijin Sung
2b23bc522d
Merge pull request #2389 from seungh/fix_default_board_skin
default 게시판 스킨에서 글목록 헤드의 항목 누락 수정
2024-07-29 23:25:02 +09:00
Kijin Sung
bb9239d12c Fix #2387 fatal error when loading old layout cache file 2024-07-29 23:24:06 +09:00
vm
46d0f18c0e fixed missing module title in default board skin 2024-07-29 11:49:57 +02:00
Lastorder
c572d34465
Merge branch 'rhymix:develop' into develop 2024-07-22 11:29:41 +09:00
Kijin Sung
5f662530e0 Initial implementation of Naver Cloud SENS SMS driver 2024-07-21 22:16:39 +09:00
Kijin Sung
0e3d15d887 Fix incorrect error handling in coolsms SMS driver 2024-07-21 22:16:26 +09:00
Kijin Sung
ada6a81d29 Fix incorrect use of $this when calling static method 2024-07-21 21:52:23 +09:00
Kijin Sung
5af392f09c Support service_id configuration in SMS driver 2024-07-21 21:46:11 +09:00
Kijin Sung
b48a4a096c Fix reference to unused exception class (we use guzzle now) 2024-07-21 21:10:56 +09:00
Kijin Sung
5df972606b Fix use of undefined property in mail driver 2024-07-21 21:10:37 +09:00
Kijin Sung
86ab628bcc General adjustments to naver cloud mailer driver 2024-07-21 21:07:22 +09:00
Kijin Sung
377048d71d Change class name, fix coding style, fix incorrect exception class name 2024-07-21 20:54:07 +09:00
Kijin Sung
111cd393f0 Merge branch 'develop' into pr/2381 2024-07-21 20:34:51 +09:00
Kijin Sung
de194cb6ae Protect against potential data structure mismatch in template that uses count() 2024-07-18 00:20:50 +09:00
Kijin Sung
6dbfde8de1 Fix unnecessary use of count() in addon.admin.model.php
https://xetown.com/questions/1831837
2024-07-17 21:14:06 +09:00
Hatsan
e75f47d5ca 0716 2024-07-16 10:00:52 +00:00
Lastorder
80aae06272
Fix invalid error handling 2024-07-15 18:44:15 +09:00
Lastorder
70ee84fce1 Implement Navercloudmail
1. https://www.ncloud.com/mypage/manage/authkey 에서 액세스 키 / 시크릿 발급

2. https://console.ncloud.com/emailSVR/domainManagement 에서 도메인 등록 및 SPF, DKIM 설정
2024-07-15 09:31:41 +00:00
Lastorder
a8ddaee191 Implement Navercloudmail error handling 2024-07-15 09:29:57 +00:00
Lastorder
0d6cc06cee WIP navercloudmail 2024-07-15 09:20:12 +00:00
Lastorder
3d8a8fd836
Merge branch 'rhymix:develop' into develop 2024-07-15 10:27:27 +09:00
Kijin Sung
cec183d59e Select ipaddress column by default if current user is a manager 2024-07-15 10:23:19 +09:00
Lastorder
a8d8e0663d
Merge branch 'rhymix:develop' into develop 2024-07-15 10:19:17 +09:00
Kijin Sung
406b1c956f
Merge pull request #2377 from mmx900/pr/hidpi-thumbnails
컨텐트 위젯 기본 스킨에서 HiDPI 지원
2024-07-15 10:16:30 +09:00
Kijin Sung
e4c3c5ac6c Fix #2376 unnecessary header output in menu, document, layout modules 2024-07-15 10:14:37 +09:00
Soyu Kim
9a40901475 Add HiDPI thumbnails to default content widget skin 2024-07-07 09:41:40 +09:00
Lastorder
e051ae079a
add isReallyFromMobilePhone 2024-07-01 18:46:23 +09:00
Lastorder
afa0388ae2
target_summary 지정 기능 2024-07-01 18:33:16 +09:00
Lastorder
b864effa4d
조건문 또잘못쓴거 수정 2024-06-25 16:42:54 +09:00
Lastorder
a743d4e911
조건문 잘못씀 2024-06-25 16:42:18 +09:00
Hatsan
d1e0a34c12 0624 2024-06-24 04:25:40 +00:00
Lastorder
77e413ac89
읽지않은 알림도 표시 2024-06-23 21:31:52 +09:00
Lastorder
9307126750
알림목록 불필요한거 뺌 2024-06-23 21:30:22 +09:00
Lastorder
40c30ec053
념글컷 별도자료에서 가져오도록 개선 2024-06-23 21:05:48 +09:00
Lastorder
da7ec5e96b
념글컷 상향 2024-06-23 21:02:01 +09:00
Lastorder
6af71f7940
념글모드 테스트 2024-06-23 20:49:19 +09:00
Lastorder
88d65d52a9
가운데 정렬 2024-06-23 19:54:40 +09:00
Lastorder
41e313be9c
읽지 않은 알림 없을시 메세지 2024-06-23 19:53:33 +09:00
Lastorder
054e37a8cd
readed 무시 버그 수정 2024-06-23 19:48:33 +09:00
Hatsan
4b4734c8d1 Merge branch 'develop' of github.com:Lastorder-DC/rhymix into develop 2024-06-23 10:33:14 +00:00
Lastorder
e0f83ed995
알림목록 기본 안읽은것만 표시 + 전체표시 탭기능 2024-06-23 19:33:03 +09:00
Lastorder
504cf632b3
Merge branch 'rhymix:develop' into develop 2024-06-23 18:40:08 +09:00
Hatsan
a32d96ffd3 fanbinit 0623 2024-06-23 09:39:19 +00:00
Kijin Sung
f2bd5280c1 Fix incorrect sizing of CKEditor textarea
https://xetown.com/questions/1828584
2024-06-22 13:09:13 +09:00
Lastorder
bb30452f41
에디터팝업 알림센터 제외처리 2024-06-21 18:29:59 +09:00
Lastorder
493bd5991d
로그인상태 비번찾기 허용 2024-06-21 16:57:08 +09:00
Hatsan
bbdfb78582 fanbinit custom 2024-06-21 07:20:48 +00:00
Lastorder
b66e027a4a
do not check for logged status 2024-06-21 16:20:08 +09:00
Lastorder
52dc4eff3f
Merge branch 'rhymix:develop' into develop 2024-06-21 16:19:26 +09:00
Kijin Sung
c3583506a1 Fix incorrect statistics when sending FCMv1 message to multiple recipients 2024-06-20 16:23:46 +09:00
Lastorder
af2c3a2fd6
Merge branch 'rhymix:develop' into develop 2024-06-20 16:16:03 +09:00
Kijin Sung
9108d33034 Fix #2369 double decoding of notify data 2024-06-20 13:36:50 +09:00
Lastorder
7eea212cda
Merge branch 'rhymix:develop' into develop 2024-06-20 12:52:56 +09:00
Kijin Sung
83448c5e2e Version 2.1.16 2024-06-20 11:00:00 +09:00
Kijin Sung
b1becc8b2e Fix undefined variable when menu cache file loading fails 2024-06-20 10:37:13 +09:00
Kijin Sung
3bbc0688f7 Fix #2362 incorrect help text for dummy SMS driver 2024-06-20 01:28:23 +09:00
Kijin Sung
5759eba8c4 Fix #445 update input value in realtime even if there are multiple editor instances on the page 2024-06-20 01:02:40 +09:00
Kijin Sung
2b1e4495e2 Fix #2363 treat pasted HTML as image if a single <img> tag is the only content 2024-06-20 00:46:35 +09:00
Kijin Sung
bdf4873a31 Fix #2359 unable to delete all tags from document 2024-06-20 00:36:43 +09:00
Kijin Sung
ce21449046 Fix #2366 inconsistent return format of getModuleSrlByMid() when $assoc = false 2024-06-20 00:32:49 +09:00
Lastorder
23ab7cccce
자추 활성화 2024-06-19 19:49:35 +09:00
Hatsan
165e976fa3 member css edit 2024-06-19 10:47:56 +00:00
Kijin Sung
5097f40b37
Merge pull request #2365 from hyeongukryu/fix/xml-query-id
XML Query 파일 내부에 기재된 ID를 XML 파일 이름과 일치하도록 변경
2024-06-18 01:17:03 +09:00
Kijin Sung
aafe17fee6
Merge pull request #2364 from hyeongukryu/fix/typo
주석 내 오타 해결
2024-06-18 01:16:53 +09:00
Hyeonguk Ryu
3474667943
Fix XML query IDs with their respective file names 2024-06-17 14:28:24 +09:00
Hyeonguk Ryu
5de50ebe0f
Fix minor typos
odule => module
2024-06-17 13:59:39 +09:00
Kijin Sung
bdace357ea Return early if $module does not contain a proper module name #2360 2024-06-11 22:18:41 +09:00
Kijin Sung
900dbac09b Fix erroneous CAPTCHA message when adding scrap folder, etc. 2024-06-11 22:13:06 +09:00
Kijin Sung
a6e20a5d23 Fix TypeError when empty module_srl is passed to BoardModel::getDefaultListConfig() 2024-06-01 11:37:32 +09:00
Kijin Sung
c4fabb6182 Fix type error when third-party program passes array into getExtraKeys() or getExtraVars() #2355 2024-05-31 13:39:45 +09:00
Kijin Sung
ff057034ee Fix error when menu info is not defined because of stale cache file 2024-05-31 13:34:48 +09:00
Kijin Sung
24a4988151 Fix #2353 js error when editor/uploader has no primary key defined 2024-05-30 00:16:30 +09:00
Kijin Sung
2963d0b92c Fix #2351 redirect to default URL if lock screen is accessed using an unregistered domain 2024-05-27 01:49:09 +09:00
Kijin Sung
4c47793828 Add Context::redirect() method 2024-05-27 01:47:29 +09:00
Kijin Sung
8a012a5847 Add R\F\URL::getCurrentDomain() 2024-05-27 01:43:04 +09:00
Kijin Sung
5f47ddeb53 Fix #2352 automatically convert relative paths in CSS url() function, only in template v2 2024-05-25 01:34:47 +09:00
Kijin Sung
1d42b6bde4 Fix #2352 make $tpl_path in templates backward compatible with XE 2024-05-25 01:03:38 +09:00
Kijin Sung
7af4f93175 Add upload button to CKEditor image dialog 2024-05-25 00:59:53 +09:00
Kijin Sung
0c3879d0c8 Replace CKEditor image plugin with original source code 2024-05-25 00:59:15 +09:00
Kijin Sung
99d7c3d733 Fix warning when HTTP requests are made from outside of a class 2024-05-24 23:19:02 +09:00
Kijin Sung
dbb4d1716e Show request method and redirect URL in debug panel and comment 2024-05-24 23:18:37 +09:00
Kijin Sung
01afd5c041 Properly record statistics about async and multiple HTTP requests 2024-05-24 23:07:38 +09:00
Kijin Sung
b2738bbb39 Fix fatal error when dispPageNotFound() is called as a 404 handler without arguments 2024-05-16 20:43:13 +09:00
Kijin Sung
fda3bf939b Fix tables being pasted as image in CKEditor
https://xetown.com/questions/1823902
2024-05-16 11:02:38 +09:00
Kijin Sung
f3323ebec1 Fix #876 delete empty <p> tag when image or media is deleted from editor 2024-05-15 11:07:32 +09:00
Kijin Sung
f50772c1dd Fix #877 insert uploaded image even if CKEditor is in source mode 2024-05-15 11:02:26 +09:00
Kijin Sung
f57cc96e3f Fix #2348 add baro_upload addon to blacklist 2024-05-10 23:33:29 +09:00
Kijin Sung
92b14bf1cb Fix invalid editor_sequence when CKEditor is in full-screen mode
https://xetown.com/questions/1822954
2024-05-10 23:30:48 +09:00
Kijin Sung
b4d2ee16e0 Fix PHP warnings in ncenterliteController::_insertNotify() 2024-05-10 15:47:49 +09:00
Kijin Sung
bdd9921f25 Save notification extra data in DB column 2024-05-10 15:37:57 +09:00
Kijin Sung
4e6e1e57b2 Fix double escape of <br> tags in extravar description 2024-05-09 22:35:03 +09:00
Kijin Sung
74d651afdd Hide category_srl from short URL on document read page 2024-05-09 02:26:15 +09:00
Kijin Sung
1e30de7ce5 Redirect to short URL after deleting document or comment 2024-05-09 02:05:55 +09:00
Kijin Sung
1d36b3e77a Redirect to document URL with category if, and only if, the write page was loaded with a category and the document was saved to the same category #2346 2024-05-09 02:02:07 +09:00
Kijin Sung
3a91bc3038 Fix incorrect admin menu opening in Dashboard #2345 2024-05-09 00:03:58 +09:00
Kijin Sung
1dbf601bab Fix #2342 incorrectly placed context switch markers inside raw PHP code block 2024-05-07 23:02:09 +09:00
Kijin Sung
928a0ab5d9 Fix #2345 missing module name in admin page title 2024-05-07 22:30:12 +09:00
Kijin Sung
db8f6b2d59 Fix inconsistent naming of editor and ncenterlite modules 2024-05-07 22:29:48 +09:00
Kijin Sung
c2d49e3f0e Fix incorrect browser title in advanced_mailer module config screens #2345 2024-05-07 22:18:25 +09:00
Kijin Sung
54d0ed5463 Fix #2344 display more helpful error message when default sender address is not configured 2024-05-07 22:12:42 +09:00
Kijin Sung
960f42a105 Fix unnecessary error in procMemberModifyInfo() when profile image is required
https://xetown.com/questions/1822660
2024-05-07 22:00:54 +09:00
Kijin Sung
18ffca5df7 Version 2.1.15 2024-05-05 17:29:59 +09:00
Kijin Sung
3cafc180b2 Merge HTMLDisplayHandler::_moveLinkToHeader() and _moveMetaToHeader(), and add special treatment for non-stylesheet <link> elements 2024-05-05 16:31:15 +09:00
Kijin Sung
b951d50841 Add Context::addLink() and Context::getLinks() to register HTML header content such as <link rel="preconnect"> 2024-05-05 16:29:56 +09:00
Kijin Sung
ac895d64cb Ask for confirmation before layout reset 2024-05-05 15:56:10 +09:00
Kijin Sung
5daa6636a6 Fix redirect to invalid page after layout reset 2024-05-05 15:55:51 +09:00
Kijin Sung
3a94245443 Support multiple target_srl in ncenterlite.updateNotifyReadedByTargetSrl query 2024-05-04 21:50:28 +09:00
Kijin Sung
7df5a84f11 Update category document count using +1/-1 diff instead of running COUNT(*) query every time 2024-05-04 21:50:00 +09:00
Kijin Sung
85532fa502 Fix #2341 undefined property access in WidgetController 2024-05-04 21:23:38 +09:00
Kijin Sung
ebae28d5d3 Fix #2333 add lock icon in menu list to indicate that access is restricted 2024-05-04 21:17:00 +09:00
Kijin Sung
0a459eb528 Mark default category in bold #2335 2024-05-04 20:52:51 +09:00
Kijin Sung
d9be564dae Fix #2331 add home button to module config pages displayed using the admin layout 2024-05-04 20:46:33 +09:00
Kijin Sung
07c2574c72 Fix #2321 return voted_count or blamed_count when vote is canceled 2024-05-04 20:43:33 +09:00
Kijin Sung
8b4818a767 Add commonly used member properties to SessionHelper class #2279 2024-05-04 20:33:00 +09:00
Kijin Sung
796f14571b Fix #2340 null warning in comment.item.php 2024-05-04 20:23:29 +09:00
Kijin Sung
684b86a636 Fix #2335 allow selecting a category as default 2024-05-04 20:21:13 +09:00
Kijin Sung
d3415b5e01 Display thumbnail in admin file list if video has thumbnail 2024-05-03 23:44:10 +09:00
Kijin Sung
84bbd60895 Support hexadecimal digits in the random component of anonymous name 2024-05-03 23:42:23 +09:00
Kijin Sung
7af63ffde7 Return false in most legacy file manipulation methods if path is empty 2024-05-03 23:26:25 +09:00
Kijin Sung
4c523d686b Fix type error when module_srl or document_srl is null 2024-05-03 20:28:31 +09:00
Kijin Sung
b9f87e1426 Fix category not preserved when navigating from list screen to write screen on default board skins 2024-05-02 00:52:34 +09:00
Kijin Sung
24a6f0e615 Fix type error when editor add/remove plugins variable contains an empty string 2024-05-02 00:32:55 +09:00
Kijin Sung
e57c6c5c25 Improve relative path handling in Template v2 #2310 2024-04-30 23:45:17 +09:00
Kijin Sung
242d07ce30 Fix undefined variable 2024-04-30 23:07:35 +09:00
Kijin Sung
6e72186d1f Remove unnecessary realpath() in old class files #2310 2024-04-30 23:03:57 +09:00
Kijin Sung
c32eb69a20 Fix #2327 JS error when the module for an installed type doesn't exist anymore 2024-04-30 22:50:59 +09:00
Kijin Sung
b7def41ec4 Fix undefined variables in layout admin view/model 2024-04-30 22:45:21 +09:00
Kijin Sung
04f5ecbf41 Fix all checkboxes being required in extra vars form 2024-04-30 22:19:21 +09:00
Kijin Sung
e15c913b21 Rename rx_upload CKEditor plugin to rx_paste, and move paste handler from editor.app.js to it 2024-04-30 22:18:11 +09:00
Kijin Sung
3e5951174e Put autosave-related tags together in the same place 2024-04-30 01:57:08 +09:00
Kijin Sung
4f94299414 Clean up unnecessary files inside CKEditor skin directory 2024-04-30 01:52:03 +09:00
Kijin Sung
579201fe7c Separate editor and uploader related PHP and JS code into their own native files 2024-04-30 01:42:37 +09:00
Kijin Sung
d127e334b0 Fix distorted images in admin file list 2024-04-29 23:45:10 +09:00
Kijin Sung
d7053be5fa Fix #2329 show WebP thumbnails in admin file list 2024-04-29 23:44:00 +09:00
Kijin Sung
eb61c2c45d Fix #2328 automatically add WebP image to og:image meta tag 2024-04-29 23:40:50 +09:00
Kijin Sung
0d71f5a0e0 Fix #2330 incompatible handling of redirect_url in JSON-based procFilter compared to old XML version 2024-04-29 23:39:21 +09:00
Kijin Sung
ae7920a276 Fix #2309 support Blade template as main file of editor skin 2024-04-28 22:29:45 +09:00
Kijin Sung
f83891bac5
Merge pull request #2324 from kijin/pr/ckeditor-paste-image
CKEditor에 붙여넣거나 드래그&드롭한 이미지 자동 업로드
2024-04-28 22:13:50 +09:00
Kijin Sung
77b57627f2
Merge pull request #2323 from kijin/fcm-http-v1
Firebase (FCM) HTTP v1 API 지원
2024-04-28 22:13:34 +09:00
Kijin Sung
b9ea0e65b0 General cleanup of DOM traversal code in editor & uploader (should also fix #2303) 2024-04-26 13:35:20 +09:00
Kijin Sung
7dd3dd3838 Clean up javascript mixed with template syntax in file_upload.html 2024-04-25 23:19:32 +09:00
Kijin Sung
b2ebb234ef Fix error in admin dashboard when getNewestCommentList() returns an object
Possible fix for https://xetown.com/questions/1821535 (not confirmed!)
2024-04-25 11:55:28 +09:00
Kijin Sung
9247e602b5 Clean up return value juggling in getNewestCommentList() 2024-04-25 11:54:01 +09:00
Kijin Sung
b817b85989 Re-disable clipboard_handleImages 2024-04-25 00:00:29 +09:00
Kijin Sung
516fd738f2 Fix broken reference to xefu-container if autosave message appears in between 2024-04-24 23:45:57 +09:00
Kijin Sung
6acd092dc6 Prevent the clipboard plugin from displaying the "file type not supported" error for webp, mp4, and other file types 2024-04-24 23:31:37 +09:00
Kijin Sung
bd138800bc Unify the logic for inserting uploaded file into editor content 2024-04-24 23:17:56 +09:00
Kijin Sung
633478710d Clean up error handling code in the auto upload plugin 2024-04-24 22:52:32 +09:00
Kijin Sung
5b530792e5 Initial implementation of auto upload on paste or drop 2024-04-24 22:45:36 +09:00
Kijin Sung
1bdb414291 Add support for message.notification.image in FCM v1 push 2024-04-24 15:54:14 +09:00
Kijin Sung
26fd165337 Fix JS error when getModuleAdminModuleList() returns null for nonexistent modules 2024-04-24 11:03:46 +09:00
Kijin Sung
88ac7ef65d Disable clipboard image handling in CKEditor 2024-04-24 10:35:45 +09:00
Kijin Sung
55fe822b2b Fix #2320 incorrect class name in docblock 2024-04-24 01:43:07 +09:00
Kijin Sung
296f37f5f5 Validate FCM service account JSON content 2024-04-24 00:27:04 +09:00
Kijin Sung
c7f96ad75b Allow sending message to topics using FCM v1 API 2024-04-23 23:58:15 +09:00
Kijin Sung
ac16d2e7f5 Remove var_dump() 2024-04-23 23:47:24 +09:00
Kijin Sung
20f63430f9 Fix inconsistent use of short array syntax 2024-04-23 23:40:55 +09:00
Kijin Sung
1abd6a04c9 Fix FCM auth token not being cached persistently if APC is used in PHP-CLI 2024-04-23 23:37:57 +09:00
Kijin Sung
5297232a75 Set message name in success token list, just like legacy API 2024-04-22 16:54:31 +09:00
Kijin Sung
619eb2a782 Clean up FCM v1 payload and response parsing 2024-04-21 20:49:03 +09:00
Kijin Sung
4f35d82b6d Populate FCM tokens if FCM v1 API is enabled 2024-04-21 20:30:01 +09:00
Kijin Sung
9699ed3416 Initial implementation of FCM HTTP v1 API 2024-04-21 20:18:39 +09:00
Kijin Sung
6641e6a6ef Clarify help text about FCM legacy API deprecation 2024-04-21 20:13:48 +09:00
Kijin Sung
64f95d2c95 Add index file to FCM v1 and APNs config directories to prevent directory listing 2024-04-21 02:47:54 +09:00
Kijin Sung
2c8ae717e1 Add configuration for uploading FCM v1 service account private key file 2024-04-21 02:45:33 +09:00
Kijin Sung
dee7ed34e9 Add helper classes that implement PSR-6 caching interface with Rhymix cache backend 2024-04-21 02:16:21 +09:00
Kijin Sung
a898c4281a Rename existing FCM push driver to Legacy HTTP API 2024-04-20 23:51:16 +09:00
Kijin Sung
d39434d426 Add google/auth and related libraries, and update other dependencies 2024-04-20 23:50:39 +09:00
Kijin Sung
d861040766 Remove unnecessary procAdminRemoveIcons action 2024-04-17 23:28:34 +09:00
Kijin Sung
dd6b577780 Replace exec_xml() with exec_json() in session clear script 2024-04-17 23:28:24 +09:00
Kijin Sung
c7e38873f5 Replace exec_xml() with exec_json() in admin.js #2314 2024-04-17 23:22:01 +09:00
Kijin Sung
848a45cabe Fix #2313 inconsistent email validation rules 2024-04-17 23:15:24 +09:00
Kijin Sung
61a0cf38c3 Fix missing description in new extravar form 2024-04-17 20:19:33 +09:00
Kijin Sung
117023817d Eliminate unnecessary AJAX calls to file.getFileList
에디터 로딩 직후, 파일 업로드 직후, 파일 삭제 직후
첨부목록 갱신을 위해 file.getFileList를 호출하도록 되어 있는데,
첨부목록을 직전 요청의 응답과 함께 반환하도록 변경하여
불필요한 AJAX 요청이 발생하지 않도록 하고, 로딩 속도를 개선함.
2024-04-16 22:38:53 +09:00
Kijin Sung
0dc7dc5ac5 Remove notice about FTP password when uninstalling a package
https://xetown.com/questions/1819447
2024-04-16 21:53:24 +09:00
Kijin Sung
0952bd6b69 Change ExtraVar::getInstance() to ValueCollection 2024-04-16 21:47:04 +09:00
Kijin Sung
e5c6cb9d6e Remove seemingly useless, and potentially dangerous, option in getLangCode() 2024-04-16 21:43:55 +09:00
Kijin Sung
d0183268ce Add newline after JSON and XML responses 2024-04-16 21:38:56 +09:00
Kijin Sung
114755d13a Fix error when trying to instantiate class that isn't a ModuleObject 2024-04-16 21:32:15 +09:00
Kijin Sung
80c5c12059 Fix #2306 restrict character set in single-input phone number input fields 2024-04-15 01:51:56 +09:00
Kijin Sung
5b66613d83 Distinguish countries with same calling code #2306 #1256 2024-04-15 01:41:13 +09:00
Kijin Sung
97460af76a Insert space after each item in a multiple select extravar 2024-04-15 01:22:15 +09:00
Kijin Sung
b0a00c39f2 Use extravar skin to display member extra input fields 2024-04-15 01:21:47 +09:00
Kijin Sung
c1278f2615 Fix error when saved value is not a valid country code 2024-04-15 01:20:05 +09:00
Kijin Sung
c26e242fdf Use extravar module skin in member edit page, too 2024-04-15 01:08:45 +09:00
Kijin Sung
fc406a927c Support style in extravar value definition 2024-04-15 00:43:01 +09:00
Kijin Sung
31fa498b19 Implement default extravar skin to replace hardcoded HTML in ExtraItem class 2024-04-14 23:16:22 +09:00
Kijin Sung
dd06193a1d First step of converting legacy ExtraVar class to module 2024-04-12 00:23:56 +09:00
Kijin Sung
267aa9c397 Remove unnecessary conversion of ftp.config.php
https://xetown.com/questions/1819188
2024-04-12 00:07:57 +09:00
Kijin Sung
ab5a2c4f5f Disable debug output during template parser tests 2024-04-08 22:56:19 +09:00
Kijin Sung
9134433adf Fix #2307 remove hash character from TemplateStart/TemplateEnd debugging comment to prevent confusion with SSI directive 2024-04-08 22:55:57 +09:00
Kijin Sung
777a62af35 Fix erroneous detection of SSL configration when importing very old XE configuration file 2024-04-08 22:48:59 +09:00
Kijin Sung
41f4eada9d Only add spaces in getContentText() before complete </p> and </div> tags, not </pre>
https://xetown.com/questions/1817630
2024-04-08 22:43:15 +09:00
Kijin Sung
1bb0123e59 Fix error when migrateMemberScrappedDocuments() returns int 2024-04-08 22:37:51 +09:00
Kijin Sung
f0b84faf03 Fix unnecessary variables in links generated by default board skins
https://xetown.com/questions/1818810
2024-04-08 22:35:27 +09:00
Kijin Sung
602ee88d65 Change author name of bundled ncenterlite module
라이믹스 개발팀의 일원인 개인이나 사업체의 명의로 되어 있는 모듈은
라이믹스 개발팀의 명의로 변경하는 취지임.

현재 XE Public 그룹 멤버인 @misol, @bjrambo 님 동의 얻음.
2024-04-02 11:58:38 +09:00
Kijin Sung
aba31cb7d5 Change author name of bundled advanced_mailer module 2024-04-02 11:51:49 +09:00
Kijin Sung
bdd8316aee Fix return type error when searching for nonexistent module name that coincides with existing class name 2024-04-02 01:42:48 +09:00
Kijin Sung
b80a858c1f Fix incorrect reference to error message body in Mailgun mail driver 2024-04-02 01:40:34 +09:00
Johnny
cc57e117c9 c229839f2b 보완 스킨에서 처리하지 않고 commentItem 에서 처리 하고 기본 메세지 내용 추가 2024-03-30 14:48:20 +09:00
Johnny
f334a3e6e1 c229839f2b 보완 모바일 페이지에도 적용 2024-03-30 14:05:28 +09:00
Johnny
c229839f2b 댓글 내용이 0 이라고 적었을때 글자가 없는 댓글이라고 뜨는 문제 고침 2024-03-30 13:58:12 +09:00
Kijin Sung
8c9d8652a7 Version 2.1.14 2024-03-29 11:57:43 +09:00
Kijin Sung
23db2eb6a3 Fix member birthday column not being updated to empty value 2024-03-29 11:56:02 +09:00
Kijin Sung
d65a32b385 Fix coding convention 2024-03-29 11:52:42 +09:00
Kijin Sung
5cfd348096 Clean up declared log if prevent_redeclare != "N" #2238 2024-03-28 21:38:42 +09:00
Kijin Sung
35b5bcc030 Move cancel_declare button to consistent location in comment admin page 2024-03-28 21:36:23 +09:00
Kijin Sung
fa756b5169 Fix #2238 add option to control whether to allow redeclaring documents 2024-03-28 21:30:19 +09:00
Kijin Sung
087b2587bf Add tabs at top of comment module admin pages 2024-03-28 21:10:36 +09:00
Kijin Sung
3759f36c82 Support tel_v2 and time extra var types in member signup form 2024-03-27 00:54:19 +09:00
Kijin Sung
204efdf2cd Change class name of time remover button 2024-03-27 00:51:23 +09:00
Kijin Sung
ee1ddeeac3 Add "time" extra var type, and clean up date type HTML 2024-03-27 00:34:30 +09:00
Kijin Sung
9d57d24306 Reorder extra var types in a way that makes more sense 2024-03-27 00:25:43 +09:00
Kijin Sung
1b7657f581 Fix #2297 add tel_v2 and tel_intl_v2 extra var types with single input for phone number 2024-03-27 00:20:18 +09:00
Kijin Sung
9e8a61a147 Add pattern and placeholder fallback for input type="date" 2024-03-27 00:09:58 +09:00
Kijin Sung
a8bc70b025 Fix type error if tel_intl type extra var is null 2024-03-27 00:04:01 +09:00
Kijin Sung
73be901e63 Fix first country code being automatically selected in tel_intl type extra var 2024-03-27 00:00:52 +09:00
Kijin Sung
2507ed550b Fix #2297 inconsistent date input form 2024-03-26 23:58:24 +09:00
Kijin Sung
7149bc28dd Add proper phpdoc for Context::setCacheControl() 2024-03-24 23:08:42 +09:00
Kijin Sung
ff41a14237 Add Context::setCorsPolicy() method #2287 2024-03-24 23:07:21 +09:00
Kijin Sung
eb5dd18659 Support more HTTP methods #2287 2024-03-24 22:57:07 +09:00
Kijin Sung
f419353013 Allow comma as a separator for module action methods 2024-03-24 22:29:53 +09:00
Kijin Sung
289a249569 Automatically remove .* .+ .? in route definition regexp #2287 2024-03-24 22:18:55 +09:00
Kijin Sung
0cc034909c Fix untranslated lang code in SMS verification 2024-03-24 22:06:36 +09:00
Kijin Sung
7d90fbb77f Temporary workaround for iwinv SMS error "Missing boundary in multipart/form-data POST data" 2024-03-24 22:01:43 +09:00
Kijin Sung
39819c858e Clean up type declarations of MemberController::addMemberToGroup() 2024-03-24 21:53:50 +09:00
Kijin Sung
89befa31a0 Fix #2302 add MemberController::removeMemberFromGroup() method and related trigger events 2024-03-24 21:52:43 +09:00
Kijin Sung
6a71410a5a Fix #2302 add "before" trigger to addMemberToGroup() 2024-03-24 21:45:12 +09:00
Kijin Sung
925ddf9fa0 Output previously buffered content only if the response format is HTML 2024-03-24 21:34:07 +09:00
Kijin Sung
0b9131e664 Remove unnecessary encoding of /, &, ' in template v2 JSON output 2024-03-24 21:29:54 +09:00
Kijin Sung
c53dab4805 Fix new scraps not going to default folder 2024-03-23 13:27:24 +09:00
Kijin Sung
a56734d4f5 Fix possibility of empty $new_menu_srl in updateLinkModule() 2024-03-19 23:17:24 +09:00
Kijin Sung
dd4d04f409 Allow passing falsey values to if="" attribute of XML queries 2024-03-19 22:52:39 +09:00
Kijin Sung
7c8e76b727 Fix list_order and update_order not bumped when updating a temporarily saved document (2.1.5 regression)
https://xetown.com/questions/1814863
2024-03-19 22:45:44 +09:00
Kijin Sung
c996ab1259 Fix #2300 remove unnecessary default value in getPollLog query 2024-03-19 22:25:13 +09:00
Kijin Sung
09396e8d8d Fix warning when third-party script has already defined __ZBXE__ 2024-03-19 22:20:57 +09:00
Kijin Sung
df99dce94a Fix HTMLFilter internal methods sometimes not returning string 2024-03-19 22:19:32 +09:00
Kijin Sung
c57dbf4d73 Fix Session::getValidityInfo() sometimes returning a non-object 2024-03-19 22:17:32 +09:00
Kijin Sung
13e8445309 Fix fatal error when trying to resize animated WebP using GD 2024-03-19 22:15:13 +09:00
Kijin Sung
d519cd2516 Fix error when document was not found 2024-03-13 00:50:22 +09:00
Kijin Sung
bae8954e42 Remove unnecessary count query in getDocuments() 2024-03-12 23:19:31 +09:00
Kijin Sung
e4376aa265 Fix undefined variable in comment.admin.view.php 2024-03-12 23:19:14 +09:00
Kijin Sung
d14e2dd3fd Use simple query without JOIN in admin comment list, to improve query speed with millions of comments 2024-03-12 23:18:51 +09:00
Kijin Sung
584b370769 Fix #2299 incorrect use of count() on nullable property 2024-03-08 14:24:57 +09:00
Kijin Sung
08b272f172 Allow getTimeGap() to return null if zdate() returns null 2024-03-08 14:22:37 +09:00
Johnny
bb7954ca10 Fix #2284 게시글 삭제시 스크랩이 삭제 되지 않는 문제 고침 2024-02-16 05:40:34 +09:00
Kijin Sung
b062e4eaef
Merge pull request #2295 from YJSoft/fix/removeftp
Fix #2294 쉬운설치 모듈에서 FTP 설정 언급 삭제
2024-02-15 21:07:12 +09:00
YJSoft
9274598574 Fix #2294 쉬운설치 모듈에서 FTP 설정 언급 삭제
언어 파일에서 FTP 설정 언급 삭제

템플릿에서 FTP 설정 링크 및 비밀번호 입력 폼 삭제(폼이 표시될 조건이 없으며 표시되더라도 값을 사용하지 않음)
2024-02-08 08:13:27 +00:00
Kijin Sung
01c3f5cf08 Fill thumbnail defaults in getDocumentConfig() 2024-02-05 12:52:05 +09:00
Kijin Sung
740127d83f Fix fatal error when unlinked_menu_srl is null 2024-02-04 23:35:37 +09:00
Kijin Sung
bd43950c75 Fix index page being displayed with 404 code if user requests domain.com/1234 with non-existent document_srl 2024-02-04 23:21:18 +09:00
Kijin Sung
578de6404b Ignore document_srl in widgets pages, too #2019 2024-02-04 23:05:25 +09:00
Kijin Sung
178add54e8 Fix UnexpectedValueException if there are permission problems deep inside a directory tree 2024-02-04 22:51:57 +09:00
Kijin Sung
06f4eca47a Fix #2291 incorrect handling of zero value in friend_group_srl (#2282 regression) 2024-02-04 22:48:06 +09:00
Kijin Sung
e7c38509bf Version 2.1.13 2024-01-31 11:03:52 +09:00
Kijin Sung
424242ff74 Add option to force the language for a domain 2024-01-31 11:02:37 +09:00
Kijin Sung
48cd4a2794 Revert nanasess/setup-php to master branch (v4 tries to compile PHP 8.3...) 2024-01-30 23:57:32 +09:00
Kijin Sung
7991d65a32 Update third-party repository references in github actions 2024-01-30 23:49:34 +09:00
Kijin Sung
670c7b29fa Merge branch 'security/rve-2024-3' into develop 2024-01-30 23:45:26 +09:00
Kijin Sung
454a8e36b6 Merge branch 'security/rve-2024-2' into develop 2024-01-30 23:45:24 +09:00
Kijin Sung
9eea71631a Merge branch 'security/rve-2024-1' into develop 2024-01-30 23:45:17 +09:00
Kijin Sung
36c3f89d4a Fix warnings in mcontent.class.php 2024-01-30 22:06:25 +09:00
Kijin Sung
7487349437
Merge pull request #2280 from kkigomi/debug-fail-json-encode
Debug 메시지가 `json_encode()` 오류로 인해 잘못된 포맷으로 응답을 생성하는 문제 해결
2024-01-30 21:56:49 +09:00
Kijin Sung
72b862c27e Change eval() to JSON.parse() in filebox.js #2266 2024-01-30 21:53:25 +09:00
Kijin Sung
828aa04a22
Merge pull request #2266 from kkigomi/fix-filebox-upload
위젯 설정 등의 페이지에서 파일박스에 업로드 후 문제 수정
2024-01-30 21:50:31 +09:00
Kijin Sung
00db22abdb Fix #2288 allow redirect after logout, only if the target URL is internal 2024-01-30 21:37:43 +09:00
Kijin Sung
a36d728ad9 Fix #2285 hide resend auth mail form if email confirmation is not required 2024-01-30 21:28:20 +09:00
Kijin Sung
bbcbe04838 Allow SVG and WebP image uploads in layout configuration 2024-01-30 21:22:15 +09:00
Kijin Sung
56af0cb5c3 Use strict equality to check if title is empty 2024-01-30 20:44:30 +09:00
Kijin Sung
7cb9b8c786 RVE-2024-1 also apply escape() when updating document 2024-01-30 20:43:39 +09:00
Kijin Sung
cac0ea171c Fix #2283 warning/notice when member extra var is not set for any given member 2024-01-27 23:57:39 +09:00
Kijin Sung
04537bfb26 Fix #2282 warning/notice in friend group management screen 2024-01-27 23:56:33 +09:00
Kijin Sung
a1cd3224c4 Fix incorrect variable handling if $group_list contains strings 2024-01-27 23:52:38 +09:00
Kijin Sung
86548a8d6a Fix #2281 warning/notice if sender/recipient of message is not a member anymore 2024-01-27 23:52:11 +09:00
Kijin Sung
4e192668a1 Fix error in NcenterliteModel::getColorsetList() when there are no colorsets 2024-01-22 16:13:07 +09:00
Kijin Sung
c6f8abe855 #2273 Make the version upgrade notice more readable 2024-01-21 23:11:26 +09:00
Kijin Sung
3c1e90b5f7 #2273 Show warning in dashboard if PHP version < 7.4 2024-01-21 23:08:54 +09:00
Kijin Sung
fecc9c9ffe Fix #2278 set default value for $member_config->member_max_filesize 2024-01-21 23:02:30 +09:00
Kijin Sung
470f007138 Fix #2278 warning/notice about $member_config->member_max_filesize 2024-01-21 23:00:31 +09:00
Kijin Sung
afc812bc5e
Merge pull request #2269 from kkigomi/multiple-params-debugPrint
`debugPrint()` 함수에 파라미터를 다수 사용할 수 있도록 개선
2024-01-21 00:30:19 +09:00
kkigomi
be3205b54e
Merge branch 'kkigomi/develop' into multiple-params-debugPrint 2024-01-21 00:09:37 +09:00
kkigomi
42919d1259
Debug 메시지가 json_encode() 오류로 인해 잘못된 포맷으로 응답을 생성하는 문제 해결 2024-01-20 23:24:30 +09:00
Kijin Sung
bb1699f577
Merge pull request #2264 from kkigomi/input-number
관리페이지 설정 폼에서 숫자 입력 항목 필드의 type 을 number 로 변경
2024-01-20 13:29:55 +09:00
Kijin Sung
c91e772781 Fix #2277 potentially undefined session variable 2024-01-20 13:27:59 +09:00
Kijin Sung
07e252d2ac Fix #2276 warning/notice when $obj doesn't have all the expected attributes 2024-01-20 13:20:11 +09:00
Kijin Sung
1ef2a41971 RVE-2024-2 prevent loading cache file as external page 2024-01-20 00:52:34 +09:00
Kijin Sung
1854700e77 RVE-2024-1 properly encode document title passed to js variable 2024-01-20 00:41:14 +09:00
Kijin Sung
152fb4e753 RVE-2024-1 always escape DocumentItem->getTitleText() 2024-01-20 00:40:36 +09:00
Kijin Sung
a3650bb899 RVE-2024-1 missing escape of autogenerated document title 2024-01-20 00:39:19 +09:00
Kijin Sung
cfc7cfd53b Block direct access to cached files in files/faceOff 2024-01-20 00:27:11 +09:00
Kijin Sung
40b3dcd5f0 Fix #2275 warning/notice if getTagList() is called with incomplete arguments 2024-01-20 00:25:17 +09:00
Kijin Sung
1992e9dd5d Fix #2274 fatal error in importer module in PHBP 8.x 2024-01-20 00:23:47 +09:00
Kijin Sung
de1174c3b5 Fix data() name for compatibility with jQuery 3.x 2024-01-20 00:22:12 +09:00
Kijin Sung
05f330cabe Only modify module_info->layout_srl (or mlayout_srl) when it has a positive value 2024-01-17 14:53:11 +09:00
Kijin Sung
fb85d62f2f Fix setLayoutAndTemplatePaths() no-op when PC layout is set to -1 2024-01-17 14:49:36 +09:00
Kijin Sung
75198423f3 Fix backward assignment of M and P in procMemberAuthAccount 2024-01-17 14:45:08 +09:00
Kijin Sung
ee9a1a2b20 Fix #2272 unintended conversion of v1 echo statements inside verbatim section of v2 template 2024-01-16 21:43:38 +09:00
Kijin Sung
a0af57139e Fix relative path in "poster" attribute not being converted correctly 2024-01-16 21:35:09 +09:00
Kijin Sung
e44f5ef434 Fix inncorrect read count for anonymous documents 2024-01-16 21:31:37 +09:00
Kijin Sung
2d1ff01688 Fix #2271 data-file-srl attribute of <video> and <audio> tags 2024-01-16 21:30:27 +09:00
kkigomi
d54c05a096
var_dump() 함수와 인터페이스 맞춤 2024-01-14 19:20:46 +09:00
kkigomi
f5300456a2
symfony/var-dumper 동작처럼 파라미터를 하나씩 처리하도록 변경 2024-01-14 18:10:42 +09:00
kkigomi
e8c4d3fe47
debugPrint 함수의 파라미터 수 처리의 보완 2024-01-14 17:27:49 +09:00
kkigomi
6d2ee8dbea
debugPrint() 함수에 파라미터를 다수 사용할 수 있도록 개선
`debugPrint($arg1, $arg2, 'content');`
2024-01-14 04:45:58 +09:00
kkigomi
043bb312bc
위젯 설정 등의 페이지에서 파일박스에 업로드 후 문제 수정 2024-01-12 20:36:07 +09:00
Kijin Sung
e2cfa524d0 Fix TemplateParserV1 and FrontEndFileHandler not recognizing Google webfonts '.../css2?...' URL as CSS 2024-01-10 13:09:01 +09:00
kkigomi
5486ec28e2
관리페이지 설정 폼에서 숫자 입력 항목 필드의 type 을 number 로 변경
음수 및 `0`으로 입력되지 않아야 할 항목에 최소 값을 `0` 또는 `1`로 설정
2024-01-10 00:12:21 +09:00
Kijin Sung
b591f023ef
Merge pull request #2263 from dewekk/fix-page-handler
PageHandler Iterator 사용 시 페이지가 잘못 표시되는 문제 수정
2024-01-09 10:23:56 +09:00
conory
47f8ec2cde Fix member info page error when the email id length is 1
PHP Exception: ValueError #0 "str_repeat(): Argument #2 ($times) must be greater than or equal to 0" in modules/member/member.view.php on line 168
2024-01-09 00:33:40 +09:00
dewekk
7a4055862d
Fix error when using PageHandler Iterator
PageHandler Iterator 사용 시 page_count 확인 코드 오류 수정
2024-01-08 21:21:11 +09:00
Kijin Sung
1a913c3e49 Version 2.1.12 2024-01-05 13:53:05 +09:00
Kijin Sung
510cbf91ff Fix current time being displayed incorrectly (e.g. 5:9 instead of 05:09) in editor autosave notification 2024-01-05 12:19:45 +09:00
Kijin Sung
7814352b78 Fix potential type error in ncenterlite.controller.php #2261 2024-01-05 12:03:11 +09:00
Kijin Sung
a9f752bb7c
Merge pull request #2261 from kkigomi/patch-3
e361d2e 커밋에서 exec_xml() 함수의 대체가 잘못 수정된 문제
2024-01-05 11:33:38 +09:00
kkigomi
117decebeb
e361d2e 커밋에서 exec_xml() 함수의 대체가 잘못 수정된 문제 2024-01-05 04:51:15 +09:00
Kijin Sung
30dbe29de7 Fix type conversion error in Redis cache driver (43732089 regression) 2024-01-05 01:04:55 +09:00
Kijin Sung
43e3672c4e Fix detail address not being updated when using Postcodify API 2024-01-04 15:38:46 +09:00
Kijin Sung
3a53e173bb Change default error_reporting level to E_ALL with no exceptions 2024-01-04 14:46:15 +09:00
Kijin Sung
010ba87c5b Fix undefined variables and properties 2024-01-04 14:45:49 +09:00
Kijin Sung
94e2d8e11a Version 2.1.11 2024-01-04 10:47:52 +09:00
Kijin Sung
282406a1ea Convert most LayoutModel methods to static
https://xetown.com/questions/1801997
2024-01-04 10:43:37 +09:00
Kijin Sung
6c113c22ed Fix unnecessary assignment by reference, which causes E_NOTICE 2024-01-04 10:25:25 +09:00
Kijin Sung
ed15587c4f Fix deprecation warning when header script is empty 2024-01-04 01:06:53 +09:00
Kijin Sung
dbd92c191c Move legacy class list to legacy.php, where it belongs 2024-01-04 01:05:08 +09:00
Kijin Sung
5206085d5d Add no-op "else" clause to RX_BASEURL with appropriate comment 2024-01-04 00:54:53 +09:00
Kijin Sung
e361d2e40a Replace exec_xml() with exec_json() in document AJAX actions 2024-01-04 00:49:46 +09:00
Kijin Sung
95267b415a Remove trackback related options from content widget 2024-01-03 22:17:08 +09:00
Kijin Sung
a06383bd44 Fix type error in content widget
https://xetown.com/questions/1801863
2024-01-03 20:24:32 +09:00
Kijin Sung
264a88d72d Merge develop into develop 2024-01-02 23:29:04 +09:00
Kijin Sung
0cb26dc5f0
Merge pull request #2256 from kijin/pr/search-thumbnail
통합검색 모듈의 이미지 및 동영상 썸네일 처리 개선 #2230
2024-01-02 23:25:58 +09:00
Kijin Sung
e0cdd463f4 Fix #2252 add option to whitelist an IP/range in spamfilter module 2024-01-02 23:20:33 +09:00
Kijin Sung
ca4e2d60e3 Fix #2221 add document.publishDocument (before/after) triggers that cover both insert and update 2024-01-01 17:34:49 +09:00
Kijin Sung
9f460b4b96 Fix warning in PHP 8.x 2024-01-01 17:25:24 +09:00
Kijin Sung
faa89442c6 Fix #2253 add triggers before/after communication.deleteMessage and deleteMessages 2024-01-01 17:25:08 +09:00
Kijin Sung
76034163f9 Improve thumbnail handling for image and video search results #2230 2024-01-01 16:56:04 +09:00
Kijin Sung
85fd994156
Merge pull request #2255 from kkigomi/patch-1
관리자 메뉴 추가에서 빈 메뉴 항목을 잘못 표시하는 문제 수정
2024-01-01 14:52:36 +09:00
Kijin Sung
4a32122af3 Fix #2255 skip modules without defined menu 2024-01-01 14:51:14 +09:00
kkigomi
b5ae96e0ff
관리자 메뉴 추가에서 빈 메뉴 항목을 잘못 표시하는 문제 수정
모듈에서 노출하는 메뉴가 없을 때 `undefined` 항목이 다수 잘못 표시되는 문제를 해결합니다.
2024-01-01 14:33:27 +09:00
Kijin Sung
c235f6b8b3 Adjust min-height to Prevent layout shift when CKEditor is loaded
https://xetown.com/questions/1801094
2023-12-31 16:21:05 +09:00
Kijin Sung
6328005ace Fix #2244 unnecessary composite index on tags table @Elkha 2023-12-31 00:23:32 +09:00
Kijin Sung
f16da70c64 Add DB::getIndexInfo() 2023-12-31 00:16:43 +09:00
Kijin Sung
a102f20766 Fix #2237 failure to recognize layout.blade.php 2023-12-30 23:53:05 +09:00
Kijin Sung
fd9c8bf458 Fix undefined $category in default board skin header 2023-12-30 22:36:12 +09:00
Kijin Sung
337f2974f6 Ensure consistent handling of duration_new setting
https://xetown.com/questions/1800973
2023-12-30 22:35:14 +09:00
Kijin Sung
a6a45bcf76 Fix #2249 incorrect attribute path 2023-12-30 22:15:13 +09:00
Kijin Sung
3fb44b2863 #2243 보완: use template to generate test email 2023-12-30 22:11:30 +09:00
Kijin Sung
7f6f949330
Merge pull request #2243 from ForPeople/patch-1
Update advanced_mailer.admin.controller.php
2023-12-30 22:04:35 +09:00
Kijin Sung
0e56669cc4 Show more detailed URL in AJAX error message 2023-12-30 22:02:24 +09:00
Kijin Sung
af17b34f75 Trigger member.doLogin (after) event after actually logging in 2023-12-30 21:52:38 +09:00
Kijin Sung
7a6dad9237 Always send AJAX requests to the same domain as the current page 2023-12-30 21:51:30 +09:00
Kijin Sung
ccc0417a38 Disable platform-check and prepend-autoloader options in composer.json 2023-12-30 21:45:58 +09:00
Kijin Sung
ee440eff53
Merge pull request #2254 from kkigomi/feature/composer-optmize
composer optmize 활성화
2023-12-30 21:43:10 +09:00
Kijin Sung
d8bc11ba60 Fix #2224 misleading error message about activation email 2023-12-30 21:42:03 +09:00
Kijin Sung
3c2097197e Fix #2239 old code in importer module 2023-12-30 21:37:17 +09:00
Kijin Sung
12a4f5ed77 Fix #2235 allow selecting searchable types in integration search module 2023-12-30 21:31:06 +09:00
Kijin Sung
9fae527d3f Clean up integration_search default skin 2023-12-30 21:07:23 +09:00
Kijin Sung
9175d51bd5 Fix warning when forwarded module info does not contain all attributes 2023-12-30 21:05:31 +09:00
Kijin Sung
600811a8f0 Fix error when array is passed to isModuleUsingPublishValidation() 2023-12-30 20:59:20 +09:00
Kijin Sung
9aaf785309 Fix partial search result in admin document list and member document list 2023-12-30 20:56:24 +09:00
Kijin Sung
c7811969ba Fix #2242 show documents of all status in dispDocumentAdminList 2023-12-30 20:49:20 +09:00
Kijin Sung
3e09ca63a9 Fix #2241 inconsistent handling of class name specified in event handler 2023-12-30 20:45:48 +09:00
Kijin Sung
1c0f3cd2e2 Fix warnings in PHP 8.x during image adjustment 2023-12-30 20:37:09 +09:00
Kijin Sung
6486462b73 Fix #2245 don't change file state when moving document or comment to trash 2023-12-30 20:33:00 +09:00
Kijin Sung
031f3bb54d Fix uninitialized links to some member pages #2251 2023-12-30 20:28:15 +09:00
Kijin Sung
3655a65eef Fix missing member menu in mobile default communication skin 2023-12-30 20:27:46 +09:00
Kijin Sung
7a8b62448d Add rx_ckeditor class to ckeditor wrapper div
https://xetown.com/questions/1801094
2023-12-30 20:15:04 +09:00
kkigomi
4ee53516c8 composer optmize 활성화
컴포저로 설치, 업데이트, `dump-autoload` 명령을 실행할 때 autoloader 를 최적화하는 옵션을 기본 실행하도록 변경하여 실수를 방지했습니다.
- https://getcomposer.org/doc/06-config.md#optimize-autoloader
- https://getcomposer.org/doc/articles/autoloader-optimization.md

추가로 license 표기를 권장에 따라 SPDX 식별자로 변경했습니다.
- https://getcomposer.org/doc/04-schema.md#license
2023-12-29 12:01:05 +09:00
ForPeople
58ee3476f9
Update advanced_mailer.admin.controller.php
html 이메일 콘텐츠의 태그 형식을 맞춰서 이메일 스코어를 높일 수 있습니다.
2023-12-25 23:17:09 +09:00
Kijin Sung
daffb6d4ec Fix type error when calling isValidPhoneNumber() from member controller
https://xetown.com/questions/1799857
2023-12-20 16:36:09 +09:00
Kijin Sung
e96338fd60
Merge pull request #2233 from dewekk/fix-comment-page
댓글 페이지 수 설정 안되는 문제 수정
2023-12-19 22:28:42 +09:00
Kijin Sung
2139b8541c Remove trackback from integration search 2023-12-19 22:25:16 +09:00
Kijin Sung
2ab8281355 Fix #2236 reduce default page count in integration search on mobile 2023-12-19 22:09:11 +09:00
Kijin Sung
8d4706ec75 Fix #2232 enable multilang in sitemap (top-level menu) name 2023-12-19 22:06:51 +09:00
Kijin Sung
083c9814d3 Fix #2234 missing translation for failed_blamed_already 2023-12-18 21:22:21 +09:00
Kijin Sung
6e2bab02cc Be more permissive about null values passed to lang() and Context::getLang() 2023-12-18 21:19:33 +09:00
dewekk
451ca57602
댓글 페이지 수 설정 안되는 문제 수정 2023-12-14 16:28:59 +09:00
Kijin Sung
14449dff9d Fix #2227 duplicate og:url meta tag in page header 2023-12-13 23:04:21 +09:00
Kijin Sung
ea15541d05 Fix #2231, #2232 inconsistent escaping of menu titles 2023-12-13 23:00:27 +09:00
Kijin Sung
0d529ef682 Disable procFileImageResize and related ruleset 2023-12-13 22:35:22 +09:00
Kijin Sung
c160623f35 Clear local cache when module config is updated 2023-12-13 15:30:24 +09:00
Kijin Sung
b344bbfb26 Properly handle "loading" and "sandbox" attributes of iframes 2023-12-12 19:05:40 +09:00
Kijin Sung
b299dd02dc Fix spurious "sandbox" attribute being added to all iframes, due to CKEditor change
https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-iframe_attributes
2023-12-12 18:55:55 +09:00
conory
d83e6a008d Revert "Fix SPF hint in Brevo mail driver"
This reverts commit a82c9c5444.
2023-12-09 13:47:11 +09:00
conory
a82c9c5444 Fix SPF hint in Brevo mail driver
Brevo doesn't support SPF.
2023-12-09 12:34:25 +09:00
conory
ba053b2fbf Add Brevo mail driver 2023-12-09 11:50:04 +09:00
conory
78e339fc9c Fix 64537818f6 2023-12-08 23:40:56 +09:00
conory
64537818f6 Use mail.default_force config 2023-12-08 22:31:22 +09:00
Kijin Sung
9ca263ebf5 Force result to string in MediaFilter::removeEmbeddedMedia() 2023-12-08 21:58:16 +09:00
Kijin Sung
1a8b84e75b Fix #2228 incorrect fallback to default skin when Blade template is present 2023-12-08 21:57:54 +09:00
Kijin Sung
9c145480fe Fix #2229 incorrect skin path for ncenterlite in mobile 2023-12-08 21:53:44 +09:00
Kijin Sung
8ba0d351a0 Fix warning when order_var is not set 2023-12-06 16:55:08 +09:00
Kijin Sung
cb7b6cbfde Fix #2226 warnings when module_info doesn't exist 2023-12-06 11:03:35 +09:00
Kijin Sung
11b728bf4a Fix video aspect ratio when ffprobe returns rotation data in side_data_list
https://xetown.com/questions/1789336
2023-12-06 10:34:39 +09:00
Kijin Sung
a78df8d4fd Fix incorrect recognition of 0507 phone numbers 2023-12-04 17:33:52 +09:00
Kijin Sung
f8f929137c Fix session.gc_maxlifetime being set to a lower value than specified in php.ini 2023-12-04 17:31:23 +09:00
Kijin Sung
93e0e55aaa Remove unnecessary setTemplatePath() 2023-12-01 11:21:38 +09:00
Kijin Sung
cd74950c81 Fix layout and skin path in procMemberAuthAccount 2023-12-01 11:20:38 +09:00
Kijin Sung
3b5fd1cfbb Fix #2222 missing English translation for document module config 2023-12-01 00:07:22 +09:00
Kijin Sung
4373208953 Fix #2219 type error in Redis cache driver 2023-12-01 00:02:03 +09:00
Kijin Sung
a36ecab8b4 Reset cache driver after unit test 2023-11-30 23:57:34 +09:00
Kijin Sung
a294783261 Add PHP 8.3 to unit test matrix 2023-11-30 23:49:58 +09:00
Kijin Sung
7a7cdb6389 Version 2.1.10 2023-11-30 11:06:43 +09:00
Kijin Sung
c17e8b201b Replace TemplateHandler references with Rhymix\Framework\Template 2023-11-29 23:56:39 +09:00
Kijin Sung
b60426f984
Merge pull request #2218 from kijin/pr/member-auth-mail
ID/PW 찾기 방법 개선
2023-11-29 23:52:30 +09:00
Kijin Sung
4f6c05f735 Only allow non-logged-in users in procMemberResetPassword 2023-11-29 22:02:04 +09:00
Kijin Sung
6a308386bc Don't redirect back to auth screen after login 2023-11-29 22:00:12 +09:00
Kijin Sung
64148f0544 More validity checks for reset password 2023-11-29 21:59:28 +09:00
Kijin Sung
a45373c113 Add short route for procMemberAuthAccount 2023-11-29 21:53:01 +09:00
Kijin Sung
ad6d578a00 Clean up unnecessary variables in procMemberAuthAccount 2023-11-29 21:50:19 +09:00
Kijin Sung
8e1ccf7c1b Separate procMemberResetPassword action from procMemberModifyPassword 2023-11-29 21:45:42 +09:00
Kijin Sung
cd1477f14b Add more specific message about password change/reset 2023-11-28 23:31:28 +09:00
Kijin Sung
cd79409f9b Change xe_validator_id for password reset form 2023-11-28 23:26:27 +09:00
Kijin Sung
24c2cecc9b Misc fixes to password change routine 2023-11-28 23:24:09 +09:00
Kijin Sung
c887d8a84d Add template for password reset without current_password 2023-11-28 23:16:32 +09:00
Kijin Sung
2ce8b5812b Customize password reset email for v2 method 2023-11-28 22:40:47 +09:00
Kijin Sung
c4a9da23b0 Set default value for password reset method on new install 2023-11-28 22:20:16 +09:00
Kijin Sung
5b3da67f29 Add option for password reset method 2023-11-28 22:19:00 +09:00
Kijin Sung
b934b8638f Clean up member_auth_mail table schema, adding auth_type column 2023-11-28 22:08:22 +09:00
Kijin Sung
c2311f88be Fix #2217 call getDocumentList (after) trigger even if there are no results 2023-11-28 00:06:21 +09:00
Kijin Sung
4a2ea92f07 Fix unit test for #2215 2023-11-25 22:33:53 +09:00
Kijin Sung
1bf03c101e Merge remote-tracking branch 'upstream/develop' into develop 2023-11-25 22:31:44 +09:00
Kijin Sung
de08f5ee62 유닛 테스트 수정 및 강화하여 #2214 보완 2023-11-25 22:30:51 +09:00
Kijin Sung
190ec17fc5 더 다양한 import 문법과 특수문자 대응하여 #2214 보완 2023-11-25 22:30:09 +09:00
Kijin Sung
f58c3e2db2 Fix #2215 missing lang code (also see #2131) 2023-11-24 14:43:50 +09:00
dewekk
b1756b0e82
b825850 보완 2023-11-23 18:16:52 +09:00
dewekk
b82585058c
스크립트 자동 압축 사용 시 import 구문 인식 문제 수정 2023-11-23 16:50:55 +09:00
Kijin Sung
d78b8e8415 Delete .xfsr 2023-11-21 23:48:05 +09:00
Kijin Sung
ad84896b03 Add flag to control which AJAX errors to alert(), but always print them to console 2023-11-21 23:43:50 +09:00
Kijin Sung
2b0be0944f Don't alert non-essential network errors from uploader
댓글폼마다 업로더가 로딩되므로 getFileList 액션이 자주 오류를 일으키고,
이에 따라 alert이 계속 뜨는 사례가 발견되어
해당 오류는 alert하지 않고 콘솔에만 표시하도록 임시조치함.
2023-11-21 23:43:01 +09:00
Kijin Sung
f00d6c7e19 Remove leading whitespace from displayed response 2023-11-21 22:51:14 +09:00
Kijin Sung
908fd98270 Remove potentially problematic check for module_srl in procFileDelete; maybe related to #2211 2023-11-21 22:22:27 +09:00
Kijin Sung
40d3ce4f46 Add unit test ad5c3c0f5 2023-11-21 22:13:56 +09:00
Kijin Sung
ad5c3c0f5c Fix duplicate condition when joined subquery contains <conditions>
https://xetown.com/questions/1795994
2023-11-21 22:13:17 +09:00
Kijin Sung
e9be06ef6b Fix uploaded_count remaining after comment is deleted 2023-11-19 21:41:50 +09:00
Kijin Sung
3f69e368da Fix #2213 incorrect comment deleted status 2023-11-19 21:37:42 +09:00
Kijin Sung
9a6524d63d Allow pre-setting upload_target_type for each editor 2023-11-19 21:29:15 +09:00
Kijin Sung
fdc9e1e98d Fix incorrect debug/error/query count if the same entry appears multiple times 2023-11-19 00:02:34 +09:00
Kijin Sung
cad050ad8d Clean up header scripts of XEDITION board skin 2023-11-18 23:52:08 +09:00
Kijin Sung
618d075a99 Fix warning if header script is not defined in layout 2023-11-18 23:51:51 +09:00
Kijin Sung
bd7ef4bedd Fix unnecessary slash after override_filename (this causes a warning in line 349) 2023-11-18 23:51:29 +09:00
Kijin Sung
950b7c24b4 Fix #2209 incorrect lang code for "Configure Mobile Skin" 2023-11-18 23:30:09 +09:00
Kijin Sung
5993072fa7 Fix possible type mismatch in upload info verification code
https://xetown.com/questions/1793825
https://xetown.com/questions/1794400
2023-11-10 17:14:12 +09:00
Kijin Sung
8176bdb845 Fix undefined variables in several module config templates 2023-11-09 01:37:38 +09:00
Kijin Sung
d54eb4f3d5 Handle the special case of Context::loadFile($filename, true)
https://xetown.com/questions/1793899
2023-11-09 01:17:21 +09:00
Kijin Sung
5e914791e2 Fix undefined module configuration name 2023-11-08 23:40:37 +09:00
Kijin Sung
80eb973615 Remove unnecessary procFilter() from search forms 2023-11-08 23:39:57 +09:00
Kijin Sung
7160b1aa58 Fix array to string conversion when other boards are included 2023-11-08 23:30:00 +09:00
Kijin Sung
9fdfd34516 Fix short URL not being produced when some parameters are empty strings 2023-11-08 23:26:16 +09:00
Kijin Sung
290f467ddd Fix type error when unlinked menu creation fails
https://xetown.com/questions/1793779
이 문제의 1차적인 원인으로 추정되나, unlinked 메뉴 정보를 가져오지 못하는
근본적인 원인은 알 수 없음. 디버깅 편의를 위해 BaseObject 반환하도록 조치함.

메뉴를 통하지 않고 추가된 모듈들을 unlinked에 모아 두는 방식은
분명 개선할 필요가 있음.
2023-11-08 22:51:06 +09:00
Kijin Sung
2c0589ce4b Fix #2208 unused variable in getDocumentTrashList() 2023-11-08 22:46:45 +09:00
Kijin Sung
37745f4717 Fix undefined variable warning in trash view screen 2023-11-08 22:46:04 +09:00
Kijin Sung
c29a603d7c Change outdated escaping code in page module 2023-11-08 22:42:23 +09:00
Kijin Sung
1acdbc4a47 Version 2.1.9 2023-11-06 09:25:33 +09:00
Kijin Sung
177e54f86c Remove redundant Context::init() in unit tests 2023-11-06 09:18:21 +09:00
Kijin Sung
073924efcf Fix #1346 allow setting filesize limit for member signature 2023-11-06 08:41:35 +09:00
Kijin Sung
426027509c Use raw bytes, not MB, when setting allowed filesize in session 2023-11-06 08:39:15 +09:00
Kijin Sung
7a659737cc Fix #1299, Fix #1346 implement proper file size limit for messages 2023-11-06 08:26:01 +09:00
Kijin Sung
a647fff6b8 Allow setting file size and extension limits in setUploadInfo() 2023-11-06 08:24:04 +09:00
Kijin Sung
4bdadcdf2c Fix potentially undefined properties in EditorModel::getEditor() 2023-11-06 07:57:04 +09:00
Kijin Sung
f4474070e1 Merge branch 'security/rve-2023-6' into develop 2023-11-06 07:47:14 +09:00
Kijin Sung
7132ef4c00 Fix type error when null is passed to cut_str()
https://xetown.com/questions/1793588
2023-11-05 20:24:07 +09:00
Kijin Sung
d02ea160c1 Fix undefined variable in getThumbnail() 2023-11-05 13:30:55 +09:00
Kijin Sung
c4e1625afa Fix #2205 change FCM chunk size to 500 2023-11-03 19:19:41 +09:00
Kijin Sung
27a932d594 Display more detailed error message when upload info mismatch is found 2023-11-03 16:48:46 +09:00
Kijin Sung
990343d906 Set editor_mid automatically based on module_srl 2023-11-03 16:42:56 +09:00
Kijin Sung
0d58c9038d Revert conversion to array in legacy_filter()
procFilter를 사용하는 레거시 서드파티 자료는 여러 개의 값을 제출할 경우
배열이 아닌 |@|로 구분된 문자열을 기대하므로, 기존 방식으로 전달
2023-11-02 21:36:55 +09:00
Kijin Sung
2baa4b5369 Fix warning when the author's member info cannot be found 2023-11-02 21:36:27 +09:00
Kijin Sung
e1cfb09652 Set proper module_srl and mid when uploading in member and communication modules 2023-11-02 21:22:43 +09:00
Kijin Sung
f6a02fd006 Fix typo in procFileDelete 2023-11-02 21:18:59 +09:00
Kijin Sung
eda9af546c Automatically set module_srl in upload info, and check it strictly 2023-11-02 20:49:05 +09:00
Kijin Sung
bffa50dd15 Fix RVE-2023-6 (validate module_srl when uploading/deleting) 2023-11-02 13:19:41 +09:00
Kijin Sung
e7eadcc6f1 Fix unit test error when repository name is not "rhymix" 2023-11-02 13:00:39 +09:00
Kijin Sung
a128b6e3cb Fix unit test error when repository name is not "rhymix" 2023-11-02 12:44:03 +09:00
Kijin Sung
99de7db35a Fix RVE-2023-6 (getFileList) 2023-11-01 22:36:05 +09:00
Kijin Sung
4a9a89b299 Fix RVE-2023-6 (procFileDelete, procFileSetCoverImage) 2023-11-01 22:32:47 +09:00
Kijin Sung
613518aa28 Fix RVE-2023-6 (procFileUpload, procFileIframeUpload) 2023-11-01 22:23:06 +09:00
Kijin Sung
720193d9b9 Separate compile unit tests for template v2 into several methods 2023-10-31 22:01:22 +09:00
Kijin Sung
e72336c90c Fix #2203 'this' in lang directive will refer to current module 2023-10-31 21:59:33 +09:00
Kijin Sung
3233619eac Fix template v2 not working in external pages
https://xetown.com/questions/1792598
2023-10-31 21:42:27 +09:00
Kijin Sung
d79c2f5140 Fix #2202 undefined properties if domain settings are not saved 2023-10-31 11:50:00 +09:00
Kijin Sung
a602779fc2 General cleanup of Context vars 2023-10-31 11:36:20 +09:00
Kijin Sung
af0dab0e1b Always initialize Context before unit test 2023-10-31 11:35:54 +09:00
Kijin Sung
c8cac3653f Fix missing Context::init() in unit test for Password class 2023-10-29 23:41:48 +09:00
Kijin Sung
96330593fd Add $this->request to module and template instances 2023-10-29 23:37:08 +09:00
Kijin Sung
a196706d7f Add Request class and make Router::parseUrl() return an instance of it 2023-10-29 23:32:49 +09:00
Kijin Sung
986fc23043 Redirect to inbox after sending message 2023-10-27 19:32:17 +09:00
Kijin Sung
18c0e14b4b Fix failure to load template file if a directory of the same name (minus the extension) exists in the same path 2023-10-27 16:11:25 +09:00
Kijin Sung
47db7e6a0b Add template variables for backward compatibility 2023-10-27 16:06:48 +09:00
Kijin Sung
dbcbb57413 Fix broken admin footer when counter addon is disabled 2023-10-27 10:43:08 +09:00
Kijin Sung
dd64698c66 Version 2.1.8 2023-10-27 10:24:58 +09:00
Kijin Sung
c58b13c459 Fix buttons being crushed when loading temp saved document with long content 2023-10-27 10:20:19 +09:00
Kijin Sung
ce0313acc5 Mark old Context methods as deprecated 2023-10-27 00:48:36 +09:00
Kijin Sung
286dc76e78 Support event handler (trigger) to customize the content of the admin dashboard 2023-10-27 00:22:12 +09:00
Kijin Sung
72ab8ea8fc Disable CKEditor 4.22 version check AJAX request 2023-10-26 23:10:05 +09:00
Kijin Sung
7ea912bb6e Add _rx_ajax_compat: XMLRPC field to AJAX requests generated by procFilter(), for improved backward compatibility 2023-10-26 23:08:05 +09:00
Kijin Sung
2d443a600e Use own store of codecept.phar for github actions 2023-10-26 20:36:51 +09:00
Kijin Sung
6416499d34 Replace cumbersome noescape filter with {!! $content !!} syntax in common templates 2023-10-26 13:01:47 +09:00
Kijin Sung
e0c396bb3e Convert common/tpl/*_layout files to template v2 2023-10-25 23:28:26 +09:00
Kijin Sung
9d5dff5371 Fix incorrect rx_login_status cookie immediately after autologin 2023-10-25 20:29:27 +09:00
Kijin Sung
80e50d41f5 Change default Cookie path to "/" for compatibility with JS function setCookie() 2023-10-24 23:17:01 +09:00
Kijin Sung
8d2b7101f4 Use Cookie class to control session and member-related cookies, too 2023-10-24 23:09:50 +09:00
Kijin Sung
a3cde9c109 Add config.php options to set defaults for Cookie class #2184 2023-10-24 23:09:17 +09:00
Kijin Sung
5005a09f06 Add Rhymix\Framework\Cookie class with sane defaults 2023-10-24 22:37:27 +09:00
Kijin Sung
53ec02b6bb Restore sending message by email (revert #1109)
- 스팸 방지를 위해 관리자만 발송할 수 있도록 변경
- 보낸이의 메일 주소를 노출하지 않도록 변경
2023-10-24 21:33:39 +09:00
Kijin Sung
c84756e769 Make procFilter() use exec_json() instead of exec_xml() internally, and deprecate it 2023-10-24 21:08:21 +09:00
Kijin Sung
e9e46e3391 Remove HTTP/2 server push for Cloudflare
클플에서 해당 기능 지원 중단하여 더이상 작동하지 않음
https://developer.chrome.com/blog/removing-push/
2023-10-24 20:32:35 +09:00
Kijin Sung
6856f60ff9 Fix incorrect default canonical URL on pages using Router 2023-10-24 20:27:16 +09:00
Kijin Sung
1f688c167c Change deprecated Codeception class name 2023-10-24 20:16:44 +09:00
Kijin Sung
4c49bc8d77 Fix undefined variable in layout cache file 2023-10-23 22:19:06 +09:00
Kijin Sung
c1ee5abaa1 Return early if hashed password is not provided 2023-10-23 22:10:07 +09:00
Kijin Sung
13ad81da5d Fix fatal error if dispBoardDeleteComment is called without comment_srl 2023-10-23 22:09:46 +09:00
Kijin Sung
1d079e3194
Merge pull request #2200 from kijin/template-v2
템플릿 언어 v2
2023-10-23 20:16:04 +09:00
Kijin Sung
c42d059594 Add deprecation warnings if syntax like <--#include-->, <!--%import--> is used in template v2 2023-10-23 14:17:30 +09:00
Kijin Sung
6a2a2826ec Optimize common code paths using Template class 2023-10-23 14:11:26 +09:00
Kijin Sung
8d3a332344 Reset template configuration when paths are provided to compile() or compileDirect() 2023-10-23 14:07:27 +09:00
Kijin Sung
a5d6a76cf4 Add parent reference to Template instances 2023-10-22 00:46:58 +09:00
Kijin Sung
4054dec926 Fix reuse of \$oTemplate in HTMLDisplayHandler 2023-10-21 22:01:10 +09:00
Kijin Sung
fefd3dd895 Fix path normalization problem 2023-10-21 14:19:20 +09:00
Kijin Sung
6085b82d19 Inherit parent vars and add own vars when a template is included with vars from another template that has vars; add unit tests for vars inheritance 2023-10-21 13:52:02 +09:00
Kijin Sung
5b47151440 Change desktop and mobile directives to reference static Context method 2023-10-21 13:35:24 +09:00
Kijin Sung
fbc5564247 Prevent direct access to .blade.php templates 2023-10-20 23:15:21 +09:00
Kijin Sung
f3cebbec1d Merge branch 'develop' into template-v2 2023-10-20 21:18:58 +09:00
Kijin Sung
129a0403e4 Throw warning if <block>, cond, loop is used in template v2 2023-10-20 21:17:38 +09:00
Kijin Sung
a284a1b072 Also apply scope conversion to short PHP tags 2023-10-20 21:03:31 +09:00
Kijin Sung
55d91b9dc7 Implement unload directive 2023-10-20 20:56:14 +09:00
Kijin Sung
9a98e9220d Enforce the order of parameters to the load directive 2023-10-20 20:46:35 +09:00
Kijin Sung
475a74cca2
Merge pull request #2199 from dewekk/fix-member-nicknameform
닉네임 변경 금지 설정시 관리자가 회원 등록을 하지 못하는 문제 수정
2023-10-19 15:35:06 +09:00
dewekk
31949e8a93
닉네임 변경 금지시 회원 등록 불가 문제 수정 2023-10-19 13:04:18 +09:00
Kijin Sung
ca5c96d02a Add unit tests for path conversion utilities in Template class 2023-10-18 21:33:49 +09:00
Kijin Sung
325c2c2b13 Rename internal list and add useful comment 2023-10-18 21:19:04 +09:00
Kijin Sung
3c401bbc20 Add pushOnce and prependOnce helper directives 2023-10-18 21:16:39 +09:00
Kijin Sung
6b2b3f0dc2 Add dd and url helper directives 2023-10-18 20:57:52 +09:00
Kijin Sung
977a61fb6e Merge branch 'develop' into template-v2 2023-10-18 20:45:28 +09:00
Kijin Sung
6e4c428420 Fix title_bold and other flags not being unset when updated 2023-10-18 20:45:14 +09:00
Kijin Sung
c50cc71ce1 Fix random loop ID always changing in template v2 unit test 2023-10-18 12:28:51 +09:00
Kijin Sung
c487c13864 Apply context-aware escape more generally; add can/cannot/canany and env directives 2023-10-18 12:09:45 +09:00
Kijin Sung
7c727c0fcb Cache the regexp for template v2 directives 2023-10-18 02:28:38 +09:00
Kijin Sung
c19d71847f Implement template v2 feature of pushing to stack 2023-10-18 02:23:18 +09:00
Kijin Sung
7b518ab747 Template v2 directives must match at word boundary 2023-10-18 01:44:36 +09:00
Kijin Sung
0f14ad8ccf Add error checking directive and unit tests for it 2023-10-18 00:29:32 +09:00
Kijin Sung
d4654eb5cf Remove member directive, and extend auth directive to look at grants 2023-10-18 00:12:40 +09:00
Kijin Sung
e044e11c5f Convert include code into a method of Template class 2023-10-18 00:01:11 +09:00
Kijin Sung
012dbb9ab7 Convert resource loading code into a method of Template class 2023-10-17 23:29:55 +09:00
Kijin Sung
55cafc5c33 Convert class and style builder into a method of Template class 2023-10-17 22:44:27 +09:00
Kijin Sung
82b9107ca0 Add support for fragment in template v2 2023-10-17 22:25:53 +09:00
Kijin Sung
a6afa3a61d Add loop variable and dump directive; reorganize template v2 unit tests 2023-10-17 20:12:22 +09:00
Kijin Sung
fe804163bf Add JSON_HEX_TAG and JSON_HEX_QUOT to JSON output filter 2023-10-17 19:00:00 +09:00
Kijin Sung
3c15589fb8 Allow loops and conditions to appear anywhere in a line 2023-10-17 03:28:20 +09:00
Kijin Sung
66980edab1 Allow use, include, and load directives to appear anywhere in a line 2023-10-17 03:06:40 +09:00
Kijin Sung
11ef5dcfff Add support for Blade-style @class and @style directives 2023-10-17 02:45:22 +09:00
Kijin Sung
668feea9e9 Add support for Blade-style @each include loop 2023-10-17 02:26:06 +09:00
Kijin Sung
eba9a4d333 Add unit test for actually compiling a v2 template 2023-10-17 00:33:36 +09:00
Kijin Sung
84471c83e6 Fix incorrect indentation of refresh.html 2023-10-17 00:18:16 +09:00
Kijin Sung
b0d288cb18 Complete unit tests for all the features of template parser v2 2023-10-16 23:56:11 +09:00
Kijin Sung
7fd916a81e Fix miscellaneous issues with template parser v2 2023-10-16 23:55:47 +09:00
Kijin Sung
f2fabab239 Fix conversion of paths relative to the Rhymix install directory 2023-10-16 21:15:52 +09:00
Kijin Sung
5899845b1d Update unit tests for template v2 2023-10-16 13:16:20 +09:00
Kijin Sung
91ab93c03a Fix {!! !!} unescaped echos not being recognized in template v2 2023-10-16 13:15:17 +09:00
Kijin Sung
1b9e2f58b7 Add unit tests for <load> @load syntax of template v2 2023-10-16 00:50:20 +09:00
Kijin Sung
3e1587c2ac Fix variable scope and absolute path handling in include syntax of template v2 2023-10-16 00:30:56 +09:00
Kijin Sung
8c4dfe744f Use actually existing filename for v1 parse test 2023-10-15 23:43:31 +09:00
Kijin Sung
27ab3fa7d9 More unit tests for template parser v2 2023-10-15 23:42:49 +09:00
Kijin Sung
881df020aa Fix ^/ path not working in <include> 2023-10-15 23:42:32 +09:00
Kijin Sung
0a2af3a1e7 Support legacy "cond" attribute in <include> 2023-10-15 23:35:06 +09:00
Kijin Sung
6893e08553 Prepend code in postprocessing, not preprocessing 2023-10-15 23:26:04 +09:00
Kijin Sung
1067588754 Unit tests should inherit Codeception\Test\Unit, not Codeception\TestCase\Test 2023-10-15 23:05:46 +09:00
Kijin Sung
9da1d56b21 Partial implementation of unit test for template parser v2 2023-10-15 23:03:27 +09:00
Kijin Sung
a362f27f62 Force write the version number in template parser v2 2023-10-15 23:03:03 +09:00
Kijin Sung
bbd19c814b Remove unnecessary autoescape setting for template v2 2023-10-15 22:39:36 +09:00
Kijin Sung
936663f804 Remove need for wrapper class in unit tests 2023-10-15 20:12:46 +09:00
Kijin Sung
ccc67d54e3 Return empty string if template file exists but there is nothing to parse 2023-10-15 16:50:04 +09:00
Kijin Sung
94c16bc363 Fix missing regexp match 2023-10-15 16:46:57 +09:00
Kijin Sung
02639e9aa0 Use the same extension when including template file in v2 2023-10-15 02:55:53 +09:00
Kijin Sung
4e8c184d0c Don't add .html automatically to template name 2023-10-15 02:45:58 +09:00
Kijin Sung
e0331798d9 Automatically choose .html or .blade.php when template name has no extension 2023-10-15 02:45:31 +09:00
Kijin Sung
44e1ed32a2 Add better comments to template parsers 2023-10-15 02:30:54 +09:00
Kijin Sung
b5cf446375 Properly escape and unescape Blade-style directives 2023-10-15 01:44:56 +09:00
Kijin Sung
b2cac3e868 Remove old TemplateHandler class, leaving only an alias for BC 2023-10-15 00:54:59 +09:00
Kijin Sung
93a0b63fdb Initialize unit test for TemplateParser v2 2023-10-15 00:51:49 +09:00
Kijin Sung
a640306123 Move unit test for TemplateParser v1 2023-10-15 00:50:26 +09:00
Kijin Sung
f13e3d633b Remove lang from exception list in TemplateParser_v1 2023-10-15 00:24:12 +09:00
Kijin Sung
5c5391ab12 Merge branch 'develop' into template-v2 2023-10-14 23:55:42 +09:00
Kijin Sung
f0554137ec Initial implementation of Template Parser v2 2023-10-14 23:36:33 +09:00
Kijin Sung
58c910dfa0 Add very old XE DB classes to cleanup list 2023-10-14 17:49:41 +09:00
Kijin Sung
7263fc9a5b Support disabling template cache and alternative version directive 2023-10-11 01:33:08 +09:00
Kijin Sung
a5c0f61b67 Allow customizing the extension in Template constructor 2023-10-11 00:21:24 +09:00
Kijin Sung
a2767b0dd8 Merge branch 'develop' into template-v2 2023-10-10 15:13:47 +09:00
Kijin Sung
861135bd6c Fix undefined variables in article page 2023-10-10 15:12:17 +09:00
Kijin Sung
45f016d53b Update references to TemplateHandler in common code paths 2023-10-10 15:05:46 +09:00
Kijin Sung
d46d25c69f Fix Template class not recognizing extensions other than .html and .php 2023-10-10 15:05:15 +09:00
Kijin Sung
16572c4515 Make TemplateHandler inherit Template nstead of class_alias 2023-10-10 14:52:17 +09:00
Kijin Sung
c777b59afb Merge branch 'develop' into template-v2 2023-10-10 14:23:39 +09:00
Kijin Sung
6928abbe2c Version 2.1.7 2023-10-10 12:46:09 +09:00
Kijin Sung
416b9c8498 Fix #2198 type error in debug panel for async requests 2023-10-10 11:16:03 +09:00
Kijin Sung
610a23f2fb Fix all async HTTP requests being treated as slow 2023-10-10 11:15:30 +09:00
Kijin Sung
3c29b7dff3 Update CKEditor to 4.22.1 final version 2023-10-09 21:39:30 +09:00
Kijin Sung
74be21ff5a Fix missing clearfix in scrap list 2023-10-08 15:02:55 +09:00
Kijin Sung
adb9942bd6 Don't set timezone in session until somebody calls setTimezone(), allowing fallback to system default timezone 2023-10-08 01:30:41 +09:00
Kijin Sung
e17b5fac7e Fix incorrect layout list display 2023-10-07 22:43:28 +09:00
Kijin Sung
938142856d Fix #2196 add exclude_module_srl parameter to getNewestCommentList query 2023-10-07 22:21:30 +09:00
Kijin Sung
7643f339b9 Fix potential null issue in autoload.php 2023-10-07 13:29:10 +09:00
Kijin Sung
c0850865a4 Fix undefined variable in Config::save() 2023-10-07 13:26:14 +09:00
Kijin Sung
639ad7ad06 Fix passing null to strtoupper() 2023-10-06 22:53:27 +09:00
Kijin Sung
a3497cc2b1 Remove unnecessary special treatment of -srl attributes 2023-10-06 22:50:40 +09:00
Kijin Sung
321d0ea88c Fix #2197 preserve position of data-file-srl attribute and trailing slash in tags 2023-10-06 22:49:15 +09:00
Kijin Sung
221602ceb8 Experimental support for data-* attributes in HTML #2194 2023-10-05 22:18:29 +09:00
Kijin Sung
a643ff60eb Pass additional arguments to HTMLFilter preprocessors and postprocessors 2023-10-05 21:02:10 +09:00
Kijin Sung
5ae810a54c Fix #2194 allow <details> amd <summary> tags 2023-10-05 20:52:20 +09:00
Kijin Sung
741f725bcf Fix warnings in PHP.x across several modules involved in site menu & design editing feature 2023-10-05 15:51:02 +09:00
Kijin Sung
82b8785c14 Fix warnings in PHP 8.x if skin XML file doesn't contain much information 2023-10-05 15:31:15 +09:00
Kijin Sung
0be8f6a441 Fix warnings in PHP 8.x 2023-10-05 15:30:37 +09:00
Kijin Sung
04546d8b0f Fix warnings in RSS config screen in PHP 8.x 2023-10-05 15:25:07 +09:00
Kijin Sung
bf7b0d6aef Fix invisible RSS feed image delete button
버튼 작동에는 지장이 없으나, 브라우저에 따라 투명하게 보일 때가 있었음
2023-10-05 15:20:41 +09:00
Kijin Sung
926aa1bc7d Remove unnecessary default values for update queries
업데이트 쿼리를 할 때 해당 컬럼에 넣을 값을 넘기지 않으면 기본값이 입력되어
의도치 않게 데이터가 변경될 가능성이 있습니다.
(예: ipaddress를 넘기지 않으면 현재 접속자의 IP 주소로 대체됩니다.)
이런 문제를 방지하기 위해 불필요한 기본값을 모두 제거합니다.
2023-10-04 21:13:56 +09:00
Kijin Sung
cf079833c7 Preserve all other information when an admin updates guest post 2023-10-04 21:06:21 +09:00
Kijin Sung
6228dca221 Fix nick_name is null error when an admin tries to update a guest comment
https://xetown.com/questions/1788734
2023-10-04 20:58:23 +09:00
Kijin Sung
f589737dcf Fix column name "unknown" in error message for insert/update queries 2023-10-04 20:57:54 +09:00
Kijin Sung
d84e0e929f Fix #2193 use prop() instead of attr() to check whether a checkbox is checked 2023-10-04 15:50:24 +09:00
Kijin Sung
9daa1a65cf Deprecate old, rarely used methods of FileHandler 2023-10-04 01:33:57 +09:00
Kijin Sung
624bdec182 Fix potential type errors in FileHandler class 2023-10-04 01:31:35 +09:00
Kijin Sung
044ad8fbf6 Mark old Security class as deprecated 2023-10-04 01:24:22 +09:00
Kijin Sung
2a1aad7c1b Mark old EmbedFilter and Password classes as deprecated 2023-10-04 01:22:30 +09:00
Kijin Sung
3c9828ec5f Mark old IpFilter and Purifier classes as deprecated 2023-10-04 01:20:29 +09:00
Kijin Sung
20fedd2810 Mark most methods of Mobile class as deprecated 2023-10-04 01:15:39 +09:00
Kijin Sung
3505d49de6 Separate common Template class from Template v1 parser 2023-10-03 23:27:02 +09:00
Kijin Sung
f15cdecbe1 Fix potential type error in Debug::translateFilename() 2023-10-03 23:11:38 +09:00
Kijin Sung
6215e57762 Add warning to discourage ruleset use
https://xetown.com/questions/1788526
2023-10-03 19:31:15 +09:00
Kijin Sung
f8ed6da4ed Support both UUIDv4 and UUIDv7 in Security::getRandomUUID() 2023-10-03 19:22:04 +09:00
Kijin Sung
c01ba1d3cf Clean up missing or inconsistent types in remainder of parser classes 2023-10-03 16:35:20 +09:00
Kijin Sung
141ee7f7e1 Clean up missing or inconsistent types in Lang, ModuleAction, ModuleInfo parser classes 2023-10-03 16:25:35 +09:00
Kijin Sung
df6fdd3bc3 Fix potential type error in editor component XML handling logic 2023-10-03 16:19:04 +09:00
Kijin Sung
db4e874660 Fix incorrect type declaration in XMLRPC parser 2023-10-03 16:18:37 +09:00
Kijin Sung
57d7821bcc Fix deprecated function call and potential type error in XMLRPC request parser 2023-10-03 16:16:06 +09:00
Kijin Sung
df6292b202 Fix potential type errors in NcenterliteController 2023-10-03 15:28:22 +09:00
Kijin Sung
a1c6f7a902 Fix potential type errors in Context class 2023-10-03 15:22:04 +09:00
Kijin Sung
41febdd7ca Clean up missing or inconsistent types in core filter classes 2023-10-03 15:17:35 +09:00
Kijin Sung
27c8d32dc5 Clean up missing or inconsistent types in Mail, SMS, Push classes 2023-10-03 15:05:06 +09:00
Kijin Sung
7c844c7e24 Make UA::getBrowserInfo() return an instance of itself 2023-10-03 14:45:24 +09:00
Kijin Sung
c93f04f9c1 Clean up missing or inconsistent types in Timer, UA, URL classes 2023-10-03 14:42:38 +09:00
Kijin Sung
433103bf92 Also apply #2192 fix to document and comment modules; defend null 2023-10-03 14:32:15 +09:00
Kijin Sung
ce3f5e98d2 Fix #2192 count() error when member menu is empty 2023-10-03 14:28:31 +09:00
Kijin Sung
1b1bd19ecc Clean up missing or inconsistent type declarations in Storage class 2023-10-03 14:26:39 +09:00
Kijin Sung
666e7beffc Clean up missing or inconsistent type declarations in Session class 2023-10-03 14:17:25 +09:00
Kijin Sung
3294bccda8 Fix type error in Context::loadLang() 2023-10-03 11:50:00 +09:00
Kijin Sung
b373dc94c0 Add type hints and use class constants instead of protected properties (continued) 2023-10-03 02:55:24 +09:00
Kijin Sung
b6e8d41be8 Add type hints and use class constants where applicable in Rhymix Framework 2023-10-03 02:33:24 +09:00
Kijin Sung
78f7942e40 Pass procBoardVoteDocument() to procDocumentVoteUp(), not updateVotedCount()
오래된 액션인 procBoardVoteDocument()를 직접 호출할 경우,
라이믹스에서 새로 추가된 추천 관련 설정들이 적용되지 않는 문제 수정
2023-10-02 23:46:24 +09:00
Kijin Sung
ad7e0b0c93 Clean up outdated way of referring to other classes from Board module' 2023-10-02 23:36:07 +09:00
Kijin Sung
f7ed3519ac Fix anonymous info not being preserved when updating a temporarily saved document 2023-10-02 23:29:52 +09:00
Kijin Sung
866f9c670d Fix capitalization of class names 2023-10-02 22:59:25 +09:00
Kijin Sung
7444bc3f1d Fix capitalization of class names 2023-10-02 22:55:41 +09:00
Kijin Sung
e81d0500eb Register spamfilter, tag, widget module triggers in module.xml 2023-10-02 22:48:23 +09:00
Kijin Sung
ad1241fbb5 Register member, poll, rss module triggers in module.xml 2023-10-02 22:40:37 +09:00
Kijin Sung
f3bc9a2f03 Clean up trigger registration code in document, comment, file, editor modules 2023-10-02 22:28:16 +09:00
Kijin Sung
79808ee285 Add new trigger points in comment.copyCommentByDocument to replace old, nonstandard "add" name 2023-10-02 22:19:19 +09:00
Kijin Sung
6e913fcb3a Add new trigger points in document.copyDocumentModule to replace old, nonstandard "add" name 2023-10-02 22:10:57 +09:00
Kijin Sung
eb2883b8cb Move communication module triggers to module.xml 2023-10-02 22:00:06 +09:00
Kijin Sung
8f32e94f8a Clean up capitalization and unnecessary methods in communication module classes 2023-10-02 21:57:46 +09:00
Kijin Sung
8940dd92ef Clean up legacy class references in comment and document controllers 2023-10-02 21:55:30 +09:00
Kijin Sung
6219a381a4 Fix #2190 missing regdate in comment trigger object 2023-10-02 21:46:26 +09:00
Kijin Sung
a5e0b2c7fa Fix #2187 undefined lang code in page.admin.controller.php 2023-10-01 00:03:33 +09:00
Kijin Sung
9b5160eb94 Fix DBStmtHelper compatibility with PHP <= 7.4 2023-09-27 23:51:07 +09:00
Kijin Sung
f4c09bf634 Specify parameter and return types of all other helper class methods 2023-09-27 23:39:52 +09:00
Kijin Sung
bde78570f6 Make parameter types of HTTPHelper::withStatus() compatible with that of ResponseInterface 2023-09-27 23:37:18 +09:00
Kijin Sung
b9068c56f7 Clarify return types of DBStmtHelper 2023-09-27 23:35:16 +09:00
Kijin Sung
0da9244e33 Clarify return types of DB::prepare() and DB::query() 2023-09-27 23:33:06 +09:00
Kijin Sung
63e81751b1 Fix warning if need_update attribute is not set 2023-09-27 15:58:05 +09:00
Kijin Sung
028a56a678 Remove notice about moving to mobile site 2023-09-27 15:55:12 +09:00
Kijin Sung
34922b0d46 Show warning when custom query is executed using unsafe methods like _query() and _fetch() 2023-09-27 15:51:46 +09:00
Kijin Sung
4cf8fc6eb5 Be a little more lenient on invalid querystrings passed to deprecated method 2023-09-27 15:45:45 +09:00
Kijin Sung
7b470b7609 Version 2.1.6 2023-09-27 09:53:42 +09:00
Kijin Sung
6f124472bb Merge branch 'security/rve-2023-5' into develop 2023-09-27 09:52:55 +09:00
Kijin Sung
ea9f469513 Convert potentially problematic parameters to string before passing from legacy function to Rhymix Framework 2023-09-26 20:34:30 +09:00
Kijin Sung
9ca2c94fe4 Fix #2186 type error when unexpected values are passed to columnList 2023-09-26 20:08:08 +09:00
Kijin Sung
c23dcd6cf5 General cleanup of receiver_srl verification logic 2023-09-26 20:00:17 +09:00
Kijin Sung
cbb5e3a582 Throw exception if RVE-2023-5 is violated 2023-09-26 19:59:30 +09:00
Kijin Sung
7e018573b9 Fix RVE-2023-5 2023-09-26 19:57:22 +09:00
Kijin Sung
a4b49048f3 Fix uppercase scripts not working as CLI command 2023-09-26 15:02:09 +09:00
Kijin Sung
5d78d114a7 Remove deprecated argument $errcontext from default error handler 2023-09-26 12:06:20 +09:00
Kijin Sung
1de83747de Fix missing type declarations in Debug class 2023-09-26 11:27:30 +09:00
Kijin Sung
a1537bafe3 Fix incorrect or missing type declarations in Cache and DB classes 2023-09-26 11:09:55 +09:00
Kijin Sung
23c5f66479 Fix undeclared variable $rss when parsing atom feed 2023-09-25 22:42:41 +09:00
Kijin Sung
7cac909435 Fix unnecessary semicolon 2023-09-25 22:40:33 +09:00
Kijin Sung
3c415e18d5 Fix #1204 #407 display more helpful error message when a post cannot be upvoted/downvoted/reported for whatever reason 2023-09-25 22:32:17 +09:00
Kijin Sung
a6f918fbf9 Fix undefined variable 2023-09-25 22:06:55 +09:00
Kijin Sung
2fc94f55aa Ensure that CKEditor.timestamp is string 2023-09-25 10:33:39 +09:00
Kijin Sung
283380ed0f Replace CKEditor default LESS file with SCSS, and clean up related code in editor.html
- LESS 컴파일러 라이브러리 유지보수 중단으로, 모든 LESS는 SCSS로 변환 필요
- CKEditor 쪽에서 PHP 변수, JS 변수, CSS 변수 서로 전달하는 방식은 추가 개선 필요
2023-09-25 02:07:28 +09:00
Kijin Sung
5530a879cc Clean up unnecessary files in krzip module (it should follow the copyright and license of Rhymix core as a whole) 2023-09-25 00:19:14 +09:00
Kijin Sung
b6cb499dac Fix #1975 Remove deprecated notice from getLayoutList() 2023-09-25 00:11:34 +09:00
Kijin Sung
234ba6c5c6 Fix some potentially misleading comments about constants 2023-09-24 23:01:54 +09:00
Kijin Sung
c48eb3a169 Add missing return type declarations 2023-09-24 22:57:37 +09:00
Kijin Sung
2fe3837f07 Mark changeValueInUrl() as deprecated 2023-09-24 22:57:24 +09:00
Kijin Sung
d8fcb3cc70 Add proper comments and some _rx_ variables to getDestroyXeVars() 2023-09-24 22:49:48 +09:00
Kijin Sung
caa80f8d97 Move deprecated functions to the end of legacy.php 2023-09-24 22:45:36 +09:00
Kijin Sung
29ea470f56 Mark more legacy functions as deprecated 2023-09-24 22:36:30 +09:00
Kijin Sung
6434a18b06 Add return types to legacy global functions
오래된 함수들은 서드파티 자료들이 예상치 못한 자료형의 변수를 넘기는 경우가
많으므로, 파라미터의 타입은 강제하지 않고 반환 타입만 선언함.
2023-09-24 22:33:02 +09:00
Kijin Sung
a7ac14ecbd Add type declarations to global functions where possible 2023-09-24 22:32:49 +09:00
Kijin Sung
290367a87c Treat webp as image in integration search module 2023-09-24 21:54:08 +09:00
Kijin Sung
97705e75f4 Fix undefined variable in integration search module 2023-09-24 21:53:27 +09:00
Kijin Sung
8b9b00652c Fix #2057 add option to change or disable search division count 2023-09-24 21:50:53 +09:00
Kijin Sung
33b2c79891 Fix 2056 add trigger before moving document/comment to trash 2023-09-22 02:07:53 +09:00
Kijin Sung
565cfad15f Clean up trash handling logic 2023-09-22 02:05:14 +09:00
Kijin Sung
10123a86a8 Fix incorrect aspect ratio after converting a vertical video
https://xetown.com/questions/1775808
2023-09-21 21:20:01 +09:00
Kijin Sung
2cb476dc37 Add code that can be uncommented to enable error display for debugging 2023-09-21 20:44:34 +09:00
Kijin Sung
5a61bc62d3 Fix meaningful whitespace being hidden after template compile 2023-09-18 14:26:56 +09:00
Kijin Sung
b02582c890 Fix unused or undeclared variables in moveFile() 2023-09-16 18:53:16 +09:00
Kijin Sung
e5bea38a9e Fix #2183 inconsistent return type comments in File controller and model classes 2023-09-16 18:51:57 +09:00
Kijin Sung
ec4d5f07df Add friendly help message for "unexpected end of file" errors (fix #2180) 2023-09-16 18:45:17 +09:00
Kijin Sung
31253cdb43 Fix #2181 regexp assertion compatibility with older browsers 2023-09-16 01:14:05 +09:00
Kijin Sung
62f04a1e02 Fix regression from 26f923d when anonymous comment is deleted 2023-09-16 01:05:18 +09:00
Kijin Sung
585ea0f1d3 Version 2.1.5 2023-09-13 11:19:03 +09:00
Kijin Sung
26f923d64b Fix #2145 rename $is_admin to more descriptive variable name in some controller actions 2023-09-13 11:15:13 +09:00
Kijin Sung
71e4118bd5 Merge branch 'security/rve-2023-3-4' into develop 2023-09-13 11:02:59 +09:00
Kijin Sung
14f3704215 Update unit tests for new cache-busting querystring format 2023-09-12 23:20:40 +09:00
Kijin Sung
c8638d2548 Change cache-busting query string format from ?YYYYMMDDHHMMSS to ?t=UnixTime
- 날짜, 유닉스 타임스탬프, 16진수(CKEditor) 등 여러 가지 포맷을 혼용하고 있던
  캐시 방지용 쿼리스트링의 형태를 "유닉스 타임스탬프"로 통일
- 표준 시간대 처리 등 은근히 많은 자원을 소모하는 date() 함수를 사용하지 않음
- t=를 붙여서 정상적인 쿼리스트링 구조가 나오도록 하여, 웹방화벽이나 CDN
  등에서 문제를 일으킬 가능성을 줄임
- 덤으로, 길이도 2바이트씩 짧아짐
2023-09-12 23:15:26 +09:00
Kijin Sung
68ee78f1f8 Update CKEditor timestamp if editor module config is updated #2173 2023-09-12 23:03:12 +09:00
Kijin Sung
ec674dc25f Fix double encoding of special characters in document tags 2023-09-12 22:52:26 +09:00
Kijin Sung
fead32337e Fix incorrect debug comment for outer templates in a deeply nested include tree 2023-09-12 22:42:30 +09:00
Kijin Sung
7f7e0a099d Fix incorrect display of SCSS variable in meta debug info 2023-09-12 22:18:29 +09:00
Kijin Sung
efd06ff447 Use HTML classes specified in menu #2070 2023-09-12 22:01:56 +09:00
Kijin Sung
3ddf1392f9 Fix #2070 add class support to menu items 2023-09-12 22:01:28 +09:00
Kijin Sung
1ec0d74e77 Fix #2062 delete references to themes in skin config 2023-09-12 21:25:06 +09:00
Kijin Sung
08ce7b18a8 Fix #2179 missing document/comment controls when counter addon is not active 2023-09-12 00:45:37 +09:00
Kijin Sung
f2c58a0a14 Fix missing layout when you click "Full settings" for a (document, widget, or external) page in the sitemap editor 2023-09-12 00:36:46 +09:00
Kijin Sung
e60ffb4e8d Add option to control partial page rendering (layout drop)
XE 시절부터 layout=none 또는 isLayoutDrop=1 파라미터로 레이아웃이 없는
부분적인 페이지 렌더링을 허용하는 기능이 있었습니다. 관리자 화면에서
팝업이나 iframe을 표시하는 용도로도 사용하고, AJAX로 페이지 일부 내용만
새로고침할 때 불필요한 데이터를 주고받지 않도록 하는 데도 유용합니다.

그러나 사이트에 따라서는 레이아웃을 적용하지 않을 경우 민감한 정보가
노출되는 등의 부작용이 발생할 수도 있으므로, 이 기능을 사용하지 않도록
선택하는 옵션을 제공합니다.
2023-09-12 00:33:54 +09:00
Kijin Sung
e2753300ee Fix inconsistent whitespace in admin dashboard 2023-09-11 23:03:46 +09:00
Kijin Sung
dee273a4f2 Fix incorrect form method in admin dashboard 2023-09-11 23:03:27 +09:00
Kijin Sung
7998adec59 Fix warning in PHP 8.x 2023-09-11 13:42:18 +09:00
Kijin Sung
7bba7732d7 Display relative path in "Template not found" error message 2023-09-09 01:39:07 +09:00
Kijin Sung
28c4a9573c Also remove unnecessary parameters in procDocumentTempSave 2023-09-09 01:23:21 +09:00
Kijin Sung
f9e48fc85c Tentative fix for RVE-2023-3 and RVE-2023-4 2023-09-08 23:43:12 +09:00
Kijin Sung
a5ed417480 Fix warnings in PHP 8.x 2023-09-06 21:10:11 +09:00
Kijin Sung
3138125eab Don't convert krzip data that is already in the standard format #2178 2023-09-06 21:09:59 +09:00
Kijin Sung
4ccfaad75e Fix #2178 incorrect processing of some addresses in krzip module 2023-09-06 16:32:03 +09:00
Kijin Sung
a99f56c7bc Increase size of upload_target_type column, and add missing indexes 2023-09-05 02:34:44 +09:00
Kijin Sung
0f1ea1dbc2 Remove characters in writePHPData() comment that could cause syntax error 2023-09-05 02:07:21 +09:00
Kijin Sung
206f6e706a Encode non ASCII printable characters in cache keys for maximum compatibility with all cache backends 2023-09-05 01:57:26 +09:00
Kijin Sung
8054564b37 Delete dispEditorPreview action that is no longer used 2023-09-05 01:13:19 +09:00
Kijin Sung
a50041007d Remove UTF-8 BOM and CRLF in templates when compiling them 2023-09-05 01:05:53 +09:00
Kijin Sung
55d3dd047c Remove unnecessary MemberModel instance in xedition layout 2023-09-05 01:00:11 +09:00
Kijin Sung
3200b6b227 Remove duplicate meta tag in xedition layout 2023-09-05 00:59:15 +09:00
Kijin Sung
8888840fc4 Remove unnecessary empty lines in xedition layout 2023-09-05 00:56:39 +09:00
Kijin Sung
7a62550c30 Fix incorrect handling of newline in TemplateHandler 2023-09-05 00:56:17 +09:00
Kijin Sung
5b5010a401 Fix <!-- ETC --> comment stuck after body with no newline 2023-09-05 00:42:42 +09:00
Kijin Sung
fd27ec177b Refine empty line handling without changing line numbers 2023-09-05 00:42:12 +09:00
Kijin Sung
cd8e6371c6 Preserve line numbers when compiling templates 2023-09-05 00:17:15 +09:00
Kijin Sung
770cde8b8a Preserve line numbers when compiling SCSS with sourcemap 2023-09-04 23:40:09 +09:00
Kijin Sung
9d4961ff0d Update unit tests to force charset declaration and accommodate sourcemap comment 2023-09-04 23:05:14 +09:00
Kijin Sung
096d841263 Create sourcemaps when compiling SCSS 2023-09-04 23:05:06 +09:00
Kijin Sung
74cc098370 Remove incorrect sourceMap link in concatenated JS output 2023-09-04 22:00:12 +09:00
Kijin Sung
99c905a6f4 Fix warning when session is used on CLI 2023-09-04 15:19:12 +09:00
Kijin Sung
c27a1d803b Fix #2176 error in unnecessary count() 2023-09-01 23:15:53 +09:00
Johnny
69c94a5fd7
Merge pull request #2174 from bjrambo/pr/ncenterlite-trigger
알림센터의 트리거 호출들을 module.xml 에서 이벤트 호출로 개선
2023-09-01 19:18:05 +09:00
BJRambo
7ddecec802 PHP 참조 문자 제거 2023-09-01 12:46:29 +09:00
BJRambo
13601a73b6 트리거 삭제 하는 액션을 제거 2023-09-01 12:45:12 +09:00
Kijin Sung
1241ebbc80 Remove outdated properties in core widget skins 2023-08-31 23:28:23 +09:00
Kijin Sung
eedf4a6e0d Remove outdated properties in some CSS files 2023-08-31 23:13:15 +09:00
Kijin Sung
f3d753c6d0 Remove most references to x.js in core modules 2023-08-31 23:00:10 +09:00
Kijin Sung
0fde7eb7e7 Use console.error() instead of console.warn() in Firefox, because it doesn't show stack trace for warnings 2023-08-31 22:59:15 +09:00
Kijin Sung
4e623b4b56 Convert board_admin.js to Unix line endings 2023-08-31 22:20:42 +09:00
Kijin Sung
f6d23ee13e Replace xGetElementById() with document.getElementById() in various modules 2023-08-31 22:20:07 +09:00
BJRambo
0ad91c06e6 알림센터의 트리거 호출들을 module.xml 에서 이벤트 호출로 개선 2023-08-31 13:48:02 +09:00
Kijin Sung
b65c2b5c29 Replace xGetElementById() with document.getElementById() in CKEditor script
https://xetown.com/questions/1783129#comment_1783270
2023-08-31 13:24:12 +09:00
Kijin Sung
1014208e49 Version 2.1.4 2023-08-31 12:27:00 +09:00
Kijin Sung
c5c8b70579 Fix collision of common constants with other programs like codeception 2023-08-31 12:02:57 +09:00
Kijin Sung
9d44192889 Convert simpleeditor stylesheet to SCSS 2023-08-31 02:44:38 +09:00
Kijin Sung
84bae83d68 Convert remaining LESS files to SCSS 2023-08-31 02:42:34 +09:00
Kijin Sung
15648d10d1 Fix #2167 allow removing no-store and must-revalidate from Cache-Control headers 2023-08-31 02:19:18 +09:00
Kijin Sung
35dec01ab0 Fix unit test for FrontEndFileHandler after html5.js removal 2023-08-31 01:04:16 +09:00
Kijin Sung
741760642e Fix installation requirements in README.md 2023-08-31 01:02:05 +09:00
Kijin Sung
51cd77a06e Clean up more old files that haven't been used in a while in Rhymix 2023-08-31 01:00:12 +09:00
Kijin Sung
380c50aa6a Remove unnecessary polyfill for window.matchMedia 2023-08-31 00:51:52 +09:00
Kijin Sung
f75649ccb1 Remove unnecessary HTML5 shiv library 2023-08-31 00:49:27 +09:00
Kijin Sung
081af5fbb8
Merge pull request #2172 from bjrambo/pr/notify_trash_comment
휴지통으로 댓글을 이동할 때 알림 삭제기능 추가
2023-08-31 00:41:20 +09:00
Kijin Sung
3e38515c23 Remove unnecessary CSS for old browsers and IE 2023-08-31 00:35:11 +09:00
BJRambo
eb025f1d2f 잘못된 쿼리 변수명 수정 2023-08-31 00:30:30 +09:00
BJRambo
52d1d4ed8f 잘못된 쿼리 이름 고침 2023-08-31 00:26:20 +09:00
Kijin Sung
6e38b440ea Convert popup menu AJAX actions from XML to JSON 2023-08-30 23:36:26 +09:00
Kijin Sung
e5f53429f7 Fix count() error in XMLDisplayHandler 2023-08-30 23:28:05 +09:00
Kijin Sung
c8467fb588 Migrate board module triggers to new format using module.xml 2023-08-30 23:23:34 +09:00
Kijin Sung
3790169e50 Migrate advanced_mailer module triggers to new format using module.xml 2023-08-30 23:14:09 +09:00
Kijin Sung
f5997b642a Make Router::parseURL() return a consistent type and format for all action properties 2023-08-30 22:58:05 +09:00
Kijin Sung
2b916a8bdb Add unit tests for session and cache-control attributes of module.xml 2023-08-30 22:41:14 +09:00
Kijin Sung
79dd9ae45e Use console.warn for JS deprecation notices so that the user can see a stack trace 2023-08-30 22:38:41 +09:00
BJRambo
a96955a12e 휴지통으로 댓글을 이동할 때 알림 삭제기능 추가 2023-08-30 17:36:11 +09:00
Kijin Sung
0d8b8a51dd Improve parser logic for action attributes 2023-08-30 01:53:55 +09:00
Kijin Sung
56fbccda7c Always disable session.cache_limiter before starting session 2023-08-30 01:48:29 +09:00
Kijin Sung
ec36839303 Add options in module.xml to disable session and Cache-Control headers for individual actions 2023-08-30 01:45:37 +09:00
Kijin Sung
3722c49750 Send cache control headers if session.cache_limiter is turned off in php.ini 2023-08-30 00:46:23 +09:00
Kijin Sung
295ac7e61e Remove redundant Cache-Control directives 2023-08-30 00:28:29 +09:00
Kijin Sung
a1ce3ccaf2 Fix missing array key in session 2023-08-29 23:55:40 +09:00
Kijin Sung
4af7354bf0 Add options to control autologin cookie lifetime and refresh function 2023-08-29 23:42:01 +09:00
Kijin Sung
87300c9944 Resend autologin key periodically to maintain useful lifetime 2023-08-29 23:21:20 +09:00
Kijin Sung
e8ea70fdca Fix close button not working in ncenter_login skin for login_info widget 2023-08-29 22:40:35 +09:00
Kijin Sung
31fd79c71e Fix default value handling for #2169 2023-08-27 23:43:22 +09:00
Kijin Sung
3fbb1327d2 Fix #2169 allow simple expressions as default values for table columns 2023-08-27 23:38:29 +09:00
Kijin Sung
06e736178b Support sending all _rx_* POST fields as HTTP headers instead
하위호환성, 부가기능 등을 위한 _rx_* POST 필드가 점점 많아짐에 따라
모두 헤더로 대체할 수 있도록 지원하고, 앞으로 점점 헤더로 바꿀 예정

CSRF 토큰은 예전부터 X-CSRF-Token 헤더를 지원했음
2023-08-27 23:32:31 +09:00
Kijin Sung
dc492345da Fix custom query caller location being shown as DB.php in debug info 2023-08-27 22:57:56 +09:00
conory
0f0dbbb40c Fix namespace regexp not capturing group properly
Conory/Abc/Controllers/Config/Index
→ Group 2: Config/
2023-08-27 01:20:57 +09:00
Kijin Sung
2b55d8cc91 Update Korean IP ranges 2023-08-21 22:44:23 +09:00
Kijin Sung
9fc8bed28a Merge remote-tracking branch 'origin/develop' into develop 2023-08-20 16:59:29 +09:00
Kijin Sung
e6dd1b2bb6 Fix compatibility with communication module skins that don't support window_type=self 2023-08-20 16:59:13 +09:00
Kijin Sung
d88d9c2566 Fix fatal error when copying domain configuration 2023-08-18 13:41:20 +09:00
Kijin Sung
42d09bde65 Provide a single entry point for all command-line scripts
Core example:

php index.php common.clean_empty_dirs
  -> executes common/scripts/clean_empty_dirs.php

Third-party example:

php index.php module_name.script_name
  -> executes modules/module_name/scripts/script_name.php

This should be the preferred method of executing PHP scripts included with
any third-party module, because it ensures that the working environment is
correct. For example, it will set the current working directory to Rhymix root,
check that the UID matches the usual web user, include all core libraries and
initialize the Context properly.

Over time, we will expand the command-line functionality similar to
the 'artisan' command in Laravel.
2023-08-16 23:12:25 +09:00
Kijin Sung
52d11c58fb Clean up comments in index.php 2023-08-16 22:48:14 +09:00
Kijin Sung
ed424f031e Capitalization 2023-08-16 22:45:48 +09:00
Kijin Sung
ea345ad7e1 Improve filtering of "allow" and "referrerpolicy" attributes of <iframe> 2023-08-16 22:41:14 +09:00
Kijin Sung
2f97adb9bb Fix #2166 type mismatch 2023-08-16 22:18:52 +09:00
Kijin Sung
91efe04d7d Version 2.1.3 2023-08-15 14:52:11 +09:00
Kijin Sung
2197b0a982 Add option to control whether boards and pages are indexed by search engines, using the X-Robots-Tag header 2023-08-13 02:03:02 +09:00
Kijin Sung
fde3609f70 Fix #2164 untranslated error message "categoryneeded" 2023-08-12 22:09:08 +09:00
Kijin Sung
d1012c7c42 Fix #2164 clarify help message about disabling categories 2023-08-12 22:05:25 +09:00
Kijin Sung
58d6d51e9f Remove unnecessary condition in autoloader for custom namespaces 2023-08-12 21:55:20 +09:00
Kijin Sung
a7954506f6 Use associative array to store custom namespaces 2023-08-12 21:53:52 +09:00
Kijin Sung
911772393a Fix missing Context::init() in common script 2023-08-12 21:17:52 +09:00
Kijin Sung
47996cb294 Prevent Rhymix reserved namespaces from being registered as custom 2023-08-12 09:50:10 +09:00
Kijin Sung
5823253d60 Optimize order of conditions in autoloader 2023-08-12 01:18:59 +09:00
Kijin Sung
cd0779862e Sort custom namespaces from longest to shortest before compiling regexp 2023-08-12 01:17:14 +09:00
Kijin Sung
48e0f55d6b Support event handlers (triggers) that are only called before/after specific action 2023-08-12 01:14:36 +09:00
Kijin Sung
e0a828079b Fix error when error message is null 2023-08-12 01:12:48 +09:00
Kijin Sung
316cb49729 Update unit test for ModuleActionParser 2023-08-11 22:17:10 +09:00
Kijin Sung
3241354872 Support customizing the default (base) class and install class of a module 2023-08-11 22:09:26 +09:00
Kijin Sung
7502b7308b Support custom namespaces in ModuleHandler and related processes 2023-08-11 21:56:42 +09:00
Kijin Sung
9e13c5ee6e Add convenience functions for XML parsing 2023-08-11 02:37:39 +09:00
Kijin Sung
57be6abc9d Make placeholder for custom prefix support in the future 2023-08-11 02:07:28 +09:00
Kijin Sung
a5bc18f015 Don't add regexp for custom namespaces empty if none are registered 2023-08-11 02:06:35 +09:00
Kijin Sung
32832d1ab2 Support custom namespaces in autoloader 2023-08-11 02:05:23 +09:00
Kijin Sung
4f9f641067 Add regexp to config for custom namespaces 2023-08-11 02:04:59 +09:00
Kijin Sung
4d4d454af0 Fix update_all_modules.php not calling all the update routines of the Install module 2023-08-11 01:38:28 +09:00
Kijin Sung
2219a77fb2 Register action forward routes, event handlers, etc. during initial installation process 2023-08-11 00:40:40 +09:00
Kijin Sung
0ef85632c1 Allow module update even if moduleUpdate() method does not exist 2023-08-11 00:40:13 +09:00
Kijin Sung
68ddac96e7 Remove event handlers and custom namespaces no longer defined by module.xml 2023-08-11 00:34:44 +09:00
Kijin Sung
acc1117d26 Register event handlers and custom namespaces defined in module.xml 2023-08-11 00:16:57 +09:00
Kijin Sung
d0306df095 Add parser logic for new module.xml settings 2023-08-10 23:52:01 +09:00
Kijin Sung
5881d08f6a Fix unit tests failing if nofollow attribute is turned on 2023-08-10 23:51:50 +09:00
Kijin Sung
6e7012394e Emphasize NOT in the common script error message 2023-08-10 10:57:02 +09:00
Kijin Sung
df7680d1ce Remove unnecessary $vid in default layout 2023-08-08 23:47:18 +09:00
Kijin Sung
85ceb564fa Add rx_ajax class to login form in xedition 2023-08-08 23:46:29 +09:00
Kijin Sung
ebcd6ceadd Fix return during transaction without rollback (fix #2163) 2023-08-08 23:41:28 +09:00
Kijin Sung
76fdcea292 Add helpful error messages to 3 most common error types
최근 커뮤니티 검색에서 가장 자주 발견되는 에러 타입 3가지:
  - 문자열에 따옴표 안 씀
  - stdClass 정의 안 함
  - 배열이 아닌 것에 배열 함수 사용
2023-08-08 01:12:12 +09:00
Kijin Sung
a36177d772 Dislay actual error location when a fatal error is caught by Debug class 2023-08-08 00:49:53 +09:00
Kijin Sung
e31704ffc2 Move friendly error message feature to Message module 2023-08-08 00:49:14 +09:00
Kijin Sung
26710e2675 Fix CSRF error when IS is requested by POST without CSRF token
https://xetown.com/questions/1779369
https://xetown.com/questions/1737862
https://xetown.com/questions/1776496
2023-08-07 22:25:54 +09:00
Kijin Sung
09d4935a01 Remove vid from IS sample code, and use proper code formatting 2023-08-07 22:22:53 +09:00
Kijin Sung
df6ccfc7d4 Show friendly error message for very common error conditions, such as Object class 2023-08-07 15:14:47 +09:00
Kijin Sung
3ea1567fda Stop allowing access to .php files under files/cache/
files/cache/document_category/<module_srl>.xml.php 파일에 직접 접근할 필요가
없게 되었으므로, files/cache/ 폴더 전체의 .php 파일 접근을 금지해도 무방함.
2023-08-07 00:35:40 +09:00
Kijin Sung
34f05b08de Use Rhymix action, not standalone .xml.php file, to load document category info 2023-08-07 00:35:13 +09:00
Kijin Sung
a609478db4 Fix "allow" attribute being removed from YouTube iframe code #2159 2023-08-06 18:32:04 +09:00
Kijin Sung
6afb32f652 Fix SimpleEditor not recognizing latest YouTube iframe code #2159 2023-08-06 18:24:28 +09:00
Kijin Sung
73ca0893d6 Fix #2158 module not deleted on first try 2023-08-06 18:16:40 +09:00
Kijin Sung
5716891c6c Remove unnecessary variable declaration 2023-08-05 16:11:29 +09:00
Kijin Sung
3cdd35911e Also set group_srl in response of procMemberAdminInsertGroup() 2023-08-05 16:09:37 +09:00
Kijin Sung
e37ca7c702 Fix missing encoding of HTML elements in group title and description 2023-08-05 16:08:39 +09:00
Kijin Sung
180be3df95 Wrap insertGroup() and updateGroup() in transactions to prevent inconsistent result when updating is_default 2023-08-05 16:05:25 +09:00
Kijin Sung
c42d446e23 Clean up insertGroup() and updateGroup() 2023-08-05 16:03:27 +09:00
conory
ee9349c734 Add group_srl to result of insertGroup() 2023-08-05 01:37:23 +09:00
Kijin Sung
2dbdfbaadb Fix #2161 incorrect timestamp when seconds are missing or negative time zone is given 2023-08-04 12:13:09 +09:00
Kijin Sung
f1a898ea50 Fix #2160 undefined constant _XE_LOCATION_ (also _XE_PACKAGE_) 2023-08-04 11:41:20 +09:00
Kijin Sung
ae2e8d6674 Update user agent info when autologin 2023-08-04 02:23:13 +09:00
Kijin Sung
555f5b6017 Keep previous autologin security key in database, in case the client STILL hasn't got the new cookie 2023-08-04 02:21:01 +09:00
Kijin Sung
348d1c4352 Change unsubscribe list menu name to make it clear that it is related to notifications
"알림"이라는 단어가 없으니까 무엇을 수신거부하는 메뉴인지 알기 어려움
2023-08-04 00:26:51 +09:00
Kijin Sung
d8673396f1 Hide all ncenterlite menus if member menu is disabled 2023-08-04 00:24:55 +09:00
Kijin Sung
1e151b0aeb Remove debugging code 2023-08-04 00:14:33 +09:00
Kijin Sung
918418ebf3 Fix #1933 add option to send push notification using the "data" field, leaving out the "notification" field 2023-08-03 23:00:57 +09:00
Kijin Sung
00159407f4 Fix #1933 enable sending FCM message without the "notification" field 2023-08-03 22:44:27 +09:00
Kijin Sung
fc932747e9 Use alias to refer to classes outside of Push namespace 2023-08-03 22:44:21 +09:00
Kijin Sung
c64a87041a Generate sequential mid instead of random characters 2023-08-03 22:23:48 +09:00
Kijin Sung
5fc98dc4e3 Fix notification not being marked as read when clicked from the list in the member menu
https://xetown.com/questions/1777696
2023-08-03 22:03:54 +09:00
Kijin Sung
6c309ad3b0 Fix #2055 support rx_ajax in login and signup forms of default member skins 2023-08-03 21:59:15 +09:00
Kijin Sung
42496b0176 Remove unnecessary error code when email confirmation is required 2023-08-03 21:55:04 +09:00
Kijin Sung
de9a5bce35 Redirect always to configured URL after signup, even if email confirmation is enabled. Fix #726, #949, #1735 2023-08-03 21:43:05 +09:00
Kijin Sung
eccb54ca42 Allow setting any URL as redirect URL after signup 2023-08-03 21:25:46 +09:00
Kijin Sung
6e415fafc0 Support full-width inputs with x_full-width 2023-08-03 21:24:55 +09:00
Kijin Sung
7799aa77a3
Merge pull request #2156 from mariko-f/master
일본어 번역 추가 및 수정
2023-07-24 16:59:11 +09:00
Kijin Sung
740c24e5d3 Merge remote-tracking branch 'develop' into develop 2023-07-24 09:51:12 +09:00
Kijin Sung
85792919e5
Merge pull request #2157 from kijin/pr/no-session-keys
세션 보안키 기능 제거
2023-07-24 09:50:42 +09:00
Kijin Sung
7efd6c4b18 Remove unnecessary code in Session class 2023-07-24 02:57:39 +09:00
Kijin Sung
899f65981d Destroy conflicting cookies before, not after, setting own cookie 2023-07-24 02:57:08 +09:00
Kijin Sung
8cf68ec9f1 Resend autologin key if the client has not received it at first request 2023-07-24 02:55:30 +09:00
Kijin Sung
c41229eb17 Separate variables for backward compatibility into their own lines, to prevent confusion 2023-07-23 20:49:38 +09:00
Kijin Sung
a07b8fef58 Remove unnecessary setting of is_webview before session create 2023-07-23 20:45:34 +09:00
Kijin Sung
a2932ee8c8 Add admin setting to control the httpOnly attribute 2023-07-22 20:17:23 +09:00
Kijin Sung
56b37b7cbc Remove session keys from unit tests 2023-07-22 20:04:54 +09:00
Kijin Sung
60a3edc994 Remove session keys, and always set httpOnly 2023-07-22 19:53:51 +09:00
Mariko Fukuda
600d725511 Fix Japanese translation 2023-07-22 19:31:00 +09:00
Kijin Sung
c53e0a93f5 Remove session.use_keys from server environment screen 2023-07-22 19:23:14 +09:00
Kijin Sung
ced866d5e0 Remove session keys option 2023-07-22 19:22:33 +09:00
Kijin Sung
78ba527c78 Fix warnings in PHP 8.x 2023-07-20 21:38:16 +09:00
Kijin Sung
4505388e47 Revert some admin actions to popup or new window 2023-07-17 22:20:33 +09:00
Kijin Sung
fcf2ad8c3e Remove admin power to modify other user's ncenterlite config; close #1925; close #2148 2023-07-17 22:08:25 +09:00
Kijin Sung
31ec3031fe Fix inconsistent spacing 2023-07-17 22:01:34 +09:00
Kijin Sung
e22ae8259a Open most member popup menus in the same window #2154 2023-07-17 21:58:25 +09:00
Kijin Sung
64b2918559 Also support plain window for adding friend & friend group #2154 2023-07-17 21:50:04 +09:00
Kijin Sung
e635970c6a Support replying to message in the same window #2154 2023-07-17 21:38:44 +09:00
Kijin Sung
6d8063b57e Fix #2153 warnings in point module config in PHP 8 @eondcom 2023-07-17 21:03:36 +09:00
Kijin Sung
bb495f0259 Fix warnings in PHP 8 #2150 @eondcom 2023-07-17 20:55:58 +09:00
Kijin Sung
13ef40c772 Fix warnings in PHP 8 #2150 @eondcom 2023-07-17 20:51:47 +09:00
Kijin Sung
84c473dda1 Fix #2151 warning in PHP 8 @eondcom 2023-07-17 20:46:38 +09:00
Kijin Sung
5c8aff893d Fix #2146 missing input for member signature max height 2023-07-16 15:24:34 +09:00
Kijin Sung
0fce8eef93 Add $enforce_max_height parameter to getSignature() #2146 2023-07-16 15:13:27 +09:00
Kijin Sung
4d6591145e Add codecept.phar to .gitignore 2023-07-16 15:10:23 +09:00
Kijin Sung
2faa6f49ef Fix #2149 add .vscode to .gitignore 2023-07-16 15:09:50 +09:00
Kijin Sung
cda1eab702 Clean up legacy code 2023-07-06 22:54:38 +09:00
Kijin Sung
f329b542d2 Fix #2143 readonly input box in signup form 2023-07-06 22:44:29 +09:00
Kijin Sung
8740fc10c1 Version 2.1.2 2023-07-06 11:18:36 +09:00
Kijin Sung
7d148dcfc7 Merge branch 'security/rve-2023-1' into develop 2023-07-06 11:17:44 +09:00
Kijin Sung
5a865fc4aa Fix #2141 add trash_srl to trigger objects 2023-07-05 22:29:51 +09:00
Kijin Sung
3215631dfc Move non-member voting, vote canceling, and report canceling options from Board module to Document & Comment modules 2023-07-05 22:27:17 +09:00
Kijin Sung
ed7a0bd4e2 Fix RVE-2023-1 editor module XSS 2023-07-05 01:34:48 +09:00
Kijin Sung
103f5ce884 Fix #2106 allow entering multiple lines (textarea) in extra var description 2023-07-04 23:29:23 +09:00
Kijin Sung
60ed013915 Add options to allow voting and reporting from the same IP as the author of a document or comment 2023-07-04 23:15:31 +09:00
Kijin Sung
d285a90e88 Fix #2136 add button to reset the cleanup exception list 2023-07-04 22:43:17 +09:00
Kijin Sung
e98ba87f8e Fix #2136 allow admin to add exception to cleanup list 2023-07-04 22:37:17 +09:00
Kijin Sung
b01c36b792 Only masquerade identifier config in dispMemberInfo screen 2023-07-04 01:50:42 +09:00
Kijin Sung
39f92673b3 Fix error logging in with user_id when phone_number is also enabled as a login method 2023-07-04 01:44:30 +09:00
Kijin Sung
c914ff52bf Fix inconsistent placing of asterisk for identifierForm 2023-07-04 01:37:55 +09:00
Kijin Sung
f631c5da08 Fix incorrect identifierForm leading to duplicate form entry 2023-07-04 01:36:18 +09:00
Kijin Sung
352333b1e7 Move signup_date and last_login_date below most other fields in admin edit screen 2023-07-04 01:27:26 +09:00
Kijin Sung
4503a95344 Separate message for limited_reason from refused_reason 2023-07-04 01:26:26 +09:00
Kijin Sung
6ce04aeeb2 Fix refused_reason textarea not displaying properly 2023-07-04 01:21:57 +09:00
Kijin Sung
8011e9a2f6 Separate tools/ into subdirectories and files in cleanup file list #2136 2023-07-03 01:55:59 +09:00
Kijin Sung
ed53fab065 Fix #2139 add "required" attribute to checkbox for required agreement 2023-07-03 01:48:09 +09:00
Kijin Sung
7a7b80baa6
Merge pull request #2140 from mmx900/feature/allow_indexing_format
첨부파일들 중 지정한 확장자에 한해 색인을 허용 기능 추가
2023-07-03 01:44:32 +09:00
Kijin Sung
df46d01181 Merge remote-tracking branch 'upstream/develop' into develop 2023-07-03 00:57:26 +09:00
Kijin Sung
6d6a3cfb42 Fix extra_vars being reset when deleted menu is automatically recreated under "unlinked" 2023-07-03 00:57:07 +09:00
Kijin Sung
1ba3110c8a Add ModuleController->updateModuleMenuSrl() 2023-07-03 00:51:28 +09:00
conory
fe724d93ef Allow an array of URL parameters in setRedirectUrl()
$this->setRedirectUrl(['module' => 'admin', 'act' => '...']);
2023-07-01 01:44:43 +09:00
mmx900
17e14546dd Apply allow_indexing_format to procFileDownload() 2023-06-30 21:10:01 +09:00
Soyu Kim
4c73b1fa93
Merge branch 'rhymix:develop' into develop 2023-06-30 20:40:51 +09:00
Kijin Sung
bf8591a9d2 #2138 보완 2023-06-29 01:49:49 +09:00
Kijin Sung
32adc75b94
Merge pull request #2138 from dewekk/fix-search-tag
특정 환경에서 태그 및 댓글 검색 시 오류 수정
2023-06-29 01:48:27 +09:00
Kijin Sung
fa6607ab86 Set identifier to email_address is email confirmation is required, for compatibility with skins that hide the 'Change email address' button otherwise 2023-06-29 01:45:38 +09:00
Kijin Sung
05bab8e7f8 Show proper error instead of redirecting to signup form when a user tries to view invalid member info 2023-06-29 01:39:10 +09:00
dewekk
d0dc77704d 특정 환경에서 태그 및 댓글 검색 시 오류 수정
- DB sql_mode 설정된 특정 환경
- SQLSTATE[HY000]: General error: 3065 Expression #1 of ORDER BY clause is not in SELECT list, references column '#.documents.list_order' which is not in SELECT list; this is incompatible with DISTINCT
2023-06-28 11:58:47 +09:00
Kijin Sung
b53e8adad7 Allow admin to update email address even if normally not allowed 2023-06-27 22:56:25 +09:00
Kijin Sung
dc0a97d81b Apply readonly to email address input field if it is not changeable 2023-06-27 22:41:25 +09:00
Kijin Sung
9334e342f7 Display clear error message when user tries to change nickname or email address and it's not allowed 2023-06-27 22:35:56 +09:00
Kijin Sung
089f375743 Fix unmodifiable fields being exposed in member info modification form 2023-06-27 22:23:47 +09:00
Kijin Sung
62dfb38308 Add option to (dis)allow nickname change 2023-06-27 22:14:30 +09:00
Kijin Sung
77ac355259 Fix #2100 allow sender, recipient, and other info to be updated by trigger in communication.sendMessage 2023-06-27 21:49:07 +09:00
Kijin Sung
c5a3f5722a Apply consistent layout and skin code to communication and ncenterlite modules 2023-06-27 21:41:42 +09:00
Kijin Sung
ed557883c7 Fix default skin handling in page module 2023-06-27 21:32:59 +09:00
Kijin Sung
7b16ee31c3 Fix backward incompatible behavior when is_skin_fix or is_mskin_fix is set 2023-06-27 00:16:29 +09:00
Kijin Sung
18b5d66605 Fix backward incompatible behavior when skin directory is a symlink 2023-06-27 00:09:56 +09:00
Kijin Sung
da1e6c1b8d Add new member module screens to XEDITION exception list 2023-06-26 22:33:09 +09:00
Kijin Sung
7466749178 Fix double escape of multilingual module title 2023-06-26 22:28:32 +09:00
Kijin Sung
fa198a2984 Add option to fix double-escaping of user lang code 2023-06-26 22:25:08 +09:00
Kijin Sung
340b3aa49a Set layout and template paths in one place 2023-06-26 22:12:32 +09:00
Kijin Sung
9fbcda3e79 Fix deprecation warning in PHP 8.x 2023-06-26 14:46:19 +09:00
Kijin Sung
6479f3967b Version 2.1.1 2023-06-26 11:20:29 +09:00
Kijin Sung
566c1f54b7 Fix isIDExists() error when installing member module for the first time 2023-06-25 23:43:07 +09:00
Kijin Sung
9bb2e40ef4 Fix #2086 missing CAPTCHA in message module skin 2023-06-25 19:58:52 +09:00
Kijin Sung
4c9b14f077 Split CAPTCHA check and loading methods for easy integration into other parts of the site 2023-06-25 19:56:00 +09:00
Kijin Sung
c0f9c77902 Revert "Display the current site's favicon if favicon.ico is requested"
This reverts commit 9fcd472d3f.
2023-06-25 19:41:50 +09:00
Kijin Sung
9fcd472d3f Display the current site's favicon if favicon.ico is requested 2023-06-25 19:17:26 +09:00
Kijin Sung
8c951d2aed Fix #2134 broken lang code input area in extra_keys.html 2023-06-25 18:48:14 +09:00
Kijin Sung
dba1186074 Fix #2133 apply multilingual form to member extra var editing form 2023-06-25 18:43:49 +09:00
Kijin Sung
422368d0d7 Update confirmation dialog to allow the user to choose if content should be deleted as well 2023-06-25 18:36:51 +09:00
Kijin Sung
e1b6e0e70d Update menu_srl of module to 0 if linked menu is deleted 2023-06-25 18:18:23 +09:00
Kijin Sung
1a65634413 Fix incorrect variable name and return while updating unlinked modules 2023-06-25 18:10:09 +09:00
Kijin Sung
c9ad195740 Dom't delete linked module when deleting menu 2023-06-25 17:55:18 +09:00
Kijin Sung
912229c881 Allow using reserved word as mid if it is identical to module name 2023-06-25 17:35:18 +09:00
Kijin Sung
2f3a387a62 Don't add menu when creating mid for member module 2023-06-25 17:33:19 +09:00
Kijin Sung
5e1452982f Add 'member' to list of reserved words 2023-06-25 17:33:02 +09:00
Kijin Sung
bb013dd28a Use ModuleModel::isIDExists() to check mid validity when updating module, just like when inserting 2023-06-25 17:32:47 +09:00
Kijin Sung
a4f5b5d0a9
Merge pull request #2130 from dewekk/fix-menu-create
메뉴가 중복으로 생성되는 문제 수정
2023-06-25 17:24:49 +09:00
Kijin Sung
f4516a4391 Make cleanup message less confusing for moved files and directories 2023-06-22 22:50:53 +09:00
Kijin Sung
f0f414db1c Fix #2126 show more descriptive message if member mid is already used 2023-06-22 22:29:36 +09:00
Kijin Sung
fbfbaa48a5 Add unique index on mid 2023-06-22 22:03:43 +09:00
Kijin Sung
be1cad3182 Fix #2125 don't delete site_admin table if XML schema still exists 2023-06-22 22:03:21 +09:00
Kijin Sung
b6e1a4589a Fix #2131 missing translations 2023-06-22 21:55:25 +09:00
Kijin Sung
f6b81231a6 Fix #2127 missing translation of admin page title 2023-06-22 21:19:37 +09:00
dewekk
b09dff4613 메뉴가 중복으로 생성되는 문제 수정
fix https://github.com/rhymix/rhymix/issues/2129
- $isMenuCreate 선언을 arrangeModuleInfo 위로 옮깁니다.
- updateModule도 insertModule와 비슷한 결과를 위하여 코드를 정리하였습니다.
2023-06-22 19:17:23 +09:00
Kijin Sung
20cdee5e38
Merge pull request #2128 from dewekk/fix-member-redirect
멤버 모듈 index 접속 시 리다이렉트 문제 수정
2023-06-22 16:51:37 +09:00
dewekk
5da2318cdb
멤버 모듈 index 접속 시 리다이렉트 문제 수정 2023-06-22 16:09:39 +09:00
Kijin Sung
94069ebfd6 Ensure compatibility with point triggers 2023-06-22 00:59:20 +09:00
Kijin Sung
848a7cb878 Add site_admin table schema to cleanup list 2023-06-21 22:22:59 +09:00
Kijin Sung
ddb4769bb1 Version 2.1.0 2023-06-21 20:09:50 +09:00
Kijin Sung
e7275ba0e0 Use magick to resize images that are too large for GD 2023-06-21 20:05:50 +09:00
Kijin Sung
fd36c32cf8 Add link to ImageMagick official site 2023-06-21 19:43:10 +09:00
Kijin Sung
dc81921c4f Merge remote-tracking branch 'upstream/develop' into develop 2023-06-21 00:41:02 +09:00
Kijin Sung
0faa75204b
Merge pull request #2124 from kijin/develop
승인, 거부, 미인증 등 회원 상태를 세부 구분하는 status 컬럼 추가
2023-06-21 00:40:48 +09:00
Kijin Sung
7b39fac881 Fix some modules not being updated during initial install 2023-06-21 00:39:52 +09:00
Kijin Sung
2af94e496e Recreate member mid if config is normal but module instance is missing 2023-06-21 00:33:22 +09:00
Kijin Sung
b74a8db75b Define list of valid status codes as Member::STATUS_LIST 2023-06-21 00:01:26 +09:00
Kijin Sung
26a0ec66ff Add status column to member table #1806 #1896 2023-06-20 23:57:45 +09:00
Kijin Sung
c3fdee7350 Fix unit test for getUrl() #2123 2023-06-20 22:06:17 +09:00
Kijin Sung
f0237921b9 Fix unit test for getUrl() #2123 2023-06-20 21:28:09 +09:00
Kijin Sung
9aa24c558f Add unit tests for array-based getURL() #2123 2023-06-20 21:13:14 +09:00
Kijin Sung
ff647d6701 Fix #2123 support nested arrays when getUrl() is used with array syntax 2023-06-20 21:12:56 +09:00
Kijin Sung
ac12bac141 Merge remote-tracking branch 'upstream/develop' into develop 2023-06-20 20:52:53 +09:00
Kijin Sung
4b617404ec
Merge pull request #2122 from kijin/develop
회원 모듈에 mid 부여
2023-06-20 20:52:34 +09:00
Kijin Sung
12446b4b79 Update help text about member password hashing algorithms 2023-06-20 20:51:21 +09:00
Kijin Sung
9682f7de54 Add scheme (http: or https:) to member module URL input area 2023-06-20 20:42:31 +09:00
Kijin Sung
b2bc724715 Fix referer URL handling to account for member mid redirect 2023-06-20 20:32:03 +09:00
Kijin Sung
6df47d6994 Also remove unnecessary tags from board header and footer scripts 2023-06-20 17:08:30 +09:00
Kijin Sung
b521c07721 Also remove unnecessary tags from layout header script 2023-06-20 17:06:37 +09:00
Kijin Sung
be6cc58311 Remove <html>, <head>, <body> tags from header and footer scripts 2023-06-20 17:03:34 +09:00
Kijin Sung
0de42bebaf Split frontend URL rewriting script into its own file loaded separately 2023-06-20 16:43:44 +09:00
Kijin Sung
a9b3d99cf2 Use mid instead of module in message send popup 2023-06-20 10:26:17 +09:00
Kijin Sung
75e0674b6f Remove duplicate empty line 2023-06-20 10:19:27 +09:00
Kijin Sung
e44611973b Change redirect URL to getNotEncodedUrl() 2023-06-20 10:16:22 +09:00
Kijin Sung
1af9d5999c Add option to force all member pages to use the member mid 2023-06-20 02:14:46 +09:00
Kijin Sung
80fa953eb1 Fix undefined property in member info 2023-06-20 01:29:44 +09:00
Kijin Sung
030455025b Add config entry to change member mid 2023-06-20 01:25:05 +09:00
Kijin Sung
eee0eebff9 Fix member module skin error if USE_DEFAULT is selected 2023-06-20 01:04:18 +09:00
Kijin Sung
db18192db3 Add meta noindex tag to ncenterlite module pages 2023-06-20 01:00:51 +09:00
Kijin Sung
58d4f70cbd Add short URL to communication module pages 2023-06-20 00:59:04 +09:00
Kijin Sung
52a7d47a49 Also force communication and ncenterlite views to share member mid 2023-06-20 00:50:36 +09:00
Kijin Sung
2a570e7737 Redirect to member mid if member pages are accessed through a different mid 2023-06-20 00:40:14 +09:00
Kijin Sung
3b265d5278 Implement index action for member module 2023-06-20 00:27:42 +09:00
Kijin Sung
f97b67caf7 Create default mid for member module 2023-06-20 00:24:55 +09:00
Kijin Sung
16cf779d7a Remove unnecessary variables from member menu of xedition layout 2023-06-19 23:01:45 +09:00
Kijin Sung
d80782459a Implement search for messages #911 #1112 2023-06-19 23:01:11 +09:00
Kijin Sung
d8eee65f49 Add message_type to message search form 2023-06-19 23:00:49 +09:00
Kijin Sung
9bfb66f4ff Add search box to communication module skins 2023-06-19 22:47:33 +09:00
Kijin Sung
9812228cbc Rename class for Turnstile config 2023-06-19 22:35:34 +09:00
Kijin Sung
1d3c5bc5d4 Add more unnecessary files to cleanup list 2023-06-19 22:34:05 +09:00
Kijin Sung
4e3ffa6115 Use new HTTP class to communicate with reCAPTCHA/Turnstile servers #2112 2023-06-19 22:33:36 +09:00
Kijin Sung
ef77af5a39 Reorganize CAPTCHA handling classes #2112 2023-06-19 22:27:25 +09:00
Kijin Sung
eb79a5c66f Merge pull request #2112 2023-06-19 22:16:55 +09:00
Kijin Sung
558df8e42f Fix #2116 add space where line-breaking tag is removed 2023-06-19 22:14:08 +09:00
Kijin Sung
26f052925b Fix #2099 remove empty item for inaccessible menus that have accessible children 2023-06-19 22:05:11 +09:00
Kijin Sung
73c60b1297 Fix #2119 being allowed to set 0 as category_srl 2023-06-19 21:55:24 +09:00
Kijin Sung
b8465cc022 Clean up category handling code in DocumentController #2119 2023-06-19 21:54:30 +09:00
Kijin Sung
e238947c9a Add unit tests for DB->connect() and disconnect() 2023-06-19 15:38:24 +09:00
Kijin Sung
31f2d54f1a Update legacy test to reflect WAP removal and DB->isConnected() deprecation 2023-06-19 15:34:40 +09:00
Kijin Sung
959503b6ec Clean up references to deprecated DB methods in other places 2023-06-19 15:24:27 +09:00
Kijin Sung
59113fc385 Mark DB->getHandle() as nullable, and update related methods 2023-06-19 15:22:06 +09:00
Kijin Sung
840617eece Mark _query() and _fetch() as deprecated 2023-06-19 15:19:03 +09:00
Kijin Sung
66e1b93b78 Add explicit connect() and disconnect() methods to DB class 2023-06-19 15:00:39 +09:00
Kijin Sung
8b8ae5f64c Remove WAP classes and mark getWAP() as deprecated 2023-06-19 14:50:00 +09:00
Kijin Sung
cc7155fe0b Add mobileXE addon to blacklist 2023-06-19 14:47:04 +09:00
Kijin Sung
2a28d3d9c8 Fix reference to static property 2023-06-19 13:51:28 +09:00
Kijin Sung
b562df8959 Fix capitalization of class names in Board module 2023-06-19 13:49:20 +09:00
Kijin Sung
67b4e7eade Fix capitalization of class names in Page module 2023-06-19 13:44:08 +09:00
Kijin Sung
002f62ad8f Fix capitalization of class names in Point module 2023-06-19 13:42:18 +09:00
Kijin Sung
2c1552a523 Move PointController::_getModulePointConfig() to PointModel, where it would be more appropriate 2023-06-19 13:40:36 +09:00
Kijin Sung
2b8f5ca947 Update point triggers to use diff syntax for giving and taking points 2023-06-19 13:35:25 +09:00
Kijin Sung
833ba2390a Allow points to be updated in SQL without replacing current value 2023-06-19 13:25:22 +09:00
Kijin Sung
7e438350ac Fix unit test for 10cd76d0 change 2023-06-19 02:25:14 +09:00
Kijin Sung
ed473886ea Use offset instead of pagination in RSS module, to prevent unnecessary count query 2023-06-19 02:23:03 +09:00
Kijin Sung
01fd0e9cc5 Clean up RSS module 2023-06-19 02:22:29 +09:00
Kijin Sung
a30b7b6259 Normalize whitespace in RSS module 2023-06-19 02:16:42 +09:00
Kijin Sung
87f798f94f Support page = 0 and offset > 0 in getDocumentList() to avoid unnecessary count query 2023-06-19 02:15:35 +09:00
Kijin Sung
f34c27c26b Fix truncated password hash for documents and comments written by non-members, if member module is configured to use a hashing algorithm that produces more than 60 chars 2023-06-19 01:59:27 +09:00
Kijin Sung
10cd76d0be Revert "Convert DB class into an alias of Rhymix\Framework\DB, instead of extending it"
This reverts commit 9d3b5924e9.
2023-06-19 01:44:53 +09:00
Kijin Sung
e08e4fcdad Resize new_password column of member_auth_mail table to varchar(250) 2023-06-19 01:44:23 +09:00
Kijin Sung
a40c5d82b6 Always add CSRF token to meta tag 2023-06-19 01:40:21 +09:00
Kijin Sung
1a871ce9bc Add unused addons to core cleanup list 2023-06-19 01:33:36 +09:00
Kijin Sung
8ed71540c4 Fix extra slash in layout path 2023-06-19 00:21:46 +09:00
Kijin Sung
3524c60435 Disable editing layouts unless they have already been edited #2121 2023-06-19 00:20:57 +09:00
Kijin Sung
a266d39c2e Show file module as 'file', not 'attachment'. Fix #2120 2023-06-18 23:39:45 +09:00
Kijin Sung
7df280a697 Add line breaks to help text 2023-06-18 23:35:55 +09:00
Kijin Sung
5ba6346bec Add security options to add X-Frame-Options and X-Content-Type-Options headers
- 보안 관련하여 널리 알려진 헤더 3종 가운데 2종을 기본 지원
- X-XSS-Protection 헤더는 IE 지원 종료로 불필요
2023-06-18 23:33:41 +09:00
Kijin Sung
e3ce2bcbcc Remove gzip support; rely on webserver instead 2023-06-18 23:05:16 +09:00
Kijin Sung
de2a9288f2 Add option to control how many seconds to wait before compiling updated template file 2023-06-18 23:01:59 +09:00
Kijin Sung
c2f0e4fad9 Properly translate page type 2023-06-18 03:13:05 +09:00
Kijin Sung
0a7fabb19e Make page module list controls the same as board module 2023-06-18 03:11:24 +09:00
Kijin Sung
5a04c136d2 Adjust path display in board and page config screen if rewrite is turned off 2023-06-18 03:08:13 +09:00
Kijin Sung
648cd40b0d Adjust styling of domain display in board and page list 2023-06-18 03:05:17 +09:00
Kijin Sung
bd0687c502 Fix trying to delete and recreate the same index idx_lang 2023-06-18 03:05:01 +09:00
Kijin Sung
f596947d0e Add option to make pages available only on one domain
- 2021년에 next 브랜치 적용을 목표로 작업했던 것 가져옴
- modules 테이블에 domain_srl을 추가하여 특정 도메인에서만 유효하도록 설정 가능
- site_srl 변수를 사용하던 곳 중 삭제할 수 있는 곳은 모두 삭제함
2023-06-18 02:53:04 +09:00
Kijin Sung
ded3b97208 Fix race condition when template file is being uploaded 2023-06-17 00:49:24 +09:00
Kijin Sung
73e7e17347 Fix warnings in PHP 8.2 2023-06-16 16:23:34 +09:00
Kijin Sung
e02c5a04d3 Fix Context::getRequestUri() returning null when used in CLI context 2023-06-16 15:35:18 +09:00
Kijin Sung
180ed429cf Fix deprecation error in PHP 8.x when path or domain is null in setcookie() 2023-06-16 15:34:48 +09:00
mmx900
9611fc7bda Fix #2114 Allow specifying file formats to be indexed 2023-06-14 19:13:48 +09:00
Kijin Sung
22abeb7a88 Fix fatal error if logged_info is not an object at this stage 2023-06-10 21:11:54 +09:00
conory
2b41d73c96 escape되는 문자가 많은 댓글을 휴지통으로 이동시킬 수 없는 문제 수정
SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'title' at row 1
2023-06-10 18:55:33 +09:00
Johnny
ff3f1f4c38
Merge pull request #2089 from dewekk/fix-member-admin-form
회원가입 추가 항목에 국가, 언어, 시간대 기능 추가
2023-05-24 14:56:54 +09:00
Kijin Sung
d1d2fa7686 Implement AVIF/HEIC -> JPG conversion using ImageMagick 7.x 2023-05-24 14:56:03 +09:00
BJRambo
3523b14ca7 회원정보에서 코드로 나오는 부분을 이름으로 나올 수 있도록 개선 2023-05-24 14:44:26 +09:00
Kijin Sung
f7c01cccfb Add options to convert AVIF and HEIC images using ImageMagick 7.x 2023-05-24 14:28:26 +09:00
Kijin Sung
51a4604750 Implement automatically cutting video duration 2023-05-24 13:35:07 +09:00
Kijin Sung
0071d3f2dc Add options to limit video duration 2023-05-24 13:23:00 +09:00
Kijin Sung
a14cf85763 Implement video auto resizing and reencoding 2023-05-24 13:16:11 +09:00
Kijin Sung
4fc308afad Add section headers for easy management of upload config 2023-05-22 16:17:40 +09:00
Kijin Sung
ab2b96d509 Implement additional options for video processing in file module 2023-05-22 16:08:52 +09:00
Kijin Sung
685a027640 Clarify option labels in file upload config page 2023-05-22 15:45:00 +09:00
Kijin Sung
e544efcef6 Allow updating file information in file.insertFile (before) trigger 2023-05-21 21:12:40 +09:00
Kijin Sung
baf80a0d80 Fix #2115 only set default Reply-To address if the user has not specified a Reply-To address 2023-05-21 20:00:30 +09:00
Kijin Sung
51a910a310 Fix #2117: don't allow adding comments to secret posts
- 비밀글이나 비밀댓글에 댓글이나 대댓글을 달 수 없도록 변경
- 댓글 작성을 시도중인 글이 부모댓글의 document_srl과 일치하는지 확인
- 문서 체크를 본문 내용 검증보다 먼저 수행
2023-05-21 19:51:41 +09:00
Kijin Sung
054d79cc28 Remove Firefox workaround that isn't needed anymore 2023-05-21 19:31:59 +09:00
Kijin Sung
4889852622 Use session.lifetime value if set, otherwise use default of 8 hours 2023-05-21 19:29:32 +09:00
Lastorder
767d0d2440 Change folder name 2023-05-08 02:28:54 +00:00
Lastorder
7426d254e4 Fix space indent 2023-05-08 02:27:47 +00:00
Lastorder
1f67ccf673 Seperate captcha class 2023-05-08 02:25:30 +00:00
Kijin Sung
e2223b776a Fix #2113 unnecessary variable assignment 2023-05-06 22:03:28 +09:00
Kijin Sung
0484d8db27 Fix #2111 IDN not being accepted in queries 2023-05-06 22:01:11 +09:00
Lastorder
bd44b4ef54 Fix #2008 Add support for Cloudflare Turnstile 2023-05-04 06:32:19 +00:00
Kijin Sung
32ffc94dee Move proxy setting to HTTP::_createClient() 2023-05-01 22:26:16 +09:00
Kijin Sung
7d88e532c9 Fix deprecation warning in PHP 8.2 when $output is null 2023-05-01 02:59:45 +09:00
Kijin Sung
58ce0defca Add option to control error and query log consolidation 2023-05-01 02:59:22 +09:00
Kijin Sung
3bf458e9ba Fix double-escaping nickname and homepage of guest author 2023-05-01 00:06:26 +09:00
Kijin Sung
581097a9e3 Fix deprecation warnings in PHP 8.2 2023-05-01 00:05:56 +09:00
Kijin Sung
a1bd9cc2bc Only record the same error or query once
PHP 8.2로 올라오면서 동일한 오류가 수백~수천 번 반복되어
디버그 데이터가 너무 많은 메모리를 차지하는 문제가 종종 발생하고 있음.

동일한 위치에서 발생한 동일한 오류나 쿼리는 한 번만 기록하고
count를 증가시키도록 하여, 불필요한 메모리 사용을 줄이고
반복되는 오류나 쿼리를 쉽게 찾을 수 있도록 개선함.
2023-04-30 23:56:54 +09:00
Kijin Sung
968bde2c38
Merge pull request #2078 from dewekk/fix-debug
디버그 패널에서 무조건 에러 내용이 표시되는 문제 수정
2023-04-30 23:25:57 +09:00
Kijin Sung
cecc20cc8e
Merge branch 'develop' into fix-debug 2023-04-30 23:22:20 +09:00
Kijin Sung
7a45cb2b84 Fix #2103 disallow adding items to poll after the stop date 2023-04-30 23:18:31 +09:00
Kijin Sung
4c9488e94d Minor adjustments to convertEncoding() to remove errors
https://xetown.com/questions/1759076
2023-04-30 23:12:21 +09:00
Kijin Sung
9815102b38 Mark Context::convertEncodingStr() and related methods as deprecated
https://xetown.com/questions/1759076
2023-04-30 22:58:45 +09:00
Kijin Sung
be97b3f5e5 Add unit tests for nested transaction support 2023-04-30 22:53:22 +09:00
Kijin Sung
7755821f20 Add unit tests for DB class equivalence and magic properties 2023-04-30 22:50:49 +09:00
Kijin Sung
28bc991048 Replace some rarely used DB class properties with __get() magic method 2023-04-30 22:50:07 +09:00
Kijin Sung
749037249c Add DB->beginTransaction() as an alias to begin() 2023-04-30 22:38:40 +09:00
Kijin Sung
6ccbb0e792 Fix #2107 remove unnecessary conditions in poll widget skin 2023-04-30 22:36:57 +09:00
Kijin Sung
c9d3e9048d Remove excess whitespace in jQuery.fileUpload integration script 2023-04-30 22:30:26 +09:00
Kijin Sung
907750ff79 Fix #2108 use error callback function if AJAX transmission fails for any reason 2023-04-30 22:29:37 +09:00
Kijin Sung
bd8fe996e1 Always return an error code of -2 if an exception is thrown during module init 2023-04-30 22:16:59 +09:00
Kijin Sung
f6209202bf Add deprecation notice to exec_xml() 2023-04-30 22:09:52 +09:00
Kijin Sung
a4905ab65a Fix #2109 update error message for exec_html() 2023-04-30 22:06:25 +09:00
Kijin Sung
703b04ca97 Remove unnecessary whitespace in common JS files 2023-04-30 22:05:43 +09:00
Kijin Sung
5eab0474e5 Fix tests to account for argon2id support 2023-04-24 01:13:47 +09:00
Kijin Sung
0b8133f8e7 Increase size of password column to 250 chars, if actual column size is smaller 2023-04-24 01:11:10 +09:00
Kijin Sung
ee5404eab6 Enable password hashing with argon2id algorithm on supported systems (PHP 7.3+) 2023-04-24 01:06:54 +09:00
Kijin Sung
a6774937a2 Add methods for async and multiple concurrent HTTP requests 2023-04-23 16:59:56 +09:00
Kijin Sung
77a7ff9133 Separate HTTP request settings manipulation to its own method 2023-04-23 16:37:33 +09:00
Kijin Sung
6f9bb059e8 Use helper class to handle various error conditions during HTTP request 2023-04-23 14:50:39 +09:00
Kijin Sung
6a9902c3bb Clean up default settings and proxy URL parsing logic 2023-04-23 14:26:19 +09:00
Kijin Sung
8db0b06b6a Fix sender info not being available until the before trigger has been called 2023-04-23 00:40:58 +09:00
Kijin Sung
4f73c9562b Update several mail and SMS drivers to use HTTP class instead of Requests or raw curl 2023-04-23 00:40:30 +09:00
Kijin Sung
cf84d70ca1 Also recognize Content-Type headers with optional parameters 2023-04-23 00:40:03 +09:00
Kijin Sung
d731198aa6 Cache and reuse the Guzzle client for multiple requests 2023-04-23 00:26:27 +09:00
Kijin Sung
866d704d0d Convert FileHandler::getRemoteResource() to use R\F\HTTP::request() 2023-04-23 00:19:03 +09:00
Kijin Sung
c825fdaf43 Add Rhymix Framework HTTP class to wrap Guzzle 2023-04-23 00:18:37 +09:00
Kijin Sung
1625683082 Update guzzlehttp/guzzle and related libraries 2023-04-22 14:49:26 +09:00
Kijin Sung
901bdab6a9 Filter more potentially malicious tags in SVG uploads 2023-04-10 22:51:07 +09:00
Kijin Sung
b88fe65d6e Fix inconsistent calling of createSignupForm() in member module 2023-04-10 22:31:24 +09:00
BJRambo
5c5d7223ce 사용하지 않는 변수 제거 2023-04-08 19:54:17 +09:00
Kijin Sung
969ee5d068 Fix #2085 SCSS compile error when variables contain false, null, empty string, etc. 2023-04-08 11:59:55 +09:00
Kijin Sung
875e5d1c2c Fix #2098 create an instance of MessageMobile class instead of MessageView if user is mobile 2023-04-02 15:40:57 +09:00
Kijin Sung
34a4119dcc Fix #2097 error when request parameter is null 2023-04-02 15:36:56 +09:00
Kijin Sung
bc2d46b36e #2091 보완 - 가입 URL 등 몇 가지 더 추가 2023-03-23 22:53:47 +09:00
Kijin Sung
a161d4ece4
Merge pull request #2091 from dewekk/fix-login-redirect
짧은 주소 사용 시 로그인 무한 리다이렉트 문제 수정
2023-03-23 22:47:29 +09:00
Kijin Sung
87a34af69e Fix #2072 redirect to proper URL if a document with is_notice=A is requested without mid 2023-03-23 22:44:51 +09:00
Kijin Sung
c6523706f8 Fix #2088 display error if spam filter prevents temp save 2023-03-23 22:30:13 +09:00
Kijin Sung
770626af41 Fix required parameter between optional parameters 2023-03-23 22:17:35 +09:00
Kijin Sung
44288fcb78 Fix #2094 remove page and message_type parameters from links in communication module skin 2023-03-23 22:05:26 +09:00
Kijin Sung
61c02929f2 Fix #2093 error when submitted values are not in an array 2023-03-23 21:52:40 +09:00
Kijin Sung
ee52d17fee Fix missing property 'caller' of Push class 2023-03-23 20:54:54 +09:00
Kijin Sung
0be90c1817 Fix trying to access protected property of SMS class 2023-03-23 20:52:55 +09:00
dewekk
755883245b
d1b0dbf 보완
짧은 주소 모든 주소 형태를 사용 할 때 무한 리다이렉트 오류를 수정합니다.
참고
https://github.com/rhymix/rhymix/pull/1955
d1b0dbff9c
2023-03-14 21:21:14 +09:00
dewekk
aa817bc332
회원가입 추가 항목에 국가, 언어, 시간대 기능 추가 2023-03-10 11:29:11 +09:00
Kijin Sung
29bf72c998 Fix #2077 don't check hwpx files as XML 2023-03-05 23:03:50 +09:00
Kijin Sung
3e83a472cc
Merge pull request #2087 from Waterticket/Waterticket-afterDoAutoLoginTrigger
자동로그인 이후 member.doAutoLogin After 트리거 호출하도록 패치 #2076
2023-03-05 22:48:33 +09:00
Waterticket
92fc585eb7
fix: doAutoLogin after 트리거 위치를 회원 캐시 초기화 후로 이동 2023-03-04 13:51:06 +09:00
Waterticket
db9355fd0c
feat: 자동로그인 이후 member.doAutoLogin After 트리거 호출하도록 패치 2023-03-04 12:56:06 +09:00
BJRambo
061f683673 Fix typo 2023-02-27 16:27:09 +09:00
Kijin Sung
50949178a3 Fix #2067 incorrect ruleset in copyModule 2023-02-26 21:53:39 +09:00
Kijin Sung
8b2fefe5a6 Fix #2058 set layout path in dispNcenterliteInsertUnsubscribe() 2023-02-26 21:51:23 +09:00
Kijin Sung
1848ef19f9 Fix #2044 delete debugging code 2023-02-26 21:47:22 +09:00
Kijin Sung
512ca07680 Fix #2044 set identifier to 'user_id' unless email is the only option
이메일 이외의 로그인 방법이 하나라도 선택되어 있다면
identifier 설정은 user_id로 고정
2023-02-26 21:45:51 +09:00
Kijin Sung
cc40b156da #2081 보완: commit 빠진 곳 한 군데 더 발견, 불필요한 참조 연산자 제거 2023-02-26 21:39:33 +09:00
Kijin Sung
7a9c801d72
Merge pull request #2081 from BOBODDO/develop
procPollInsertItem 후 트랜잭션 커밋이 안되던 문제 수정
2023-02-26 21:37:31 +09:00
Kijin Sung
482cdc2cad Use consistent condition for identifier form type
identifier가 email_address인 경우에만 <input type="email">을 사용하고
그 밖의 경우에는 항 <input type="text">를 사용하도록 일관성 개선
2023-02-26 01:45:29 +09:00
Kijin Sung
8620ee4b02 Fix #2044 default value mismatch for identifier/identifiers 2023-02-26 01:43:20 +09:00
백승철
21e8acdca0 procPollInsertItem 후 트랜잭션 커밋이 안되던 문제 수정 2023-02-25 13:08:11 +09:00
BJRambo
ba94631921 Merge branch 'develop' of github.com:rhymix/rhymix into develop 2023-02-23 21:00:52 +09:00
BJRambo
7d15f6adb9 트리거 변수가 잘못 전달되는 문제 고치고 document_srl 을 추가함. 2023-02-23 20:59:59 +09:00
dewekk
871b25c3ba 디버그 패널에서 무조건 에러 내용이 표시되는 문제 수정
- 패널, JSON 요청에서 요청/응답정보, 에러 정보 표시가 디버그 설정에 따라 표시되게 수정
2023-02-10 16:30:04 +09:00
Kijin Sung
5ecf8ea99b Fix warning when query is executed from outside of a class or function 2023-02-06 01:57:18 +09:00
Kijin Sung
9aec92fbfd
Merge pull request #2069 from kijin/pr/whitespace
.editorconfig에서 trim_trailing_whitespace = true로 변경
2023-02-05 20:38:49 +09:00
Kijin Sung
b122f35e62 Fix deprecation notice in rmccue/requests in PHP 8.2 2023-01-31 00:01:39 +09:00
Kijin Sung
c6bcad909e Bump version during 2.1 development 2023-01-31 00:01:18 +09:00
Kijin Sung
8c879da8f8 Check PHP version using integer constant to be more efficient 2023-01-31 00:01:06 +09:00
Kijin Sung
dfa1e93c79 Remove unnecessary header and footer from class files
- 아래에 이미 author 언급이 있으므로 중복되는 저작권 표기는 제거
- 클래스 하단에 불필요한 end of file 표시 제거 (파일 하나에 클래스 하나씩이므로
  파일이 중간에 끊겼다면 클래스가 닫히지 않아 쉽게 알 수 있음)
2023-01-30 23:52:23 +09:00
Kijin Sung
1ab8f3470f Merge branch 'develop' into pr/whitespace 2023-01-30 21:49:10 +09:00
Kijin Sung
3b77781d15 Remove trailing whitespace in all unit tests 2023-01-30 21:48:12 +09:00
Kijin Sung
37b0d3a1e6 Remove trailing whitespace 2023-01-30 21:43:21 +09:00
Kijin Sung
c5267b42fd Remove trailing whitespace 2023-01-30 21:37:41 +09:00
Kijin Sung
c881e73c1d Remove trailing whitespace in legacy class files 2023-01-17 21:07:55 +09:00
Kijin Sung
e1a3961973 Fix mixing tabs and spaces 2023-01-17 21:04:51 +09:00
Kijin Sung
ca35eda1da Fix #2068 type error in utf8_clean() 2023-01-17 21:04:33 +09:00
Kijin Sung
8a6039b829 Remove trailing whitespace in member module 2023-01-17 21:01:32 +09:00
Kijin Sung
f05d3b4ab6 Remove trailing whitespace in module module 2023-01-17 21:00:45 +09:00
Kijin Sung
1dca4adf42 Remove trailing whitespace in admin module 2023-01-17 20:59:21 +09:00
Kijin Sung
a9f72a5cd2 Remove trailing whitespace 2023-01-17 20:57:44 +09:00
Kijin Sung
3b0030e82b Enable trim_trailing_whitespace in .editorconfig and add exceptions for more file types 2023-01-17 14:42:51 +09:00
Kijin Sung
651238916b Fix deprecation warnings in PHP 8.2 2023-01-17 00:15:12 +09:00
Kijin Sung
6c844f91ef Always set XE_VALIDATOR_ID and related variables 2023-01-17 00:15:00 +09:00
Kijin Sung
3f3f270fda Reduce warnings due to undefined variables in templates
- 템플릿에서 변수를 단순 참조할 경우 ?? '' 를 붙여 워닝 방지
- 함수 호출이나 복잡한 문법 안에 들어간 변수까지 처리해 주지는 않음
- 불필요한 오류 메시지를 줄여서 정말 중요한 오류를 찾기 쉽도록
2023-01-17 00:00:34 +09:00
Kijin Sung
aacc7dc46e Fix missing variables in member list screen 2023-01-16 23:05:31 +09:00
Kijin Sung
60433f93d2 Fix deprecated code in less compiler 2023-01-16 23:05:21 +09:00
Kijin Sung
e0a041bb3d Fix deprecation warnings in PHP 8.2 2023-01-16 22:42:04 +09:00
Kijin Sung
f7f20a0825 Fix incorrect template syntax 2023-01-16 22:36:22 +09:00
Kijin Sung
bdae876529 Fix deprecation warnings for using trim() on null 2023-01-16 22:34:26 +09:00
Kijin Sung
33b58b5e77 Convert ?: to ?? 2023-01-16 22:31:50 +09:00
Kijin Sung
4c15e8fef5
Merge pull request #2066 from Waterticket/develop
fix deprecated warnings
2023-01-16 22:27:24 +09:00
Kijin Sung
b6d78becc9 Fix deprecation warnings in PHP 8.2 2023-01-16 22:21:57 +09:00
Kijin Sung
a6872d6e2a Remove all type declarations in DBHelper/DBStmtHelper methods inherited from PDO, for broad compatibility with PHP 7 and 8 2023-01-16 22:21:48 +09:00
Kijin Sung
80afad9d07 Merge remote-tracking branch 'upstream/develop' into develop 2023-01-16 21:57:57 +09:00
Kijin Sung
8eb387de3c Fix autoloader not working for DBStmtHelper in PHP 7.x
SQLSTATE[HY000]: General error: PDO::ATTR_STATEMENT_CLASS requires format array(classname, array(ctor_args));
2023-01-16 21:57:01 +09:00
Kijin Sung
11a845ecc9 Fix undefined variable in ncenterlite.controller.php 2023-01-16 21:43:26 +09:00
Kijin Sung
0ba4c51c3c Fix type error in DBHelper::query() when there is a query error 2023-01-16 21:39:30 +09:00
Kijin Sung
c07efe7905 Fix deprecation notices in PHP 8.2 #2064 2023-01-16 21:24:59 +09:00
Kijin Sung
8e2c4b3ef9 Fix #2065 add ReturnTypeWillChange attribute to DBHelper 2023-01-16 21:16:13 +09:00
Waterticket
f58e865f4d fix deprecated warnings 2023-01-16 09:29:34 +00:00
Kijin Sung
b8351bf3c8 Fix #2063 incorrect path to cacert.pem 2023-01-12 00:18:25 +09:00
Kijin Sung
6ce32b612f Fix incorrect point if cache file is somehow damaged
https://xetown.com/questions/1736150
2023-01-06 18:38:43 +09:00
Kijin Sung
6f51d0da87 Fix deprecation warning in PHP 8 2023-01-06 18:37:09 +09:00
Kijin Sung
5f4e7946a3 Fix deprecation warning in PHP 8 2023-01-06 18:37:02 +09:00
BJRambo
6c139c543e 신고 관련 베트남어 추가 2023-01-05 22:19:15 +09:00
Kijin Sung
7688c8fb38 Merge branch 'master' into develop 2023-01-03 14:01:34 +09:00
Kijin Sung
5c009ba28f Fix type error when page_count is not defined in query (#2039 regression) 2023-01-03 13:56:46 +09:00
Kijin Sung
174e33ba7c Adjust unit tests for file cache removal 2022-12-30 00:21:17 +09:00
Kijin Sung
e5d6bddebc Always display dummy cache driver at top of list 2022-12-30 00:18:56 +09:00
Kijin Sung
2437de31f3 Remove wincache and xcache drivers - they are no longer maintained for PHP 7.2+ 2022-12-30 00:16:06 +09:00
Kijin Sung
8234fd5c7b Disable file cache driver 2022-12-30 00:10:18 +09:00
Kijin Sung
84546b936c Adjust error display in core file cleanup function 2022-12-29 01:01:17 +09:00
Kijin Sung
ab757d0b8a Clean up admin footer and adjust lang codes 2022-12-29 00:55:47 +09:00
Kijin Sung
30493947d8 Fix deprecated ${var} syntax 2022-12-29 00:44:51 +09:00
Kijin Sung
81daa1fa17 Clarify ordering of message boxes in the admin dashboard 2022-12-28 21:44:13 +09:00
Kijin Sung
a188fde6e5 Fix inefficient caching of checkCaseSensitiveFilesystem() 2022-12-28 21:39:05 +09:00
Kijin Sung
87266f9440 Automatically check for unnecessary files in the Dashboard 2022-12-28 21:34:37 +09:00
Kijin Sung
ba107a6abf Add admin screen to delete unnecessary core files from older versions 2022-12-28 21:25:57 +09:00
Kijin Sung
e97f44826d Add ModuleObject->copyResponseFrom() 2022-12-28 02:14:47 +09:00
Kijin Sung
4fb1511e74 Remove unnecessary COPYRIGHT file, we already have a license! 2022-12-28 01:16:45 +09:00
Kijin Sung
0aa4fed636 Add option to select jQuery 3.x (#1835) + add description to other options in Advanced config screen 2022-12-28 01:09:27 +09:00
Kijin Sung
dc1182f6f5 Add jQuery 3.x 2022-12-28 00:52:48 +09:00
Kijin Sung
bd904d7426 Remove non-minified version of jQuery migrate 1.x 2022-12-28 00:52:32 +09:00
Kijin Sung
c21d728880 Delete jQuery 1.x which is only used in very old IE 2022-12-28 00:52:06 +09:00
Kijin Sung
5a6adb5c05 Remove remaining targetie reference 2022-12-28 00:51:12 +09:00
Kijin Sung
684eed4a4d Remove special cases for MSIE 2022-12-28 00:41:59 +09:00
Kijin Sung
5c797c72ca Fix warning in PHP 8.x due to nonexistent targetie attribute 2022-12-28 00:41:35 +09:00
Kijin Sung
9e9adcdb43 Remove support for targetie attribute on assets 2022-12-28 00:35:57 +09:00
Kijin Sung
d34d08438f Fix #2052 move all charset and import statements to the beginning of concatenated CSS scripts 2022-12-28 00:06:50 +09:00
Kijin Sung
a55ba4fab9 Fix incorrectly capitalized class names in message module 2022-12-27 23:14:23 +09:00
Kijin Sung
97e14fee65 Fix incorrectly capitalized class names in file module 2022-12-27 23:13:10 +09:00
Kijin Sung
0b5d9858a7 Fix deprecation warning 2022-12-27 23:11:40 +09:00
Kijin Sung
bc3502988e Fix incorrectly capitalized class names in document and comment modules 2022-12-27 23:09:25 +09:00
Kijin Sung
4fe893ee86 Merge remote-tracking branch 'origin/develop' into develop 2022-12-27 23:07:10 +09:00
Kijin Sung
0e2940985f Move unnecessary method in ModuleMobile to ModuleView 2022-12-27 23:06:52 +09:00
Kijin Sung
f5bd3a15ef Fix incorrectly capitalized class names in module module 2022-12-27 23:05:01 +09:00
Kijin Sung
b1206b9cf1 Fix incorrectly capitalized class names in member module 2022-12-27 23:03:46 +09:00
Kijin Sung
e2e0f076a0 Rename device.php to uppercase Device.php 2022-12-27 23:02:03 +09:00
Kijin Sung
3761f92cef Fix type error when legacy methods are called with inappropriate types 2022-12-27 22:54:52 +09:00
Kijin Sung
db3fb20a52 Fix optional parameter before required parameter 2022-12-27 22:54:31 +09:00
Kijin Sung
f74976508e Let's see some deprecation warnings now 2022-12-27 22:44:45 +09:00
Kijin Sung
e0e4da50b7 Fix incorrect detection of admin user when writer is anonymous 2022-12-27 22:44:30 +09:00
Kijin Sung
7f0753454f Move remainder of usable actions to respective controller classes 2022-12-27 22:43:39 +09:00
Kijin Sung
01b408fb6b Move procAdminRecompileCacheFile() to its own class 2022-12-27 21:58:28 +09:00
Kijin Sung
b9e55c05e6 Move remainder of system config actions to respective controller classes 2022-12-27 21:48:54 +09:00
Kijin Sung
ba18143dd6 Move domain config actions and related methods to Domains controller 2022-12-27 21:24:39 +09:00
Kijin Sung
a95ef14b8d Fix backward compatibility with admin module 2022-12-27 11:06:28 +09:00
Kijin Sung
9c424f2d6f Move procAdminLogout to Dashboard controller 2022-12-27 00:03:03 +09:00
Kijin Sung
5d6a16cdf9 Move server environment related actions to ServerEnv class 2022-12-27 00:00:14 +09:00
Kijin Sung
c93dea90e0 Move admin dashboard to Dashboard controller 2022-12-26 23:50:40 +09:00
Kijin Sung
93947a7f51 First step of reorganizing admin module into namespaces 2022-12-26 23:19:37 +09:00
Kijin Sung
4c65499ab1 Allow the install class of a module to be inside the controllers directory 2022-12-26 17:16:07 +09:00
Kijin Sung
33bef05b09 Update Korea IP range database 2022-12-26 17:08:43 +09:00
Kijin Sung
e4a7ac794d Make <select> style consistent in Chrome and Firefox 2022-12-26 16:57:49 +09:00
Kijin Sung
cc2a8597b5 Fix forward-incompatible use of null in DateTime constructor 2022-12-26 16:45:53 +09:00
Kijin Sung
d3b9e8400e Update .gitattributes 2022-12-26 16:39:29 +09:00
Kijin Sung
5fff6b6eab Move all composer files inside the common directory
- 2022년 3월 개발팀 결정사항 적용
- 모듈 등 서드파티 자료 개발시 composer를 사용하면 상위 경로에 있는 코어의
  composer.json을 수정하고, 코어의 vendor 디렉토리를 건드리는 것이 기본값임
- 이를 방지하기 위해 코어의 composer.json과 vendor를 common 디렉토리 안으로
  이동하여, 모듈 경로에서 상위 폴더로 인식하지 않도록 함
2022-12-26 16:33:32 +09:00
Kijin Sung
7b912d21fc Fix include filename of IpFilter.php 2022-12-26 16:27:36 +09:00
Kijin Sung
b00f8b63d1 Remove unnecessary arguments and deprecated function calls
- Originally committed on April 3, 2022
2022-12-26 16:24:27 +09:00
Kijin Sung
17279c264b Add support for short download URLs #1875 #1922
- Originally committed on April 3, 2022
- Thanks to @misol @conory
- getDownloadUrl()에서 기존 메소드 형태 최대한 그대로 유지하는 방향으로 작업
  (단, source_filename 파라미터를 전달하지 않으면 긴주소로 강제됨)
- getDirectFileUrl()의 불필요하게 복잡한 코드 정리
- getFileList()에서 이미지가 아닌 파일도 절대경로를 반환하도록 수정
- procFileDownload, procFileOutput에서 URL에 포함된 파일명을 검증하도록 하여
  동일한 첨부파일에서 파일명 부분만 변형한 링크를 무한 생성할 수 없도록 함
- 짧은주소 미사용시 불필요한 module_srl 파라미터 제거
2022-12-26 16:23:19 +09:00
Kijin Sung
0029d1a1ec Rename all common/framework source files to be case-sensitive 2022-12-26 16:13:09 +09:00
Kijin Sung
60fd7d7cf2 Move cacert.pem loader to autoload.php 2022-12-26 02:36:44 +09:00
Kijin Sung
9cb1e3e3fc Preload all classes that are referenced in autoload.php 2022-12-26 02:34:21 +09:00
Kijin Sung
a07307d343 Change autoloader to support case-sensitive class files + fix lang path for namespaced modules 2022-12-26 02:30:59 +09:00
Kijin Sung
7218e4fac6 Remove nginx help document (see official documentation instead) 2022-12-26 01:17:52 +09:00
Kijin Sung
426a971c6c Remove $relax_key_checks because we are no longer using Flash uploader 2022-12-26 01:08:04 +09:00
Kijin Sung
b7a975a54d Fix incorrect capitalization of URL class name 2022-12-26 01:01:36 +09:00
Kijin Sung
9d3b5924e9 Convert DB class into an alias of Rhymix\Framework\DB, instead of extending it 2022-12-26 01:00:25 +09:00
Kijin Sung
07c809a9ef Use compoer/ca-bundle instead of using our own cacert.pem 2022-12-26 00:57:50 +09:00
Kijin Sung
e86894c697 Add composer/ca-bundle and enshrined/svg-sanitize 2022-12-26 00:56:12 +09:00
Kijin Sung
735d3dd97c Minimum version is actually PHP 7.2.5 because of dependencies 2022-12-26 00:51:28 +09:00
Kijin Sung
a667228f29 Change rhymix.less back to rhymix.scss because the LESS converter seems to be abandoned :( 2022-12-26 00:50:02 +09:00
Kijin Sung
e93b44aa3a Update SCSS compiler integration code to work with newer version of scssphp (fixes #1962) 2022-12-26 00:35:53 +09:00
Kijin Sung
da5697a5be Separate Swift Mail transport into own file outside of vendor directory 2022-12-26 00:25:58 +09:00
Kijin Sung
fbda332c0a Update test for contenteditable="false" 2022-12-26 00:20:48 +09:00
Kijin Sung
e79493bda5 Update composer.json for PHP 7.2 2022-12-26 00:19:37 +09:00
Kijin Sung
35a93f3928 Remove code that uses defuse/php-encryption (from next branch) 2022-12-25 19:45:12 +09:00
Kijin Sung
0ed1cfdef7 Support YYYY-MM-DD HH:MM:SS format and ISO 8601 format in zdate(), ztime(), and related functions 2022-12-24 22:57:18 +09:00
Kijin Sung
23a827923e Support timestamp() with customizable format in XML query 2022-12-24 22:38:18 +09:00
Kijin Sung
28323f1bb8 Check PHP version in common/autoload.php 2022-12-23 02:04:25 +09:00
Kijin Sung
1c10981113 Remove Object alias for BaseObject 2022-12-23 02:04:11 +09:00
Kijin Sung
1375f79539 Update constants for minimum and recommended PHP versions 2022-12-23 01:58:40 +09:00
Kijin Sung
36b9eeb0a2 Switch to master branch of nanasess/setup-php 2022-12-23 01:55:31 +09:00
Kijin Sung
6cb00a72b8 Add PHP 8.2 and remove PHP 7.1 in github actions CI config 2022-12-23 01:44:50 +09:00
Kijin Sung
0f12a10b05 Fix #2051 include document extra vars in spamfilter target 2022-12-22 23:49:28 +09:00
Kijin Sung
56e94fac7d Version 2.0.24 2022-12-21 11:02:17 +09:00
Kijin Sung
3c456ce0b5 Prepare methods to manage independent sections of module config, in case module config becomes too large 2022-12-20 19:38:13 +09:00
Kijin Sung
9cfcd7cb37 Fix #1136 #1230 auto-rotate profile image if EXIF is available (cf. #1182) 2022-12-20 19:18:39 +09:00
Kijin Sung
270f84abe9 Separate image rotation check into its own method in FileHandler 2022-12-20 19:17:43 +09:00
Kijin Sung
42baab1c2c Set CKEDITOR.toolbarMode to make the current setting available in config.js 2022-12-20 12:37:08 +09:00
Kijin Sung
1fc808e77e Always show login form in default message skin 2022-12-20 10:15:29 +09:00
Kijin Sung
cad4f37485 Reorder debug entries for easy viewing 2022-12-20 10:13:00 +09:00
Kijin Sung
70acafb8ea Add AllowDynamicProperties to SessionHelper 2022-12-20 09:27:36 +09:00
Kijin Sung
b5a5734573 Clean up login-related lang codes (#2017, #2018 보완)
- 동사로 사용할 때는 log in (logs in, logged in 등으로 동사변화)
- 명사로 사용할 때는 login
- 한글 에러코드도 좀더 친근하게 변경
2022-12-20 09:17:50 +09:00
Kijin Sung
49e76b4643 Add option to block robots in integration search module 2022-12-20 03:08:38 +09:00
Kijin Sung
afdc450b00 Fix #1877 allow moving archived messages back to the inbox 2022-12-20 01:27:19 +09:00
Kijin Sung
8b6e1949b0 Preserve 'isvalid' URL parameter when changing sort order or after deleting files 2022-12-20 01:02:02 +09:00
Kijin Sung
21fb1d9e76
Merge pull request #2050 from nginx-x/patch-1
fix typo
2022-12-19 21:32:07 +09:00
Kijin Sung
9292a62f3e Remove duplicate method in board.mobile.php 2022-12-19 20:51:12 +09:00
Kijin Sung
b1b25cac40 Fix #95 #626 #853 #1278 display login form if board action is not permitted and the user is not logged in 2022-12-19 20:41:36 +09:00
nginx-x
9adb70077c
fix typo 2022-12-19 10:11:16 +09:00
Kijin Sung
539b548509 Fix #1882 add toggle to change if spamfilter rule applies to member 2022-12-19 02:18:53 +09:00
Kijin Sung
98f75ee4dd Implement member exception and full HTML filtering in spamfilter module #1882 2022-12-19 02:00:56 +09:00
Kijin Sung
020b85168c Add several columns to spamfilter IP & word tables for feature consistency and extensibility #1882 2022-12-19 01:45:10 +09:00
Kijin Sung
e1f98e573c Fix #1944 add option to display complete call stack for queries 2022-12-19 01:11:43 +09:00
Kijin Sung
868dfb33e9 Fix #2048 use more descriptive captions for category-related options 2022-12-18 20:55:49 +09:00
Kijin Sung
3b48a0e2ce Show warning if PHP version is less than 7.2 2022-12-18 01:54:31 +09:00
BJRambo
cf01c51c0e Merge branch 'develop' of github.com:rhymix/rhymix into develop 2022-12-18 01:42:27 +09:00
BJRambo
a29e310b76 2047 보완 파일 리스트 정렬 순서를 항상 desc에서 처음 시작하도록 개선 2022-12-18 01:42:01 +09:00
Kijin Sung
840a994a91 Remove warning about using IE8 in the admin module 2022-12-18 01:38:03 +09:00
Johnny
7f51e823cd
Merge pull request #2047 from bjrambo/pr/file-query
파일목록에서 각각 정렬기능 및 검색기능 추가.
2022-12-18 01:34:21 +09:00
BJRambo
b1a016c43d 쿼리에 order type 변수 추가 및 기본 동작은 desc로 지정 2022-12-18 01:21:13 +09:00
Kijin Sung
4cc730e489 Support order_default attribute to <index> tag in XML query 2022-12-18 01:18:55 +09:00
Kijin Sung
2a3f5d3c51 Add statusList parameter to most comment model methods #2035 2022-12-18 01:18:26 +09:00
BJRambo
01ffc52239 파일관리 모듈에 다운로드 갯수 이하를 검색할 수 있도록 개선 2022-12-18 01:15:30 +09:00
Kijin Sung
a82e5e1b7f Only show published comments in content widget #2035 2022-12-18 01:07:52 +09:00
Kijin Sung
68a247cc16 Add statusList to more queries and adjust some of them #2035 2022-12-18 01:07:10 +09:00
BJRambo
5a2fe66063 파일목록에 정렬 기능 추가 2022-12-18 00:58:46 +09:00
Kijin Sung
4bd49c29bb Fix #2035 add statusList argument to most comment select queries 2022-12-18 00:28:45 +09:00
Kijin Sung
9d50286445 Clean up declaredDocumentCancel() 2022-12-18 00:17:05 +09:00
Kijin Sung
f3ed346e0b Delete unnecessary parameters when calling getComment() 2022-12-18 00:16:40 +09:00
Kijin Sung
dc90a6abf7 #2010 보완: 문서 모듈과의 일관성을 위해 2022-12-18 00:14:21 +09:00
Kijin Sung
90f6b8aad6
Merge pull request #2010 from dewekk/fix-report
게시물 신고 후 새로고침 되지 않는 문제 수정
2022-12-18 00:08:43 +09:00
Kijin Sung
762e7bf557 Fix #2046 empty value in edit form when '0' is entered into extravar field 2022-12-17 23:34:28 +09:00
Kijin Sung
38900d4b2d Support hash and space as valid tag separators
https://xetown.com/questions/1728094

- 해시(#) 문자와 공백도 태그 구분자로 사용할 수 있도록 지원
- 해시는 기본 지원하며, 공백은 기본 OFF
- tag 모듈 설정에서 커스터마이징 가능
- document 모듈 이외의 자료에서 태그 기능 구현한 경우 적용되지 않을 수 있음
2022-12-16 01:02:42 +09:00
Kijin Sung
e821955129 Clean up insertModule() and handle null values in some important fields 2022-12-16 00:15:19 +09:00
Kijin Sung
2d7d66efca Make consistent ordering of columns in modules table 2022-12-16 00:11:02 +09:00
Kijin Sung
117ae626b9 Fix #2041 don't replace lang codes in member menu until module init 2022-12-15 23:45:19 +09:00
Kijin Sung
b83c5c4b2c Remove unnecessary unset() 2022-12-15 23:37:35 +09:00
Kijin Sung
988d50ad0e Fix non-adjustable font in tables
공통 css와 기본 스킨 css에서 <table>의 폰트와 글자 크기 등이 고정되어 있어
사용자가 선택한 폰트와 크기 등이 적용되지 않는 문제 수정

https://xetown.com/questions/1665747
2022-12-15 23:20:05 +09:00
Kijin Sung
2b83fe75f7 Fix #2038 provide triggers for deleteScrapDocument 2022-12-15 23:11:30 +09:00
Kijin Sung
995068830c Fix #2037 missing "strike" button in CKEditor simple toolbar 2022-12-15 23:04:30 +09:00
Kijin Sung
422771883d #2039 보완: 코딩 규칙 관련 수정, 지저분한 주석 정리 2022-12-15 23:00:59 +09:00
Kijin Sung
11df9cf9ad
Merge pull request #2039 from nemo9l/improve/page-handler-compatible-with-iterator
PageHandler의 Iterator 구현
2022-12-15 22:56:20 +09:00
Kijin Sung
0fafb1cf6b #2025 좀더 근본적인 해결: 모듈 autoload시 lang파일 자동 로딩하도록 변경 2022-12-15 22:52:00 +09:00
Kijin Sung
4c261abfb8
Merge pull request #2025 from dewekk/fix-signup
회원가입 설정 다국어 표시 문제 수정
2022-12-15 22:32:12 +09:00
Kijin Sung
f81245fa8c Escape limit_day_description when saving (cf. #2025) 2022-12-15 22:31:50 +09:00
Kijin Sung
7a2ea796e9
Merge pull request #2040 from nemo9l/update/krzip-daumapi
다음 우편주소 API 도메인 변경
2022-12-15 22:25:13 +09:00
Ji Yong, Kim
7fa42849ad Update daum postcode API domain 2022-12-10 08:01:25 +09:00
Ji Yong, Kim
65cd1265c9 Make PageHandler to implement Iterator 2022-12-10 04:24:11 +09:00
Kijin Sung
cd427e04ec Fix special case for contains() when the needle is empty 2022-12-02 15:52:26 +09:00
Kijin Sung
928a24fac0 Add polyfills for str_contains(), str_starts_with(), str_ends_with() for PHP < 8.0 2022-12-02 15:45:58 +09:00
Kijin Sung
9acb39a623 Fix undefined variable warning in Router 2022-11-28 01:11:39 +09:00
Kijin Sung
221fa3daf8 Fix #2024 missing status list check in getNoticeList() 2022-11-28 01:11:20 +09:00
Kijin Sung
1312155aba Fix #2029 remove notnull condition in member.getScrapDocument query
실제 사용하는 곳에 intval() 처리 추가하여 null 방어
2022-11-28 01:03:09 +09:00
Kijin Sung
32b8e51b47 Fix infinite loop when a member belongs to no groups under certain conditions
+) Add static to some utility methods in MemberController
2022-11-28 00:59:31 +09:00
dewekk
03e186f80c 댓글 추천/비추천 취소 버튼 추가
댓글 메뉴에 댓글 추천/비추천 취소 버튼 추가
2022-11-23 23:16:48 +09:00
dewekk
a21d14ac09 댓글 신고 취소 기능 추가 2022-11-23 21:47:57 +09:00
dewekk
89adab2502 회원가입 설정 다국어 표시 문제 수
- signature, profile_image, image_name, image_mark 기본 가입 폼 언어 적용 오류
- 가입 폼 다국어 설정 표시 안 되는 오류
- 임시 제한 일자 설명 다국어 설정 표시 안 되는 오류
2022-11-22 19:14:52 +09:00
Kijin Sung
fcf7306ee6 Fix trying to delete nonexistent file, which can cause errors on some systems
https://xetown.com/questions/1722184
2022-11-22 14:14:40 +09:00
Kijin Sung
fb23b7da6b Merge remote-tracking branch 'upstream/develop' into develop 2022-11-22 13:34:39 +09:00
Kijin Sung
4926a44ecc Fix warnings when executing unusual queries 2022-11-22 13:34:17 +09:00
Min-Soo Kim
ecec361766
페이지 모듈의 주소 중 문서 번호가 들어간 경우 적절히 처리되도록 수정 (#2019)
https://github.com/rhymix/rhymix/issues/1983 관련
- 라이믹스의 짧은 주소 기능을 활용하는 경우, 숫자로 입력된 주소가 `act`로 인식되는 문제 수정 (짧은 주소 규칙을 모듈 xml에 정의)
- `article` 타입의 페이지인 경우, 문서 번호를 무시하도록 수정
  - Page type이 article이 아니라면, 기존 주소 유지
  - https://github.com/rhymix/rhymix/pull/2019#discussion_r1019876776 내용을 반영하여서 수정
  - document srl을 일괄 삭제하면, 필요한 위젯이나 outside 페이지에서는 문제가 생길 수 있기 때문에 이를 반영함.
  - `article` type의 페이지는 page 모듈에서 모든 권한을 가지고 통제할 수 있기 때문에 이 페이지의 경우는 `document_srl`으로 접속하는 경우 `mid`만을 남기고 주소에서 삭제
2022-11-17 19:40:12 +09:00
Min-Soo Kim
5547c82619
Sign in 을 Login으로 통일
26a47ecb18 에서 빠진 내용 추가.
2022-11-08 15:11:06 +09:00
Min-Soo Kim
6e43d815c7
Sign in to Login 용어 통일 (#2018)
#2013 에서 지적된 용어 혼용을 수정합니다.
2022-11-08 14:48:51 +09:00
Min-Soo Kim
6f30a5444c
Update Eng. translation for the point module (#2017)
- 중복된 정의 삭제
- 영문 번역이 없는 항목 추가.
- Login 으로 용어 통일
2022-11-08 14:21:57 +09:00
Min-Soo Kim
26a47ecb18
Sign in을 login으로 통일
186e768c4f 에서 sign in 으로 통일한 용어를 login으로 통일. (186e768c4f 이전에는 sign in과 login이 혼용되는 상황이었음)
2022-11-08 13:52:07 +09:00
Min-Soo Kim
186e768c4f
Eng. translation for the member model (#2011)
https://github.com/rhymix/rhymix/issues/2011
2022-11-08 09:58:54 +09:00
dewekk
5d012bee82
dc86f92188 보완 2022-11-07 09:00:55 +09:00
Kijin Sung
6fe6a0b4a0 Fix #1906 auto-resize target_browser and target_summary columns of ncenterlite_notify table 2022-11-07 02:18:25 +09:00
Kijin Sung
651859a7eb Fix #2009 reduce size of 'name' column of 'lang' table before trying to create index 2022-11-07 02:11:32 +09:00
Kijin Sung
72c2b93790 Fix #2011 #2012 convert lang path before calling pathinfo() 2022-11-07 01:45:32 +09:00
Kijin Sung
e03ee87345 Disable exception chaining for DB errors 2022-11-06 19:13:43 +09:00
dewekk
dc86f92188
게시물 신고 후 새로고침 처리
- 게시물 글 신고 처리 후 기존 페이지 갱신 처리
- 기존 페이지 갱신 되어야 신고 취소가 가능함.
2022-11-01 16:19:17 +09:00
Kijin Sung
e94146b490 Return error if user_id is empty after removing all non-numerical characters 2022-11-01 11:32:02 +09:00
Kijin Sung
246a952cf6 Fix login error when the user enters a phone number containing hyphens or other symbols 2022-11-01 11:28:39 +09:00
Kijin Sung
90d3766e5c Version 2.0.23 2022-10-31 02:37:31 +09:00
Kijin Sung
606989c451 Also support $foo->$bar syntax in cond="" and loop="" syntax 2022-10-31 01:40:40 +09:00
Kijin Sung
2a026a6c86 Allow true/false/yes/no values for autoescape
템플릿의 <config autoescape="on" /> 문법이 on, off만 지원하기 때문에
흔히 사용하는 true, false, yes, no, Y, N 등의 불리언 값을 입력하면
안전하지 않은 off로 인식하게 됨. 이 경우에도 적절히 처리하도록 변경.
2022-10-30 22:28:39 +09:00
Kijin Sung
a398c7548d Test more complex syntaxes using some of the filter tests 2022-10-30 21:43:29 +09:00
Kijin Sung
93a7348606 Support $foo->$bar syntax in templates
기존: $__Context->$__Context->bar 로 변환되어 오작동
개선: $__Context->{$__Context->bar} 로 변환되어 정상 작동되며
      변싱 순서에 따라 이 중괄호가 다시 해석되지는 않음
2022-10-30 21:41:40 +09:00
Kijin Sung
39093a7380 Fix #2004 allow customizing the number of digits in an anonymous nickname variable 2022-10-30 21:16:58 +09:00
Kijin Sung
bd7865caf0 Fix #1957 again: more user-friendly error messages 2022-10-30 21:00:50 +09:00
Kijin Sung
d5d559ff61 Add PHP 8.1 and remove PHP 7.0 from unit test matrix
PHP 7.0은 유닛 테스트 환경과 더이상 호환되지 않으므로 제거하고,
그 대신 PHP 8.1 테스트를 추가함.
2022-10-30 18:36:32 +09:00
Kijin Sung
326f84584a Change MySQL default user from root to rhymix 2022-10-30 18:24:24 +09:00
Kijin Sung
0b2f9a7c6e Fix github actions for Ubuntu 20.04 + MySQL 8.0 2022-10-30 18:18:06 +09:00
Kijin Sung
85685a260f Update github actions to use Ubuntu 20.04 by default 2022-10-30 17:43:39 +09:00
Kijin Sung
87a5b96387 Change actions/checkout to v3 2022-10-30 17:40:43 +09:00
Kijin Sung
7c918c52ca Add iwinv SMS driver to unit test 2022-10-30 17:37:55 +09:00
Kijin Sung
7f260be361 Remove cafe24 SMS driver from unit test 2022-10-30 17:37:06 +09:00
Kijin Sung
80a7a9583a Fix #1974 remove cafe24 SMS driver 2022-10-30 17:27:53 +09:00
Kijin Sung
6c2ab78a4a Fix #1969 clear extra_vars cache before calling document.updateDocument/after trigger 2022-10-30 17:25:26 +09:00
Kijin Sung
2b7255be7d Also preload Spectrum lang file 2022-10-30 17:16:56 +09:00
Kijin Sung
7493fe14fc Preload datepicker lang file and always apply dateFormat defaults (fix #1985)
영어를 예외처리하지 않도록 하여, 영어에서만 날짜 포맷이 다르게 지정되는 문제 수정
2022-10-30 17:08:57 +09:00
Kijin Sung
dca06a778d Support {$lang_type} and {$device_type} variables in plugin.load 2022-10-30 17:08:01 +09:00
BJRambo
5d84c7fe5b getNotifyMemberSrlBySrl 에서는 항상 array을 반환시키고 맴버번호 리스트만 처리하도록 개선 2022-10-30 14:08:15 +09:00
BJRambo
7179f9885a Fix #1987 메소드 이름을 공용으로 변경하고 게시글을 삭제할때 플래그 파일도 삭제 2022-10-30 13:50:04 +09:00
BJRambo
4c3802da39 Revert "Fix #1987 글 삭제시 플래그 파일도 같이 삭제하도록 개선"
This reverts commit c1d6393d6b.
2022-10-30 13:45:43 +09:00
BJRambo
c1d6393d6b Fix #1987 글 삭제시 플래그 파일도 같이 삭제하도록 개선 2022-10-30 13:36:25 +09:00
Kijin Sung
ad86a34833 #2006 add more unit tests for aspect-ratio and object-fit 2022-10-30 13:22:21 +09:00
Kijin Sung
ad23796906 Fix #2003 remove default act from short URL if there are no arguments 2022-10-29 22:06:36 +09:00
Kijin Sung
0adce0dd47 Show Rhymix logo instead of version only if it is a part of the Core 2022-10-29 21:45:37 +09:00
Kijin Sung
8d228890c9 Fix #1986 make addon name clickable in addon list 2022-10-29 21:35:36 +09:00
Kijin Sung
80fe6278c0 Fix #1988 unnecessary variable in member_list.html 2022-10-29 21:29:48 +09:00
Kijin Sung
a44959382e Fux #2006 allow some aspect-ratio values and all valid object-fit values in HTML filter 2022-10-29 21:23:39 +09:00
Kijin Sung
bf54cd8ceb
Merge pull request #2002 from dewekk/fix-1990
Fix #1990 게시판 익명 사용 설정 후 기존 글 수정 시 닉네임만 익명이 되는 문제 수정
2022-10-29 21:06:31 +09:00
BJRambo
4309614bba 어플 로그인시 전화번호가 만약 회원정보에 없다면 로그인 실패메세지 출력 2022-10-28 13:43:05 +09:00
BJRambo
b9d952a401 f7578cf65c 보완 아이디 -> 이메일 -> 전화번호 우선순위로 변경 2022-10-28 12:01:57 +09:00
BJRambo
f7578cf65c 로그인 방식에 따라 어플에서 로그인이 안되는 문제 고침 2022-10-28 11:46:30 +09:00
Johnny
b73d7d10f1
Merge pull request #2007 from bjrambo/pr/lang-vi
베트남어 번역 추가 및 수정
2022-10-27 07:14:42 +09:00
BJRambo
2d1164e670 베트남어 번역 추가 및 수정 2022-10-26 17:28:59 +09:00
Kijin Sung
38928e3e69 .editorconfig에서 마크다운(.md) 파일도 2 space 들여쓰기로 설정 2022-10-25 16:57:46 +09:00
Kijin Sung
de7bf0a0a6 Automatically retry AJAX request with new CSRF token if token error is returned
다른 탭에서 로그아웃했다가 다시 로그인한 후 exec_json을 시도하는 등,
사용자가 보기에는 정상적인 상황인데도 보안정책(CSRF) 오류가 발생할 수 있음.
이 때 자연스럽게 토큰을 갱신한 후 요청을 다시 전송하도록 개선함.
2022-10-20 16:58:26 +09:00
Kijin Sung
ed649fb58c Perform CSRF check for getLoginStatus separately 2022-10-20 16:56:17 +09:00
Kijin Sung
ed131897c5 Add more info to getLoginStatus and enforce stricter access control
AJAX를 많이 사용하는 페이지나 SPA에서 member.getLoginStatus API를 통해
현재 로그인 상태에 대해 더 자세한 정보를 알 수 있도록 함과 동시에,
이 정보를 외부에서 가로채지 못하도록 리퍼러 체크 및 CORS 제한을 추가
2022-10-20 16:15:07 +09:00
Kijin Sung
2ca32e0062 Add Session::getLastLoginTime() method 2022-10-20 16:14:06 +09:00
Kijin Sung
fd8a4ff37d AJAX 오류 발생시 ERR_* 코드가 있다면 표시 (e4e252c1b4 보완) 2022-10-20 15:55:14 +09:00
BJRambo
96d6e82d5c 7a4f8164ac 보완 유저 아이디를 사용하도록 채크한 경우에만 회원아이디 체크하도록 개선 2022-10-18 06:31:40 +09:00
BJRambo
7a4f8164ac 라이믹스 첫 설치시 user_id 를 사용함에도 불구하고 정상적으로 로그인이 안되는 문제 고침.
첫 설치시 아이디 사용이 이메일 + 전화번호 + user_id 항목을 모두 사용할 수 있습니다.

근데 문제는 사용자가 전화번호가 아니라 유저아이디를 정상적으로 입력하였음에도 불구하고 입력한 정보가 아니라는 경우가 발생됩니다.

보통 "abc1234" 이라는 계정을 사용하게되면 member.controller.php 2176줄안에 걸려 매칭을 시작하게 되고 아이디가 preg_replace('/[^0-9]/', '', $user_id); 코드의 의해 1234 으로 변환되기에 실제로 member_info를 찾을 수 없으므로 에러가 발생되게 됩니다.

이 패치는 전화번호도 사용하며 아이디까지 같이 사용할 경우 전화번호로 들어갔을때 전화번호를 찾을 수 없는 경우 유저아이디를 통해서 한번 더 검사하여 로그인을 진행할 수 있게 해줍니다.
2022-10-18 06:20:19 +09:00
Kijin Sung
d2347d4208 Add template & scss syntax to refer to absolute paths within Rhymix installation directory
템플릿을 인클루드하거나 CSS, JS 등을 로딩할 때 다른 경로에 있는 파일을 상대경로로 참조하려고 하면
../../../../../layouts/path/to/target/asset.scss 처럼 상당히 많이 거슬러 올라가야 하는 경우가 있습니다.
이 때 맨 앞에 ^를 붙여 ^/layouts/path/to/target/asset.scss 라고 마치 절대경로처럼 쓰면
라이믹스 설치 경로 기준으로 (서브폴더에 설치한 경우 포함) 자동으로 변환하도록 하는 패치입니다.
즉 ^ 문자를 넣은 부분이 라이믹스 설치 경로로 치환된다고 보면 됩니다.

지원되는 곳:
  - <include target="^/path/to/file.html" />
  - <load target="^/path/to/file.css" />
  - <load target="^/path/to/file.js" />
  - SCSS에서 @import "^/path/to/file.scss";
2022-10-13 14:57:24 +09:00
Kijin Sung
fd421c86fc Add more error codes in critical code paths in Context and ModuleHandler 2022-10-13 00:34:23 +09:00
Kijin Sung
e4e252c1b4 Add more detailed ERR_* error codes to common error messages
가장 많이 발생하는 '잘못된 요청입니다', '보안정책상 허용되지 않습니다'
오류에 좀더 구체적인 ERR_* 코드를 추가하여 디버깅 편의 개선
2022-10-13 00:23:20 +09:00
Kijin Sung
b1eee629a2 Fix unnecessary phone number verification when phone number is optional and user leaves it blank 2022-10-12 23:56:32 +09:00
Kijin Sung
3012b0b4d7 Move variable declaration outside of loop (#1984 보완) 2022-10-11 22:58:40 +09:00
Kijin Sung
1fac0a17fe
Merge pull request #1994 from Waterticket/autoinstall_fix
autoinstall 모듈에서 count(null) 에러 수정
2022-10-11 22:57:16 +09:00
Kijin Sung
3fa3c3a852
Merge pull request #1984 from shydah/fix/document-admin-typo
dispDocumentAdminList의 member_nick_neme 변수명 오타 수정
2022-10-11 22:57:06 +09:00
Kijin Sung
4196d42b06 Fix broken iwinv SMS driver due to incompatible API URL
iwinv 문자 API가 업데이트되면서 URL이 쥐도새도 모르게 변경되어
기존 사용자는 현행 매뉴얼의 API URL을 사용할 수 없고 (에러 코드 14)
신규 사용자는 기존 라이믹스 드라이버를 사용할 수 없는 현상이 발생하여
어느 쪽 사용자인지 수동으로 선택하도록 변경함.

기존에 API key를 입력해 둔 사용자는 설정 화면 접근시 자동으로
기존 URL이 선택되고, 그렇지 않으면 신규 URL이 선택되도록 함.

카페24에 이어 iwinv까지;;;
국내 업체들은 도대체 REST API 운영에 대한 개념이 있는 건가요?
2022-10-11 22:41:09 +09:00
Kijin Sung
81882e8420 Add option to use a specific string in the URL to bypass disabled signup page
회원 가입을 닫아놓은 상태에서는 관리자도 회원 가입 기능을 테스트할 수 없는
문제를 해소하기 위해, 관리자가 설정한 특정한 문자열을 URL에 포함할 경우
회원 가입 페이지에 접근할 수 있도록 허용하는 옵션 추가
2022-10-11 22:19:32 +09:00
dewekk
c3dcc29c77
글 작성 또는 임시 문서 수정 때만 익명 정보 생성
Fix https://github.com/rhymix/rhymix/issues/1990
2022-10-11 17:17:34 +09:00
Kijin Sung
24f49d441e Remove \n in comment, closes #1705 2022-10-11 01:38:36 +09:00
Kijin Sung
86fd823264 Fix #1993 allow mailto: tel: and other valid link formats in menu shortcut target 2022-10-11 01:27:48 +09:00
Kijin Sung
24756fc08d CRLF로 잘못 저장된 board.model.php의 줄바꿈 형식을 LF로 변경 2022-10-11 01:20:17 +09:00
Kijin Sung
68429cabe4 Fix #1998 missing comment_count in board list config
- 기본 항목 리스트에 댓글 수 (comment_count) 추가
- '댓글'이라고 표시되는 comment_status 항목의 명칭을 '댓글 허용 여부'로 변경
2022-10-11 01:19:00 +09:00
Kijin Sung
9bc69abe0b Fix #1999 missing rollback on query error during updateVotedCount 2022-10-11 01:09:05 +09:00
Kijin Sung
c2bf7d65ce Automatically unregister device if the user logs out from mobile app 2022-10-11 01:04:22 +09:00
Kijin Sung
4169656277 Add more session-related information to server environment page 2022-09-29 16:52:19 +09:00
BJRambo
22e770f54c delete to not use socialxecount query 2022-09-26 05:18:13 +09:00
Kijin Sung
064f321c74 Delete unnecessary "error -1" in query error info 2022-09-21 16:26:25 +09:00
Kijin Sung
1c0b738b44 Fix query errors not being shown in debug info 2022-09-21 16:26:05 +09:00
Waterticket
cd85f077fc autoinstall 모듈에서 패키지 목록이 비어있을때 발생하는 count(null) 에러 수정 2022-09-18 14:42:07 +00:00
Kijin Sung
772d26ee2f Prevent robots from indexing file download links
https://xetown.com/topics/1708853
2022-09-16 16:55:50 +09:00
Kijin Sung
df56b7f8b1 Fix files with .jfif extension not being recognized as JPEG image 2022-09-16 16:44:29 +09:00
Kijin Sung
7058f9fa85 Fix #1991 add shim for Modernizr to accommodate old addons that rely on it 2022-09-14 21:13:29 +09:00
Kijin Sung
89f8a77ecb Improve compatibility of getModuleInfos and getModulesInfo queries
두 쿼리의 구조가 매우 유사하여 서드파티 자료에서 혼용하는 경우가 많으므로
요구하는 파라미터, 반환하는 컬럼 목록 등을 양쪽 모두 호환되도록 변경함
2022-09-14 20:57:41 +09:00
Kijin Sung
af92484221 Revert "Fix PHP 8.x error when getUrl() is called with weird parameters"
This reverts commit 3adcbb3528.
2022-09-13 19:49:52 +09:00
Kijin Sung
3adcbb3528 Fix PHP 8.x error when getUrl() is called with weird parameters 2022-09-05 16:28:33 +09:00
Chanyoung Oh
c64f012ac5
#1984 보완 - PR과 관계없는 에디터 자동 수정 되돌림
에디터에 의해 자동으로 수정된 PR과 관계없는 부분을 되돌림
2022-08-24 01:23:29 +09:00
shydah
7185fb8c85 Fix typo of dispDocumentAdminList 2022-08-23 21:50:07 +09:00
Kijin Sung
aa78a03b99 Version 2.0.22 2022-08-16 10:57:24 +09:00
Kijin Sung
c95df80624 Fix missing mid in document print link 2022-08-16 09:01:01 +09:00
Kijin Sung
83e4b763ce Merge branch 'security/document-module-check' into develop 2022-08-16 08:55:44 +09:00
Kijin Sung
a2b6c8b8b2 Fix Push::isSent() returning false if all APNs devices fail, even if message is successfully sent to FCM devices 2022-08-15 23:53:08 +09:00
Kijin Sung
ae5cc1a15e Add option to skip SMS notification if push notification succeeds 2022-08-15 21:36:45 +09:00
Kijin Sung
019aa525c6 Fix string concatenation without initialization 2022-08-15 18:31:41 +09:00
Kijin Sung
d93027078e Mark old, rarely used, and/or not recommended functions as deprecated 2022-08-15 18:31:10 +09:00
Kijin Sung
fdd3f4bc1e Fix #1976 unnecessary escape of user lang code in menu description 2022-08-15 18:18:28 +09:00
Kijin Sung
8abe1b1d7d Add option to escape() to keep user lang codes intact #1976 2022-08-15 18:06:26 +09:00
Kijin Sung
170f7f95b9 #1973 보완 - 대댓글이 있을 때만 자리를 남기도록 설정한 경우, 대댓글이 없는 댓글은 삭제되지 않는 문제 수정 2022-08-15 17:46:30 +09:00
Kijin Sung
f81f7f565d #1973 보완 - 코드 정리 2022-08-15 17:44:48 +09:00
Kijin Sung
07cfb9f92e Merge #1973 bjrambo:pr/delete-comment-log into develop 2022-08-15 17:35:05 +09:00
Kijin Sung
e8f5c04df6
Merge pull request #1980 from bjrambo/pr/colorset-
관리자 페이지에서 사이트의 컬러 설정이 안먹는 문제 고침
2022-08-11 00:12:35 +09:00
Kijin Sung
c70293edf2 Only install and update default modules #1967 2022-08-06 13:49:31 +09:00
Kijin Sung
58d369cc31 Improve unit tests for default and blacklisted plugins 2022-08-06 13:31:02 +09:00
Kijin Sung
e33a071f3e Add authoritative list of default plugins #1967 2022-08-06 13:30:48 +09:00
Kijin Sung
16ecfa408e Don't try to update third-party module during install if it doesn't have update methods #1967 2022-08-06 13:13:09 +09:00
conory
582024daf4 Fix 99d16d84c3 2022-08-05 23:31:02 +09:00
Kijin Sung
f77449f628 Fix fatal error in PHP 8.x when member_srl parameter is missing in dispMemberAdminInfo 2022-08-05 15:48:47 +09:00
conory
99d16d84c3 Fix potential vulnerabilities 2022-08-05 11:19:02 +09:00
Kijin Sung
f8aa934935 Change getLoginStatus method to POST (enable CSRF check, etc.) 2022-08-05 10:38:55 +09:00
Kijin Sung
0cc1246898 Move login status calculation to its own method and add API in member module 2022-08-05 10:21:14 +09:00
conory
0dd567bc00 Add an option to check the permissions of modules linked to documents or comments 2022-08-04 11:06:23 +09:00
Kijin Sung
7c963d0ac3 Prevent updating module_srl in procBoardInsertDocument 2022-08-02 08:27:54 +09:00
Kijin Sung
fa64ad3600 Fix RVE-2022-4 missing check for document module 2022-08-02 08:27:32 +09:00
Kijin Sung
a0f895a02f Change scope of condition for using blankshield 4cbe598a 2022-08-01 00:46:57 +09:00
Kijin Sung
4cbe598a50 Restrict blackshield protection in modern WebKit-based browsers and Firefox
최근 브라우저들은 target="_blank" 사용시 자동으로 rel="noopener" 선언한 것으로
취급하므로 별도로 처리해 줄 필요가 없으며, blankshield 라이브러리 사용시
오히려 문제가 발생하는 경우가 많음. (예: iOS 웹뷰)
2022-07-31 21:42:48 +09:00
Johnny
6a47800917 관리자 페이지에서 사이트의 컬러 설정이 안먹는 문제 고침 2022-07-26 07:54:49 +09:00
Kijin Sung
1e27bae404 Fix not recognizing CSRF token submitted as part of JSON body 2022-07-25 14:05:01 +09:00
Kijin Sung
9372cdc4bb Add rx_login_status cookie for checking login status in mobile apps
- 회원정보 노출 없이 로그인 여부 및 서로 다른 회원을 구분할 수 있는 쿠키
- 인증이나 그 밖에 보안상 민감한 작업에는 사용하지 않음
- 모바일 앱에서 웹뷰의 로그인 상태가 앱이 기억하는 로그인 상태와 달라진 경우를 신속하게 파악할 수 있음
- 기타 API 클라이언트 등에서도 세션 상태 변화를 쉽게 감지할 수 있음
2022-07-21 16:29:36 +09:00
Kijin Sung
37d3c17fa0 Fix warning in PHP 8.x when calling message module from another page 2022-07-21 14:20:30 +09:00
Johnny
8fb799d23e Fix the incorrect link 2022-07-21 02:41:00 +09:00
Kijin Sung
099d8397c9 Prevent path conversion of data: URL in <img> tag 2022-07-11 21:55:09 +09:00
Johnny
cd99a67977 코드 정리 2022-07-08 03:25:28 +09:00
Johnny
a8331a48f3 휴지통 으로 보내는 옵션을 기본화 시키고 그러지 않을경우는 항상 자리 남김 또는 삭제 하도록 개선 2022-07-08 03:23:36 +09:00
Johnny
df42e43259 관리자가 게시글을 삭제 할 떄 자리 남김 옵션을 사용할 경우 해당 모듈의 옵션대로 자리 남기도록 개선 2022-07-08 02:48:29 +09:00
Johnny
de629d6d43 Fix #1914 검색어가 1글자로도 검색할 수 있도록 개선 2022-07-08 02:04:50 +09:00
Johnny
a8421268f6 Fix #1972 게시판 관리자가 최고관리자 보호 기능을 사용할 수 없도록 개선 2022-07-08 01:48:26 +09:00
Kijin Sung
ba0e0f07d1 Fix #1970 invalid default value for extravar of 'date' type 2022-07-04 22:10:56 +09:00
Kijin Sung
9aeafad607 Version 2.0.21 2022-07-04 09:26:34 +09:00
Kijin Sung
6e3c9a7c0e Merge branch 'security/pollskin' into develop 2022-07-04 00:46:36 +09:00
Kijin Sung
fab9038e74 Set default slide size to 1000x1000 pixels #1948 2022-07-03 18:24:34 +09:00
Kijin Sung
4a08c67f67 Fix #1948 use naturalWidth/naturalHeight of original image tag, if possible, when loading PhotoSwipe 2022-07-03 18:20:41 +09:00
Kijin Sung
8b611e9d08 Add more tests for table alias handling (#1956 보완) 2022-07-03 17:49:19 +09:00
Kijin Sung
b8641c3501 Use constants to control alias handling (#1956 보완) 2022-07-03 17:48:52 +09:00
Kijin Sung
fe7833698a Merge branch 'dewekk/fix-dbquery' into develop 2022-07-03 17:26:15 +09:00
Kijin Sung
951e0e16fe Fix composer error in PHP < 7.3 2022-07-03 01:57:37 +09:00
Kijin Sung
60a48004ef
Merge pull request #1945 from Erictoby/develop
사이트 메뉴 편집시 마우스로 메뉴를 이동시킬 때 옮겨지지 않는 확률을 낮춤
2022-07-03 01:54:19 +09:00
Kijin Sung
05c67b2a8b Simplify login error messages #1957
- 에러메시지 더 단순하게 줄임
2022-07-03 01:50:40 +09:00
Kijin Sung
53cdc17c7f Obfuscate some login error messages #1957
- 로그인 실패시 아이디나 메일주소가 틀렸는지, 비번이 틀렸는지 구분하여 알려주지 않도록 변경
- 아이디/비번찾기시에는 불필요하게 세분화된 일부분만 정리하고 완전히 막지 않음
2022-07-03 01:43:15 +09:00
Kijin Sung
16b693c7c7 Delete unnecessary variable #1942
- 이 변수는 권한 컨트롤에 사용하지 않고 있으므로 삭제
- 버그를 해결하는 것은 아님
2022-07-03 01:19:09 +09:00
Kijin Sung
59a1215c87 Fix #1934 add 'default' option to domain timezone 2022-07-03 01:03:00 +09:00
Kijin Sung
a5f056284c Fix #1936 don't convert date-only timestamps in extra vars and member birthday column 2022-07-03 00:45:35 +09:00
Kijin Sung
96620b6a8c Fix #1935 apply editor default config in member signature editor 2022-07-03 00:24:06 +09:00
Kijin Sung
ec51b64e78 Fix #1928 댓글 자리 남김 + 삭제시 휴지통 이동 기능 동시 사용시 댓글 내용이 유실되는 문제 수정 2022-07-03 00:15:10 +09:00
Kijin Sung
1f9056fc08 Fix #1927 string * float error in leafo/lessphp
- dev-master 태그로 업데이트
- PHP 8.0 이상 버전에서 오류를 일으키는 {0} 문법 4군데 재수정
2022-07-03 00:01:25 +09:00
Kijin Sung
e258cf7525 Fix #1926 add @charset UTF-8 to beginning of concatenated CSS file 2022-07-02 23:55:45 +09:00
Kijin Sung
632a3fff71 Disable strict checking of CSRF token if the user is not logged in
로그인이 풀리면 세션이 초기화되면서 CSRF 토큰 정보가 사라져서
다른 탭에서 어떤 액션을 호출하더라도 무조건 CSRF 오류가 발생하는 문제 수정

현재 세션에서 토큰을 발행한 적 없는 경우 토큰 체크를 스킵하도록 함
2022-07-01 13:09:59 +09:00
Kijin Sung
e9375cd72a Fix #1961 invalidate cache after point recalculation 2022-06-29 19:57:23 +09:00
Kijin Sung
34517e83ce Fix #1966 warning in PHP 8.0 2022-06-29 19:48:44 +09:00
Johnny
34cd3ebf66
Merge pull request #1968 from bjrambo/pr/include-module-set
Fix #1964 통합게시판 사용시 댓글 포인트 지급 오류 고침
2022-06-29 19:28:28 +09:00
Johnny
96a65c01fc 86783b0270 보완 document의 정보를 따라 module_srl 을 수정 2022-06-29 19:13:41 +09:00
Kijin Sung
1c33529377 RVE-2022-3 filter tpl_path in TemplateHandler class
- $tpl_path에 템플릿 문법으로 오인할 수 있는 특수문자가 포함된 경우 삭제
- path traversal은 여기에서 방어하지 않음
2022-06-29 15:36:23 +09:00
Kijin Sung
90e510091d RVE-2022-3 filter skin and style parameters again in PollModel class
해당 변수를 화면에 출력하는 스킨이 있으므로 이중 방어
2022-06-29 15:35:51 +09:00
Kijin Sung
97586855d7 RVE-2022-3 filter skin parameter and others in dispLayoutPreviewWithModule() 2022-06-28 20:12:02 +09:00
Kijin Sung
3dfd78b729 RVE-2022-3 filter skin parameter in EditorView::dispEditorSkinColorset() 2022-06-28 20:08:06 +09:00
Kijin Sung
bc562b74ba RVE-2022-3 filter skin parameter in ModuleModel::loadSkinInfo() 2022-06-28 20:07:40 +09:00
Kijin Sung
693fb9e041 RVE-2022-3 filter skin parameter in poll module 2022-06-28 20:07:07 +09:00
Johnny
1672fd8cdc 6293a1bb5e 추가 보안
템플릿파일에서 다시 간략하게 수정하지 못한 부분 추가 수정
2022-06-28 01:02:41 +09:00
Johnny
27df638470 6293a1bb5e 보안 2022-06-28 00:57:42 +09:00
Kijin Sung
a7ca384a05 Merge remote-tracking branch develop 2022-06-28 00:28:28 +09:00
Johnny
6293a1bb5e Fix warning for PHP8.0 on view and skin files 2022-06-27 17:57:56 +09:00
Johnny
93c631daf1 Revert "Fix #1966 Fix warning in PHP8.0"
This reverts commit 5fb72a995b.
2022-06-27 17:44:08 +09:00
Johnny
5fb72a995b Fix #1966 Fix warning in PHP8.0 2022-06-27 16:37:35 +09:00
Kijin Sung
0f3f3a6bfa Prevent deprecation warning about dynamic properties in PHP 8.2 2022-06-27 16:18:10 +09:00
Johnny
86783b0270 Fix #1964 통합게시판 사용시 댓글 포인트 지급 오류 고침 2022-06-27 13:24:58 +09:00
Kijin Sung
73f2034403 Fix device registration error when OS version is not detected (null) 2022-06-14 13:21:20 +09:00
Kijin Sung
2f964f7409 Fix #1960 update guzzlehttp/guzzle to 6.5.7 2022-06-10 15:52:04 +09:00
Kijin Sung
d4ffe761c5 Fix #1949 don't normalize to http URL if enforce_ssl is off 2022-06-09 21:54:59 +09:00
Kijin Sung
06565b05cd Allow non-members to access dispMemberLogout #1953 2022-06-09 21:50:10 +09:00
Kijin Sung
4f4aee6647 Redirect away from dispMemberLogout if not logged in 2022-06-09 21:49:47 +09:00
Kijin Sung
aa065af77a
Merge pull request #1959 from YJSoft/patch-6
Fix #1958 Do not install point module trigger by default
2022-06-09 21:19:09 +09:00
Kijin Sung
42bff215e8
Merge pull request #1955 from dewekk/fix-login-redirect
Fix #1954 로그인 무한 리다이렉트 문제 수정
2022-06-09 21:17:47 +09:00
Kijin Sung
11e00b01d1 Merge remote-tracking branch 'upstream/develop' into develop 2022-06-09 21:15:40 +09:00
Kijin Sung
241a26436a Fix #1939 #1952 add default sound to push notifications 2022-06-09 21:15:18 +09:00
Kijin Sung
f78b28fadb
Merge pull request #1909 from dewekk/fix-page
위젯 페이지에서 괄호 등 GET/POST 불가 문제 수정
2022-06-09 21:04:37 +09:00
Kijin Sung
8d26ca1a90 Fix #1951 update guzzlehttp/guzzle to 6.5.6 2022-06-09 21:02:16 +09:00
YJSoft
d2a42f570f Fix #1958 Do not install point module trigger by default
초기 설치시 포인트 모듈의 트리거를 등록하면 포인트 모듈이 정상 동작하나 실제 설정은 OFF인 이상한 상태가 됩니다.
따라서 실제 설정과 동작을 일치시키기 위해 트리거 등록 코드를 삭제합니다. 포인트 모듈 활성화시 같은 함수를 실행하므로 동작상 오류는 없습니다.
2022-06-09 14:13:20 +09:00
dewekk
293f6eb326 Fix unit test 2022-06-02 17:40:09 +09:00
dewekk
ecda6ddcb8 Update 쿼리에서 alias 기본 값 사용 안 함 2022-06-02 17:21:28 +09:00
dewekk
e0514110af Revert "Fix unit test"
This reverts commit 8d7a467efa.
2022-06-02 17:12:52 +09:00
dewekk
8d7a467efa
Fix unit test 2022-05-31 11:14:04 +09:00
dewekk
4907e293de
Use alias in Update Query 2022-05-31 10:54:56 +09:00
dewekk
d1b0dbff9c
로그인 무한 리다이렉트 문제 수정
referer url이 dispMemberLoginForm으로 지정되면 $this->setRedirectUrl($referer_url);에 의해 로그인시 무한 리다이렉트되는 문제를 수정합니다.
2022-05-30 11:28:10 +09:00
Kijin Sung
d0cdcb5d2a Fix PHP warning about undefined properties 2022-05-19 15:55:38 +09:00
conory
f8336281c1 Fix rhymix alert keeping popping up 2022-05-14 18:16:12 +09:00
Erictoby
61c8b9ddbe jstree-marker-line at sitemap menu skin 2022-05-13 17:05:25 -04:00
Erictoby
8ecc0caaf1 Change the cursor to not-allowed cursor as it's not allowed 2022-05-13 16:25:43 -04:00
Erictoby
39a6c63e79 Adjust menu vertical align 2022-05-13 15:46:34 -04:00
Erictoby
a36b79d804 Improve the mouse response when editing the sitemap menu 2022-05-13 14:25:41 -04:00
Erictoby
2b8ac29ac3 jstree.js 3rd party update, dated on 2012/9 2022-05-13 14:22:00 -04:00
Kijin Sung
00dfd003f8 Remove unnecessary files from spectrum library to dismiss github security alert 2022-04-28 20:20:15 +09:00
Kijin Sung
2998bad5c5
Merge pull request #1932 from dewekk/fix-ruleset
관리자 회원 추가 시 아이디 체크 추가
2022-04-25 10:44:33 +09:00
dewekk
cc010c6a5b
63b72f0 보완
필수 체크를 제거합니다.
2022-04-25 08:52:46 +09:00
Kijin Sung
a823d604de Fix #1905 array to string conversion in Extravar.class.php 2022-04-25 02:21:40 +09:00
Kijin Sung
742c20658f Fix #1915 various typos in install module 2022-04-25 02:16:33 +09:00
Kijin Sung
73b689be86 Fix #1912 various CSS typos 2022-04-25 02:13:20 +09:00
Kijin Sung
71afd5463a Fix #1917 missing document_srl in password input form for guest comments 2022-04-25 02:06:32 +09:00
Kijin Sung
ec18bf34bd Fix #1930 add option to autodetect dark mode in reCAPTCHA 2022-04-25 02:02:29 +09:00
Kijin Sung
8d89f256e6 Fix #1918 add CAPTCHA to dispBoardModifyComment/dispBoardReplyComment 2022-04-25 01:57:09 +09:00
Kijin Sung
6c26e80585 Fix #1929 trying to count nonexistent menus 2022-04-25 01:50:23 +09:00
Kijin Sung
bb90a10344
Merge pull request #1931 from dewekk/fix-datepicker
날짜 확장변수에서 자동 완성 기능과 겹치는 문제 수정
2022-04-25 01:42:29 +09:00
dewekk
63b72f06c8
아이디 룰셋 추가 2022-04-19 13:59:44 +09:00
dewekk
3de0a17170
날짜 확장변수에서 자동 완성 기능과 겹치는 문제 수정 2022-04-18 15:41:41 +09:00
conory
274a3d9a11 Improve 0984b751e8 and Fix returning nothing on first run 2022-04-16 17:52:35 +09:00
conory
0984b751e8 Apply cache even when the member does not exist
탈퇴한 회원을 계속 DB에서 찾는 문제 수정
2022-04-16 14:37:18 +09:00
Kijin Sung
4463eb8939 Prevent negative transaction level by unnecessary rollback or commit 2022-04-08 15:43:18 +09:00
Kijin Sung
922025ae8e Merge branch 'master' into develop 2022-04-01 13:51:35 +09:00
Kijin Sung
4aa2071650
Merge pull request #1920 from rhymix/dependabot/composer/guzzlehttp/psr7-1.8.5
Bump guzzlehttp/psr7 from 1.8.2 to 1.8.5
2022-03-31 16:12:17 +09:00
dependabot[bot]
b8e07bca8d
Bump guzzlehttp/psr7 from 1.8.2 to 1.8.5
Bumps [guzzlehttp/psr7](https://github.com/guzzle/psr7) from 1.8.2 to 1.8.5.
- [Release notes](https://github.com/guzzle/psr7/releases)
- [Changelog](https://github.com/guzzle/psr7/blob/1.8.5/CHANGELOG.md)
- [Commits](https://github.com/guzzle/psr7/compare/1.8.2...1.8.5)

---
updated-dependencies:
- dependency-name: guzzlehttp/psr7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-30 02:04:35 +00:00
Kijin Sung
5ab25a9712 Fix #1913 set empty string for refused_reason and limited_reason if no value is submitted 2022-03-28 16:58:00 +09:00
Kijin Sung
5e2d517296 Fix incorrect parsing of JSON request body containing multiple levels of objects 2022-03-28 15:33:21 +09:00
Kijin Sung
f65fd952aa Fix #1911 reinitialize $_m after running each addon 2022-03-25 14:13:07 +09:00
Johnny
05c389a3ef 중복된 조건문 삭제 하고 코드 깔끔하게 정리 2022-03-25 12:08:06 +09:00
Johnny
961f5f04bd
Merge pull request #1908 from bjrambo/pr/notify-type-lang
알림센터 관리자 페이지에서 알림의 언어가 이상하게 나타나는 문제 고침
2022-03-24 23:52:28 +09:00
Johnny
fa44842dfb
Merge pull request #1910 from bjrambo/pr/deletecomment
삭제한 댓글을 다시 삭제하지 않도록 기록
2022-03-24 23:52:07 +09:00
Johnny
af33d7b84f 모듈별로 트리거를 활용하여 각각 언어를 설정할 수 있도록 한다. 2022-03-24 23:47:45 +09:00
Johnny
4d39685350 조건문을 한줄로 묶음 2022-03-24 23:11:07 +09:00
Johnny
2788392060 기존 방식 롤백한뒤 에러 코드를 이용하여 찾지 못하는 경우 -2 에러코드를 리턴 시킴 2022-03-24 23:07:06 +09:00
Johnny
b4b1188081 삭제한 댓글을 다시 삭제하지 않도록 기록 2022-03-24 19:13:59 +09:00
dewekk
9c0123ae66
위젯 페이지에서 괄호 등 GET/POST 불가 문제 수정
RVE-2022-2 보안 패치가 외부페이지 뿐만 아니라 위젯 페이지에도 적용되어
위젯으로 구현된 검색, 입력폼 등에서 일반적인 괄호를 못 쓰는 문제를 수정합니다.
2022-03-24 18:05:01 +09:00
Kijin Sung
8224eb4027 Fix undefined property warning in PHP 8.0 2022-03-24 15:54:40 +09:00
conory
3c00ff1cc5 Fix wrong return value
$output->toBool()로 체크하는 서드파티에서 오류가 발생합니다. 항상 BaseObject()로 반환해야 합니다.
2022-03-24 15:02:38 +09:00
Johnny
eae941b9b8 알림센터 관리자 페이지에서 알림의 언어가 이상하게 나타나는 문제 고침 2022-03-24 10:34:14 +09:00
Johnny
e8f431d691 잘못된 번역 수정 2022-03-22 13:11:21 +09:00
Kijin Sung
173f26dc02 Version 2.0.20 2022-03-22 00:43:43 +09:00
Kijin Sung
4a2b494508 Fix #1885 disable SameSite=None if SSL session is not used 2022-03-22 00:24:54 +09:00
Kijin Sung
46136660a8 Disable password algorithms that are too large for the password field 2022-03-22 00:15:46 +09:00
Kijin Sung
03d456c674 Fix #1904 hide parentheses and comma if addon author info is not available 2022-03-22 00:01:00 +09:00
Kijin Sung
048ba47499 Fix #1891 missing boards in RSS module config page 2022-03-21 21:15:42 +09:00
Kijin Sung
88a69f85e8 Fix PHP warning when profile image doesn't exist 2022-03-21 15:51:15 +09:00
Kijin Sung
418c2b9dfa Fix #1901 always delete thumbnail directory when deleting document or comment 2022-03-21 14:14:37 +09:00
Kijin Sung
933175971e Fix #1903 use common methods to cut notification subject and content more consistently 2022-03-21 14:01:45 +09:00
Kijin Sung
b12f2e5863 Increase column sizes and delete unnecessary restrictions in ncenterlite_notify #1903 2022-03-21 13:43:37 +09:00
Kijin Sung
a806b5594e Add label to checkout step 2022-03-18 15:58:46 +09:00
Kijin Sung
d3843c733a Add file type exceptions to .editorconfig
- 파이썬, YAML 등 라이믹스의 탭 규칙을 따르면 안 되는 언어 예외선언
- 탭을 어떤 크기로 표시할 것인지는 .editorconfig에서 강제하지 않고 사용자 설정에 맡김
2022-03-18 15:56:33 +09:00
Kijin Sung
6d58bb79f5 Fix SecurityViolation when trying to preview a layout 2022-03-18 01:51:42 +09:00
conory
c850c9fdcc 디버그 기능 사용시 비로그인 상태에서 발생하는 치명적인 오류 수정
PHP Fatal error:  Uncaught TypeError: method_exists(): Argument #1 ($object_or_class) must be of type object|string, bool given in /common/framework/debug.php:753
2022-03-16 16:07:57 +09:00
Kijin Sung
5b195ce16e Fix mobile external page path 2022-03-16 14:13:57 +09:00
Kijin Sung
5746c858ba Version 2.0.19 2022-03-16 10:32:28 +09:00
Kijin Sung
65dd68f9f3 Merge branch 'security/opage' into develop 2022-03-16 10:29:43 +09:00
Kijin Sung
2f014fcaf3 Set nanasess/setup-php version to v3 2022-03-16 10:20:58 +09:00
Kijin Sung
031261469e Fix #1900 incorrect detection of non-member vote status 2022-03-16 10:20:15 +09:00
Kijin Sung
9ce7593820 Fix error when loading external page in document root folder 2022-03-16 00:54:10 +09:00
Kijin Sung
63fa80db82 No need to fail hard if unable to write cache file at the end 2022-03-15 22:48:06 +09:00
Kijin Sung
def6166c8e Clean up duplicate path definitions 2022-03-15 22:39:55 +09:00
Kijin Sung
e8eece5730 Enable PHP execution of external document if template parsing is enabled 2022-03-15 22:31:49 +09:00
Kijin Sung
09abdfa88a Implement safe order of parsing template code and including as PHP 2022-03-15 22:29:07 +09:00
Kijin Sung
d13241ed7c Parse external document as PHP and/or Rhymix template if configured 2022-03-15 21:30:36 +09:00
Kijin Sung
9edd52c328 Add option to control whether to execute external page as PHP and/or Rhymix template 2022-03-15 21:14:55 +09:00
Kijin Sung
b91fb3ee7a Fix error when using a namespaced module with forwarded action from another module 2022-03-15 16:42:06 +09:00
Kijin Sung
3260d90d18 Fix relative path used in unit tests 2022-03-15 02:56:04 +09:00
Kijin Sung
af2c0bae95 Fix relative path used in unit tests 2022-03-15 02:52:21 +09:00
Johnny
0fec44222d 레이아웃에서 알림센터 위젯 사용시 알림 발생할 경우 겹치는 문제 고침 2022-03-15 02:10:04 +09:00
Kijin Sung
c2d831d93b Fix Github actions error due to nanasess/setup-php patch 2022-03-15 02:06:05 +09:00
Kijin Sung
f0179584b5 Fix Github actions error due to nanasess/setup-php patch 2022-03-15 02:04:15 +09:00
Kijin Sung
0272c5d27a Prevent '_getContent method is not exists' error when page info is improperly cached 2022-03-15 02:00:14 +09:00
Kijin Sung
d4a1be1ef0 Merge duplicate code paths in PageView and PageMobile classes
보안 체크가 한 곳에서 이루어지도록 중복되는 메소드 제거
2022-03-15 01:46:47 +09:00
Kijin Sung
9170d9444c Throw SecurityViolation if anyone tries to exploit RVE-2022-2 with GET/POST vars 2022-03-15 01:36:13 +09:00
Kijin Sung
1ab9a2899b Adjust cache paths to prevent loading old cache 2022-03-15 01:28:59 +09:00
Kijin Sung
0c1ee32073 Disable template compilation in external page content 2022-03-14 02:29:18 +09:00
Kijin Sung
a28a8e29e1 More cleanup 2022-03-14 02:17:16 +09:00
Kijin Sung
063d38487e Clean up some dirty code in page.view.php 2022-03-14 02:11:57 +09:00
Kijin Sung
f373e38d6d Fix #1893 duplicate function call when loop="" template syntax is used 2022-03-14 01:53:27 +09:00
Kijin Sung
7b46deb973 Fix #1886 clean up incorrect use of getMemberInfo* methods 2022-03-14 01:40:43 +09:00
Kijin Sung
53a8eaa81c Fix #1884 incorrect caching of debugging enabled flag 2022-03-14 01:25:17 +09:00
Kijin Sung
05ac2ec558 Fix #1889 remove unnecessary form field with typo in name 2022-03-11 01:50:09 +09:00
Kijin Sung
7a20ab3692 Fix #1989 remove old limit of 60 chars for temporary password hash 2022-03-11 01:48:19 +09:00
Kijin Sung
9c07104eb2 Reduce file download key expiration to 5 minutes #1890 2022-03-11 01:45:13 +09:00
Kijin Sung
237134f64d Fix #1897 incorrect error message when query variable exceeds maxlength 2022-03-11 01:43:26 +09:00
Kijin Sung
9c04818cc2
Merge pull request #1899 from dewekk/fix-typo
Fix typo
2022-03-10 22:35:09 +09:00
dewekk
072fd82dd0
Fix typo
그룹 리스트가  캐시되지 않는 문제 수정
2022-03-10 17:02:19 +09:00
Kijin Sung
f67568d34c Fix #1895 uninitialized variable in poll.controller.php 2022-03-07 12:00:04 +09:00
Kijin Sung
f35dfcf2bb Fix inappropriate loading of disabled image_link editor component (78d1b6966a 보완) 2022-02-25 14:50:57 +09:00
conory
34c46a08c6 Correct the URL regex 2022-02-21 21:11:42 +09:00
Kijin Sung
0c31234e09 Fix isset(), unset() and empty() not working in template syntax 2022-02-16 13:15:31 +09:00
Kijin Sung
60b7912718
Merge pull request #1879 from dewekk/fix/warning
Fix Warning in getExtraVars()
2022-02-15 11:09:09 +09:00
dewekk
fd3c75a2a2
getExtraVars()의 return을 항상 array()로 일관되게 수정
DocumentModel::getExtraVars에서 항상 array()로 반환하고 있음
2022-02-11 13:23:18 +09:00
Kijin Sung
b6e21eb61f Version 2.0.18 2022-02-09 10:12:10 +09:00
Kijin Sung
a840e26b71 Merge branch 'pr/extra-content' into develop 2022-02-09 02:52:26 +09:00
Kijin Sung
f3ac70d3b2 Fix #1874 standalone attribute for device actions 2022-02-08 22:08:23 +09:00
Kijin Sung
fc14a04173 Clean up getMemberMenu() method 2022-02-07 21:43:35 +09:00
Kijin Sung
9e67b5b010 Determine administrator status more accurately #1851 2022-02-07 21:43:14 +09:00
Kijin Sung
4eced6daf0 Merge branch 'develop' into pr/1851 2022-02-07 21:31:45 +09:00
Kijin Sung
024c69390d #1851 보완 2022-02-07 21:31:42 +09:00
Kijin Sung
0970a7d7ad Also separate target actions when auto-inserting CAPTCHA into forms #1815 2022-02-07 21:25:45 +09:00
Kijin Sung
2dc3e5e19b Also add CAPTCHA action conditions to default board skin #1815 2022-02-07 21:07:19 +09:00
Kijin Sung
9aea72b1c3 Separate CAPTCHA actions #1815 2022-02-07 21:04:09 +09:00
Kijin Sung
37aa3dea3b Add target actions to CAPTCHA object #1815 2022-02-07 20:52:54 +09:00
Kijin Sung
dba78c46fe Make CAPTCHA work on act=dispBoardContent 2022-02-07 20:49:10 +09:00
Kijin Sung
ba33e59897 Clean up code concerning multilang document support 2022-02-07 02:22:59 +09:00
Kijin Sung
a30647d988 Fix #1853 move non-BMP character encoding before multilang juggling 2022-02-07 02:15:50 +09:00
Kijin Sung
df1438ea04 Move XSS filtering before multilang juggling 2022-02-07 02:13:59 +09:00
Kijin Sung
5a95f0c3f3 Fix #1853 encode non-BMP characters in multilang document title and content 2022-02-07 02:10:21 +09:00
Kijin Sung
23f7568e74 Separate device-related actions to own class; add procMemberUnregisterDevice 2022-02-06 22:29:14 +09:00
Kijin Sung
0b05404f23 Use DB result helper class instead of plain BaseObject 2022-02-06 21:48:53 +09:00
Kijin Sung
c04fa73156 Fix #1873 support mobile header/footer text in default mobile board skins 2022-02-06 21:40:18 +09:00
Kijin Sung
7a838f7588 Fix #1843 add extra data to push messages 2022-02-04 22:51:04 +09:00
Kijin Sung
5ed1b43786 Fix #1847 support logging in with 'email_address' or 'phone_number' input name if they are allowed as identifier 2022-02-04 22:24:03 +09:00
Kijin Sung
e5306e20c7 Fix #1858 delete auth mail if denied by administrator 2022-02-04 22:14:44 +09:00
Kijin Sung
c1e41e87ad Fix #1854 inconsistent use of point name in config screen 2022-02-04 22:08:41 +09:00
Min-Soo Kim
21c176313f
에디터 컴포넌트 등에서 extravars 항목 중 type이 설정되지 않은 경우에 대한 수정 (#1872)
에디터 컴포넌트 등의 설정 xml 에서 type이 설정되지 않은 경우 `text` 가 기본 값.
https://github.com/rhymix/rhymix/issues/1871
2022-02-04 17:07:22 +09:00
Kijin Sung
7e82d37cfa Fix PHP warnings due to unitiated variables #1866 thanks to @Erictoby 2022-02-04 01:41:56 +09:00
Kijin Sung
70cfe24cdd Use $this->user instead of $logged_info more consistently #1866 2022-02-04 01:19:30 +09:00
Kijin Sung
cb9f3dd1db Fix #1868 incorrect parsing of CSS/SCSS import containing special characters 2022-02-03 14:28:25 +09:00
Kijin Sung
7e922cf2bc Fix #1867 missing tags column in default columns for document list 2022-02-01 00:24:47 +09:00
Kijin Sung
8d67f80283 Make profile image force aspect ratio setting confugurable 2022-01-28 16:14:44 +09:00
Kijin Sung
6e0b4ab688 Fix login page always redirecting to main or list page if already logged in 2022-01-28 15:31:06 +09:00
Kijin Sung
29c851d124 Fix #1855 incorrect type hint in comment for XeXmlParser 2022-01-27 21:43:05 +09:00
Kijin Sung
8310f82a1a Fix #1856 missing IDN support in URL validator 2022-01-27 21:37:19 +09:00
Kijin Sung
d20fd9ca47 Prevent autocomplete of mail, SMS and push API passwords 2022-01-27 21:28:30 +09:00
Kijin Sung
a9821b815d Order table creation by foreign key dependency 2022-01-27 21:20:51 +09:00
Kijin Sung
72132b2e74 Fix #1864 support table alias if provided in all types of queries 2022-01-26 20:41:22 +09:00
Kijin Sung
0a14aaa3ba Fix codeception throwing wrong class of exception in PHP 8.0 2022-01-25 15:18:09 +09:00
Kijin Sung
7f6e020d97 PROPERLY fix null value handling in both read and write queries 2022-01-25 14:54:17 +09:00
Kijin Sung
7f5f67992d Revert "Fix incorrect querystring when comparing column against null value"
This reverts commit a6f771c155.
2022-01-25 14:15:08 +09:00
Kijin Sung
a6f771c155 Fix incorrect querystring when comparing column against null value 2022-01-20 16:37:12 +09:00
Ji Yong, Kim
75978c77fe #1838 관리자 계정의 익명 적용여부 설정 제공 2022-01-12 07:06:15 +09:00
Kijin Sung
22182c4c19
Merge pull request #1845 from dewekk/fix/status-list
사용하지 않는 글쓰기 상태 값 숨김
2022-01-11 22:58:14 +09:00
dewekk
80797387a2
사용하지 않는 글쓰기 상태 값 숨김
메뉴 편집 게시판 상세 설정에서 사용하지 않는 상태 값을 숨김
사이트 메뉴 편집 -> 게시판 -> 상세 설정 - 상태
2022-01-05 14:33:15 +09:00
Kijin Sung
f334889047 Support installing/updating namespaced modules
모듈 설치 및 업데이트 메소드를 Rhymix\Modules\모듈명\Install 클래스에
넣을 수 있도록 지원한다. 이 클래스가 있는 경우 모듈명과 동일한 클래스를
찾지 않는다. 이로써 클래스 전체를 네임스페이스화할 수 있게 되었다.
2022-01-04 01:37:38 +09:00
Kijin Sung
adbd29231f Trigger warning when SCSS import fails 2022-01-03 14:11:46 +09:00
Kijin Sung
411b8e4656 Only allow image extensions in menu image button
This is NOT a security problem because this function is only accessible
to the administrator. Changing it anyway to prevent confusion.

cf. xpressengine/xe-core#2434
2022-01-01 21:40:34 +09:00
Kijin Sung
4153b10645 Version 2.0.17 2021-12-31 15:39:16 +09:00
Kijin Sung
9ff101f097
Merge pull request #1842 from shydah/fix/member-default-mskin
default 모바일 스킨에서도 로그인 폼에 referer_url을 활용하도록 개선
2021-12-31 15:00:24 +09:00
Kijin Sung
8d1dd026ef Fix #1660 #1826 limit SMS auth attempts from same IP 2021-12-31 14:56:30 +09:00
Kijin Sung
ff2e04fb8f Store auth SMS in DB #1826 #1660 2021-12-31 14:36:41 +09:00
Kijin Sung
5f8f7acced Prevent sending SMS to phone number that has already been registered #1826
+ Clean up some error messages
2021-12-31 14:25:44 +09:00
Kijin Sung
3d79e045d9 Fix #1805 incorrect relative timestamp in ncenterlite module 2021-12-31 01:58:32 +09:00
shydah
7c2571ea9f Add referer_url to default mobile skin of member module 2021-12-31 01:48:04 +09:00
Kijin Sung
d8ae1d8d1a Fix #1809 remove unnecessary error code after scrap 2021-12-31 01:44:06 +09:00
Kijin Sung
ae28116ac0 Fix #1816 allow images of at least 100x100px when creating large thumbnails 2021-12-31 01:41:04 +09:00
Kijin Sung
9b794c6df2 Fix #1828 increase range of RSS document count and set sensible defaults 2021-12-31 01:32:05 +09:00
Kijin Sung
7e9e33765c Fix #1813 show textarea if HTML is not allowed in signature 2021-12-31 01:27:42 +09:00
Kijin Sung
bfc1c5d11a Fix missing file upload in signature editor when modifying member info 2021-12-31 01:24:00 +09:00
Kijin Sung
e311207348 Fix #1840 query error when loading comment declared list 2021-12-31 01:14:02 +09:00
Kijin Sung
ccb74c8851 Fix #1817 check all function not working in friend list 2021-12-31 00:51:19 +09:00
Kijin Sung
99acb293b6 Don't prompt for update when new_message_flags folder is missing
https://xetown.com/questions/1626240

cf. #1804
2021-12-31 00:38:47 +09:00
Kijin Sung
140a788f33 Fix #1820 prevent stupid Chrome from autofilling Redis cache password 2021-12-31 00:34:22 +09:00
Kijin Sung
4ac3d91ef0 Set $kind = 'admin' if class name of action contains 'admin' 2021-12-31 00:26:13 +09:00
Kijin Sung
78d1b6966a Fix image_link editor component popup loading even if image_link component is disabled 2021-12-31 00:19:30 +09:00
Kijin Sung
e3541c046b Prevent disabled editor component in editor popup 2021-12-31 00:06:13 +09:00
Kijin Sung
3925c24487 Add option to disable admin content protection
최고관리자의 글을 게시판 관리자가 수정/삭제하지 못하도록 하는 기능은
게시판을 위키 등 협업 용도로 사용하는 경우 불편을 유발할 수 있으므로
옵션으로 켜고 끌 수 있도록 합니다. 기본값은 수정/삭제 금지입니다.
2021-12-30 23:55:10 +09:00
Kijin Sung
9d6e54f2f6 Clean up push metadata
빈 값은 제외하고 전송하도록 보완합니다.
즉, 기존에 세팅된 값을 제거하려면 빈 값을 세팅하면 됩니다.
2021-12-29 22:37:20 +09:00
Kijin Sung
5bbda4b532
Merge pull request #1841 from Waterticket/develop
FCM notification 항목을 추가할 수 있는 메소드 추가 #1836
2021-12-29 22:33:06 +09:00
Waterticket
6e7a058671 getClickAction 재 추가 2021-12-29 06:10:12 +00:00
Waterticket
f295f1a49d notification 메소드 정리 2021-12-29 05:48:04 +00:00
Waterticket
bef4cd74ae FCM notification 항목 메소드 추가 2021-12-29 04:27:03 +00:00
Kijin Sung
dacddd5d44 Fix JS exception when malformed URL is passed to isSameOrigin() 2021-12-26 20:47:13 +09:00
conory
8644227a03 움직이는 webp 이미지를 처리하지 못하면서 발생하는 오류 수정
TypeError #0 "imagecopyresampled(): Argument #2 ($src_image) must be of type GdImage, bool given" in modules/document/document.item.php on line 1247 (via classes/file/FileHandler.class.php on line 661)
2021-12-24 18:56:47 +09:00
Kijin Sung
abacd82a6c Fix error when namespaced module (empty type) is used with forwarded action (e.g. file upload) 2021-12-20 16:22:28 +09:00
Kijin Sung
51173863c1 Support calling namespaced class in trigger 2021-12-13 15:21:42 +09:00
Kijin Sung
eb10708a88 Prevent adding or getting duplicate trigger 2021-12-13 15:21:21 +09:00
Kijin Sung
74eeaf3459 Allow setting new charset in DB::modifyColumn() 2021-12-13 15:20:58 +09:00
Kijin Sung
0710285582 Increase size of type column in module_trigger table 2021-12-13 15:20:30 +09:00
Kijin Sung
f1f4ac7e69 Fix error when RSS document count is saved as 0 2021-12-13 01:14:05 +09:00
Kijin Sung
731eacbe39 Fix #1831 filter invalid check count when creating poll 2021-12-09 23:31:52 +09:00
Kijin Sung
b6cb0cdf18
Merge pull request #1823 from dewekk/fix/category
카테고리 수정 시 기존 색상 지정 안되는 문제 수정
2021-12-09 23:18:48 +09:00
Kijin Sung
12e8cc4510
Merge pull request #1822 from BOBODDO/develop
컨텐츠 위젯 및 comment 모듈 버그 수정
2021-12-09 23:16:26 +09:00
conory
94918a070d 휴지통 삭제시 댓글수가 반영되지 않을 수 있는 문제 수정
댓글 삭제로 인해 댓글수가 0이 되었을 경우에도 반영되어야 함
2021-11-30 21:51:31 +09:00
Kijin Sung
97f28141ae Fix #1827 unnecessary use of $is_admin when getting document or comment 2021-11-26 02:07:08 +09:00
Kijin Sung
42442aeef7 헤더 또는 쿠키로 device token과 device key를 주고받을 수 있도록 허용하고, 중복 코드 정리 (#1325 보완)
요청 헤더: X-Device-Token
응답 헤더: X-Device-Key (포맷: member_srl:device_key)

요청 쿠키: device_token
응답 쿠키: device_key (포맷: member_srl:device_key) (유효기간 1분)
2021-11-26 01:52:15 +09:00
Kijin Sung
aa9af45207 회원가입 및 로그인시 device token과 device key를 헤더로 주고받을 수 있도록 지원 (#1325 보완)
요청 헤더: X-Device-Token
응답 헤더: X-Registered-Member-Srl, X-Registered-Device-Key
2021-11-24 16:22:30 +09:00
Kijin Sung
3ece3ed7a4 다른 액션에서 procMemberRegisterDevice를 호출한 경우에는 response method를 건드리지 않도록 변경 2021-11-24 15:35:24 +09:00
Kijin Sung
ae44f26bc5 Fix fatal error in PHP 8.0 when thumbnail size is not given as integer 2021-11-22 15:01:28 +09:00
BOBODDO
c6ef211867
댓글 자리남김 기능 사용 시 댓글 삭제 트리거 작동 안하는 문제 수정
ModuleHandler::triggerCall('comment.deleteComment', 'after', $obj); 을 ModuleHandler::triggerCall('comment.deleteComment', 'after', $comment); 로 수정해야합니다.
updateCommentByDelete 함수에서 받아오는 $obj 값을 그대로 사용해서 트리거로 전달하면 안되며, $comment = getModel('comment')->getComment($obj->comment_srl); 을 통해 저장한 $comment 값을 넘겨주어야 합니다.
2021-11-12 22:46:03 +09:00
BOBODDO
e86b887e34
Merge branch 'rhymix:develop' into develop 2021-11-12 22:43:24 +09:00
dewekk
75a301ffa4
카테고리 수정 화면에 기존 색상 정보 업데이트 2021-11-11 11:40:15 +09:00
Kijin Sung
0118962a8f Insert NULL instead of 0 for next sequence
https://xetown.com/questions/1627614

sql_mode에 NO_AUTO_VALUE_ON_ZERO가 포함되어 있는 경우
0을 입력하면 AUTO_INCREMENT가 작동하지 않음
2021-11-10 16:34:22 +09:00
BOBODDO
9b13dfd127
Merge pull request #2 from BOBODDO/fix/widget
색상값을 항상 올바르게 출력하도록 수정
2021-11-06 16:38:25 +09:00
BOBODDO
a1093c975c
색상값을 항상 올바르게 출력하도록 수정
스킨에서 정상적인 타이틀 색상값을 반환하지 않았을 경우 #을 제거하도록 수정합니다.
2021-11-06 16:37:05 +09:00
Kijin Sung
093fa43e37 Fix incorrect variable reference 2021-11-02 20:58:20 +09:00
Kijin Sung
4fd1804d27 Don't allow uploading .php or .js files using the filebox #1796 2021-10-19 21:39:13 +09:00
Kijin Sung
3467bf0ae3
Merge pull request #1812 from YJSoft/feature/edge
Fix #1811 크롬 기반 엣지 브라우저 UA 감지 추가
2021-10-19 20:38:42 +09:00
Kijin Sung
a1db2a5635
Merge pull request #1802 from BOBODDO/develop
댓글 신고 불가 시 세션 값 변경 필요
2021-10-19 20:38:27 +09:00
Kijin Sung
c87e6d759c #1802 보완 2021-10-19 20:35:02 +09:00
YJSoft
34f76a79d7 Fix #1811 Add chromium edge detection to getBrowserInfo 2021-10-15 14:03:39 +09:00
BOBODDO
0b83bbae2f
Merge pull request #1 from BOBODDO/BOBODDO-BUGREPORT
신고 불가 시 세션값을 FALSE > TRUE로 수정 필요
2021-10-08 23:45:09 +09:00
BOBODDO
b611940adf
신고 불가 시 세션값을 FALSE > TRUE로 수정 필요 2021-10-08 23:42:37 +09:00
Kijin Sung
10ab65e2f4 Version 2.0.16 2021-10-08 11:18:04 +09:00
Kijin Sung
85cde5da04 Update Korea IPv4 ranges list (IPv6 is unchanged) 2021-10-08 11:16:49 +09:00
Kijin Sung
98f8368074 Update URL for getting Korean IPv6 ranges list 2021-10-08 11:16:28 +09:00
Kijin Sung
07f208d4e7 Update cacert.pem 2021-10-08 01:43:41 +09:00
Kijin Sung
4a8464ad72 Fix #1798 TypeError when extra var stored as array is treated as string 2021-10-08 01:38:15 +09:00
Kijin Sung
cb16e7a293 Don't update admin extra vars in procMemberModifyInfo 2021-10-08 01:35:21 +09:00
Kijin Sung
605d8da7ee Fix #1797 also apply #1713 patch to procMemberModifyInfo 2021-10-08 01:28:59 +09:00
Kijin Sung
dd1e61ddc4 19012c85 보완 2021-10-06 16:10:12 +09:00
Kijin Sung
19012c85d2 Fix error reading profile image when current directory is not RX_BASEDIR 2021-10-06 15:53:41 +09:00
Kijin Sung
6f3bb53ce3 Fix validation of phone numbers like 02-1688-XXXX 2021-10-05 16:02:43 +09:00
Kijin Sung
c86015c282 Fix incorrect console message 2021-09-29 02:17:12 +09:00
Kijin Sung
454d2d85ff Fix #1790 duplicate .html extension in TemplateHandler error message 2021-09-28 02:03:07 +09:00
Kijin Sung
9b5ebb3a79 Add missing input types in default skins #1791 2021-09-28 01:54:03 +09:00
Kijin Sung
22ff33d795 Remove unnecessary 'e' in class name #1791 2021-09-28 01:49:25 +09:00
Kijin Sung
546149a8c0 Fix duplicate class attribute #1791 2021-09-28 01:44:01 +09:00
Kijin Sung
a743ee9427 Update member cache when profile image, signature, etc. are updated independently 2021-09-27 16:47:19 +09:00
conory
994d7ca83e Fix PHP Exception
PHP Exception: TypeError #0 "explode(): Argument #2 ($string) must be of type string, stdClass given" in modules/file/file.controller.php on line 1273
2021-09-16 18:58:41 +09:00
Kijin Sung
807461f0ac Use getUrl() instead of getPermanentUrl() in board skin title link 2021-09-13 14:34:12 +09:00
Kijin Sung
be2c53581f Revert #1776 patch; use apparent_module_srl instead
https://xetown.com/questions/1612784
2021-09-13 14:33:21 +09:00
Kijin Sung
76cc70bbb3 Version 2.0.15 2021-09-13 11:21:17 +09:00
Kijin Sung
1f1e01917e Support success and error callbacks in rx_ajax submissions using iframe 2021-09-13 10:57:55 +09:00
Kijin Sung
f3918d792a Add rx_ev_* classes to all extra var input fields
서드파티 자료에서 확장변수 입력란 디자인을 커스터마이징하기 쉽도록
각 확장변수의 타입에 맞는 rx_ev_* 클래스를 추가해 주도록 함.
예: 한줄 입력란은 rx_ev_text, 체크박스 컨테이너(ul/div)는 rx_ev_checkbox 등
2021-09-13 01:32:55 +09:00
Kijin Sung
263dc79090 Use https in AJAX URL if site is accessed over https
https를 사용하지 않는 것으로 설정되어 있더라도 실제로 https로 접속했다면
https를 사용하는 것으로 간주하고, AJAX URL을 https로 생성하도록 합니다.

기대되는 효과:

1. 설정이 잘못되어서 로그인이 되지 않거나 AJAX 요청에 실패할 가능성 제거
2. https 접속이 가능한 사이트라면 최대한 https를 사용하도록 유도
2021-09-13 01:10:36 +09:00
Kijin Sung
53a7e4d90f Fix #1773 add function to delete temp saved document 2021-09-11 21:30:31 +09:00
Kijin Sung
1a23fc3a71 Fix missing user_lang translation in RSS/Atom category name 2021-09-11 19:58:57 +09:00
Kijin Sung
f226d0c88a Use absolute URLs in RSS/Atom feeds #1787 2021-09-11 19:56:53 +09:00
Kijin Sung
1c28254902 Move image URL cleaning function to HTMLFilter #1787 2021-09-11 19:47:04 +09:00
Kijin Sung
a02d5cb554 Also remove duplicate agreement in member update method #1788 2021-09-11 00:26:12 +09:00
Kijin Sung
891b57c770 Remove duplicate agreement in member_config #1788
- $config->agreements와 중복되는 $config->agreement는 삭제
- 회원가입폼(dispMemberSignUpForm)에 한하여, 첫 번째 약관의 내용을
  $member_config->agreement에 넣어주어 오래된 스킨과의 호환성을 유지함
2021-09-11 00:23:57 +09:00
Kijin Sung
602d7aec79 Fix #1787 convert image URLs to absolute path when sending mail 2021-09-11 00:13:20 +09:00
Kijin Sung
d49614d59c Disable all editor components except poll_maker by default #1786 2021-09-10 23:49:55 +09:00
Kijin Sung
5311b73d68 Fix #1786 don't add width/height styles if they are zero 2021-09-10 23:41:57 +09:00
Kijin Sung
22781e2117 Add poster attribute to <video> tag if thumbnail is available 2021-09-07 01:58:16 +09:00
Kijin Sung
ce2d019aaf Fix #1784 error when getThumbnail() uses external image with $height = 'auto' 2021-09-07 01:48:21 +09:00
Kijin Sung
74bb65a240 Fix #1782 incorrect handling of old member agreement files
- 새 형식으로 저장된 약관이 없는 경우에만 기존 파일 불러오기
- 새 형식으로 약관을 저장하면 기존 파일은 모두 삭제
2021-09-07 01:43:20 +09:00
conory
ca5eb517cf 스패머 처리시 댓글이 휴지통으로 들어가지 않는 문제 수정
스패머 처리시 휴지통 이동을 기본값으로 함
2021-09-04 01:47:47 +09:00
conory
c5138ab477 긴 댓글은 휴지통에 들어가지 않는 문제 수정
SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'title' at row 1

불필요 코드 제거
2021-09-03 01:04:41 +09:00
Kijin Sung
86c33859db Clean up access modifiers and grant processing in Board API; fix #1780 2021-08-27 20:10:08 +09:00
Kijin Sung
89ef156f8e Fix #1776 properly display title of origin module 2021-08-26 19:22:39 +09:00
Kijin Sung
d215dd5678
Merge pull request #1779 from kijin/pr/rx-autoform
<form>에 원치 않는 hidden input을 추가하지 않도록 지시하는 속성 추가
2021-08-26 01:32:16 +09:00
Kijin Sung
15c43f13d2 Add option to disable automatically adding hidden inputs for mid, act, error-return-url to forms 2021-08-26 01:09:45 +09:00
Kijin Sung
f7146a4791 Fix #1778 support multi-column unique indexes using legacy syntax 2021-08-26 00:44:13 +09:00
Kijin Sung
7367ad2645 Support HTTP status codes 301, 302, 303, 307, 308 when setting redirect URL 2021-08-13 15:55:56 +09:00
Kijin Sung
46dbf0be99
Merge pull request #1769 from dewekk/fix-memberconfig
회원 설정 - 기능 설정 저장 안되는 문제 고침
2021-08-12 01:01:55 +09:00
dewekk
215240badd
회원 설정 - 기능 설정 저장 안되는 문제 고침
$config->features 값이 항상 초기화되어 true값으로 지정되는 문제
2021-08-11 19:46:34 +09:00
Kijin Sung
9b085df3b4 Fix incorrect rewrite level after module=admin (#1643 regression)
https://xetown.com/questions/1600064
2021-08-09 10:34:13 +09:00
Kijin Sung
a4490e6709
Merge pull request #1767 from YJSoft/patch-5
Fix #1766 상위 메뉴를 자기 자신으로 설정할수 없도록 수정
2021-08-07 17:15:59 +09:00
YJSoft
86fcb8d4b5
Fix #1766 상위 메뉴를 자기 자신으로 설정할수 없도록 수정
상위 메뉴를 자기 자신으로 설정하면 어떠한 메뉴에도 해당 메뉴가 표시되지 않으므로 메뉴를 관리하기 힘들어집니다.
이를 수정합니다.
2021-08-07 15:35:01 +09:00
Kijin Sung
a97f6d6a05 Version 2.0.14 2021-08-05 09:57:43 +09:00
Johnny
f4d51ee69b
Merge pull request #1762 from wstackme/fix/extra-vars-timezone
Fix unclosed select tag of select timezone
2021-08-04 16:18:01 +09:00
Ji Yong, Kim
49b7cbd657
Fix unclosed select tag of select timezone 2021-08-04 03:29:50 +09:00
Kijin Sung
7b568d342b Adjust test cases for pre-1961 Korean dates 2021-08-03 21:10:07 +09:00
Kijin Sung
9088326d66 Add unit tests for ce76501f2 2021-08-03 20:56:26 +09:00
Kijin Sung
ce76501f2b Fix incorrect parsing of some dates due to timezone difference
https://xetown.com/questions/1598582
2021-08-03 20:56:07 +09:00
Kijin Sung
e4bc093709 Add line breaks to datetime input template 2021-08-03 20:55:33 +09:00
Kijin Sung
185f0bb5a5 Fix #1760 check for duplicates and remove them before adding member to group 2021-08-02 10:49:47 +09:00
Kijin Sung
e9072f9a6e Show group_srl next to group description in admin screen 2021-08-02 10:48:59 +09:00
Kijin Sung
f5b03916d8 Fix #1758 count() error in PHP 8.0 2021-08-02 10:30:50 +09:00
Kijin Sung
9127e17b2e Fix #1761 don't filter target="_self" in HTMLPurifier 2021-08-02 10:27:28 +09:00
Kijin Sung
aab7ab851e Add missing 'module' parameter to download URL 2021-07-29 09:52:12 +09:00
Min-Soo Kim
38bdb20ca7
벡터 이미지 기반의 기본 레벨 아이콘 세트 추가
- 기본 레벨 아이콘을 벡터 이미지 기반으로 다시 제작했습니다.
- 사용된 폰트는 Microsoft사가 SIL Open Font License 1.1 로 배포하는 Cascadia Code를 사용했습니다.
- 60 레벨까지 추가 되었습니다.
- 레벨마다 붙는 색상도 재배열 하였습니다.
2021-07-27 00:27:07 +09:00
Kijin Sung
a3bda2ccd3
Merge pull request #1752 from YJSoft/fix/admingroup
포인트 그룹 연동 설정에 연동 불가능한 관리그룹은 노출시키지 않음
2021-07-22 01:45:57 +09:00
YJSoft
2076f92625 Fix #1751 연동 불가능한 관리그룹은 노출시키지 않음
추가로 기본 그룹 앞에 붙는 "레벨"을 삭제합니다.
2021-07-19 18:41:29 +09:00
Chanyoung Oh
d3ee5083f0
Change ModuleHandler to update value of is_mobile when calling Mobile::setMobile (#1746) 2021-07-16 10:00:57 +09:00
BJRambo
98d7f8400b 03aef25eda 보완 2021-07-15 18:26:53 +09:00
BJRambo
be062e2133 Fix warning error better then c7f84a178d 2021-07-15 17:23:42 +09:00
BJRambo
0f66507030 Delete to check data code when get notice list 2021-07-15 17:22:25 +09:00
BJRambo
03aef25eda Fix warning error in PHP8.0. Set to return output data in notice list. 2021-07-15 17:18:29 +09:00
BJRambo
c7f84a178d Fix warning in PHP8.0 2021-07-15 03:26:49 +09:00
BJRambo
ce694e179c Fix #1748 익명으로 추천 할 경우 추천 취소시 알림도 삭제 할 수 있도록 개선 2021-07-15 02:02:05 +09:00
BJRambo
b3bd0b9782 Merge branch 'develop' of github.com:rhymix/rhymix into develop 2021-07-15 01:41:21 +09:00
Kijin Sung
fd68b652a6
Merge pull request #1743 from dewekk/fix/admin-insert-domain
사이트 설정 수정 오류 고침
2021-07-15 01:40:42 +09:00
BJRambo
bb82c6e2f4 추천인 익명 사용시 추천 취소시 알림을 삭제하는 함수 실행하지 않음 2021-07-15 01:12:01 +09:00
BJRambo
0430eff3db 사용되지 않는 ncenterliteModel 클래스 호출 변수 제거 2021-07-15 01:02:44 +09:00
Kijin Sung
6c8012d2a4 Add index on member_srl column of member_group_member 2021-07-13 19:49:58 +09:00
dewekk
39c06798ab
사이트 설정 수정 오류 고침 보완 2021-07-13 18:03:27 +09:00
conory
1ba26642d3 Add "email address" to default of identifiers 2021-07-08 21:09:41 +09:00
conory
589ecf2561 Cleanup getMemberConfig() for PHP 8.0
기본 설정값 통일
서명, 프로필 이미지, 이미지 이름, 이미지 마크가 공개 옵션과 상관 없이 무조건 표시되는 문제 수정
사용되지도 않고 별 역할 없는 setMemberConfig($args) 메소드 deprecated 처리
2021-07-08 18:09:39 +09:00
dewekk
a720308c0e
fix 2021-07-07 15:53:44 +09:00
dewekk
653af06b24
사이트 설정 수정 오류 고침
string int비교 문제로 $domain_info->domain_srl과 $domain_srl 숫자로 통일합니다.
2021-07-07 15:19:23 +09:00
Kijin Sung
75f7e45be3 Fix warning in PHP 8.0 2021-07-07 01:31:51 +09:00
conory
faea821e78 Fix warning in PHP 8.0 2021-07-05 14:19:06 +09:00
Kijin Sung
375a71866d Fix #1736 missing bracket in legacy bootstrap.min.css
Thanks to @Erictoby
2021-07-05 11:26:30 +09:00
BJRambo
2257341dc7 d9408da729 커밋 보안 PHP8.0 에러 고침 2021-07-03 20:27:14 +09:00
conory
d9408da729 Fix error in PHP 8.0
PHP Exception: TypeError #0 "in_array(): Argument #2 ($haystack) must be of type array, bool given" in modules/ncenterlite/ncenterlite.controller.php on line 600
2021-07-03 19:27:52 +09:00
Kijin Sung
df9e990fdc Fix fatal error when module.xml contains invalid menu reference
https://xetown.com/questions/1588670
2021-07-03 16:30:39 +09:00
Kijin Sung
c874b318bf Version 2.0.13 2021-07-01 15:26:38 +09:00
Kijin Sung
ef2cdb56b0 Fix warning in PHP 8.0 2021-07-01 15:16:12 +09:00
Kijin Sung
21e99aa7a2 Support PNG and SVG icon sets for document icons 2021-07-01 15:09:18 +09:00
Kijin Sung
f2ff393592 Support PNG and SVG icon sets for point level icons #1739 2021-07-01 14:58:33 +09:00
Kijin Sung
f1c839042c Fix warning in PHP 8.0 2021-07-01 14:39:47 +09:00
Kijin Sung
d78ba8c77c Fix #1734 out-of-order loading of external CSS resource 2021-07-01 14:36:35 +09:00
Kijin Sung
4c4596d659 Fix warning if invalid domain_srl is given 2021-07-01 13:55:25 +09:00
BJRambo
468368e1ba Fix the warning error in PHP8.0 2021-06-23 19:08:37 +09:00
BJRambo
290066cf37 Fix #1738 카테고리가 마지막 한개만 표시되는 문제 고침 2021-06-23 18:50:54 +09:00
Kijin Sung
eb56785d54 Fix incorrect data type handling of thumbnail $height parameter
https://xetown.com/questions/1584581
2021-06-22 16:24:28 +09:00
Kijin Sung
98bbe02154 Version 2.0.12 2021-06-22 12:17:51 +09:00
Kijin Sung
68a6a1b748 Fix #1733 remove unnecessary image width restriction 2021-06-22 00:33:03 +09:00
Kijin Sung
c87ddd5894 Fix #1733 insufficient unset of layout CSS values inside editor iframe 2021-06-22 00:32:28 +09:00
Kijin Sung
02ef318da9 Update size guidelines for site default image 2021-06-21 21:55:40 +09:00
Kijin Sung
04b7f2e677 Add domain copy function 2021-06-21 21:47:18 +09:00
Kijin Sung
7dd9330b1e Add DocumentController::updateDocumentExtraVars()
- 특정 확장변수의 값을 쉽게 업데이트할 수 있는 메소드 제공
- 확장변수 추가 또는 변경 메소드 호출시 var_idx 또는 eid 중 하나만 전달해도 되도록 개선
2021-06-21 21:16:07 +09:00
Kijin Sung
786dace639 Fix various warnings in PHP 8.0 2021-06-20 22:25:16 +09:00
Kijin Sung
664a68fc2a Fix #1727 Recompile SCSS/LESS files when imported file is changed
- import된 파일 목록을 따로 보관해 두었다가, 그 중 하나라도 변경되었다면 다시 컴파일
- PHP의 stat cache 덕분에 성능 영향은 크지 않을 것으로 보이나, 모니터링 필요
2021-06-20 22:02:26 +09:00
Kijin Sung
f416b7c8a4 Add option to skip serialization when saving PHP data to file 2021-06-20 22:01:37 +09:00
Kijin Sung
c7f84a4dfe Fix #1725 display source filename on SCSS/LESS compile error 2021-06-20 02:21:34 +09:00
Kijin Sung
2c81be51c3 Fix #1704 detect color scheme as early as possible 2021-06-20 02:10:08 +09:00
Kijin Sung
93fa7a46ce Fix FileHandler::checkMemoryLoadImage() returning false if memory_limit is actually unlimited 2021-06-19 23:16:08 +09:00
Kijin Sung
633bc340e7 Fix #1707 support thumbnail height value of 'auto' in any type 2021-06-19 23:11:59 +09:00
Kijin Sung
856f2af743 Fix #1732 inconsistent 'target' attribute in popup menus 2021-06-19 22:30:18 +09:00
Kijin Sung
865e83a46a Fix #1722 incorrect language selection when domain setting conflicts with system setting 2021-06-19 21:55:14 +09:00
Kijin Sung
1ab02086bd Clean up spammer description text #1705 2021-06-19 21:35:05 +09:00
Kijin Sung
d82c53c531 Fix typos and incorrect action names #1705 2021-06-19 21:34:31 +09:00
Kijin Sung
2d913b2b1c Fix #1708 allow logged-in members to register device without re-submitting username and password 2021-06-19 21:19:40 +09:00
Kijin Sung
90d09cf4d2 Add more detailed explanation of iframe, embed, HTML class, and robot user-agent settings 2021-06-19 21:15:44 +09:00
Kijin Sung
c35d17c47e Fix #1712 merge iframe whitelist and object/embed whitelist 2021-06-19 20:59:36 +09:00
Kijin Sung
6a4d3d912c Fix #1706 support default="null" in XML query parser 2021-06-19 20:26:09 +09:00
Kijin Sung
1400895d27 Fix install error (25463447 regression) 2021-06-19 20:13:02 +09:00
Kijin Sung
65dc194ed4 Fix #1713 unable to set member extra vars value to empty string 2021-06-19 20:02:32 +09:00
Kijin Sung
0da2ef3c5f Fix #1718 missing translation of extra var name 2021-06-19 19:57:34 +09:00
Kijin Sung
254634479c Fix #1721 add some safeguards when saving system config file 2021-06-19 19:54:30 +09:00
Kijin Sung
b01a148675 Fix #1729 @import of external URL in concatenated CSS 2021-06-19 19:39:57 +09:00
Kijin Sung
858b3f68b1 Fix #1715 unnecessary dirname() in index.php 2021-06-19 19:29:39 +09:00
Kijin Sung
5a57471bd5
Merge pull request #1728 from mackeyhan/request_query_if
Add ifvar attribute to query condition
2021-06-19 19:28:06 +09:00
devdho
d6d705706c Add ifvar attribute to query condition 2021-06-17 11:24:58 +09:00
BJRambo
7ca6e98b14 한글자 닉네임이 회원정보 수정시 수정이 안되는 문제 고침 2021-06-16 13:31:28 +09:00
BJRambo
8c1fda8815 Fix #1714 분류 선택이후 분류를 미지정으로 글 수정시 권한이 없다는 문제 고침 2021-06-16 13:24:42 +09:00
BJRambo
3d2987023c PHP8.0 에서 잘못된 경로로 설치된 모듈때문에 캐시파일 재생성을 할 수 없던 문제 고침 2021-06-11 12:51:29 +09:00
BJRambo
960d0018d0 98267d90d5 보안 숫자 검사하지 않고 intval 처리 하여 새 그룹 등록 여부 확인 2021-05-30 19:29:20 +09:00
BJRambo
98267d90d5 Fix #1719 친구 등록이 되지 않던 문제 고침 2021-05-30 19:14:24 +09:00
Kijin Sung
621e246530 Hide unnecessary status names from board config 2021-05-17 20:14:47 +09:00
Kijin Sung
f0df00a82d Fix fatal error when widget code contains invalid XML 2021-05-17 20:06:46 +09:00
Kijin Sung
7f3f50b851 Adjust list of fields returned by board API (fix #1711)
- 기존 파일이 윈도우 방식으로 줄바꿈되어 있어서 다량의 diff 발생
- 비밀글인 경우 회원번호 등을 추가로 숨김 처리
2021-05-14 23:26:08 +09:00
Kijin Sung
1c47785276 Support contenteditable="false" (fix #1710) 2021-05-14 23:14:28 +09:00
Kijin Sung
c6b6d71214 Remove outdated comment (see #1187) 2021-05-14 23:08:36 +09:00
Kijin Sung
bd075ee409 Add getBodyClassList() and removeBodyClass() methods to Context
https://xetown.com/questions/1569477
2021-05-14 22:40:38 +09:00
Kijin Sung
5160022a30 Fix #1703 incorrect default value for color scheme 2021-05-03 21:46:31 +09:00
Kijin Sung
408c2f60f1 Fix #1702 incorrect closing tag 2021-05-03 21:45:31 +09:00
Kijin Sung
762cea724a Delete help text about optional vs. full SSL 2021-05-03 21:44:23 +09:00
Kijin Sung
14f39f7a9f Exclude /vendor/bin/ when exporting via git
이 폴더 내에 있는 심볼릭 링크들은 zip으로 내보내기했다가 압축 해제할 때
정상적으로 처리되지 않을 가능성이 높으므로, zip 파일 생성시 제외합니다.

cf. https://xetown.com/questions/1565403
2021-05-03 21:42:15 +09:00
Kijin Sung
c9a46e1693 Version 2.0.11 2021-04-30 20:34:39 +09:00
Kijin Sung
c4b2de1a12 Restore mail transport again 2021-04-30 20:14:14 +09:00
Kijin Sung
e16fd61d4a Fix #1697 ncenterlite panel in editor iframe 2021-04-30 20:06:57 +09:00
Kijin Sung
49dde388fe Update composer dependencies 2021-04-30 19:57:32 +09:00
Kijin Sung
f99b38192b Merge branch 'master' into develop 2021-04-30 19:56:15 +09:00
Kijin Sung
c26e4ca0c0
Merge pull request #1700 from rhymix/dependabot/composer/rmccue/requests-1.8.0
Bump rmccue/requests from 1.7.0 to 1.8.0
2021-04-30 19:54:12 +09:00
Kijin Sung
ed5674eed3
Merge pull request #1701 from nemo9l/fix/sitemap-button-position
사이트 메뉴 편집 페이지 내의 사이트맵 추가, 다른 메뉴타입 설치 버튼 위치 조정
2021-04-30 19:52:43 +09:00
Kijin Sung
3293924a60
Merge pull request #1699 from nemo9l/fix/m.layout-thumbnail
Fix #1698 모바일 레이아웃의 썸네일을 PC 레이아웃 폴더에서 찾는 문제 고침
2021-04-30 19:52:10 +09:00
Ji Yong, Kim
be11422e08
사이트 메뉴 편집 페이지 내의 사이트맵 추가, 다른 메뉴타입 설치 버튼 위치 조정 2021-04-30 18:51:07 +09:00
Ji Yong, Kim
e5f309bad9
Fix #1698 보완: 모바일과 PC 레이아웃 구분 조건문 정리 2021-04-30 18:45:07 +09:00
dependabot[bot]
32ad623c7d
Bump rmccue/requests from 1.7.0 to 1.8.0
Bumps [rmccue/requests](https://github.com/rmccue/Requests) from 1.7.0 to 1.8.0.
- [Release notes](https://github.com/rmccue/Requests/releases)
- [Changelog](https://github.com/WordPress/Requests/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rmccue/Requests/compare/v1.7.0...v1.8.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-29 21:55:05 +00:00
Ji Yong, Kim
007389be79
Fix #1698 모바일 레이아웃의 썸네일을 PC 레이아웃 폴더에서 찾는 문제 고침 2021-04-30 02:26:10 +09:00
Kijin Sung
2e92fc4f40 Fix #1696 update_member_srl and update_nick_name fields are null when updater is not logged in 2021-04-27 21:38:15 +09:00
Kijin Sung
4460de58fd Add missing result fields to procFileIframeUpload
모바일 스킨에서 파일 업로드 자체구현할 때 종종 사용하는 액션인데
mp4 썸네일 주소 등 라이믹스에서 추가한 필드들이 반환되지 않아
스킨에서 연동하기 어려운 문제를 보완합니다.
2021-04-27 21:32:34 +09:00
Kijin Sung
4f41362efe Fix warning in PHP 8.0 2021-04-27 20:53:30 +09:00
Kijin Sung
7af083c6c9 Fix incorrect access to query results
https://xetown.com/questions/1562377
2021-04-27 20:52:43 +09:00
Kijin Sung
583604b845 Fix #1690 remove exec_html() that hasn't worked for 5 years anyway 2021-04-26 15:52:16 +09:00
Kijin Sung
86214cb0fa Return a more descriptive error when query result class is not found 2021-04-26 15:45:31 +09:00
Kijin Sung
32621dd34e Return a more descriptive error when module class is not found 2021-04-26 15:42:30 +09:00
Kijin Sung
3a4fb82666 Refactor BoardView::_makeListColumnList (fixes #1695) 2021-04-26 15:24:14 +09:00
Kijin Sung
c68f676342 Fix #1694 delete unnecessary query file 2021-04-26 00:20:39 +09:00
Kijin Sung
8c0532297b Remove unnecessary arguments from query 2021-04-26 00:19:38 +09:00
Kijin Sung
ce5dc45326 Allow class name to be specified when executing queries
PDO에는 결과를 어떤 클래스로 받아올지 선택하는 기능이 있는데 (기본값 stdClass)
executeQuery()로 쿼리를 실행할 때도 이 기능을 활용할 수 있도록 개선합니다.
stdClass를 받아와서 속성들을 추출한 후 documentItem에 도로 집어넣는 등
비효율적인 부분을 추후 개선하는 데 도움이 될 것으로 예상합니다.
2021-04-25 13:18:47 +09:00
conory
1d9033742a 검색옵션이 뒤죽박죽으로 표시될 수 있는 문제 수정
언어코드 이름이 모두 search_target_list로 같기에 향후 코어나 서드파티에 의해 호출 순서가 바뀌면 다른 모듈의 $lang->search_target_list 변수가 표시될 수 있다.
2021-04-24 11:50:39 +09:00
Kijin Sung
2330a5d6fd Merge status and is_secret columns in comment list view 2021-04-20 22:40:41 +09:00
Kijin Sung
76f3376670 Add getStatus() and getStatusText() methods to document and comment for easy management 2021-04-20 22:38:42 +09:00
Kijin Sung
4a34b3dfa8 Accommodate standalone=auto setting in other relevant places 2021-04-20 21:52:06 +09:00
Kijin Sung
741a714abd Set standalone attribute to 'auto' if new class syntax is used in module.xml
- 새로 추가된 클래스 문법 사용시 standalone 속성 기본값은 true가 아닌 auto로 지정

- standalone 속성의 의미는 아래와 같음
  - true: 항상 접근 허용 (기존 방식으로 선언한 액션의 기본값)
  - false: mid가 소속 모듈과 일치하거나, admin 모듈인 경우에만 접근 허용
  - auto: module 또는 mid가 소속 모듈과 일치하거나, admin 모듈인 경우에만 접근 허용
    (즉, false와 비슷하지만 exec_json 함수 등에서 module+act로 호출하는 경우에는
    mid가 없더라도 module만 일치하면 호출할 수 있도록 허용하여 개발 편의를 높임)

- 단, global_route 속성이 있는 경우 standalone 속성 기본값은 true임
  (전역 짧은주소는 mid 없이 호출될 수밖에 없으므로)
2021-04-20 21:45:21 +09:00
Kijin Sung
f98964467c Always use 'fill' thumbnail type by default 2021-04-19 01:32:08 +09:00
BJRambo
e7f3f75839 알림센터 목록 수 조정 옵션 추가 2021-04-16 17:16:45 +09:00
BJRambo
34db077871 주석의 잘못된 리턴타입 변경 2021-04-16 16:40:13 +09:00
BJRambo
9945cc2562 Fix #1689 알림센터의 z-index 값이 먹지 않던 문제 고침 2021-04-16 14:57:01 +09:00
Kijin Sung
a6ace52c9e Version 2.0.10 2021-04-13 00:36:28 +09:00
Kijin Sung
56aed1fb7b Fix #1685 보완: 익명 추천 및 스크랩시 회원정보를 처음부터 DB에 저장하지 않도록 변경 2021-04-12 23:26:57 +09:00
Kijin Sung
e4f2d8ec25 Remove unnecessary parameter to commit() 2021-04-12 23:15:35 +09:00
Kijin Sung
57dd3dd1c7 Fix unreliable behavior of procMemberModifyEmailAddress() 2021-04-12 23:13:40 +09:00
Kijin Sung
a85f1bf1f8 Merge branch 'pr/youdontknowit' into develop 2021-04-12 23:01:40 +09:00
Kijin Sung
827499bee3 Fix random content being replaced for widget output if skin path does not exist 2021-04-12 22:48:05 +09:00
Kijin Sung
06f23f3b3b Update unit tests for 73695ccd 2021-04-12 22:23:34 +09:00
Kijin Sung
73695ccdd2 For backward compatibility, allow both GET and POST if an action does not specify method 2021-04-12 22:21:58 +09:00
Kijin Sung
9a70726be2 Fix #1680 fallback to default skin if ncenterlite skin does not contain required template file 2021-04-12 21:33:54 +09:00
Kijin Sung
6780125174 Fix #1674 Preserve extra_vars when updating document 2021-04-12 21:26:33 +09:00
Kijin Sung
85a337f0d3 Preserve existing member extra_vars when updating 2021-04-12 21:19:21 +09:00
Kijin Sung
62d9befb0d Support custom classes in module.xml 2021-04-12 21:03:03 +09:00
Kijin Sung
45efb781ea Fix REQUEST_METHOD checking not working for class types that aren't controller
controller 타입이 아닌 액션에서는 method를 제한하더라도 적용되지 않는 문제 수정
2021-04-12 20:43:40 +09:00
Kijin Sung
8e4bfdc1a7 모듈 아래에 네임스페이스를 넣을 경우 module_path, module 변수가 잘못 세팅되는 문제 수정 2021-04-12 16:58:59 +09:00
Kijin Sung
b27617c854 Fix warning in PHP 8.0 2021-04-10 21:13:13 +09:00
BJRambo
da57baef8f 사용되지 않는 변수 지움 2021-04-10 19:14:11 +09:00
BJRambo
b7eaab3fc7 Fix #1683 모바일 스킨의 설정이 PC와 동일한 반응형 스킨 사용 옵션일 경우 재대로 작동되지 않는 문제 고침 2021-04-10 19:12:19 +09:00
BJRambo
9d5795ca93 delete to not use variable 2021-04-10 18:51:21 +09:00
BJRambo
579beca876 알림 수신관련 팝업시 작업을 완료하고 창을 닫도록 수정 2021-04-10 18:42:00 +09:00
BJRambo
c3f2b678ea Merge branch 'develop' of github.com:rhymix/rhymix into pr/youdontknowit 2021-04-10 18:32:10 +09:00
BJRambo
28e0960eb3 Merge branch 'develop' of github.com:rhymix/rhymix into develop 2021-04-10 18:07:51 +09:00
BJRambo
eb92d138c3 잘못된 태그 방식 사용 정리 2021-04-10 18:07:33 +09:00
BJRambo
87d725b8be 구독관련 팝업 뜰 경우 디자인 변경 2021-04-10 18:06:52 +09:00
Kijin Sung
1897e6e607 Fix English README too 2021-04-10 16:24:52 +09:00
Kijin Sung
577f902b49 설치 환경, 개발 참여 안내문 등의 링크를 공식 매뉴얼 주소로 대체 2021-04-10 16:22:20 +09:00
Kijin Sung
bc7f8a73c3 ModuleObject::getInstance() 주석의 반환타입을 static으로 바꾸어 에디터가 제대로 인식하도록 개선 2021-04-10 16:18:53 +09:00
BJRambo
d8eba515b6 Fix #1685 스크랩 익명 기능이 동작하도록 고침 2021-04-10 02:43:14 +09:00
BJRambo
06ac1cd6d5 unset to private member info when load to getMyNotifyListTpl 2021-04-10 02:23:11 +09:00
Kijin Sung
578cd58e2e
Merge pull request #1681 from YJSoft/patch-2
Update Cloudflare IP range list
2021-04-09 21:47:05 +09:00
YJSoft
6f99db6953
Update Cloudflare IP range list
Apr 8, 2021:
104.16.0.0/12 removed from ips-v4
104.16.0.0/13 added to ips-v4
104.24.0.0/14 added to ips-v4
2021-04-09 13:01:12 +09:00
conory
80e0498425 관리자에게만 디버그 정보 표시 설정시 아예 표시되지 않는 문제 수정
isEnabledForCurrentUser() 에서 Context::get('logged_info') 사용되기에 self::set('logged_info', ..) 이후에서 실행되어야함
2021-04-09 01:38:33 +09:00
Kijin Sung
f0085f816e Version 2.0.9 2021-03-31 21:30:21 +09:00
Kijin Sung
475ca19ee9 Add board name as og:article:section 2021-03-31 21:04:05 +09:00
Kijin Sung
4bf232569c Fix #1663 add meta tag for author 2021-03-31 21:01:07 +09:00
Kijin Sung
b7c3aa1790 Fix #1666 add triggers before/after addFriend and deleteFriend 2021-03-29 20:40:29 +09:00
Kijin Sung
bff045f585 Fix #1665 external page not loaded in mobile if mobile page path is not set, contrary to documentation 2021-03-29 20:24:36 +09:00
Kijin Sung
b3725443c5 Fix body class not being set when in auto mode (#1558 regression) 2021-03-29 20:19:48 +09:00
Kijin Sung
3c2e664fe8 Always display the module that a file belongs to 2021-03-29 01:27:51 +09:00
Kijin Sung
35f1e8855a
Merge pull request #1669 from 0x00000FF/develop
Branch Switching for CI Pass #1668
2021-03-28 21:49:42 +09:00
Kangjun Heo == P.Knowledge
d83656d6ce
Merge pull request #1 from 0x00000FF/patch-1
Branch switching for CI pass
2021-03-28 21:00:38 +09:00
Kangjun Heo == P.Knowledge
23b967647f
PHP8에서 session.auto_start 체크가 안되는 경우
intval로 변환하여 0이 나오도록한 뒤 0과 strict type check
2021-03-28 20:41:33 +09:00
Kangjun Heo == P.Knowledge
19e7f6b3e8
PHP8에서 session.auto_start 체크가 안되는 경우
#1667 이슈 관련
2021-03-28 20:36:23 +09:00
Kijin Sung
532e172d41 Fix #1658 show error message if debug is enabled for current user 2021-03-18 00:27:15 +09:00
Kijin Sung
5ca8f3f732 Fix #1661 partially empty address being accepted 2021-03-18 00:21:08 +09:00
Kijin Sung
a508f32edf Always show email change button, and clean up unnecessary <style> 2021-03-17 23:57:57 +09:00
Kijin Sung
1003f0ea49 Fix #1642 Fix #1647 보완
주의: 여기서 Context가 아닌 Session을 참조하면 무한루프에 빠지면서 memory_limit을 초과할 수 있음
2021-03-17 23:54:18 +09:00
Kijin Sung
fef8b10ce6 Fix #1642 Fix #1647 distinguish not-logged-in state before session start and after session start 2021-03-17 23:40:29 +09:00
Kijin Sung
2ffc19cca3 Fix #1643 don't use full short URL for admin pages 2021-03-17 23:32:17 +09:00
Kijin Sung
1db10e4ada Fix #1652 non-member vote not working for comments 2021-03-17 23:22:41 +09:00
Kijin Sung
d94226ffb1 Disable reCAPTCHA if keys are not set 2021-03-17 23:14:37 +09:00
Kijin Sung
7c652d06f3 Return error message when reCAPTCHA is enabled without site key and secret key 2021-03-17 23:12:07 +09:00
Kijin Sung
eca6adba2c Add validator message to spamfilter module templates 2021-03-17 23:11:42 +09:00
Kijin Sung
a107ef1b90 Fix #1662 missing color scheme class on <body> when cookie exists 2021-03-17 23:01:43 +09:00
Kijin Sung
a64b91f72d Change default unregistered domain action to 'display' 2021-03-14 15:49:33 +09:00
Kijin Sung
72e7532764 Fix compatibility with PBKDF2 hashes with iteration counts that are not zero-padded 2021-03-14 00:26:15 +09:00
Kijin Sung
715e8d781c Clean up references to travis in all tests 2021-03-12 20:53:40 +09:00
Kijin Sung
1a824ae652 Set github actions to use Ubuntu 18.04 instead of latest 2021-03-12 20:36:36 +09:00
Kijin Sung
99334a1d8d Fix MySQL login issue in Github CI 2021-03-12 20:16:59 +09:00
BJRambo
286eb47efb 일부 환경에서 그룹환경 설정이 변경되지 않는 문제 고침 2021-03-09 09:04:48 +09:00
Kijin Sung
77b522249d Simplify autoloader logic 2021-03-08 16:51:39 +09:00
Kijin Sung
ae60728efc Don't start session in CLI 2021-03-07 18:22:01 +09:00
Kijin Sung
fea902c946 Remove unnecessary pass-by-reference 2021-03-07 18:20:00 +09:00
Kijin Sung
c6833ba880 Remove query string from meta image path before checking 2021-03-05 14:29:40 +09:00
Kijin Sung
a93a6097a7 Merge remote-tracking branch 'upstream/develop' into develop 2021-03-05 13:57:12 +09:00
Kijin Sung
367e7440be Don't overwrite OpenGraph tags already set by user 2021-03-05 13:56:35 +09:00
Kijin Sung
5ddb883856 Hide editor toolbar by default on mobile when composing new message 2021-03-02 23:24:04 +09:00
Kijin Sung
008af51873 Fix #1641 error in PHP 8.0 while parsing widgetstyle XML info 2021-03-02 22:28:28 +09:00
Kijin Sung
be1fbc9d65 Version 2.0.8 2021-02-28 11:16:47 +09:00
Kijin Sung
c52e2fa9e3 Reorganize default admin menu
- 페이지 모듈을 콘텐츠 메뉴로 끌어올림
- 데이터 들여오기를 고급 메뉴로 내림
- 설치시 고급 메일 발송 모듈과 알림 센터를 즐겨찾기에 기본 등록
2021-02-27 19:55:53 +09:00
Kijin Sung
c5429f0c43 Simplify default menu structure created on install 2021-02-27 19:50:06 +09:00
Kijin Sung
0976e7fa94 Fix #1640 double escape in category list 2021-02-26 22:04:46 +09:00
Kijin Sung
c5aaf45c24 Add unit test for list_count = 0 2021-02-26 21:58:38 +09:00
Kijin Sung
6b6c0eacfc Fix SQL error when list count is 0 2021-02-26 16:25:11 +09:00
Kijin Sung
53d54fbeaf Fix #1639 various errors in PHP 8.0 2021-02-24 21:04:29 +09:00
Kijin Sung
0cff0c2456 #1636 보완 2021-02-24 20:50:32 +09:00
Kijin Sung
91b03795dc Fix rx_ajax not working when a form contains file uploads 2021-02-24 11:02:29 +09:00
Kijin Sung
fc4d8a6824 Fix #1634 bypass spamfilter when sending messages from core modules 2021-02-23 22:01:32 +09:00
Kijin Sung
46ef2437b7 Simplify interval setting in spamfilter module 2021-02-23 21:54:49 +09:00
Kijin Sung
9df05d20db Remove trackback integration from spamfilter module 2021-02-23 21:51:45 +09:00
Kijin Sung
bc448af4fd Fix #1636 replace user lang in board list options 2021-02-23 21:13:52 +09:00
Kijin Sung
459fe2d959 Fix #1630 short URL for file download conflicts with other nginx directives
다운로드 짧은주소는 /files/download/123/456/filename.jpg 와 같은 형태를 띠므로
nginx에서 특정 확장자에 캐싱 헤더 추가 등의 설정을 걸어놓은 경우
해당 설정이 짧은주소보다 먼저 적용되어 짧은주소에서 404 오류가 나는 문제 해결.
2021-02-23 20:40:00 +09:00
Kijin Sung
d3e390e3fe Prepare for downgrade from future version where domain_srl may be duplicate 2021-02-23 17:00:21 +09:00
Kijin Sung
e423cba24d Use Origin header before Referer to check CSRF
OWASP에서는 Referer 헤더보다 Origin 헤더를 먼저 체크하는 것을 권장합니다.
Referer가 비어 있는 경우에도 Origin 헤더에는 유용한 정보가 들어 있을 수 있기 때문입니다.

https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html
2021-02-23 16:51:46 +09:00
Kijin Sung
6a568e8e79 Fix #1635 uninitialized variables in procLayoutAdminCopyLayout() 2021-02-23 15:37:52 +09:00
Kijin Sung
d0916abf7f Fix unnecessary cast to array after executeQuery() 2021-02-23 15:33:56 +09:00
Kijin Sung
80afa6720c
Merge pull request #1624 from shydah/pr/manage-document-popup
Resolve #1595 - 게시물 관리 사용 시 게시판이 기본 선택되도록 개선
2021-02-22 22:32:58 +09:00
Kijin Sung
e8c5ee02d2 Fix error in PHP 8.0 if $INPUT_ERROR has more than one dimension 2021-02-22 22:32:36 +09:00
Kijin Sung
b2af6eeed7 #1624 보완 2021-02-22 22:25:19 +09:00
Kijin Sung
4fe083b3c7 Fix #1625 failure to preserve comment with children when parent is moved to trash 2021-02-22 22:00:41 +09:00
Kijin Sung
0188bb817b Fix #1629 error when more than one menu is named '__ADMINMENU_V17__' 2021-02-22 21:27:20 +09:00
Kijin Sung
9412cc4a22 Fix #1628 error in PHP 8.0 in editor component setup screen 2021-02-22 21:11:39 +09:00
Kijin Sung
82398be24a Fix #1633 mobile list_count and page_count not being recognized 2021-02-22 21:06:52 +09:00
Kijin Sung
73c35e2f31 Call Debug::isEnabledForCurrentUser() in Context::init() after session start 2021-02-22 21:03:51 +09:00
Kijin Sung
7e30c7b02e Fix #1626 incorrect relative URL in advanced mailer module 2021-02-19 01:07:44 +09:00
Kijin Sung
05cef078f2 Fix #1627 suspected errors in PHP 8.0 2021-02-19 01:05:28 +09:00
Chanyoung Oh
7d22aad8d1 Remove duplicate declared function
* Remove duplicate `insertSelectedModule` function declaration
2021-02-18 11:14:38 +09:00
BJRambo
bc4abef975 레이아웃 메뉴 설정 항목의 초기화를 반복문 밖에서 하도록 고침 2021-02-18 01:25:55 +09:00
BJRambo
a6e52f9f4f b0a72bb222 에서 잘못 선언한 변수들 고침 2021-02-18 00:37:40 +09:00
BJRambo
b0a72bb222 #1627 레이아웃 버전이 0.1 일경우 PHP8.0에서 발생하는 오류 고침 2021-02-17 23:59:18 +09:00
Chanyoung Oh
b483992c83 Fix bug with non-existent mid
* Use is_null instead of is_bool to check module
2021-02-16 14:33:10 +00:00
Chanyoung Oh
400bbeeb6a Update skins to use mid instead of module_srl
* Update XEDITION, XE Default skin to use mid instead of module_srl
when opening document management popup
2021-02-16 14:11:25 +00:00
Chanyoung Oh
6c51f3234e Set target module based on article list when managing documents 2021-02-15 14:59:41 +00:00
Chanyoung Oh
a75f0b1c3b Update skins to provide module_srl - Issue #1595
* Update default skins (XEDITION, default) to provide `module_srl` to
document management popup
2021-02-13 13:49:07 +00:00
Chanyoung Oh
4fac931f28 Initialize category list if module_srl is provied - Issue #1595 2021-02-13 13:40:22 +00:00
Kijin Sung
acda40eba9 Fix #1616 error in PHP 8.0 2021-02-12 16:30:46 +09:00
Kijin Sung
1a1af16a3a Fix #1615 remove unnessary $friend_count variable 2021-02-11 21:42:42 +09:00
Kijin Sung
00519cce5d Fix #1612 error in PHP 8.0 2021-02-11 20:25:05 +09:00
Kijin Sung
7df902a282 Add mid to declare popup URL 2021-02-11 20:22:16 +09:00
Kijin Sung
68829a3427 Fix #1614 return numerical array by default in getModuleSrlByMid() 2021-02-11 20:18:26 +09:00
Kijin Sung
906b20e17e Load updated lang code cache immediately after calling makeCacheDefinedLangCode() 2021-02-11 20:14:57 +09:00
Kijin Sung
fb374a36ca Fix double escape of lang code in index module title 2021-02-11 20:03:25 +09:00
Kijin Sung
8c2bfd8297 Fix #1611 query error in declared document/comment list page 2021-02-10 15:57:13 +09:00
Kijin Sung
6b956d2e5b Allow admin to report (declare) even if it's the same IP 2021-02-10 15:56:47 +09:00
Kijin Sung
e8e6546067 Fix #1608 leave copy of notice in board manager's message box 2021-02-10 00:49:52 +09:00
Kijin Sung
f4758b7570 Fix #1610 memory leak in initial debug status check 2021-02-10 00:27:04 +09:00
Kijin Sung
9c77f9593d Fix warning in PHP 8.0 2021-02-09 23:53:00 +09:00
Kijin Sung
9b714acb55 Show memory usage in debug panel 2021-02-09 23:52:35 +09:00
Kijin Sung
08f8e0ccd4 Increase codeception timeout to 180s 2021-02-09 22:11:09 +09:00
Kijin Sung
958c7a7ce0 Don't join document_extra_vars again if not sorting by extra_vars 2021-02-09 22:00:40 +09:00
Kijin Sung
6b7486e74f Add 'ifvar' attribute to most query elements
XML 쿼리에서 'ifvar' 속성을 사용하여, 특정 변수가 있을 때만 유효한 테이블이나
컬럼, 인덱스 힌트 등을 지정할 수 있도록 합니다. 어떤 변수를 넣는지에 따라
<condition> 뿐 아니라 <table>, <column>, <index_hint? 등의 적용 여부도
XML 쿼리 수정 없이 자유롭게 컨트롤할 수 있게 됩니다.
2021-02-09 21:58:07 +09:00
Kijin Sung
1289776c97 Remove debug data from previous request (causes memory overage in PHP 8.0) 2021-02-09 19:33:47 +09:00
Kijin Sung
ae163b95d4 Fix error in video thumbnail command (#1552 regression) 2021-02-09 19:29:15 +09:00
Kijin Sung
c6f728cec6 Fix warnings in PHP 8.0 related to editor components 2021-02-09 01:21:53 +09:00
Kijin Sung
c5ceafc841 Fix debug disabled if first error or warning occurs before session start 2021-02-09 01:21:33 +09:00
Kijin Sung
b2933b7ae2 Fix #1605 incorrect lang reference in spamfilter module 2021-02-08 21:42:32 +09:00
Kijin Sung
0986ddf87d Fix #1607 denied/limited reason not being saved as extra vars 2021-02-08 21:40:39 +09:00
Kijin Sung
588520ff4b Fix warnings in PHP 8.0 2021-02-08 21:27:06 +09:00
Kijin Sung
686699c2ee Fix warning in PHP 8.0 2021-02-08 21:16:49 +09:00
Kijin Sung
ebe806f7a5 Fix warnings in PHP 8.0 2021-02-07 15:29:28 +09:00
Kijin Sung
2cf2ce2d67 Fix #1604 warnings and errors in PHP 8.0 in dispFileAdminList 2021-02-07 15:29:05 +09:00
Kijin Sung
c97edded9d Always load is_notice column 2021-02-06 22:10:54 +09:00
BJRambo
9cac59095b 모바일 문서 페이지 접속시 PC와 동일한 스킨 사용시 템플릿 문서를 찾지 못하는 문제 고침 2021-02-06 12:32:29 +09:00
Kijin Sung
0f33fa6539 Version 2.0.7 2021-02-05 21:37:44 +09:00
Kijin Sung
cd3b6f090d Remove blacklisted reason from lang files 2021-02-05 21:34:48 +09:00
Kijin Sung
20871055e4 Support either/both username and password for Redis #1602 2021-02-05 21:04:20 +09:00
Kijin Sung
2f0b6433bc Fix #1602 support username/password for Redis cache 2021-02-05 21:01:04 +09:00
Kijin Sung
80b235001e Add buttons to clear apcu and opcache 2021-02-05 20:45:11 +09:00
Kijin Sung
9160b867aa Fix incorrect relative URLs in other JS libraries #1601 2021-02-05 11:50:13 +09:00
Kijin Sung
5c0c4a3f76 Fix #1601 relative path in ui.colorpicker 2021-02-05 11:45:01 +09:00
Kijin Sung
20e9009b9b Add more items to reserved word list 2021-02-04 23:40:33 +09:00
Kijin Sung
ccdbddf60b Fix unit test for Validator message (a4ab4f4b) 2021-02-04 22:38:42 +09:00
Kijin Sung
0d43210c94 Fix error in PHP 8.0
https://xetown.com/questions/1523166
2021-02-04 22:33:25 +09:00
Kijin Sung
aba959f673 Fix incorrect parsing of allowed_extensions in file upload config
https://xetown.com/questions/1523089
2021-02-04 21:09:50 +09:00
Kijin Sung
a4ab4f4b03 Fix misleading error message 2021-02-04 21:09:23 +09:00
Kijin Sung
b9cb5f429a Use savepoints for nested transactions
- XE에서 사용하던 savepoint 방식을 복원
- 트랜잭션 안에서 commit이 무시되더라도 해당 사실을 알리는 로그를 남기도록 함
2021-02-04 16:39:09 +09:00
Kijin Sung
76c6ef56f2 Treat $_SESSION specially in template code
https://xetown.com/questions/1522739
2021-02-04 15:58:32 +09:00
Kijin Sung
0d74df4dc4 Fix #1597 inconsistent URL structure in widget editing functions 2021-02-03 21:05:44 +09:00
BJRambo
04147e7606 Fix #1599 카테고리 권한을 검사하지 않던 문제 고침 2021-02-03 20:05:45 +09:00
Kijin Sung
02499c5a2a Fix legacy compatibility of ncenterlite user config 2021-02-03 15:15:37 +09:00
BJRambo
8dfd2023f4 불필요한 줄바꿈 제거 2021-02-03 14:21:01 +09:00
BJRambo
8c8a163561 유저 설정값을 view에서 미리 처리하여 전달 2021-02-03 13:35:48 +09:00
BJRambo
041860f9ee 불필요한 조건문 삭제 2021-02-03 12:58:27 +09:00
BJRambo
c6614a9d02 불필요한 스키마 제거 2021-02-03 12:33:23 +09:00
BJRambo
b6a7b8bd7f 0e9bab29f6 보완 2021-02-03 12:32:44 +09:00
BJRambo
ddc64e54eb 모바일에서도 유저알림 세팅을 PC와 동일하게 설정하도록 고침. 2021-02-03 12:31:52 +09:00
BJRambo
0e9bab29f6 Fix error in ncenterlite userconfig in PHP8.0 2021-02-03 11:43:34 +09:00
Kijin Sung
28352d86d1 Add MenuAdminModel::getMenuInfo() 2021-02-02 22:06:49 +09:00
Kijin Sung
48c357a607 Fix 1596 don't use cache for mid list if there are arguments 2021-02-02 16:18:19 +09:00
Kijin Sung
ca5d90fd07 Make rx_ajax forms more customizable 2021-02-02 16:04:53 +09:00
Kijin Sung
2270cf2729 Fix #1593 always include ORDER BY column in the list of columns to select 2021-01-31 21:57:59 +09:00
Kijin Sung
2ac747bf70 Fix #1592 include extra_sort.value in column list 2021-01-31 17:32:36 +09:00
Kijin Sung
0873b371a1 Change some other instances of problematic GROUP BY into SELECT DISTINCT 2021-01-31 16:27:37 +09:00
Kijin Sung
b43fbc0ace Use DISTINCT instead of GROUP BY in extra vars query #1592 2021-01-31 16:14:36 +09:00
Kijin Sung
592f898371 Fix warning in XEDITION skin if there are no categories 2021-01-31 16:14:08 +09:00
Kijin Sung
9c9629f7e1 Add core update notification to admin dashboard 2021-01-31 02:15:23 +09:00
Kijin Sung
d25690e3e9 Remove blacklist reason from admin layout 2021-01-31 01:51:22 +09:00
Kijin Sung
2d7a4069b0 Fix warning in PHP 8.0 2021-01-31 01:44:57 +09:00
Kijin Sung
9dc8476f5d Set $output->data to NULL if query returns no rows 2021-01-31 01:43:07 +09:00
Kijin Sung
800f323b9c Fix count error when searching by extra_vars
https://xetown.com/questions/1519425
2021-01-31 01:34:56 +09:00
Kijin Sung
6b0ef1f468 Fix #1589 remove unnecessary build directory 2021-01-30 21:23:30 +09:00
Kijin Sung
992a8d5914 Improve extra_vars handling when inserting or updating member info 2021-01-30 13:59:29 +09:00
Kijin Sung
0a8e1725a1 Fix #1588 missing configuration when calling getDocumentPage() 2021-01-30 11:52:03 +09:00
Kijin Sung
f35692ffcf Version 2.0.6 2021-01-29 23:27:59 +09:00
Kijin Sung
96b8960659
Merge pull request #1586 from kijin/pr/custom-signup-field-name
서명, 프로필 사진 등 일부 회원가입 항목들의 이름 변경 지원
2021-01-29 23:26:46 +09:00
Kijin Sung
4335da3975 Allow some signup field names to be customized 2021-01-29 22:43:17 +09:00
Kijin Sung
9228d3b8a9 Don't require user_id if member is inserted through other module
https://xetown.com/tips/1516822
2021-01-29 15:52:22 +09:00
Kijin Sung
4377c06d6b Fix incompatibilities found after removing signup ruleset 2021-01-29 15:41:41 +09:00
Kijin Sung
41ed1d7bec Fix importer module not saving documents/comments with empty password fields 2021-01-29 15:01:26 +09:00
Kijin Sung
957be16a25 Replace all wildcard columns with '1' in count-only subquery #1575 2021-01-29 14:40:28 +09:00
Kijin Sung
96eae68105 Reapply "Merge pull request #1580 from YJSoft/patch-1"
This reverts commit 9e55447045.
2021-01-29 10:40:05 +09:00
Kijin Sung
4bb823ddfe Disable exportpdf CKEditor plugin by default #1585 2021-01-29 10:32:59 +09:00
Kijin Sung
b388161c03 If there are multiple saved documents, only use one 2021-01-29 10:32:18 +09:00
Kijin Sung
53a3096591 Rearrange CKEditor full toolbar and remove extra buttons
- CKEditor 업데이트 후 새로 추가된 버튼들 때문에 메뉴 줄이 넘어가는 문제 수정
- 웹상에서 활용도가 높지 않은 플래시 버튼, 새 페이지 버튼 등을 제거
- 관련이슈: #1585
2021-01-29 10:30:15 +09:00
Kijin Sung
3467250e17 Fix missing variables in ConfigHelperTest 2021-01-29 00:42:25 +09:00
Kijin Sung
334b1cc277 Fix remainder of unit test warnings in PHP 8.0 2021-01-29 00:36:24 +09:00
Kijin Sung
e368cb2f2a Fix warnings in Debug class when config is empty 2021-01-28 23:34:15 +09:00
Kijin Sung
bfd0c66269 Fix undefined variables in Validator class 2021-01-28 23:26:33 +09:00
Kijin Sung
e1f1de8e49 Fix warning in PHP 8.0 if user-agent header is missing 2021-01-28 23:14:48 +09:00
Kijin Sung
8e56fe5912 Fix warning in PHP 8.0 during unit tests 2021-01-28 23:04:27 +09:00
Kijin Sung
c151191b73 Fix warning in PHP 8.0 2021-01-28 22:59:14 +09:00
Kijin Sung
cc318479b4 Fix warning in Context class if lang_type cookie is not set 2021-01-28 22:52:28 +09:00
Kijin Sung
ebe28cd884 Fix warning in debug class if config doesn't exist 2021-01-28 22:46:52 +09:00
Kijin Sung
678495d69e Fix failing install test in PHP 8.0 2021-01-28 22:41:32 +09:00
Kijin Sung
60465fb2db Fix various warnings in PHP 8.0 2021-01-28 22:32:56 +09:00
Kijin Sung
f46b41f437 Update unit tests for latest codeception 2021-01-28 21:53:44 +09:00
Kijin Sung
0db02281c9
Merge pull request #1583 from YJSoft/patch-1
회원 모듈 설정의 어색한 설명문 수정
2021-01-27 22:24:05 +09:00
YJSoft
9d4ee6f0ec
Fix description of member module setting
로그를 저장 -> 변경 기록을 저장
닉네임변경이력을 남기도록 할 수 있습니다 -> 닉네임 변경 이력을 확인할 수 있습니다
회원목록을 보기 원치 않을 경우 -> 회원목록에서 프로필 사진을 보기 원치 않을 경우

보다 명확한 문장으로 수정합니다.
2021-01-27 17:54:01 +09:00
BJRambo
9e55447045 Revert "Merge pull request #1580 from YJSoft/patch-1"
This reverts commit 73822f385b, reversing
changes made to 1ec6e1ec7a.
2021-01-25 10:57:16 +09:00
Johnny
73822f385b
Merge pull request #1580 from YJSoft/patch-1
Fix #1579 remove unnecessary $is_admin set
2021-01-25 10:48:56 +09:00
YJSoft
8affaba53b
Fix #1579 remove unnecessary $is_admin set 2021-01-25 09:55:45 +09:00
Kijin Sung
1ec6e1ec7a Change blacklist to 2-dimensional array
관리 편의를 위해 블랙리스트를 자료 종류별로 구분합니다.
단, 기존과 같이 Context::isBlacklistedPlugin()을 호출하면
자료 종류 구분 없이 블랙리스트 여부를 알려줍니다.
2021-01-24 11:39:42 +09:00
Kijin Sung
6b32bc6789 Fix #1573 add trackback module to blacklist 2021-01-24 11:03:06 +09:00
Kijin Sung
85a14ff0e3 Fix first thumbnail index not working in content widget 2021-01-24 11:02:45 +09:00
Kijin Sung
9bedd75a37 Wrap count query if there is a subquery column #1575 2021-01-24 11:00:09 +09:00
Kijin Sung
efcf6b1dfe Fix #1574 misleading message about error log path 2021-01-24 10:56:21 +09:00
Kijin Sung
1f054af288 Delete resize_image addon -- please use Photoswipe instead 2021-01-22 01:37:54 +09:00
Kijin Sung
658ca421f4 Remove resize_image addon from default enabled list 2021-01-22 01:28:57 +09:00
Kijin Sung
a3d2682744 Enable photoswipe addon by default, both on PC and mobile 2021-01-22 01:24:26 +09:00
Kijin Sung
e507cd9684 Don't enable member_extra_info addon when installing 2021-01-22 01:12:52 +09:00
Kijin Sung
d7b9e0aa46 Change === to == because size can be a string 2021-01-22 01:10:23 +09:00
Kijin Sung
1b1bff0303 Shorten addon name column 2021-01-22 01:08:02 +09:00
Kijin Sung
09a292440c Also restrict the charset if a column is defined as char(1) 2021-01-22 01:05:52 +09:00
Kijin Sung
2cec4ea6b4 Clean up utf8mb4 setting in default table schema 2021-01-22 01:01:58 +09:00
Kijin Sung
f751d59708 Use latin1 charset for ASCII-only columns that need to be short for indexing 2021-01-22 00:51:47 +09:00
Kijin Sung
9d040e10d7 Revert "Separate the indexes in module_trigger table"
This reverts commit 48ee04d54d.
2021-01-22 00:50:39 +09:00
Kijin Sung
48ee04d54d Separate the indexes in module_trigger table 2021-01-22 00:23:52 +09:00
Kijin Sung
aefa19e850 Fix SCSS imports with relative paths not working 2021-01-21 15:45:58 +09:00
Kijin Sung
8519f28170 Disable fail-fast in github workflows 2021-01-21 10:15:41 +09:00
Kijin Sung
2cdf9d0e2d Adjust loading priority of modules vs. plugins 2021-01-21 00:44:35 +09:00
Kijin Sung
14becbbad6 Fix extra comma in member.admin.controller.php 2021-01-21 00:41:09 +09:00
Kijin Sung
e877b87664 Remove ssl_actions and add rewrite_level to inline JS 2021-01-20 23:55:09 +09:00
Kijin Sung
64baf4e8e3 Remove ssl_actions and add rewrite_level to inline JS 2021-01-20 23:53:58 +09:00
Kijin Sung
e1fabe4242 Add option to log out of all other devices 2021-01-20 23:15:07 +09:00
Kijin Sung
2944bfc71a Add icon option to menu item 2021-01-20 22:43:14 +09:00
Kijin Sung
537a500dbf Completely remove layout batch setting code from layout module #1186 2021-01-20 22:04:39 +09:00
Kijin Sung
d75c904e6e Fix no response after saving layout config #1186 2021-01-20 22:04:16 +09:00
Kijin Sung
830b77bb64 Add option to change layout of entire menu #1186 2021-01-20 21:57:56 +09:00
Kijin Sung
0e9c234bc5 Clean up color scheme detection code #1570 2021-01-20 21:15:20 +09:00
Kijin Sung
27cbf9588a Fix member group info not being cleared properly
https://xetown.com/questions/1512107
2021-01-20 19:38:07 +09:00
Kijin Sung
485e507f31 Clean up member insert/update routine 2021-01-20 19:37:19 +09:00
Kijin Sung
1bbd6cdb5f Force use of latest cacert.pem from Mozilla 2021-01-20 00:56:23 +09:00
Kijin Sung
0079fc7b38 Remove condition not needed in PHP 7 2021-01-20 00:55:57 +09:00
Kijin Sung
6f8a252cd1 Fix smtp security=none not being recognized 2021-01-20 00:34:23 +09:00
Kijin Sung
1e77fcdcf9 Version 2.0.5 2021-01-19 23:29:03 +09:00
Kijin Sung
d5160c28ce Pass RX_REQUEST_URL directly to the Router 2021-01-19 23:28:13 +09:00
Kijin Sung
8964891387 Disable rewrite level 2 if test request fails 2021-01-19 23:18:38 +09:00
Kijin Sung
dd561d9159 Make proper URL if download URL is a partial relative URL 2021-01-19 23:02:17 +09:00
Kijin Sung
af65e81d3e Add preload="none" to videos that are not accessed directly #1557 2021-01-19 22:49:41 +09:00
Kijin Sung
cc871c5474 Shorten ipaddress field to 60 chars in most modules 2021-01-19 21:59:33 +09:00
Kijin Sung
069ac6f679 Shorten indexed varchar columns, remove meaningless size on some integer columns 2021-01-19 21:46:44 +09:00
Kijin Sung
8cd650abfe Fix CKEditor auto dark mode not working in iOS with divarea plugin
https://xetown.com/questions/1506918
2021-01-19 21:37:03 +09:00
Kijin Sung
77403f384a Fix #1569 add option to control whether notices are included in combined board 2021-01-19 21:22:31 +09:00
Kijin Sung
06f973d227 Clean up createImageFile() 2021-01-19 21:13:49 +09:00
Kijin Sung
71d71a886c Set 'fill' as default thumbnail method 2021-01-19 17:42:00 +09:00
Kijin Sung
175b797ee1 Support more types of image resizing
기존에 지원하던 crop, ratio 외에 fill, stretch, center 옵션을 추가
2021-01-19 17:23:43 +09:00
Kijin Sung
015238d75f Remove other unnecessary function checks 2021-01-19 14:45:32 +09:00
Kijin Sung
adb6203f1b Always use imagecreatetruecolor(), we're not using PHP 4.0 anymore :) 2021-01-19 14:42:11 +09:00
Kijin Sung
aeba5b2192 Remove meaningless imagedestroy() with undefined variable 2021-01-19 14:24:01 +09:00
Kijin Sung
12ccb356b0
Merge pull request #1566 from mackeyhan/dbquery-patch
Fix 'not in' operation
2021-01-18 16:31:33 +09:00
Kijin Sung
1f34c33e29 Remove unnecessary site_srl from several other modules 2021-01-18 16:25:02 +09:00
Kijin Sung
972fbc9ca6 Remove unnecessary site_srl from member module 2021-01-18 15:21:00 +09:00
mackeyhan
e64cbfbb9e
Fix 'not in' operation 2021-01-18 15:18:25 +09:00
Kijin Sung
9a2cbb8b93 Remove code for adding and removing users from virtual sites 2021-01-18 14:58:44 +09:00
BJRambo
cbae967a8c 캐시 비울때 불필요한 파라미터 삭제
XE 서드파티모듈 호환성을 위한 더미 메소드에서 site_srl 을 포함하여 넣을 가능성이 다분히 있습니다. 해당 규칙을 유지하기 위해 site_srl = 0 으로 살리되 메소드는 실제 사용하지 않도록 하고, 원래 해당 액션이 void 이기 때문에 return 을 사용하지 않고 라이믹스 코어의 고유 캐시 정보 처리하는 메소드를 호출하도록 하였습니다.
2021-01-16 11:38:32 +09:00
Kijin Sung
3e37d8f802 Fix #1564 nickname hidden if display_author setting doesn't exist 2021-01-15 21:30:32 +09:00
Kijin Sung
68ecf64a6b Add user-configurable index hints to getComment/DocumentListByMemberSrl 2021-01-15 00:40:39 +09:00
Kijin Sung
91a934b7bf Fix #1563 missing array check in skin_config.html 2021-01-14 22:45:00 +09:00
Kijin Sung
f07afe9c58 Unset $this->_last_stmt before next query 2021-01-14 22:39:43 +09:00
Kijin Sung
f190e07f83 Make order type customizable in getCommentListByMemberSrl query 2021-01-14 18:17:40 +09:00
Kijin Sung
1a89c5e0d6 Rename FCM/APNs
PC용 브라우저나 iOS에서도 FCM을 사용할 수 있으므로,
모바일 운영체제 명칭이 아닌 서비스 명칭을 사용하도록 변경합니다.
2021-01-14 11:37:55 +09:00
Kijin Sung
57e702daea Fix count() error in PHP 8.0 in content widget
https://xetown.com/questions/1508131
2021-01-14 01:14:27 +09:00
Kijin Sung
03e5909036 Add ability to configure index hint with variable
See #1560
2021-01-14 00:40:57 +09:00
Kijin Sung
0c6bc8fbb1 Fix warning in PHP 8.0 when $config->layout_srl is not set 2021-01-14 00:39:59 +09:00
Kijin Sung
4805a1864b Append query ID and IP address as a /* comment */ to every query, if enabled in debug settings 2021-01-13 22:14:15 +09:00
Kijin Sung
fcc3db3a7a Fix #1561 space before |cond in XEDITION skin 2021-01-13 20:38:26 +09:00
Kijin Sung
fa64d5a087 Fix very outdated code in RSS parser part of content widget 2021-01-12 22:55:04 +09:00
Kijin Sung
b837e3e69e Fix layout cache not being refreshed when info.xml is edited 2021-01-12 10:44:19 +09:00
Kijin Sung
7e0e6bc25f Fix error in PHP 8.0 2021-01-12 10:38:05 +09:00
Kijin Sung
a51ea6fbe4 Fix comment editor skin not being saved in module part config
https://xetown.com/questions/1506918
2021-01-12 01:30:16 +09:00
BJRambo
57b01e7914 Fix #1559 error in PHP 8.0 2021-01-11 21:19:47 +09:00
Kijin Sung
c18e0a7225 \#1558 보완
- 설정값 명칭을 기존에 사용하던 쿠키값과 동일하게 auto, light, dark로 통일하여 혼동을 방지합니다.
- 지나치게 긴 설명문보다는 옵션 명칭 자체가 충분히 의미를 전달할 수 있도록 합니다.
  - 설명문을 길게 써야 할 경우 매뉴얼에 넣어 주세요.
- 설정을 변경하지 않고 저장할 경우, 자동 감지를 기본값으로 합니다.
2021-01-11 00:28:22 +09:00
Min-Soo Kim
899fe00dda
관리자가 모든 모듈의 다크모드 설정을 제어하도록 합니다. (#1558)
* 관리자가 다크모드 작동 여부를 선택할 수 있도록 수정
2021-01-10 22:21:13 +09:00
Kijin Sung
b7856e5683 Fix syntax error in emoticon component 2021-01-10 16:23:16 +09:00
Kijin Sung
5e38bd8162 Fix syntax error and missing fields in admin member info view 2021-01-10 15:35:44 +09:00
Kijin Sung
f3542a0ec6 Also reference .cke_auto_dark_mode in file uploader #1556 2021-01-10 00:41:26 +09:00
Kijin Sung
44ecff5e55 Fix #1556 fix auto-detection of dark mode even when it is disabled 2021-01-10 00:39:53 +09:00
Kijin Sung
e3fa780295 Add button to restore CKEditor remove_plugins to default value 2021-01-09 22:40:37 +09:00
Kijin Sung
fac3a9b7a7 Fix #1555 errors in PHP 8.0 in default board skin 2021-01-09 22:29:53 +09:00
Kijin Sung
857722a72c Fix #1555 error in PHP 8.0 if bottom list is disabled 2021-01-09 22:27:37 +09:00
Kijin Sung
0c1c388331 Fix #1552 error in Windows if ffmpeg path contains spaces 2021-01-09 16:25:41 +09:00
Kijin Sung
790434ad32 Fix #1553 downgrade symfony packages to 1.19, for compatibility with PHP 7.0 2021-01-09 16:13:15 +09:00
Kijin Sung
f4ad0dbb48 Fix #1551 incorrect conversion of jQuery template code in sitemap.xml (#1544 regression) 2021-01-09 10:39:56 +09:00
Kijin Sung
78452fc2cb Version 2.0.4 (hotfix for 2.0.3) 2021-01-09 00:24:08 +09:00
Kijin Sung
cdfd2196ec Use full paths for table checking and creating 2021-01-09 00:17:01 +09:00
Kijin Sung
b136b3e0c7 Skip creating tables marked as deleted 2021-01-09 00:00:57 +09:00
Kijin Sung
c26325efee Fix #1550 mark counter_site_status table as deleted 2021-01-08 23:54:50 +09:00
Kijin Sung
34280af0f0 Remove special condition for PHP < 7.3 in Github CI 2021-01-08 23:38:50 +09:00
Kijin Sung
c566803d9a Rebuild composer dependencies with --ignore-platform-reqs 2021-01-08 23:38:25 +09:00
Kijin Sung
36d977572f Remove platform check from vendor/composer/platform_check.php 2021-01-08 23:31:12 +09:00
Kijin Sung
b740abd441 Version 2.0.3 2021-01-08 22:00:56 +09:00
Kijin Sung
81992eb53c Fix login form popping up when it shouldn't 2021-01-08 21:55:18 +09:00
Kijin Sung
f8859769e8 Clean up ModuleController::replaceDefinedLangCode() 2021-01-08 21:27:44 +09:00
Kijin Sung
2e6e097272 Remove Flash FLV player that doesn't work anymore 2021-01-08 21:02:45 +09:00
Kijin Sung
2d4fd3b173 Update Korean IP range data 2021-01-08 21:00:51 +09:00
Kijin Sung
3bae984d08 Add ApacheBench to list of bots 2021-01-08 20:59:19 +09:00
Kijin Sung
8d2b105847 Clean up counter module
- 카운터 모듈을 정리하여 불필요한 쿼리 및 트랜잭션 제거
- 매일 첫 방문시 쿼리 오류 발생하는 문제 해결
- 더이상 사용하지 않는 $site_srl 기준의 테이블은 삭제
2021-01-08 20:53:54 +09:00
Kijin Sung
350d0cd20c Add notice about view permissions in combined boards 2021-01-08 20:05:45 +09:00
Kijin Sung
88907fa9df Fix #1505 duration limit to combined boards
- 통합게시판 글을 모을 기간을 설정할 수 있도록 함
- 통합게시판 소속이 아니거나 기간을 벗어나는 글 발견시 실제 게시판 주소로 redirect
2021-01-08 20:03:33 +09:00
Kijin Sung
89240196c3 Fix incorrect lang code 2021-01-08 20:03:02 +09:00
Kijin Sung
2717f420e0 Fix error when autoinstall module can't download package data from server
https://xetown.com/questions/1505137
2021-01-08 16:53:31 +09:00
Kijin Sung
c8c23e8afe Add some comments and fix private scope 2021-01-08 16:50:06 +09:00
Kijin Sung
6a5d68f3a7 Remove login/signup rulesets and use PHP code instead 2021-01-08 16:32:08 +09:00
Kijin Sung
1d3d6517b3
Merge pull request #1548 from misol/file-attach-darkmode
파일 첨부 기본 스타일 다크모드 적용
2021-01-08 15:04:59 +09:00
Kijin Sung
98c6a22cfd Cleanup 2021-01-08 15:04:12 +09:00
Kijin Sung
8bf3fdeaee Merge branch 'develop' into pr/1548 2021-01-08 14:59:25 +09:00
Kijin Sung
cfca3a11fd
Merge pull request #1546 from kijin/pr/editor-dark-mode
에디터에서 다크모드 자동 감지
2021-01-08 11:43:15 +09:00
Min-Soo Kim
980ad3c8ba CSS 문법 오류 정정
linear-gradient 에 대해서 잘못된 문법으로 되어 있던 것을 수정.
2021-01-08 03:33:37 +09:00
Min-Soo Kim
bcd6357fef 파일 업로드 다크모드 적용 2021-01-08 03:18:26 +09:00
Min-Soo Kim
5c1c0607b6 Darkmode: File upload 2021-01-08 03:09:58 +09:00
Min-Soo Kim
bd7ba13d9a
자동저장 메시지 색상도 다크모드 적용 2021-01-08 02:14:05 +09:00
Kijin Sung
3258aec031 Revert e725455a 2021-01-08 02:12:24 +09:00
Min-Soo Kim
ea6d0c1b8a
!important 로 의도한 효과 내도록 수정
moono-dark 가 아닌 컬러셋과 동일한 효과가 나도록 선택자를 추가했습니다.
2021-01-08 01:56:59 +09:00
Min-Soo Kim
e725455a0e
Merge branch 'editor-dark' into pr/editor-dark-mode 2021-01-08 01:26:58 +09:00
Kijin Sung
575cc9f13f Fix various warnings in PHP 8.0 2021-01-08 00:31:28 +09:00
Kijin Sung
3b4e99f4ff Fix warnings in PHP 8.0 in xedition board skin 2021-01-08 00:27:14 +09:00
Kijin Sung
4dcdb9e4bd Fix various warnings in PHP 8.0 2021-01-08 00:27:00 +09:00
Kijin Sung
db6f44a913 Fix warnings in PHP 8.0 2021-01-08 00:11:12 +09:00
Kijin Sung
9c9dedafa9 Fix favorite removal not working in admin menu 2021-01-08 00:01:19 +09:00
Kijin Sung
98393b033d Remove !important 2021-01-07 23:29:53 +09:00
Kijin Sung
d9e44117cc Apply dark mode to Moono Lisa dialogs 2021-01-07 23:27:29 +09:00
Kijin Sung
3fd7bf16c3 Remove unnecessary BMP loading library (use imagebmp() instead) 2021-01-07 23:05:41 +09:00
Kijin Sung
e2e32902b6
Merge pull request #1544 from shydah/pr/template-srcset
템플릿 내 srcset의 상대경로를 절대경로로 변환하도록 개선
2021-01-07 23:04:59 +09:00
Kijin Sung
af6d60e258 Add unit tests 2021-01-07 22:56:50 +09:00
Kijin Sung
7c1887b8a7 .color_scheme_dark 참조하도록 정리 2021-01-07 22:47:30 +09:00
Chanyoung Oh
adcbe248c5 Improve url regular expression
- Improve regex to process non-whitespace characters only
- Remove /s flag
2021-01-07 13:21:57 +00:00
Chanyoung Oh
96bbbcf4bc Fix typo 2021-01-07 13:09:20 +00:00
Min-Soo Kim
9394694830
Moono-lisa darkmode 제안. 2021-01-07 11:46:35 +09:00
Min-Soo Kim
26558e4c6c
Moono-lisa 에 대한 다크모드 제안. 2021-01-07 11:44:59 +09:00
Min-Soo Kim
b45ef9f698 Fix moono-lisa darkmode function 2021-01-07 11:40:33 +09:00
Min-Soo Kim
c4cb246b3d Add uicolor settings
uicolor 설정을 이용해서 moono-lisa 스킨의 다크모드를 구현합니다.
2021-01-07 11:32:43 +09:00
Kijin Sung
87db7c0371 Replace old XML parser with SimpleXML in widget controller 2021-01-07 11:16:26 +09:00
Min-Soo Kim
436f4f7f10
Merge pull request #1 from kijin/pr/editor-dark-mode
test branch/editor dark mode
2021-01-07 09:43:31 +09:00
Kijin Sung
1a204d8c52 Completely disable Debug logging if it is not enabled for the current user
관리자 또는 특정 IP에서만 디버그 기능을 사용하도록 설정된 경우,
그 밖의 요청에서는 어떤 에러메시지, 쿼리, 트리거 소요시간 등의 기록도
디버그 클래스에 저장하지 않도록 변경합니다.

워닝이 많이 발생하는 PHP 8.0에서는 20~30%의 성능 개선 효과가 있습니다.
2021-01-07 02:51:43 +09:00
Kijin Sung
02122cb383 Add unit tests for SELECT COUNT(*) queries 2021-01-07 01:06:02 +09:00
Kijin Sung
cf1f4f3a3b Fix incorrect handling of subquery in some SELECT DISTINCT queries 2021-01-07 01:05:32 +09:00
Kijin Sung
3f766a937c Fix incorrect handling of auto-generated COUNT(*) queries when there are GROUP BY or DISTINCT clauses 2021-01-07 00:55:43 +09:00
Kijin Sung
9587cfd067 Fix timing issues when detecting dark mode 2021-01-06 23:41:28 +09:00
Kijin Sung
e7b49baf13 Support automatic switching to dark skin in CKEditor and SimpleEditor 2021-01-06 23:35:51 +09:00
Kijin Sung
c80a80f986 Support calling Context::loadFile() with just a filename
기존에도 사용이 가능하긴 했으나, 정식으로 지원함
2021-01-06 23:07:16 +09:00
Kijin Sung
b3b89dc0a1 Sort mail/SMS drivers more naturally, and translate 'Dummy' 2021-01-06 23:01:29 +09:00
Kijin Sung
bace9d919e Update CKEditor to latest 4.x 2021-01-06 22:54:17 +09:00
Kijin Sung
0382b5b186 Insert line break between CI commands 2021-01-06 22:42:27 +09:00
Kijin Sung
1466aaaa2f Remove abraham/twitteroauth for testing in PHP <= 7.2 2021-01-06 22:39:32 +09:00
Kijin Sung
2ffe819465 Replace Amazon SES driver with wrapper around SMTP endpoint #1305 2021-01-06 22:12:30 +09:00
Kijin Sung
3cdcd2dcc0 Accommodate formatter changes 2021-01-06 21:50:27 +09:00
Kijin Sung
aabc7ac55e Update composer dependencies 2021-01-06 21:42:06 +09:00
Chanyoung Oh
db9e6050b2 Fix #1543 - Convert relative path in srcset attribute 2021-01-05 15:00:30 +00:00
Kijin Sung
bb9a56bcac Remove .travis.yml 2021-01-05 23:48:03 +09:00
Kijin Sung
cef7f32901
Merge pull request #1542 from rhymix/github-security-policy
Add GitHub security policy
2021-01-05 23:41:12 +09:00
Kijin Sung
fc662926a3
Add GitHub security policy 2021-01-05 23:39:57 +09:00
Kijin Sung
2189ba5917 Remove useless use_prepared_statements option 2021-01-05 23:28:51 +09:00
Kijin Sung
53c296d1a1 Fix unmatched %s in sprintf() 2021-01-05 23:17:09 +09:00
Kijin Sung
1f2f0d87ef Version 2.0.2 2021-01-04 12:00:14 +09:00
Kijin Sung
5b47a84488 Clean up unnecessary use of count() in menu.admin.controller.php #1540 2021-01-04 01:41:25 +09:00
Kijin Sung
62d14f5abd Clean up poll.admin.model.php #1539 2021-01-04 01:33:21 +09:00
Kijin Sung
072ccc5b63 Keep word breaks in table headers 2021-01-03 21:31:33 +09:00
Kijin Sung
993dac37f0 Change module names that are either outdated or different from popular usage 2021-01-03 21:25:10 +09:00
Kijin Sung
d9a39d6f1e Change wording of extra vars in member signup form #1536 2021-01-03 21:17:26 +09:00
Kijin Sung
661d23ab4e Fix incorrect thumbnail ratio in upload list 2021-01-03 21:13:47 +09:00
Kijin Sung
d540f78e81 Add testing status to README 2021-01-03 15:55:16 +09:00
Kijin Sung
c068f73734 Add .github folder to .gitattributes 2021-01-02 23:32:05 +09:00
Kijin Sung
bde542e669 Simplify and clean up github actions 2021-01-02 23:29:22 +09:00
Kijin Sung
667004407c Fix github actions definition 2021-01-02 23:18:37 +09:00
Kijin Sung
c6e9695eae Merge branch 'pr/1473' into develop 2021-01-02 23:10:21 +09:00
Kijin Sung
74d2575db7 #1517 보완: 유닛 테스트 결과를 동일하게 유지하면서 일부 로직 최적화 2021-01-02 23:01:27 +09:00
Kijin Sung
09456462f4 #1517 보완: 따옴표 escape 처리에 대한 유닛 테스트 추가 2021-01-02 23:00:59 +09:00
Kijin Sung
7a982f134e #1517 보완: 유닛 테스트 더 많이 추가 2021-01-02 22:52:20 +09:00
Kijin Sung
9e7d654885 #1517 보완: 더 복잡한 조건으로 유닛 테스트 추가 2021-01-02 22:47:14 +09:00
Kijin Sung
a0b324993c #1517 보완: 괄호 안의 첫 글자와 마지막 글자가 잘리는 문제 수정 2021-01-02 22:46:50 +09:00
Kijin Sung
0e52b363cf
Merge pull request #1517 from misol/db-search-operator
Improve the 'search' operators for DB quries to enable parentheses, quotation marks, AND, and OR.
2021-01-02 22:36:11 +09:00
Kijin Sung
f05c6f8b60 Fix #1537 error in centerlite module in PHP 8.0 2021-01-02 22:35:06 +09:00
xiaopiao
f43ab2fb4c
게시판 모듈 중국 본토, 간체 번역 업데이트
@xiaopiao님께서 번역을 제공해주셨고, @kijin 님, @YJSoft 님께서 검토 및 수정해주셨습니다.
@misol 이 검토하고 merge 합니다.

Co-authored-by: YJSoft <yjsoft@yjsoft.pe.kr>
Co-authored-by: Min-Soo Kim <misol.kr@gmail.com>
2020-12-30 14:39:08 +09:00
Kijin Sung
5400d4be94 Fix incorrect relative path to xeicon #1488 2020-12-29 23:09:04 +09:00
Kijin Sung
48f5190445 Allow third-party resources to customize the SEO image
Context::addMetaImage() 메소드를 사용하여 특정 페이지 공유시 SNS에 표시되는
이미지를 좀더 세부적으로 커스터마이징할 수 있습니다.
2020-12-29 15:48:49 +09:00
Kijin Sung
00d17ec8fc Notify user if a module appears to be installed in an incorrect path (e.g. xe-modulename-master) 2020-12-28 14:23:45 +09:00
Kijin Sung
2ba01e521a Clean up server environment list 2020-12-28 14:06:21 +09:00
Min-Soo Kim
c96b1ee461 Revert "Merge branch 'temp_testing' into db-search-operator"
This reverts commit c230dffc87, reversing
changes made to f8ed3b49f2.
2020-12-27 21:29:07 +09:00
Min-Soo Kim
c230dffc87
Merge branch 'temp_testing' into db-search-operator 2020-12-27 21:27:27 +09:00
Min-Soo Kim
f8ed3b49f2
Merge branch 'develop' into db-search-operator 2020-12-27 21:24:02 +09:00
Min-Soo Kim
dc5296f326 Unit test 수정.
키워드 양쪽에 wild-card가 붙는 것이 의도 된 것이 맞음..
2020-12-27 21:21:24 +09:00
Min-Soo Kim
b3abdfd696 Unit test 오타 수정.
- 맨 마지막 AND는 제거되는 것이 의도가 맞음.
- Distinct가 없는 예시.
2020-12-27 21:18:55 +09:00
Min-Soo Kim
3ff91018cc Add unit test + 통합검색 키워드 글자 수 제한 변경 2020-12-27 21:14:51 +09:00
Min-Soo Kim
30402cb543
Merge pull request #13 from misol/db-search-operator
정규 표현식 다듬기
2020-12-27 20:59:29 +09:00
Min-Soo Kim
96fde908ba 정규 표현식 다듬기 2020-12-27 20:58:37 +09:00
Min-Soo Kim
378992f8a8
Merge pull request #12 from misol/db-search-operator
필요 없어진 flag 제거
2020-12-27 20:35:19 +09:00
Min-Soo Kim
86b8664862 필요 없어진 flag 제거 2020-12-27 20:34:42 +09:00
Min-Soo Kim
d2c362dc24
Merge pull request #11 from misol/db-search-operator
code refining2
2020-12-27 19:55:28 +09:00
Min-Soo Kim
21bf8cdaca code refining2 2020-12-27 19:54:28 +09:00
Min-Soo Kim
9a4e7401a5
Merge pull request #10 from misol/db-search-operator
Db search operator
2020-12-27 19:46:14 +09:00
Min-Soo Kim
9e847dadcb code refining! 2020-12-27 19:44:18 +09:00
Kijin Sung
9f6f5df35b Always put integer in member_srl in insertFile() 2020-12-27 10:53:18 +09:00
Kijin Sung
c700de4f66 Also catch PDOException in _executeCountQuery() 2020-12-26 20:49:46 +09:00
Kijin Sung
afcc25bd50 Convert PDOException to DBError in _fetch() 2020-12-26 17:14:11 +09:00
Kijin Sung
3dc27f37b7 Remove unnecessary var_dump() in install controller
https://xetown.com/questions/1496904
2020-12-26 17:08:34 +09:00
Kijin Sung
b25933380f Fix #1528 more fixes to $exposure handling 2020-12-26 16:38:06 +09:00
Kijin Sung
b9c2cd1494 Fix #1528 make group_srl encoding more robust in case of incorrect data 2020-12-26 16:18:58 +09:00
Min-Soo Kim
1bb569c84b 너무 많은 문제 수정. too much problems 2020-12-26 09:27:05 +09:00
Kijin Sung
4df36cbde7 Fix double escape of search keyword in default board skins 2020-12-26 00:02:33 +09:00
Kijin Sung
6be4a0531d Fix #1527 autosave not working in CKEditor 2020-12-25 23:30:42 +09:00
Kijin Sung
dcd6d896c2 Only add module_title and mid if they are empty 2020-12-25 23:23:25 +09:00
Kijin Sung
99f60cc16e Merge remote-tracking branch 'upstream/develop' into develop 2020-12-25 23:18:12 +09:00
Kijin Sung
883f846aba Fix #1524 load messages.html if read_message.html doesn't exist in currently selected communication module skin 2020-12-25 23:16:52 +09:00
Kijin Sung
70d88bc026 Fix #1521 error in PHP 8.0 if API class doesn't exist 2020-12-25 23:12:01 +09:00
Kijin Sung
82e1625d0c Fix #1525 error in PHP 8.0 in _arrangeComment if $list is null 2020-12-25 23:09:51 +09:00
Kijin Sung
b7ffc2def5 Fix #1528 incorrect encoding of group_srls in some circumstances 2020-12-25 23:06:24 +09:00
Min-Soo Kim
9d7869546d
Merge pull request #9 from misol/db-search-operator
따옴표로 묶인 구문도 NOT LIKE 가 가능하도록 수정
2020-12-25 21:56:22 +09:00
Min-Soo Kim
09def40ee0 따옴표로 묶인 구문도 NOT LIKE 가 가능하도록 수정 2020-12-25 21:55:08 +09:00
Min-Soo Kim
af372f900a
Merge pull request #8 from misol/db-search-operator
Db search operator
2020-12-25 21:34:23 +09:00
Min-Soo Kim
510d1671be 파라미터 escape 목록 수정 2020-12-25 21:31:48 +09:00
Min-Soo Kim
e86b2ec311 따옴표 내의 빼기 기호는 의미를 부여하지 않도록 수정 2020-12-25 18:20:44 +09:00
BJRambo
9467dc817a
Merge pull request #1514 from shydah/fix/declared-popup
신고 내역을 세션에 기록하는 방식 개선
2020-12-25 00:51:54 +09:00
BJRambo
d809219589
Merge pull request #1520 from bjrambo/pr/notice-list-trigger
공지사항 리스트에도 트리거를 추가
2020-12-25 00:49:49 +09:00
BJRambo
df08a976fc Change obj to args variable for notice query 2020-12-24 19:10:50 +09:00
BJRambo
dab51ba48e Add to trigger for notice list 2020-12-24 18:43:15 +09:00
Chanyoung Oh
5fa290aaf1 Fix #1513 while taking advantage of session cache 2020-12-23 13:48:08 +00:00
Min-Soo Kim
8a47e7e044
Merge pull request #7 from misol/IS_escape_fix
Is escape fix
2020-12-23 22:29:18 +09:00
Min-Soo Kim
422cfc4b8b Merge remote-tracking branch 'upstream/develop' into IS_escape_fix 2020-12-23 22:26:43 +09:00
Min-Soo Kim
5d39fe938a
Fix unintended change at file searching
#1518 에서 지적 받은 내용 수정
2020-12-23 22:14:31 +09:00
Min-Soo Kim
97fc096fbd
파일 모듈에서 검색시에 search operator 사용하도록 수정 (#1519)
* 통합검색 모듈에서 검색어가 이중으로 escape 되는 문제 수정
* 파일 검색시에도 'search' operator 사용하도록 수정
* XML 쿼리 파일 내의 id가 실제 쿼리 id와 다르게 작성되어 있던 오타를 수정합니다.
2020-12-23 21:57:56 +09:00
Min-Soo Kim
ae71a45691 의미가 달라지는 부분 재수정 2020-12-23 21:52:51 +09:00
Min-Soo Kim
7f640047a2
Merge pull request #5 from misol/IS_escape_fix
파일 이름 검색시에도 search operator를 사용하도록 수정.
2020-12-23 21:48:26 +09:00
Min-Soo Kim
75b0740bd8 파일 이름 검색시에도 search operator를 사용하도록 수정. 2020-12-23 21:46:28 +09:00
Min-Soo Kim
b125b4684a
통합검색 모듈에서 검색어가 이중으로 escape 되는 문제 수정 (#1518)
* 통합검색 모듈에서 검색어가 이중으로 escape 되는 문제 수정
* 파일 검색시에도 'search' operator 사용하도록 수정
2020-12-23 21:28:53 +09:00
Min-Soo Kim
97726dfe09
Merge pull request #4 from misol/IS_escape_fix
파일 검색시에도 'search' operator 사용하도록 수정
2020-12-23 21:18:03 +09:00
Min-Soo Kim
ce63a69952 파일 검색시에도 'search' operator 사용하도록 수정 2020-12-23 21:16:52 +09:00
Min-Soo Kim
1693d61ba1
Merge pull request #3 from misol/IS_escape_fix
파일 검색에 라이믹스 operator 적용 등
2020-12-23 21:11:47 +09:00
Min-Soo Kim
b4f1f72ed5 파일 검색에 라이믹스 operator 적용 등 2020-12-23 21:08:54 +09:00
Min-Soo Kim
8a5cd88de8
Merge pull request #2 from misol/IS_escape_fix
통합검색 모듈에서 검색어가 이중으로 escape 되는 문제 수정
2020-12-23 20:51:56 +09:00
Min-Soo Kim
bc9408b0f5
Merge pull request #1 from misol/db-search-operator
Db search operator
2020-12-23 20:51:26 +09:00
Min-Soo Kim
51541dde7d 통합검색 모듈에서 검색어가 이중으로 escape 되는 문제 수정 2020-12-23 20:30:50 +09:00
Min-Soo Kim
8e48abd0db 주석 수정 2020-12-23 10:32:00 +09:00
Min-Soo Kim
b6698eb5e5 Fix input parmameters 2020-12-23 10:17:01 +09:00
Min-Soo Kim
2cb87af723 treat quotation mark2 2020-12-23 09:59:54 +09:00
Min-Soo Kim
46110f0915 Treat quotation mark 2020-12-23 09:54:46 +09:00
Min-Soo Kim
a247ec8335 $params에 기존 값이 유지되도록 수정 2020-12-23 09:40:57 +09:00
Min-Soo Kim
1b80db4652 fix to get the column variable 2020-12-23 09:23:26 +09:00
Min-Soo Kim
a9ff791f4b Update variablebase.php 2020-12-23 09:18:14 +09:00
Chanyoung Oh
3e7f2e291c Fix #1513 2020-12-22 14:02:11 +00:00
Kijin Sung
49ea6700b3 Fix warnings in PHP 8.0 2020-12-22 22:42:31 +09:00
Kijin Sung
9732290515 Fix warnings in PHP 8.0 2020-12-22 22:37:20 +09:00
Kijin Sung
25a4a3b348 Fix warning in PHP 8.0 2020-12-22 22:28:17 +09:00
Min-Soo Kim
d23c5f7271 @kijin 님 의견에 따라 수정 2020-12-22 18:05:40 +09:00
Min-Soo Kim
56921fa9be 괄호 추가 2020-12-22 18:03:47 +09:00
Min-Soo Kim
c187da62cb php 8.0 travis ci test 2020-12-22 17:21:00 +09:00
Min-Soo Kim
55651a006a 문법에 맞지 않는 괄호 다시 삭제 2020-12-22 17:11:23 +09:00
Min-Soo Kim
edc674a220 출력 값의 형식을 단순하게 수정 2020-12-22 17:10:57 +09:00
Min-Soo Kim
32d734059d 문법에 맞지 않는 괄호 삭제 2020-12-22 16:57:40 +09:00
Min-Soo Kim
87ef4f1e8e 문장 끝 세미콜론 빠진 것 추가 2020-12-22 16:52:28 +09:00
Min-Soo Kim
a0449a2e0f 키워드 처리를 별도 함수로 분리 2020-12-22 16:51:39 +09:00
Min-Soo Kim
0c08e92a54 빠진 괄호 추가 2020-12-22 16:37:49 +09:00
Min-Soo Kim
83df509d7d 빼먹은 조건 추가 2020-12-22 16:31:17 +09:00
Min-Soo Kim
d081b75dcc Update search operator to process quotation marks and AND or OR operator 2020-12-22 16:25:51 +09:00
Kijin Sung
86798f7076 Version 2.0.1 2020-12-21 11:10:56 +09:00
Kijin Sung
a6f76ba9b4 Remove tools/ and Gruntfile.js from .gitattributes 2020-12-21 10:40:15 +09:00
Kijin Sung
32aae27a13 Add option to maintain file format when resizing #1508 2020-12-21 10:22:53 +09:00
Kijin Sung
198bb1b079 Fix miscellaneous errors in PHP 8.0
https://xetown.com/questions/1494606
2020-12-21 01:01:26 +09:00
Kijin Sung
7e54b3add5 Fix #1507 error in PHP 8.0 2020-12-20 22:49:32 +09:00
Kijin Sung
78a88ce4e3 Fix error in PHP 8.0 2020-12-20 19:45:51 +09:00
Kijin Sung
76d991abfd Fix error in PHP 8.0 2020-12-20 19:37:40 +09:00
Kijin Sung
b778deac7d Fix #1488 duplicate folder name in admin menu 2020-12-20 17:22:00 +09:00
Kijin Sung
17a69cf6ff Fix user config = false error in ncenterlite module 2020-12-20 17:05:21 +09:00
Kijin Sung
2f99d71f21 Remove unnecessary count() in widget controllre 2020-12-19 23:36:16 +09:00
Kijin Sung
2c48e345d1 Fix count() error in PHP 8.0 2020-12-19 23:26:44 +09:00
Kijin Sung
dc0aafce66 Re-enable previously changed lang codes in ncenterlite 2020-12-19 22:57:14 +09:00
Kijin Sung
fbc06808ed Fix missing page_navigation on first page of saved document list 2020-12-19 22:53:41 +09:00
Kijin Sung
9fc6378afe Fix missing lang in trash module 2020-12-19 22:49:33 +09:00
Kijin Sung
b5b74644e5 Improve compatibility with old ncenterlite skins 2020-12-19 22:43:26 +09:00
Kijin Sung
824d0c5ae9 Fix #1502 error in PHP 8.0 if there are no module categories 2020-12-19 22:31:50 +09:00
Kijin Sung
6754303189 Fix incorrect detection of old format user config in ncenterlite module 2020-12-19 21:49:54 +09:00
BJRambo
6fd49c3bd1 #Fix #1501 error in PHP 8.0 2020-12-19 14:03:21 +09:00
Kijin Sung
0e0dce05a8 Never mark core modules as needing update in autoinstall 2020-12-18 22:58:14 +09:00
Kijin Sung
aacc387d55 Remove autoinstall notification from module list page 2020-12-18 22:54:13 +09:00
Kijin Sung
0b317e1168 Fix #1496 close PHP tag in case a rogue module tries to append stuff to menu cache file 2020-12-18 21:40:02 +09:00
Kijin Sung
ff6322e9ce Version 2.0.0
Maintainers:
  @bjrambo @conory @kijin @misol

External contributors to this release:
  @bnu @ForPeople @largeden @Lastorder-DC @lcy7747 @nemo9l

Happy 5th birthday, Rhymix!
2020-12-18 17:01:24 +09:00
Kijin Sung
89f28cc55a Say 2020s instead of 2010s in README 2020-12-18 15:28:44 +09:00
Kijin Sung
b0f66a36c5 Convert all instances of _XE_PATH_, __XE_VERSION__, etc. to Rhymix constants
_XE_PATH_ -> RX_BASEDIR
__XE_VERSION__ -> RX_VERSION
2020-12-18 15:21:23 +09:00
Kijin Sung
4fdb51d689 Fix outdated use of REMOTE_ADDR instead of RX_CLIENT_IP 2020-12-18 15:10:30 +09:00
Kijin Sung
b2c6547cbc
Merge pull request #1494 from kijin/pr/versioning
코어에 포함된 애드온, 모듈, 위젯 등의 버전을 별도로 표기하지 않음
2020-12-18 15:08:38 +09:00
Kijin Sung
af5d8ead8f
Merge pull request #1493 from kijin/pr/ncenterlite-user-set
알림센터 유저 설정 세분화 (#994)
2020-12-18 15:08:17 +09:00
Kijin Sung
f38e90b60e Remove unnecessary condition for CUBRID DB 2020-12-18 15:06:28 +09:00
Kijin Sung
4225535a23 Allow special phone number to sign up more than once even if this is normally disallowed 2020-12-18 15:00:54 +09:00
Kijin Sung
f12bfb0ba5 Add a special phone number and verification code that can bypass SMS auth (for testing) 2020-12-18 14:56:57 +09:00
Kijin Sung
4c79d1b229 Clean up help text related to email hosts 2020-12-18 14:36:17 +09:00
Kijin Sung
686cfc3478 Create a 'data' field even if there are no results, to prevent warnings 2020-12-18 14:25:48 +09:00
Kijin Sung
70c2bfe5df Remove deleted routes from action_forward table 2020-12-18 00:54:34 +09:00
Kijin Sung
0b265cde21 Make all addons, modules, and widgets follow RX_VERSION 2020-12-18 00:20:33 +09:00
Kijin Sung
c52187a8f2 Support user config of notification types, fixes #994
코어에서 지원하는 알림 종류 및 알림 수신 방법이 늘어남에 따라,
관리자가 설정한 범위 내에서 회원들이 알림 수신 방법을 선택할 수 있도록 합니다.
기존에는 수신 여부만 선택할 수 있었으나 이제 더 세부적인 설정이 가능합니다.
예를 들어 웹 알림과 푸시알림은 받고, 메일 알림과 문자 알림은 끌 수 있습니다.

이 기능을 지원하기 위해 ncenterlite_user_set 테이블 스키마를 대폭 조정합니다.
기존 설정은 가능하면 그대로 유지하려고 노력하였습니다.
2020-12-17 23:41:31 +09:00
Kijin Sung
3032784ca7 Add x_inline class to default member skin 2020-12-17 23:40:57 +09:00
Kijin Sung
aef258e48a Fix #984 use relative URL for profile image, image name, etc. 2020-12-16 22:27:51 +09:00
Kijin Sung
39fa556531 Fix errors in PHP 8.0 while copying module 2020-12-16 22:18:38 +09:00
Kijin Sung
a395d76d33 Fix #1186 혼란을 일으키는 레이아웃 일괄적용 버튼 삭제 2020-12-16 22:12:35 +09:00
Kijin Sung
cc03f0ad1a Fix #1289 allow batch-deletion of header and footer text 2020-12-16 22:08:24 +09:00
Kijin Sung
b6b06af336 Fix #907 support more sort options in member list 2020-12-16 21:54:47 +09:00
Kijin Sung
5e572a168d Fix #1492 error in PHP 8.0 2020-12-16 21:48:21 +09:00
Kijin Sung
6dbf2b4ebb Fix #734 use exact search for tag 2020-12-16 21:44:29 +09:00
Kijin Sung
f0ecb701a0 Re-add meta-noindex and action forward to integration_search module 2020-12-16 21:36:24 +09:00
Kijin Sung
6b3f582167 Remove short URL rules from integration search module 2020-12-16 21:29:08 +09:00
Kijin Sung
0608dc1ca4 Remove unnecessary index="true" directives from several core modules 2020-12-16 21:19:57 +09:00
Kijin Sung
9d75690e2d Fix #1489, fix #1491 incorrect routing to standalone index act 2020-12-16 21:19:15 +09:00
Kijin Sung
bfce45e611 Fix #1490 error in PHP 8.0 2020-12-16 20:37:23 +09:00
Kijin Sung
2de3bbcea7 Disallow installing Rhymix with the DB root account 2020-12-16 00:04:39 +09:00
Kijin Sung
9ba8c9159e General cleanup of point diff logic 2020-12-15 23:46:50 +09:00
Kijin Sung
a43f0368ec Fix #1341 also calculate point difference accurately when new file is uploaded to a comment 2020-12-15 23:39:25 +09:00
Kijin Sung
367635d21b Fix #1341 calculate point difference accurately when files are deleted and re-attached 2020-12-15 23:31:00 +09:00
Kijin Sung
aa7a548ecf Fix #1429 clear login failure count for IP if password change request succeeds 2020-12-15 22:46:12 +09:00
Kijin Sung
242963db83 Remove unnecessary vid from redirect URL 2020-12-15 22:42:27 +09:00
Kijin Sung
7a09bf632a Fix warning in PHP 8.0 2020-12-15 22:37:14 +09:00
Kijin Sung
a908cd9291 Re-add missing support for index hints in XML query 2020-12-15 22:36:55 +09:00
Kijin Sung
2a5d99b2df Fix #1487 incorrect search parameter when member_srl is 0 2020-12-15 18:17:43 +09:00
Kijin Sung
2badc1dc69 Refresh timestamp on all CKEditor plugins if CKEditor itself is updated 2020-12-15 02:37:30 +09:00
Kijin Sung
b99c0d7786 Fix #1486 missing quotes around 'act' 2020-12-15 02:22:36 +09:00
Kijin Sung
181ddf2ffe Only include SVG images smaller than 5KB in minified CSS 2020-12-15 02:21:07 +09:00
Kijin Sung
02b2d54275 Provide incr() and decr() as static methods of Cache class 2020-12-15 02:13:38 +09:00
Kijin Sung
c275702fbf
Merge pull request #1482 from kijin/pr/color-scheme
다크모드 감지 및 설정을 위한 rx_color_scheme 쿠키값의 표준화
2020-12-15 01:59:17 +09:00
Kijin Sung
436728f7b7 Fix unit test for TemplateHandler 2020-12-15 00:24:26 +09:00
Kijin Sung
49923844b2 Various fixes to remove warnings in PHP 8.0 2020-12-15 00:18:42 +09:00
Kijin Sung
a4f698c9c6 Return to auto-detected color scheme if manually set color scheme is removed 2020-12-14 22:43:26 +09:00
Kijin Sung
9a0bf6d907 Fix #1485 misc errors in PHP 8.0 2020-12-14 22:38:47 +09:00
Lastorder-DC
8ebb2b22a9 Only run phplint at php 8.0
Do not run codeception at php 8.0(currently not works)
2020-12-14 11:12:40 +09:00
Lastorder
6eccfb1b0d Migrate travis to github actions 2020-12-14 11:07:36 +09:00
Kijin Sung
74b612715c Fix #1470 RSS not working due to new Router 2020-12-13 22:31:05 +09:00
Kijin Sung
88d31de75d Remove unnecessary duplicate method calls 2020-12-13 22:17:50 +09:00
Kijin Sung
bca7a9ae72 Add proper comments to Context::setResponseMethod() 2020-12-13 22:08:46 +09:00
Kijin Sung
a405b91e42 Add RawDisplayHandler and fix RSS/Atom not producing the correct headers 2020-12-13 22:06:16 +09:00
Kijin Sung
35203b684d Fix #1484 missing extra_var groups in widget info 2020-12-13 21:48:00 +09:00
Kijin Sung
4c62231e88 Fix template syntax for Context::unloadFile() and related unit tests 2020-12-13 21:33:27 +09:00
Kijin Sung
855e12a5de Fix misc warnings in PHP 8.0 2020-12-13 21:21:10 +09:00
Kijin Sung
380f779301 Add unit tests for UA::getColorScheme() and UA::setColorScheme() 2020-12-13 20:00:53 +09:00
Kijin Sung
64c9c5ba90 Unset rx_color_scheme cookie if an invalid value is set (JS equivalent) 2020-12-13 19:59:26 +09:00
Kijin Sung
237f3b295d Unset rx_color_scheme cookie if an invalid value is set 2020-12-13 19:57:52 +09:00
Kijin Sung
0237d5c759 Auto-detect color scheme first, then override with user preference 2020-12-13 19:55:37 +09:00
Kijin Sung
6200e8d4ae Move getColorScheme/setColorScheme methods to UA class 2020-12-13 19:45:34 +09:00
Kijin Sung
e3db1b7cd8 Replace CSS check with window.matchMedia 2020-12-13 19:43:11 +09:00
Kijin Sung
bcfb96dda7 Merge branch 'develop' into pr/color-scheme 2020-12-13 19:40:20 +09:00
Kijin Sung
b5cdd1212e Fix inconsistent path for lang_type cookie
Context::setLangType()에서 생성하는 lang_type 쿠키와
자바스크립트 setLangType()에서 생성하는 lang_type 쿠키의 path가 달라
라이믹스를 서브폴더에 설치한 경우 충돌이 일어나는 문제 해결
2020-12-13 19:28:37 +09:00
Kijin Sung
fcfb89edea Fix admin menu 2020-12-12 19:07:46 +09:00
Kijin Sung
a9689549b7 Fix #1474 return to member info modify form on error, instead of password check page 2020-12-12 17:35:01 +09:00
Kijin Sung
0067182e71 Add playsinline attribute to GIF-based video tags 2020-12-12 17:29:20 +09:00
Kijin Sung
9c5509daeb Fix relative URL (6d4fe58c regression) 2020-12-12 17:15:08 +09:00
Kijin Sung
90d8b7fc33 Directly import PushInterface 2020-12-11 22:09:10 +09:00
Kijin Sung
166e867f77 Relax level limit from 1000 to 10000 2020-12-11 21:57:44 +09:00
Kijin Sung
485b22ea22 Remove legacy dependence on create_function() from Validator class #1480 2020-12-11 21:55:57 +09:00
Kijin Sung
372e392049 Fix #1480 misc errors in PHP 8.0 2020-12-11 21:38:39 +09:00
Kijin Sung
c0c6b4e2de Remove conflicting color scheme class from body 2020-12-11 20:58:13 +09:00
Kijin Sung
96295edc75 Update cookie value inside PHP if color scheme is changed manually 2020-12-11 20:56:17 +09:00
Kijin Sung
79c10d0b23 Add color_scheme_light/color_scheme_dark classes to body 2020-12-11 20:54:56 +09:00
Kijin Sung
9fffc050b4 Add rx_color_scheme cookie for detecting and setting color scheme 2020-12-11 20:35:22 +09:00
Kijin Sung
6d4fe58c2f Fix relative URL (d9397bf6 regression) 2020-12-11 20:04:45 +09:00
Kijin Sung
1fd23af708 Add missing return type declaration to Push interface 2020-12-11 19:59:49 +09:00
Kijin Sung
e421e0af0e Add missing return type declarations to Push class 2020-12-11 19:58:22 +09:00
Kijin Sung
6670a264f1 Fix ambiguous 'object' type in PHP < 7.2 2020-12-11 19:42:46 +09:00
BJRambo
1e21c8f43b
Merge pull request #1475 from bjrambo/pr/new-ExtraVars
확장변수에 국가번호를 포함한 전화번호, 언어, 시간, 국가 선택할 수 있는 확장변수를 추가
2020-12-07 18:22:40 +09:00
BJRambo
ca202f2ffe 일부 select 값은 배열로 저장하지 않고 하나의 string으로 저장 2020-12-07 16:07:38 +09:00
BJRambo
017f1ec184 국가 국가번호를 포함한 전화번호 언어 시간대 선택하는 확장변수 추가 2020-12-07 15:46:51 +09:00
Kijin Sung
d77a93709b Add SMS driver for iwinv.kr
https://www.iwinv.kr/account/sms.html
2020-12-02 00:35:45 +09:00
Kijin Sung
7d8a546b64 Fix #1470 misc errors in PHP 8.0 2020-11-30 21:56:15 +09:00
Kijin Sung
cc1a00e923 Fix incorrect title for document pages in integration search module
page 모듈의 문서페이지가 통합검색에 노출될 경우 제목 대신 내용의 일부분이
짤려서 표시되는 문제가 있는데, 해당 모듈의 제목을 표시하도록 변경함.
2020-11-30 21:41:49 +09:00
Kijin Sung
e2c7a3eefe Exclude scripts and styles from document summary
관리자 권한으로 문서에 스크립트나 스타일을 넣어 놓은 경우
getSummary()에서 해당 내용이 표시되는 문제 수정

<style>CSS</style> 구조로 입력되므로 strip_tags() 사용시
앞뒤의 태그만 삭제되고 중간에 있는 CSS가 그대로 노출될 수 있음.
2020-11-30 21:39:34 +09:00
Kijin Sung
6b3d201539 Remove unnecessary XE icons 2020-11-25 00:55:30 +09:00
Kijin Sung
99dac1d6b3 v2.0.0rc (release candidate) 2020-11-25 00:41:47 +09:00
Kijin Sung
0026d45cf4 Replace logo in README 2020-11-25 00:39:00 +09:00
Kijin Sung
876dfc548a Replace XE logo in default favicon and mobicon 2020-11-25 00:31:43 +09:00
Kijin Sung
645f65315e Fix persistent module update prompt after fresh install 2020-11-25 00:27:53 +09:00
Kijin Sung
395112ad0d Fix non-static method error in PHP 8.0 2020-11-25 00:25:21 +09:00
Kijin Sung
7c3057946b Add official Rhymix logo to install screen 2020-11-25 00:17:50 +09:00
Kijin Sung
2d6a175b19 Fix #1468 inconsistent use of REMOTE_ADDR vs. RX_CLIENT_IP 2020-11-18 00:17:49 +09:00
Kijin Sung
996ca166e8 Add permission="member" to ncenterlite unsubscribe screens 2020-11-12 14:15:56 +09:00
Kijin Sung
b4a15138ac Add short URLs to ncenterlite user config screens 2020-11-12 14:15:20 +09:00
Kijin Sung
1366bb72ce Fix #1452 misc errors in PHP 8.0 2020-11-12 14:03:11 +09:00
Kijin Sung
0f346d8e24 Fix #1456 incorrect handling of negative member_srl in ncenterlite controller 2020-11-12 13:56:41 +09:00
BJRambo
b675813de2
Merge pull request #1462 from bjrambo/pr/attechfile
게시글과 댓글을  작성 및 수정시 대기된 파일을 공개하는 방식을 변경
2020-11-11 21:28:42 +09:00
BJRambo
29608ca6cd Deleted comment for phpstorm 2020-11-11 20:29:50 +09:00
BJRambo
55177a4021 파일 모듈에서 사용하지 않는 트리거를 삭제 2020-11-11 15:28:12 +09:00
Kijin Sung
2c1d380a0a Fix #1458 unnecessary slash in script concatenation (regression from e9bec85) 2020-11-11 15:11:53 +09:00
BJRambo
2cb477fd55 게시글과 댓글을 작성 및 수정시 대기된 파일을 공개하는 방식을 변경
파일이 대기모드에서 공개할때 트리거에서 직접 호출 하는 방식으로 변경
2020-11-11 15:06:00 +09:00
Kijin Sung
d9397bf6fe Fix double slashes and double escape after recreating admin menu 2020-11-11 14:37:27 +09:00
Kijin Sung
7875c6911b
Merge pull request #1454 from nemo9l/fix/category_group_srl_label_style
Fix #1453
2020-11-11 14:24:24 +09:00
BJRambo
234ad09867 Fix #1460 current_url 값이 ture으로 출력되는 문제 고침 2020-11-11 01:31:50 +09:00
Ji Yong, Kim
730d43d215 Fix #1453 2020-11-01 16:56:41 +09:00
Kijin Sung
15e66c2c6a Fix invalid default_font_size javascript error
https://xetown.com/questions/1475074
2020-10-31 15:32:45 +09:00
Kijin Sung
99728527f9 Fix incorrect testing of CSS file index in FrontEndFileHandler 2020-10-31 15:27:47 +09:00
Kijin Sung
5bc79fc400 Fix error in PHP 8.0 when adding empty string to integer 2020-10-31 02:42:53 +09:00
Kijin Sung
68ef362789 Fix duplicate loading of XmlParser class 2020-10-31 02:30:39 +09:00
Kijin Sung
d41b8369d0 Make menu cache files more readable for human debugging 2020-10-31 01:42:10 +09:00
Kijin Sung
417e4d15b0 More fixes to improve PHP 8.0 compatibility 2020-10-31 00:40:28 +09:00
Kijin Sung
8c161bc28d Various fixes to improve PHP 8.0 compatibility
- XmlParser 클래스가 PHP 내장 클래스가 되어버려서 XeXmlParser로 변경
- 함수나 파라미터의 형태가 맞지 않아서 치명적인 오류 나는 곳 수정
- undefined 변수 및 배열 키 다수 수정 (치명적인 오류는 아님)
- 계속 수정중...
2020-10-31 00:25:26 +09:00
Kijin Sung
90084efd75 Fix undefined indices and incompatible function signatures 2020-10-30 23:14:08 +09:00
Kijin Sung
6c19e6ebff Fix #1294 use history.replaceState() to remove unnecessary comment_srl and page number from URL if new rewrite rules are in effect 2020-10-30 22:33:18 +09:00
Kijin Sung
dff97a9604 Don't treat failed upload as security issue, fix #1451 2020-10-30 21:50:46 +09:00
Kijin Sung
a3271c6a40 Display alert when file selected in filebox is too large #1451 2020-10-30 21:49:48 +09:00
Kijin Sung
6e2cbbbdfa Display alert if filesize is exceeded #1451 2020-10-30 21:35:49 +09:00
Kijin Sung
921c318bb0 Display max filesize for profile image #1451 2020-10-30 17:07:37 +09:00
Kijin Sung
b354d8af49 Revert 61f6456b and add a warning instead 2020-10-30 15:57:18 +09:00
Kijin Sung
50133f6ae5 Fix foreach() warning in BoardView::_fillModuleTitles() 2020-10-30 15:56:20 +09:00
Kijin Sung
3e18f2d6ba Add session_start() delay and all query time to debug data 2020-10-30 15:52:52 +09:00
Kijin Sung
7b2e10e40d v2.0.0-beta 2020-10-30 01:49:14 +09:00
Kijin Sung
cbc60d5737 Add separate PK column to ncenterlite_notify table
기존에 이미 사용하던 사이트는 테이블 스키마를 수정할 필요 없음.
2020-10-30 01:47:08 +09:00
Kijin Sung
d97c6a60cc Add notice about {$captcha} code in spamfilter module 2020-10-30 01:40:43 +09:00
Kijin Sung
4aba149425 Resend the session cookie periodically to prevent early logout
서버단에는 세션 쿠키가 살아 있는데 클라이언트단에서 먼저 만료되지 않도록
일정한 시간 간격으로 세션 쿠키를 재전송해 주도록 한다.
특정한 환경에서 로그인이 풀리는 빈도를 줄이는 데 도움이 될 수 있다.
2020-10-30 01:34:01 +09:00
Kijin Sung
52729cf7ee Provide DocumentController::clearDocumentCache() 2020-10-30 01:24:29 +09:00
Kijin Sung
133c29012b Provide MemberController::clearMemberCache() 2020-10-30 01:16:14 +09:00
Kijin Sung
bd14589bd9 Merge messageMobile class with messageView (fix #1450) 2020-10-30 01:10:00 +09:00
Kijin Sung
8a452f151b Fix #1448 unnecessary count() in misol_town integration_search skin 2020-10-30 00:58:47 +09:00
Kijin Sung
df9f156ff3 Fix #1446 and other incorrect code in module module 2020-10-30 00:39:20 +09:00
Kijin Sung
25affa4dba
Merge pull request #1445 from kijin/develop
간단한 통합게시판 기능 추가
2020-10-30 00:11:30 +09:00
Kijin Sung
7ba83ef6f9 Add module title column to default PC skin 2020-10-29 22:52:58 +09:00
Kijin Sung
b978b51656 Fix combined board setting being overwritten on basic config save 2020-10-29 22:50:27 +09:00
Kijin Sung
46ac583a83 Add option to display module title in board list 2020-10-29 22:47:28 +09:00
Kijin Sung
e8b6db01fc Also include notices from other modules 2020-10-29 01:06:52 +09:00
Kijin Sung
ba971f7b5a Implement loading documents from other modules 2020-10-29 01:04:46 +09:00
Kijin Sung
264c6f0e74 Add settings for combined board 2020-10-29 00:38:46 +09:00
Kijin Sung
a9334cec95 Add action to delete a registered device 2020-10-28 01:30:10 +09:00
Kijin Sung
570fab487e Add registered device list to active logins page 2020-10-28 01:24:38 +09:00
Kijin Sung
5ea9d52b0c Add last active date to member_devices table 2020-10-28 01:16:23 +09:00
Kijin Sung
e87bd70e98 Allow registering device with login or signup
회원가입이나 로그인과 동시에 모바일 기기를 등록할 수 있도록 허용합니다.
앱에서 회원가입하더라도 한 번 더 등록 과정을 거쳐야 하는 불편을 해소합니다.
2020-10-28 00:53:54 +09:00
Kijin Sung
ed7add6d9c Separate device type (android/ios) from token type (fcm/apns)
애플 기기에서도 FCM을 사용하여 푸시알림을 구현할 수 있으므로
디바이스의 운영체제와 무관하게 토큰 타입을 지정하도록 변경합니다.
기존에 등록된 토큰은 운영체제 및 포맷에 따라 자동 변환합니다.
2020-10-28 00:37:55 +09:00
Kijin Sung
61f6456b6c Remove support for $is_admin in getDocument(), getDocuments(), getComment()
단순히 문서나 댓글을 불러오는 동작에서는 $is_admin 변수를 무시하도록 합니다.
서드파티 자료에서 사용할 경우 해당 문서나 댓글에 관리자 권한이 부여되어 버려서
보안취약점이 발생할 수 있기 때문입니다.

실제로 많은 서드파티 자료들이 이 변수가 왜 필요한지, 어떤 기능을 하는지
이해하지 못하는 상태로 무작정 복붙하여 사용하고 있습니다.
이러한 서드파티 자료에서 이 패치로 인해 오작동이 발생할 경우에는
그 때 가서 적절한 조치를 취하도록 하겠습니다.

getDocumentListByMemberSrl(), getCommentListByMemberSrl(), getCommentList() 등
일부 메소드에서는 이미 $is_admin 변수를 무시하도록 되어 있습니다.
2020-10-28 00:30:39 +09:00
Kijin Sung
5c99a23e68 Remove unnecessary check using undeclared variable $is_admin 2020-10-28 00:25:35 +09:00
Kijin Sung
c3cc12008e Always display document and comment at top, in that order, in additions setup screen 2020-10-27 21:46:08 +09:00
Kijin Sung
4765919d1f Fix #1444 duplicate id attribute in extra settings 2020-10-27 21:43:27 +09:00
Kijin Sung
325ace58e0 Reorganize method/route parser order 2020-10-27 21:39:36 +09:00
Kijin Sung
c920f6dca4 Refine default allowed methods 2020-10-27 21:38:26 +09:00
Kijin Sung
c9cf1a5bc5 Allow both GET and POST for actions that aren't proc 2020-10-27 20:43:15 +09:00
Kijin Sung
dc3a9df68c
Merge pull request #1443 from Lastorder-DC/patch-1
잘못된 reply_to 타입으로 인해 Sendgrid 사용시 발생하는 오류 수정
2020-10-22 12:22:22 +09:00
Lastorder
aade411188 Sendgrid: Set reply_to to object
Sendgrid는 reply_to 값으로 object를 사용하나 string값이 넘어가 HTTP 400 오류가 발생하는데, 이 부분을 수정합니다.
2020-10-22 11:54:26 +09:00
Kijin Sung
57dcab75e9 Fix missing document_srl in password input form 2020-10-22 02:02:00 +09:00
Kijin Sung
7f2504b9b7 Allow escaping column type with a backslash to use literal DB type, e.g. date
DB에서 지원하는 타입명과 XE 호환성을 위해 유지하는 타입명이 충돌하는 경우
(예: date) XML 스키마에서 타입명 앞에 백슬래시를 붙이면 (예: \date)
DB에서 지원하는 타입명을 강제로 사용할 수 있도록 함.
2020-10-22 01:15:23 +09:00
Kijin Sung
265a23f5ce Change sendgrid mail driver to use API key instead of SMTP
- https://xetown.com/topics/1470719
- https://xetown.com/questions/1335074
2020-10-22 01:06:20 +09:00
Kijin Sung
1bd20e6d31 Fix #1417 set files as valid when signature is saved 2020-10-22 00:16:59 +09:00
Kijin Sung
f5562356b4 Fix #1412 failure to load multilingual document in widget page 2020-10-22 00:07:25 +09:00
Kijin Sung
9752c2ed61 Fix #1432 incorrect redirect in widget document edit popup 2020-10-21 23:57:37 +09:00
Kijin Sung
3344a20eb5 Don't redirect back to procMemberAuthAccount after login #1428 2020-10-21 23:31:32 +09:00
Kijin Sung
f605786639 Don't redirect back to procMemberAuthAccount after login #1428 2020-10-21 23:31:01 +09:00
Kijin Sung
28b3c2ef34 Fix #1422 incorrect quoting of expressions in XML queries 2020-10-21 23:20:35 +09:00
Kijin Sung
57b356f5fa Fix #1439 incorrect parsing of default value in some queries 2020-10-21 23:01:34 +09:00
Kijin Sung
2a87c060b9 Fix #1442 add prefixes to INSERT/UPDATE queries, too 2020-10-21 22:47:34 +09:00
Kijin Sung
627f05c077 Fix unit test for ModuleActionParser 2020-10-19 19:22:24 +09:00
Kijin Sung
b505bcb663 Fix #1435 incorrect action when clicking on Cancel button in board list 2020-10-19 14:04:44 +09:00
Kijin Sung
12a8671065 Fix #1424 incorrect handling of multi-method (GET|POST) actions 2020-10-19 13:56:46 +09:00
Kijin Sung
438386f3dc Fix #1430 path conversion error in Windows 2020-10-19 13:36:14 +09:00
Kijin Sung
4bab8c4961 Fix incorrect caching of notification list
- readed=N 조건을 붙이지 않은 알림 목록 조회 요청도 캐싱되는 문제 수정
- "내 알림 목록" 화면에서는 레이아웃 등 다른 곳에서 불러오는 알림도
  getMyDispNotifyList로 처리되는 문제 수정
2020-10-16 14:29:46 +09:00
Kijin Sung
33077da47c
Merge pull request #1437 from bnu/develop
관리페이지 및 사이트 메뉴 편집 시 너무 많은 cookie를 생성하는 문제 수정
2020-10-14 19:45:58 +09:00
bnu
db91ead88a 사이트 메뉴 편집 시 너무 많은 cookie를 생성하는 문제 수정
- 관리페이지의 GNB 메뉴의 열림 상태 확인을 위한 cookie 사용 개선
  - 열린 상태의 쿠키만 유지하고 닫힘 상태의 cookie 제거 (open 값만 확인하므로)
- 사이트 메뉴 관리의 메뉴의 열린 항목이 없을 때 cookie 제거
2020-10-11 22:30:33 +09:00
Min-Soo Kim
6d20b46fc1
Fix omitted init. of new object variables on layout, and widget module. (#1431)
변수 초기화가 되어 있지 않았던 항목 수정.
2020-10-08 16:03:55 +09:00
Kijin Sung
8cabb88dbb Be more consistent about JSON responses
cf. #152
2020-10-08 13:25:46 +09:00
Min-Soo Kim
7cede70de0
Fix typo
Fix typo on the admin module.
2020-10-07 15:38:51 +09:00
Kijin Sung
88a5193523 Fix new documents being marked as notice 2020-10-05 20:49:31 +09:00
Kijin Sung
a6e55dcdee Use transactions in several member controller methods 2020-10-04 17:02:23 +09:00
Kijin Sung
65d106b237 Remove class="x" in mobile page edit screen #1416 2020-10-04 16:55:48 +09:00
Kijin Sung
39e0c31de2 Revert "Remove unnecessary class="x" in mobile page edit screen #1416"
This reverts commit 9cd715008b.
2020-10-04 16:51:35 +09:00
Kijin Sung
44e73027a1 Don't fetch if the query isn't SELECT
https://xetown.com/questions/1464687
2020-10-04 16:46:51 +09:00
Kijin Sung
882a0c9a0f Remove unnecessary assignment by reference 2020-10-03 01:43:31 +09:00
Kijin Sung
9cd715008b Remove unnecessary class="x" in mobile page edit screen #1416 2020-10-03 01:43:13 +09:00
Kijin Sung
36a86adb37 Remove unnecessary CSS in mobile page #1416 2020-10-03 01:42:44 +09:00
Kijin Sung
338951f5c8 Fix #1406 convert 'jp' to 'ja' in lang table 2020-10-03 01:30:28 +09:00
Kijin Sung
0177ee3abe Fix #1411 placeholders and descriptions on extra_vars fields 2020-10-02 20:31:33 +09:00
Kijin Sung
0d8d2a6ac0 v2.0.0-alpha 2020-10-02 12:54:43 +09:00
Kijin Sung
2b49bd80de Merge branch 'next' into develop 2020-10-02 12:53:57 +09:00
Kijin Sung
c9230360cc Preseve mid when reading notice-all document from other module 2020-10-02 11:08:03 +09:00
Kijin Sung
fea468f895 Don't redirect to another mid if a document is notice-all 2020-10-02 01:54:52 +09:00
Kijin Sung
a25497c567 Add caching to ModuleModel::getModuleInfoByDocumentSrl() 2020-10-02 01:52:31 +09:00
Kijin Sung
397c9ef788 Add notice-all support to all bundled skins 2020-10-02 01:41:27 +09:00
Kijin Sung
2b77b42480 Add initial support for all-boards notice 2020-10-02 01:36:40 +09:00
Kijin Sung
d1edc53b4e Remove unnecessary ruleset in spamfilter module 2020-10-02 01:21:31 +09:00
Kijin Sung
570944df1a Separate simple_world layout and skin into its own repository
https://github.com/rhymix/rhymix-simple-world
2020-10-01 18:02:04 +09:00
Kijin Sung
5c007272a2 Separate rx_prn skin into its own repository
https://github.com/rhymix/rhymix-skin-prn
2020-10-01 17:34:23 +09:00
Kijin Sung
16d3209bbd Provide triggers document.getThumbnail (before) and comment.getThumbnail (before) 2020-10-01 17:22:06 +09:00
Kijin Sung
f5ff91491b Fix missing editor lang 2020-10-01 17:10:03 +09:00
Kijin Sung
9d0e808514 Optimize thumbnail check logic 2020-10-01 17:03:42 +09:00
Kijin Sung
4102c4bda2 Use 'search' operation to improve search accuracy 2020-10-01 16:51:21 +09:00
Kijin Sung
03c4d87cb9 Clear mid/module_srl cache when global cache is cleared 2020-10-01 16:42:42 +09:00
Kijin Sung
bd13a73d78 Fix broken relative URL in category tree editor 2020-10-01 16:39:23 +09:00
Kijin Sung
01424ddd2d Update some commonly used methods to use ModuleModel::getMidByModuleSrl() 2020-10-01 16:34:07 +09:00
Kijin Sung
7d6e30f936 Add ModuleModel::getMidByModuleSrl() 2020-10-01 16:29:34 +09:00
Kijin Sung
a02bd88a66 Clean up unnecessary module instances in documentItem and commentItem classes 2020-10-01 15:55:11 +09:00
Kijin Sung
ced97f4f4d Remove reCAPTCHA addon 2020-10-01 15:29:32 +09:00
Kijin Sung
f2f6018b5f Disable recaptcha addon if config is migrated to spamfilter module 2020-10-01 15:29:17 +09:00
Kijin Sung
4f888acc9e Implement remainder of reCAPTCHA functionality in spamfilter module 2020-10-01 15:19:01 +09:00
Kijin Sung
c7c03d3c37 Create config screen for reCAPTCHA in spamfilter module 2020-10-01 14:42:07 +09:00
Kijin Sung
9c60a8932c Import recaptcha addon config to spamfilter module 2020-09-30 21:35:52 +09:00
BJRambo
8c03a0dee1 쉬운 설치 서버를 가져올 수 없는 경우 헤더의 버튼 조작이 힘든 문제 고침 2020-09-29 19:54:23 +09:00
Kijin Sung
57e46c4f86 Fix missing commit in procMemberAdminSelectedMemberManage() 2020-09-29 15:35:58 +09:00
Kijin Sung
00fd1a672a Support Twitter meta tags 2020-09-29 01:58:02 +09:00
Kijin Sung
1c786d8cd5 Remove module update scripts from XE 1.7 and before
XE 1.7 이하 버전에서 테이블 스키마 조정, 인덱스 추가, 임시파일 처리 등을 위해
만들어 놓은 업데이트 스크립트를 대부분 제거하여 처리 효율을 향상시킵니다.

이 중 대부분은 XE 개발 초창기(1.2 이전) 스키마 변경이 빈번하던 시절에
하위호환성을 위해 추가된 것으로, 이미 10년 이상 불필요한 상태였습니다.

단, 앞으로는 XE 1.8 미만 버전에서 라이믹스로 업데이트하기 어려워질 수 있습니다.
XE 1.8 미만 버전을 사용하는 사이트에서는 먼저 XE 최신 버전으로 업데이트한 후
라이믹스를 덮어씌우는 방식으로 진행하여야 합니다.
2020-09-29 01:33:57 +09:00
Kijin Sung
0f9b96f9b4 Stop providing XE-compatible $db_info and db.config.php 2020-09-29 00:55:10 +09:00
Kijin Sung
177a6c6b7d Merge branch 'develop' into next 2020-09-29 00:23:30 +09:00
Kijin Sung
b68d571a19 Fix #1414 incorrect behavior when member_srl is negative 2020-09-28 01:21:41 +09:00
Kijin Sung
125dea44b6 Fix max_input_vars error when there are too many levels
- max_input_vars 설정과 무관하게 레벨 수를 늘릴 수 있도록 조정
  (레벨 관련 POST 변수들을 하나로 합쳐서 전송)
- 허용되는 최대 레벨 수를 1000에서 10000으로 늘림
  (단, 권장하는 최대 수는 여전히 1000임)
2020-09-28 01:10:29 +09:00
Kijin Sung
c34a9a9005 Fix different relative paths of point cache file 2020-09-28 00:55:55 +09:00
Kijin Sung
81350e8c4d Fix #1410 add Indonesian flag 2020-09-19 17:34:41 +09:00
Kijin Sung
9c6088f4c3 Fix document columns overwriting comment columns in getTotalCommentList query 2020-09-19 17:18:59 +09:00
Kijin Sung
44d39d6d93 Fix #1408 unnecessary HTML code in recent document list 2020-09-19 17:07:37 +09:00
Kijin Sung
08272aa154 Fix inability to insert file manually if auto insert is turned off 2020-09-19 17:00:58 +09:00
Kijin Sung
178e8aba0c Fix textarea overflow in mobile send_message.html 2020-09-19 17:00:07 +09:00
conory
8ccfd963b6 rhymix_content class 추가 2020-09-17 20:40:06 +09:00
Kijin Sung
ed7c0ab8bb
Merge pull request #1405 from ForPeople/patch-1
Update autoinstall.class.php
2020-09-16 09:29:24 +09:00
포피플
51e62d4cb1
Update autoinstall.class.php
bug fixed.
2020-09-16 05:25:38 +09:00
conory
9d4fcee972 컬럼 설정이 적용되지 않는 문제 수정 2020-09-15 20:45:16 +09:00
conory
86c96a6ea8 https://github.com/rhymix/rhymix/issues/1403 GIF로 취급 기능이 전혀 작동하지 않는 문제 수정 2020-09-15 15:49:29 +09:00
BJRambo
460c48e4d7
Merge pull request #1401 from bnu/develop
알림센터Lite 모듈의 시험용 알림 생성 기능의 오류 수정
2020-09-13 06:30:22 +09:00
bnu
cdcfe840e5 시험용 알림 생성 기능의 오류 수정 2020-09-13 06:11:06 +09:00
Kijin Sung
61fe9c4e58 Clean up trigger list in spamfilter module 2020-09-07 23:40:53 +09:00
Kijin Sung
7e5defaeaf Add AddonModel::getAddonConfig() method for easy access to addon config 2020-09-07 21:25:42 +09:00
Kijin Sung
27ccbc3d9e Automatically use APC if available when installing 2020-09-07 20:40:17 +09:00
Kijin Sung
9ef29a5f1c Merge remote-tracking branch 'upstream/next' into next 2020-09-07 20:33:42 +09:00
Kijin Sung
191cd50c70 Merge branch 'develop' into next 2020-09-07 20:33:04 +09:00
Kijin Sung
49b95477b0 Delete ability to install or update third-party software via FTP/SFTP 2020-09-06 15:07:51 +09:00
Kijin Sung
215f143e70 Fix incorrect ordering of CSS resources 2020-09-04 23:44:21 +09:00
Kijin Sung
36135c0fac Always print the viewport meta tag #1389 2020-09-04 20:21:59 +09:00
BJRambo
f931185ee0 Fix the default object error 2020-09-03 23:26:13 +09:00
Kijin Sung
7770069dae Fix 404 response when reading a document 2020-08-31 10:49:27 +09:00
Kijin Sung
ffe9cda5e0 Merge branch 'develop' into next 2020-08-29 23:53:31 +09:00
Kijin Sung
b6af4d8cbb v1.9.9.9 The things you own 2020-08-29 23:43:10 +09:00
Kijin Sung
274bb3587f Remove dependence on deprecated constants 2020-08-29 23:39:59 +09:00
Kijin Sung
5e9d9ef02f Fix #1393 allow adding module admin by email address 2020-08-29 23:30:15 +09:00
Kijin Sung
09c48abee9 Fix #1394 mark notifications as read on other modules, too 2020-08-29 23:16:30 +09:00
Kijin Sung
33a3e60ac0 Hide debug button when printing 2020-08-27 21:29:35 +09:00
Kijin Sung
b24cccc52e Fix #1380 missing nick_name in waiting file list 2020-08-27 21:24:07 +09:00
Kijin Sung
82bf017f01 Fix #1389 improve handling of viewport meta tag
- viewport 설정에 빈 값을 저장한 경우 메타 태그를 출력하지 않음
- 단, 아예 설정이 없는 경우(XE 또는 구버전에서 업그레이드한 경우)에는 예외
2020-08-27 21:15:11 +09:00
Kijin Sung
28d71acffd Fix #1391 blank sender email after upgrading from XE 2020-08-27 20:57:27 +09:00
Kijin Sung
e565430dae Fix #1392 update cacert.pem used by rmccue/requests 2020-08-27 20:15:00 +09:00
Kijin Sung
2325b50372
Merge pull request #1381 from ForPeople/fix01
쉬운설치 모듈 개선
2020-08-20 23:34:39 +09:00
Kijin Sung
1956089f8c Fix #1375 #1390 force some default styles on editor content area 2020-08-20 16:08:00 +09:00
hanssem@forppl.com
b630e1cea8 리뷰 수정 2020-08-20 15:29:05 +09:00
Kijin Sung
84dfeb64f1 Fix unit test for 313e5275 2020-08-19 17:53:09 +09:00
Kijin Sung
9782c30654 Merge branch 'develop' into next 2020-08-19 15:41:14 +09:00
Kijin Sung
313e527512 Fix CSS sort order different from XE 2020-08-19 15:39:37 +09:00
Kijin Sung
da56b5af07 Fix #1384 untranslated lang when URL is empty 2020-08-19 11:36:38 +09:00
Kijin Sung
f9112cae20 Show text in board module list 2020-08-19 11:07:13 +09:00
Kijin Sung
2fc5850406 Fix #1387 increase MIME type field length 2020-08-19 11:06:03 +09:00
Kijin Sung
a22f6e5805 Increase MIME type field length #1387 2020-08-17 23:21:41 +09:00
Kijin Sung
8a9f8253a8 Increase MIME type field length #1387 2020-08-17 18:04:37 +09:00
Kijin Sung
3cba6e2027 Remove unnecessary variables from login and signup links 2020-08-17 18:00:32 +09:00
Kijin Sung
76c83a5ce1 Fix IS NULL / IS NOT NULL conditions being omitted from XML queries 2020-08-11 11:12:39 +09:00
hanssem@forppl.com
6454145397 코드 개선2 2020-08-10 13:48:11 +09:00
hanssem@forppl.com
52f317a429 코드 개선 2020-08-10 13:45:01 +09:00
hanssem@forppl.com
2ff0cea9c3 버그 픽스 2020-08-10 01:21:28 +09:00
hanssem@forppl.com
3b8b79acf1 상수처리 개선 및 버그수정 2020-08-10 00:58:15 +09:00
hanssem@forppl.com
e3879ac634 들여쓰기 문제 2020-08-09 23:42:03 +09:00
hanssem@forppl.com
f60b34c8ec URL 끝에 슬래시 붙여주기 2020-08-09 23:35:01 +09:00
hanssem@forppl.com
d98fcd10be 쿼리문 변경 2020-08-09 23:22:20 +09:00
hanssem@forppl.com
33e3671250 랭귀지 수정 2020-08-09 23:06:09 +09:00
hanssem@forppl.com
1f90c2e7c3 상수 정리 2020-08-09 22:58:28 +09:00
hanssem@forppl.com
2e523370d7 쉬운설치 개선 2020-08-09 20:38:06 +09:00
Min-Soo Kim
c3d40f733d
에디터에 스크롤이 생기는 문제 해결 (#1377)
https://github.com/rhymix/rhymix/issues/1375
2020-08-07 09:12:11 +09:00
Kijin Sung
a6bb44bf88 Convert PHP_EOL to \n for consistency
adf067e 보완

- classes 내에서 사용하는 PHP_EOL을 \n으로 교체
- common/framework/debug.php, common/scripts 내의 스크립트들은
  OS에 맞춰야 하므로 수정하지 않음
2020-08-06 14:54:32 +09:00
Kijin Sung
388d55fd85 Add triggers before/after insertMemberDevice 2020-08-06 14:50:52 +09:00
Kijin Sung
d3fab50e66 Allow guests to register mobile devices 2020-08-06 14:44:45 +09:00
conory
adf067e557 오타로 Context::addHtmlFooter()시 줄바꿈되지 않은 문제 수정 2020-08-04 01:10:45 +09:00
Kijin Sung
818897fed4 Merge branch 'develop' into next 2020-08-03 14:04:20 +09:00
Kijin Sung
5571a16619 Fix #1373 add classname to popup menu items 2020-08-03 14:01:18 +09:00
Kijin Sung
1e2317f313 Fix #1374 incorrect insertion of audio/video links in SimpleEditor 2020-08-03 13:37:34 +09:00
Kijin Sung
2b3770eff9 Fix comment editor colorset select box not being displayed properly 2020-08-03 13:15:35 +09:00
Kijin Sung
dd7f766ff5 Fix #1372 block dispBoardUpdateLog if document_srl is missing or invalid 2020-07-31 20:22:43 +09:00
Kijin Sung
0f469baae8 Merge branch 'develop' into next 2020-07-31 15:36:40 +09:00
Kijin Sung
750045d095 Add option to disallow symbols in nickname #886 2020-07-31 15:33:46 +09:00
Kijin Sung
f07b971e1e Remove problematic characters in member nickname, etc. #886 2020-07-31 15:03:52 +09:00
Kijin Sung
4c9f2ec3a1 Fix #769 #1359 remove problematic characters in board module 2020-07-31 15:03:24 +09:00
Kijin Sung
a740f39538 Add unit tests for utf8_clean() 2020-07-31 14:58:21 +09:00
Kijin Sung
d9a63c30ce Remove problematic special characters in utf8_clean() 2020-07-31 14:58:11 +09:00
Kijin Sung
45c6e42360 Fix #1368 broken links to www.xpressengine.com 2020-07-31 13:54:04 +09:00
Kijin Sung
3f620481cf Clean up vote cancel functions and ensure consistency between document and comment modules #1367 2020-07-31 13:41:40 +09:00
Kijin Sung
b97ca16b6c Add .editable class to simpleeditor div 2020-07-27 21:57:47 +09:00
Kijin Sung
6ff9cf2bbe Add styling for reCAPTCHA areas in default skins 2020-07-27 12:14:38 +09:00
Kijin Sung
585e4f41f4 Add reCAPTCHA placeholders to default member skin 2020-07-27 12:11:06 +09:00
Kijin Sung
a87a31a611 Add login form to reCAPTCHA autoinsert list 2020-07-27 12:07:42 +09:00
Kijin Sung
a9175b1c9d reCAPTCHA 애드온을 로그인 폼에도 사용할 수 있도록 개선 2020-07-27 11:56:28 +09:00
Kijin Sung
07a4f57a6f Fix incorrect option value in editor module config screen 2020-07-27 11:16:55 +09:00
Kijin Sung
6c0e3ace1f Fix #1361 always add at least one <p> tag 2020-07-23 20:25:00 +09:00
Kijin Sung
8ef75ea63f Fix $css_content being set to null in iOS 2020-07-23 20:22:17 +09:00
Kijin Sung
e2fa95e16c
Merge pull request #1365 from bjrambo/pr/delete-memo
Fix #1363 회원 메모를 빈값으로 삭제 안되는 문제 고침
2020-07-23 20:20:05 +09:00
BJRambo
d603b6c966 회원 메모가 세팅되었는지 명확하게 설정추가 2020-07-23 16:57:46 +09:00
BJRambo
46d7d3e8c4 Fix #1363 회원 메모를 빈값으로 삭제 안되는 문제 고침 2020-07-23 16:52:37 +09:00
BJRambo
5a66bcab82 Fix #1362 포인트모듈을 사용하지 않더라도 설정값은 저장할 수 있도록 개선
변경점이 많습니다.
크게 변경한 점은 없고 if($args->able_module == 'Y') 안에서 동작하는 $config 변수들을 전부 if문 밖으로 빼내서 설정을 저장하도록 하였습니다.

설정 저장을 테스트 해봤으며 큰 문제 없어 보입니다.
2020-07-22 23:44:49 +09:00
BJRambo
8727294d1a Revert "Fix #1362 포인트 모듈을 사용하지 않아도 하단에 설정이 뜨는 문제 고침"
This reverts commit d8a340a90e.
2020-07-22 23:42:29 +09:00
BJRambo
d8a340a90e Fix #1362 포인트 모듈을 사용하지 않아도 하단에 설정이 뜨는 문제 고침 2020-07-22 23:18:44 +09:00
BJRambo
e588086b29
Merge pull request #1357 from bjrambo/pr/nickname-log
회원 닉네임 변경 기록에 검색 옵션을 추가.
2020-07-22 17:00:32 +09:00
BJRambo
221b70bf7e 회원 닉네임 변경 기록에 검색옵션 추가 2020-07-22 16:54:42 +09:00
BJRambo
40d8466ec8 회원 닉네임 변경 칼럼에 인덱스 추가 2020-07-20 15:58:31 +09:00
BJRambo
74ffb0f5d7
Merge pull request #1354 from Lastorder-DC/update/contributing
CONTRIBUTING.md 일부 표현 수정
2020-07-17 01:06:33 +09:00
Lastorder
1976d8baef CONTRIBUTING.md 갱신
- 라이믹스 실행 환경 -> 설치 환경으로 수정(설치 환경이 아닌 경우 지원해야 할 의무는 없습니다)
- 설치 환경에 라이믹스 공식 문서 링크 추가
- PHP 5.5 등 오래된 버전을 직접 언급하는 부분 삭제 및 EUC-KR 언급 삭제(사실상 도태되어 제로보드 지원 호스팅 이외 남아있지 않음)
- 실행 환경 예시 수정(더이상 PHP 5 버전대를 지원하지 않으므로 예제로 부적합하며 라이믹스 버전 역시 XE의 형태(x.x.x)에서 x.x.x.x로 변경됨에 따라 수정)
2020-07-17 00:52:02 +09:00
Kijin Sung
4ad35bff8c Support index options 2020-07-11 18:00:36 +09:00
Kijin Sung
25373e6540 Support more index types in DB::addIndex() 2020-07-11 15:50:12 +09:00
Kijin Sung
9b776942e5 Support more index types in DB table parser
UNIQUE, SPATIAL, FULLTEXT
2020-07-11 15:42:37 +09:00
Kijin Sung
5f8ceafdf6 Merge branch 'develop' into next 2020-07-11 11:48:41 +09:00
Kijin Sung
c3c57e582c Fix #1348 apply xpressengine/xe-core#2148 2020-07-10 02:05:53 +09:00
Kijin Sung
94b82adccc Fix duplicate field name 2020-07-10 01:46:29 +09:00
Kijin Sung
143600306d Clean up editor module 2020-07-09 16:37:04 +09:00
Kijin Sung
d4c449c2a6 Merge branch 'develop' into next 2020-07-09 14:51:36 +09:00
Kijin Sung
71ff1b77a3
Merge pull request #1345 from kijin/simpleeditor
모바일에서 사용할 수 있는 간단한 위지윅 에디터 추가
2020-07-09 14:50:42 +09:00
Kijin Sung
ec2e3e59cc
Merge pull request #1347 from largeden/pr/ios_ckeditor
#1244 최신 iOS 13.5.1에서 한글 입력시 엔터키 호환성 개선
2020-07-09 14:29:11 +09:00
Kijin Sung
1c58a31cd6 Fix comment editor skin for PC not being applied properly 2020-07-09 10:56:21 +09:00
Kijin Sung
e0f5678aba Add option to select different editors for PC and mobile 2020-07-09 00:23:54 +09:00
largeden
33bbe10251 https://github.com/rhymix/rhymix/issues/1244 최신 iOS 13.5.1에서 한글 입력시 엔터키 호환성 개선 2020-07-08 20:45:45 +09:00
Kijin Sung
ee6c62a91e Merge branch 'develop' into simpleeditor 2020-07-08 20:32:58 +09:00
Kijin Sung
8ec0f29a46 Remove Grunt from Travis CI script and use php -l instead 2020-07-08 20:29:39 +09:00
Kijin Sung
f471e16636 Remove most tags and attributes not needed in this editor 2020-07-08 19:58:10 +09:00
Kijin Sung
237637b2ef Fix ugly border around contenteditable div in Chrome 2020-07-08 19:46:37 +09:00
Kijin Sung
6a4131ffd3 Allow autoinsert to work in IE11 2020-07-08 19:45:49 +09:00
Kijin Sung
67b39cf5d0 Add empty paragraph after audio/video tags 2020-07-08 19:18:37 +09:00
Kijin Sung
e448c7a529 Preserve <br> for empty paragraphs 2020-07-08 19:05:36 +09:00
Kijin Sung
9b69cd2aca Fix empty lines being removed after saving 2020-07-08 16:20:19 +09:00
Kijin Sung
a2c763661c Add a simple editor based on contenteditable 2020-07-08 15:34:04 +09:00
Kijin Sung
ece4ce90c2 Exclude enterkey plugin in iOS 2020-07-08 15:33:16 +09:00
Kijin Sung
592c8041cb Add unit tests for LangParser 2020-07-08 00:00:27 +09:00
Kijin Sung
716b0e19bd Add unit tests for XMLRPC request parser 2020-07-07 19:29:26 +09:00
Kijin Sung
2407ad15df Separate module info cache by lang_type 2020-07-07 19:21:04 +09:00
Kijin Sung
dbb8cd684e Add unit tests for ModuleActionParser 2020-07-07 19:20:51 +09:00
Kijin Sung
1abdb2d788 Add unit tests for ModuleInfoParser 2020-07-07 18:04:17 +09:00
Kijin Sung
9d88e53439 Move Korea IP range parser to common/defaults folder 2020-07-07 14:12:01 +09:00
Kijin Sung
f6b260d829 Remove args from return value 2020-07-07 14:04:38 +09:00
Kijin Sung
5496180b47 Fix handling of empty string arguments in write queries 2020-07-07 14:03:06 +09:00
Kijin Sung
5dc1eb0762 Add unit tests for getQueryString() and getQueryParams() 2020-07-07 13:31:54 +09:00
Kijin Sung
46afc3551a Add unit tests for insert, update, delete queries 2020-07-06 20:11:54 +09:00
Kijin Sung
89e4b03265 Fix incorrect detection of update-duplicate attribute 2020-07-06 20:07:57 +09:00
Kijin Sung
7659c18df9 Fix error when there are no tables or columns in an XML query 2020-07-06 14:51:22 +09:00
Kijin Sung
c6cb8f72b5 Add subquery unit tests for DBQueryParser 2020-07-06 14:43:57 +09:00
Kijin Sung
bb94e91fe0 Fix subquery detection in tables and columns section of XML 2020-07-06 14:36:36 +09:00
Kijin Sung
10302ea44e Add some unit tests for DBQueryParser (more to come) 2020-07-06 14:16:13 +09:00
Kijin Sung
8bb01edf86 Add unit tests for DBTableParser 2020-07-06 13:43:56 +09:00
Kijin Sung
d2f24dcd12 Replace DB::isValidOldPassword() with Rhymix's own implementation 2020-07-06 11:51:04 +09:00
Kijin Sung
77ab5cf870 Add unit tests for some methods of new DB class 2020-07-06 11:40:26 +09:00
Kijin Sung
305d045bf6 Fix isValidOldPassword() not working in new DB class 2020-07-06 11:40:13 +09:00
Kijin Sung
dfc1082c85 Add UA::getLocale() 2020-07-05 20:21:44 +09:00
Kijin Sung
154bddfd18 Merge branch 'develop' into next 2020-07-05 19:33:06 +09:00
Kijin Sung
f9ab8da493 Fix #1342 incorrect property access in editor.model.php 2020-07-05 18:59:19 +09:00
Kijin Sung
5985ca5b6b Merge branch 'develop' into next 2020-07-05 00:09:26 +09:00
Kijin Sung
57592be738 v1.9.9.8 Good afternoon, good evening and goodnight 2020-07-05 00:03:14 +09:00
Kijin Sung
6ff3f34d3e Remove unnecessary code from previous versions 2020-07-04 23:54:46 +09:00
Kijin Sung
22cb4c552a Fix #1282 display attachment list in message 2020-07-04 23:46:57 +09:00
Kijin Sung
c35d739443 Fix #1304 JS error when no option has init="true" attribute 2020-07-04 20:33:04 +09:00
Kijin Sung
69c25be996 Display more detailed message when no target module is selected in integration search #1340 2020-07-04 20:27:11 +09:00
Kijin Sung
03f8081550 Send application/json content-type with JSON responses 2020-07-04 19:08:17 +09:00
Kijin Sung
aab715f9e5 Fix #1339 function in default value not working in new DB 2020-07-04 17:41:20 +09:00
Kijin Sung
01fc7383e6 Force admin page background to be white #1310 2020-07-04 00:38:23 +09:00
Kijin Sung
68f428edd7 Fix getUrl() not resetting existing params when called with an array 2020-07-04 00:29:58 +09:00
Kijin Sung
45c4da14e2 Fix #1318 comment report form template 2020-07-04 00:22:13 +09:00
Kijin Sung
70f2e6ce4f Fix #1318 document report form template 2020-07-04 00:18:33 +09:00
Kijin Sung
8d05a674f5 Fix #1335 support autoinsert option by file type 2020-07-03 23:56:37 +09:00
Kijin Sung
b0eb42c2f9 Merge branch 'develop' into next 2020-07-03 19:28:53 +09:00
Kijin Sung
2802c59889 Add mid to redirect URLs generated by ncenterlite #1314 2020-07-03 19:27:37 +09:00
Kijin Sung
5047c39bcf Merge branch 'develop' into next 2020-07-03 16:27:26 +09:00
Kijin Sung
8681923f3e 글, 댓글 삭제시 권한 체크 강화
김경욱님이 제보해 주신 버그를 수정합니다.
2020-07-03 16:03:36 +09:00
Kijin Sung
da73eb7427 Use static method calls and consistent permission checks throughout the Board module 2020-07-03 15:47:52 +09:00
Kijin Sung
ee1ea9729c Fix handling of empty string with default value in INSERT/UPDATE queries 2020-07-03 12:25:23 +09:00
Kijin Sung
c588d02a22 Remove deprecated xeVid JS variable 2020-07-03 00:54:20 +09:00
Kijin Sung
fde0160ca1
Merge pull request #1336 from kijin/no-optional-ssl
SSL 선택적 사용 옵션 제거 #1323
2020-07-03 00:53:11 +09:00
Kijin Sung
55f232b1e8 Remove optional SSL option from install screen 2020-07-03 00:50:29 +09:00
Kijin Sung
13ea096cd4 Remove use_ssl attribute from module.xml 2020-07-03 00:50:14 +09:00
Kijin Sung
67dfb3c282 Remove optional SSL 2020-07-03 00:41:59 +09:00
Kijin Sung
9fdcd86f1d Add XMLRPCParser class to parse XE-compatible XML requests 2020-07-03 00:03:58 +09:00
Kijin Sung
84b7e9f8eb Enable router with JSON requests 2020-07-02 16:42:12 +09:00
Kijin Sung
96950161f1 Use Context::getResponseMethod() to decide the response format 2020-07-02 16:28:15 +09:00
Kijin Sung
10d15b3470 Fix #1334 hide limit_date if it's in the past 2020-07-02 16:22:35 +09:00
Kijin Sung
dd603639e0 Allow JSON requests with actual JSON payload 2020-07-02 16:13:31 +09:00
Kijin Sung
945c09059a Fix inconsistent handling of empty string in INSERT/UPDATE queries 2020-07-02 16:04:05 +09:00
Kijin Sung
54375d16ad Fix incorrect URL in admin header 2020-07-02 14:29:18 +09:00
Kijin Sung
4febc5df88 Show warning about session malfunction on free subdomains on all hostnames suspected of being a free subdomain, not just cafe24 2020-07-02 13:45:09 +09:00
Kijin Sung
3e41832930
Merge pull request #1332 from kijin/next-db
DB 접속 방법 변경 및 XML 문법 확장
2020-07-02 12:11:49 +09:00
Kijin Sung
6a98d061b7 Merge branch 'next' into next-db 2020-07-01 15:17:39 +09:00
Kijin Sung
6e6aa6401d Detect the index action in Router 2020-07-01 15:17:19 +09:00
Kijin Sung
ed7130f552 Add 'raw' result type 2020-06-30 23:28:06 +09:00
Kijin Sung
6e7049234e Reorganize query logging and add detailed comments 2020-06-30 23:21:14 +09:00
Kijin Sung
8a3afa03cc More element handling of executeQueryArray() 2020-06-30 23:05:04 +09:00
Kijin Sung
e89abf14f1 Display more useful information in dispAdminViewServerEnv 2020-06-30 21:15:42 +09:00
Kijin Sung
d814e6c469 Remove description of alternate databases 2020-06-30 20:58:45 +09:00
Kijin Sung
d167cb9ec8 Fix db_type in install cept 2020-06-30 20:55:51 +09:00
Kijin Sung
b9d116db68 Update db_type in autoinstall cept 2020-06-30 20:50:28 +09:00
Kijin Sung
8266114512 Fix erroneous sequence query 2020-06-30 20:49:59 +09:00
Kijin Sung
e4d40af5ec Add missing end marker to router regexp 2020-06-30 20:26:01 +09:00
Kijin Sung
8cd1cdff9f Fix install problems 2020-06-30 20:05:08 +09:00
BJRambo
9d93d7ddc5
Merge pull request #1331 from bjrambo/pr/trash-list
#1330 댓글에 텍스트가 없는 상태에서 휴지통으로 이동시 문제 고침.
2020-06-30 16:35:32 +09:00
BJRambo
170d3b8f22 Change if statement to comment. 2020-06-30 14:52:48 +09:00
Kijin Sung
0f561b3814 Deleted outdated dbxml_validator tests 2020-06-30 14:47:48 +09:00
Kijin Sung
85df901924 Misc fixes for compatibility with existing XML queries and schemas 2020-06-30 14:43:42 +09:00
BJRambo
573d9c87b1 Fix to respond to document without letter. 2020-06-30 14:22:20 +09:00
BJRambo
ada7669f25 Fix #1330 Even if comment is no text, use the link 2020-06-30 14:04:25 +09:00
Kijin Sung
fa220fb1e1 Fix incorrect parsing of subquery in IN () clause 2020-06-30 13:22:21 +09:00
Kijin Sung
ad5169bc7a Remove legacy DB classes and XML query parser classes 2020-06-30 12:20:12 +09:00
Kijin Sung
978d3d167a Fix error handling issues 2020-06-30 12:16:59 +09:00
Kijin Sung
936568a8a5 Improve error handling by using wrapper classes for PDO and PDOStatement 2020-06-30 12:00:42 +09:00
Kijin Sung
47bb30c535 Implement getColumnInfo() 2020-06-30 00:40:10 +09:00
Kijin Sung
58133573b3 Implement addColumn() and modifyColumn() 2020-06-30 00:31:06 +09:00
Kijin Sung
4a7c18f0ac Implement most methods for adding/dropping tables and indexes 2020-06-29 23:16:03 +09:00
Kijin Sung
98bf9e485c Implement isTableExists() and fix return types of prepare(), query(), etc. 2020-06-29 22:46:38 +09:00
Kijin Sung
1903deee40 Fix condition for recording backtraces 2020-06-29 22:37:48 +09:00
Kijin Sung
902b931b89 Provide methods to tell total elapsed time 2020-06-29 22:30:48 +09:00
Kijin Sung
421199b196 Improve debugging 2020-06-29 22:27:45 +09:00
Kijin Sung
84a7b915b7 Implement the COUNT(*) query for pagination 2020-06-29 21:32:25 +09:00
Kijin Sung
7e96affa1a Add prepare() and query() for direct querying 2020-06-29 20:11:04 +09:00
Kijin Sung
8f746af45f Implement more methods for DB class 2020-06-29 17:00:04 +09:00
Kijin Sung
cc271ee154 Initial implementation of DB class based on PDO MySQL driver 2020-06-29 15:45:01 +09:00
Kijin Sung
14e91b2e09 Rewrite DB parsers to use array attributes for better stability 2020-06-29 12:30:58 +09:00
Kijin Sung
f47e2dd3fb Merge branch 'next' into next-db 2020-06-29 11:31:37 +09:00
Kijin Sung
e1df71bc38 Separate common methods into BaseParser class 2020-06-29 11:31:11 +09:00
Kijin Sung
59b6402ddb Remove duplicate method 2020-06-28 23:19:57 +09:00
Kijin Sung
dcbd26e7f2 Reorder and categorize query attributes for easy reference 2020-06-27 01:25:05 +09:00
Kijin Sung
a1b946bae6 Add some useful functions to default values 2020-06-27 01:05:32 +09:00
Kijin Sung
6f0ecd26a7 Support ON DUPLICATE KEY UPDATE (upsert) queries 2020-06-27 00:58:24 +09:00
Kijin Sung
7f8312ee1a Implement INSERT and UPDATE queries using new parser 2020-06-27 00:49:04 +09:00
Kijin Sung
03279788da Implement DELETE queries using new parser 2020-06-27 00:32:23 +09:00
Kijin Sung
a086c93935 Support SELECT DISTINCT queries 2020-06-27 00:08:48 +09:00
Kijin Sung
e3138f7278 Prepare to support INSERT/UPDATE/DELETE queries, too 2020-06-27 00:04:19 +09:00
Kijin Sung
6d251dfbe1 Finish the SELECT query generator 2020-06-26 21:56:25 +09:00
Kijin Sung
bc287b0e0f Parse GROUP BY and HAVING clauses 2020-06-26 21:04:00 +09:00
Kijin Sung
db13d110b8 Finish work on condition parsing 2020-06-26 20:56:32 +09:00
Kijin Sung
6eca8736c1 More work on the query parser 2020-06-26 16:52:41 +09:00
Kijin Sung
92ff69591f Use new parser to create all tables 2020-06-26 13:51:22 +09:00
Kijin Sung
93be42c477 Restrict index size to 191 chars for utf8mb4 and 255 chars for utf8 (767 chars total) 2020-06-26 13:46:48 +09:00
Kijin Sung
93e597989d Generate CREATE TABLE queries using new parser 2020-06-26 11:14:51 +09:00
Kijin Sung
99e74a0e20 Merge branch 'next' into next-db 2020-06-26 10:26:29 +09:00
Kijin Sung
fa5f70c0e9 Merge branch 'develop' into next 2020-06-25 16:28:13 +09:00
Kijin Sung
ffff733500 Fix #1328 phone verification required when phone number field is disabled 2020-06-25 16:28:02 +09:00
Kijin Sung
4d3df0f7f2 Don't set click action unless it contains a value 2020-06-25 15:29:51 +09:00
Kijin Sung
9bf62ea6d2 Detect device model and OS version automatically 2020-06-25 15:22:12 +09:00
Kijin Sung
3abaee5e2b Add OS version and device model detection to UA::getBrowserInfo() 2020-06-25 15:17:11 +09:00
Kijin Sung
5a90f97f89 Preserve success/deleted/updates tokens from both drivers 2020-06-24 23:23:24 +09:00
Kijin Sung
dcbd5ff9b6 Add SMS drivers for apistore, cafe24, ppurio 2020-06-24 22:12:10 +09:00
Kijin Sung
d68770a3ef Clean up mail and SMS log view screens 2020-06-24 20:18:43 +09:00
Kijin Sung
4271bb9862 Extend advanced_mailer module to log and test Push Notifications 2020-06-24 20:13:46 +09:00
Kijin Sung
95c776645a Remove duplicate init() from board.mobile.php 2020-06-24 13:43:32 +09:00
Kijin Sung
04da475562
Merge pull request #1325 from lcy7747/next-push
모바일 푸시 기능 추가
2020-06-24 13:27:15 +09:00
Kijin Sung
16ce23150c Remove void return type for PHP 7.0 compatibility 2020-06-24 11:44:33 +09:00
Kijin Sung
0690c6c603 Remove extra space character 2020-06-24 11:43:13 +09:00
Kijin Sung
24a04f56e4 Add short URLs for procMemberRegisterDevice and procMemberLoginWithDevice 2020-06-24 11:35:17 +09:00
choyeon
9756d5d3d1 escape를 strval로 수정 2020-06-24 10:44:56 +09:00
choyeon
525a4d839f member_devices 테이블 스키마 - idx를 unique로 변경하고 unique옵션에 맞게 사이즈 변경 2020-06-24 10:37:30 +09:00
choyeon
8a9ea67523 기존에 deleteMemberDeviceByToken 삭제하고 deleteMemberDevice로 통일 2020-06-24 10:15:11 +09:00
choyeon
6c852e5f64 oPush set할 때, 자료형 맞게 가공 2020-06-24 09:01:33 +09:00
choyeon
d7a66c6c01 delete쿼리에서 notnull 옵션 추가 2020-06-24 09:00:12 +09:00
choyeon
de992b7092 사용하지 않는 extra_image 삭제 2020-06-23 10:47:55 +09:00
choyeon
0eec2fffac 불필요한 logged_info 빼고 위에서 선언했던 member_info 사용해서 반환값 셋팅 2020-06-23 10:45:54 +09:00
choyeon
b633589edf device_token 패턴 체크할 때 not 연산자 추가 2020-06-23 10:14:32 +09:00
Kijin Sung
b912c623e2 More work on the query parser 2020-06-22 23:43:56 +09:00
Kijin Sung
20025077f7 Create basic structure of XML query 2020-06-22 16:53:44 +09:00
Kijin Sung
b986f826ba
Merge branch 'next' into next-push 2020-06-22 16:46:38 +09:00
choyeon
347152e163 알림 기능 구현FCM은 테스트 완료 2020-06-22 14:34:35 +09:00
Kijin Sung
c97b161e42 Remove unnecessary size from int/bigint types 2020-06-22 11:26:11 +09:00
Kijin Sung
43c5da7818 Update parser classes 2020-06-22 11:19:26 +09:00
Kijin Sung
59f14d8a3f Import DB parser classes from previous private project 2020-06-22 11:00:18 +09:00
Kijin Sung
653fc532f5
Merge pull request #1322 from kijin/next-router
라우터(Router) 기능 추가
2020-06-22 10:56:11 +09:00
choyeon
07e28b4ef9 fcm에서 click_action 가져오는 코드 추가 2020-06-22 10:52:44 +09:00
choyeon
5e577396f3 스키마 수정 및 커밋 빠진 파일 추가 2020-06-22 10:45:46 +09:00
choyeon
b3aca6bd36 device_type의 type 다시 수정 2020-06-22 10:43:54 +09:00
Kijin Sung
a81690953c Add detailed information about the choice of rewrite level 2020-06-22 10:39:40 +09:00
Kijin Sung
36b8ce75c5 Always update module module first 2020-06-22 10:31:44 +09:00
choyeon
93f1d15a48 member_devices 스키마 수정,
ProcMemberLogingWithDevice 에서도 유저 정보 반환,
getDeviceTokens()에서 쿼리할 때 device_type 조건 추가
2020-06-22 10:29:40 +09:00
Kijin Sung
9a158fde7e Fix unit tests 2020-06-22 00:57:12 +09:00
Kijin Sung
1bb7248e3e Add tests for Router::getURL() and Router::parseURL() 2020-06-22 00:52:51 +09:00
Kijin Sung
60247f7d53 Separate route cache by rewrite level 2020-06-22 00:04:25 +09:00
Kijin Sung
67d4217052 Set default language if lang_type is not available 2020-06-22 00:04:08 +09:00
Kijin Sung
2abeaba75d Fix indentation (spaces -> tabs) 2020-06-21 18:11:15 +09:00
Kijin Sung
075f1d935d Add exclusion list for modules like socialxe 2020-06-21 17:49:33 +09:00
Kijin Sung
f9521d4d93 FCM 요청 스키마 수정 및 배열 선언 가독성 개선 2020-06-21 16:46:07 +09:00
Kijin Sung
e9bec851f9 Fix forms with empty actions 2020-06-20 15:50:22 +09:00
choyeon
df76fa45c5 FCM push 테스트OK (APNs는 옵션 추가해야함) 2020-06-19 17:01:25 +09:00
Kijin Sung
10a01103b4 ncenterlite integration for push notification 2020-06-19 16:04:12 +09:00
choyeon
4dcb8d741b push 모듈 중간 커밋 2020-06-19 16:01:30 +09:00
choyeon
2b961a2e8a member_devices 테이블 스키마 오타 수정 2020-06-19 14:45:14 +09:00
Kijin Sung
3a13b51068 Add basic structure of unit test for Router 2020-06-19 14:20:30 +09:00
Kijin Sung
fda931ede0 Fix unit tests to match expected behavior 2020-06-19 13:54:37 +09:00
Kijin Sung
f82a0417cd Add experimental support for short URLs for POST requests 2020-06-19 13:48:16 +09:00
Kijin Sung
4a433fa536 Support short URLs for module 2020-06-19 13:47:57 +09:00
Kijin Sung
f8a47bbabb Improve error handling when module.xml doesn't exist 2020-06-19 13:47:14 +09:00
Kijin Sung
ba0f29c9b3 Improve module detection and argument handling 2020-06-19 12:47:29 +09:00
Kijin Sung
a6318436c2 Adjust argument priority 2020-06-19 11:33:21 +09:00
Kijin Sung
358832922e Fix incorrect global route detection 2020-06-19 11:14:10 +09:00
Kijin Sung
9372ee4cce Change some internal methods to protected in ModuleHandler 2020-06-18 21:20:23 +09:00
Kijin Sung
99f36f56a6 Change unnecessary ModuleModel instance method calls to static calls in ModuleObject 2020-06-18 21:08:16 +09:00
Kijin Sung
41e02eb89a General cleanup of ModuleHandler init() 2020-06-18 21:04:44 +09:00
Kijin Sung
e17ddbbdb1 Remove nonsense import 2020-06-18 20:08:30 +09:00
Kijin Sung
85fcc79457 Reorganize data exchange format between Context and Router 2020-06-18 20:06:59 +09:00
Kijin Sung
c8a6b8de79 Support global routes 2020-06-18 16:36:27 +09:00
choyeon
e1b207f085 등록된 기기에서 접속하면 자동으로 로그인시켜 주는 액션 구현 2020-06-18 16:02:22 +09:00
Kijin Sung
7e47c1cb8a Fix duplicate cache key 2020-06-18 14:14:29 +09:00
Kijin Sung
5fa72f8629 Add 404 error handler and update permission data structure 2020-06-18 14:13:23 +09:00
Kijin Sung
e20c06bf00 Replace $_GET in ModuleHandler with router results 2020-06-18 13:48:41 +09:00
Kijin Sung
6286fd3397 Display 404 error if a route cannot be found 2020-06-18 13:25:16 +09:00
Kijin Sung
527e16c924 Merge branch 'next' into next-router 2020-06-18 13:17:28 +09:00
Kijin Sung
4cd548cd58 Merge branch 'develop' into next 2020-06-18 13:16:38 +09:00
Kijin Sung
8ab971f696 Improve #1321 2020-06-18 13:10:32 +09:00
Kijin Sung
c164f506bb Fix #1324 extra_vars not saved when editing widget page 2020-06-18 12:14:52 +09:00
choyeon
286ea1913f Merge branch 'next-push' of gitlab.com:jootek/rhymix into next-push 2020-06-18 12:11:01 +09:00
choyeon
e5fdd73d3d procMemberRegisterDevice(기기 등록)모듈 커밋 2020-06-18 12:06:18 +09:00
Kijin Sung
4c7e3dea82 Return more detailed information from router 2020-06-18 11:23:20 +09:00
Kijin Sung
f8ea38c22d Remove vid handling code from HTMLDisplayHandler 2020-06-18 10:38:49 +09:00
Kijin Sung
c7949e11db Fix 404 error when document_srl is the only part of the URL 2020-06-18 10:38:36 +09:00
Min-Soo Kim
83ce4a8099
Countable or not, in communication view. (#1321)
* 커뮤니케이션 모듈 내용 중 null 이 반환되는 가능성이 있는 부분 예외 상황 대응

https://github.com/rhymix/rhymix/pull/1309 연관
2020-06-17 23:00:14 +09:00
Kijin Sung
221f30484f Fix regexp for detecting valid mid/act/module 2020-06-17 22:54:22 +09:00
Kijin Sung
31c38c03a9 Cleanup unnecessary module instances in ModuleHandler 2020-06-17 22:40:01 +09:00
Kijin Sung
85c2f87f13 Move some security measures from ModuleHandler to Context 2020-06-17 22:31:22 +09:00
Kijin Sung
b5740052fc Move SSL redirection logic to Context::init() 2020-06-17 22:25:40 +09:00
Min-Soo Kim
588f7a6df8
에디터 스킨 스타일 추가 수정 (미세 수정) (#1320)
#1308 에 대한 추가 수정입니다.
2020-06-17 21:29:08 +09:00
Kijin Sung
65df40ad9f Merge branch 'next' into next-router 2020-06-17 21:12:57 +09:00
Kijin Sung
a32d06660d Merge branch 'next' into next-push 2020-06-17 21:11:59 +09:00
Kijin Sung
00246165b3 Merge branch 'develop' into next 2020-06-17 21:09:41 +09:00
Kijin Sung
480635d131 Fix relative URLs in form actions and other HTML attributes 2020-06-17 18:38:26 +09:00
Kijin Sung
3bbb175cd1 Fix missing action_forward in integration_search module 2020-06-17 16:56:55 +09:00
Kijin Sung
f92fc9c980 Use action_forward to register standalone routes from all modules 2020-06-17 16:56:42 +09:00
Kijin Sung
5dcb0d332b Extend action_forward feature to include route info 2020-06-17 15:52:06 +09:00
Kijin Sung
3c75e7eafb Fix push driver management function 2020-06-17 15:48:30 +09:00
BJRambo
ea381a46c6 import a file config, check if it is a object and run clone 2020-06-17 14:56:57 +09:00
Kijin Sung
a08ec31f2b Remove unnecessary variables from route 2020-06-17 12:37:19 +09:00
Kijin Sung
a814b4e334 Improve parsing of route definitions and deleted vars 2020-06-17 12:33:21 +09:00
Kijin Sung
bb3d1f08a1 Allow standalone routes from other modules to be used 2020-06-17 00:18:10 +09:00
Kijin Sung
2feba015f4 Store found routes in cache for fast lookup of similar arguments 2020-06-16 23:52:13 +09:00
Kijin Sung
c0c11a42ff Separate _getBestMatchingRoute() from _insertRouteVars() 2020-06-16 23:30:37 +09:00
Kijin Sung
7ac27fffce Reorganize type shortcuts 2020-06-16 23:24:47 +09:00
Kijin Sung
1f11dbe41f Fix priority detection when priority is 0 2020-06-16 21:36:54 +09:00
Kijin Sung
a2bd361737 Implement route priority 2020-06-16 21:33:26 +09:00
Kijin Sung
ca183c89a0 Fix missing variables 2020-06-16 20:55:06 +09:00
Kijin Sung
e49c77926a Implement admin functions for FCM and APNs configuration 2020-06-16 15:47:42 +09:00
Kijin Sung
3c15c34aa1 Clean up push driver classes 2020-06-16 15:47:15 +09:00
Kijin Sung
5a53570dd1 Remove type declaration from constructor 2020-06-16 15:46:50 +09:00
BJRambo
3e4a96eb17
Merge pull request #1316 from bjrambo/pr/solapi-drivers
SolAPI SMS 드라이버 추가
2020-06-16 12:13:22 +09:00
Min-Soo Kim
e7cb5ede82
에디터 스타일과 기본 스타일의 합병
* 기본 에디터 스타일과 기본 스타일 설정이 충돌하는 경우가 많았습니다.
 - 기본 스타일을 지정했는데, 기본 에디터 스타일 내의 스타일 지정이 있는 경우 반영이 안되는 경우, 또는 기본 에디터 스타일을 변경했는데 기본 스타일 설정 때문에 반영이 적절하게 되지 않는 경우 등.
* 기본 에디터 스타일에서도 less 또는 sass를 사용하도록 하고 싶었지만, 위지윅 에디터에서 본문에 나타날 스타일을 그대로 보여주는데 한계가 있었습니다.
 - 기본 에디터 스타일을 위지윅 에디터 내에서 나타내기 위해서 변칙적인 방법이 많이 활용되었습니다. 때문에 실제 본문에서 적용되는 스타일 시트의 우선순위와 위지윅 에디터 내에서 적용되는 스타일 시트의 우선순위에 차이가 있었습니다. 이 차이는 실제 보여지는 스타일과 작성하는 에디터 내의 스타일 차이를 크게 만들 가능성이 있었습니다.
* 기능의 의미가 많이 퇴색되었고, 의미 전달이 명확하지 않은 기능이었습니다.
 - 기능상 기본 에디터 스타일과 기본 스타일은 서로 겹치는 영역의 기능입니다. 기본으로 포함된 두 에디터 스타일 간에 차이가 크지 않기도 해서 어떤 기능인지 사용자가 알아채기도 어려웠습니다. 자료실에 배포되고 있는 에디터 스타일도 대단히 적었습니다.
* 게시판이나 각 글의 모듈 스킨에서 지정하는 스타일과 충돌할 가능성도 있습니다.

따라서, 에디터 스타일이 의도한 것 처럼 글의 스타일에 대한 관리자 통제 기능은 유지하면서, 다른 기능과 중복되거나 충돌할 수 있는 기능을 정리합니다.
가능한 많은 환경에서 테스트 하였으나, 추가로 이와 관련한 의견이 있을 경우 merge 후에도 계속 반영 해나가겠습니다.
2020-06-16 00:33:19 +09:00
BJRambo
3006bfe598 Cleanup code like 99d1633a69 2020-06-15 19:33:54 +09:00
BJRambo
99d1633a69 Cleanup code 2020-06-15 19:30:06 +09:00
Min-Soo Kim
9b95ae0134
Fix XEtown URL (#1317)
* Fix XEtown URL

XETOWN 주소가 변경된 것을 반영합니다.

- rhymix#1315
- https://xetown.com/topics/1417299

`찌릿찌릿` 해진 커밋 올립니다. @Lastorder-DC 님 감사합니다.

Co-authored-by: Lastorder <18280396+Lastorder-DC@users.noreply.github.com>
2020-06-14 21:32:08 +09:00
Kijin Sung
f227617fa9 Fix actions from other modules not being recognized 2020-06-14 20:46:01 +09:00
Kijin Sung
e83e82f8d3 Update Context::getUrl() to use Router 2020-06-14 20:31:57 +09:00
Kijin Sung
5869201023 More fixes to XE compatible routes 2020-06-14 20:31:41 +09:00
BJRambo
32bbdb0d50 Simplify unnecessary inspection operations 2020-06-14 20:27:03 +09:00
Kijin Sung
d0b0790beb Reorganize rules and conditions 2020-06-14 20:24:31 +09:00
Kijin Sung
d582b712db Minor cleanup 2020-06-14 20:08:56 +09:00
Kijin Sung
df003ec7e8 Improve handling of XE-compatible global routes 2020-06-14 19:31:33 +09:00
BJRambo
ce4f6133cc Add comment to uploadImage funtion 2020-06-14 15:05:06 +09:00
BJRambo
6516984dc0 do not use Curl and send more that two message, create a group to improve text message.
* messages 혹은 $options->to 으로 넘어오는 전화번호의 갯수의 의해 문자를 2건 이상 전송할 경우 무조건 그룹메세지를 통해 전송하도록 고침.
* static선언하는 메소드들을 전부 static선언을 지움
* 최종 요청을 FileHandler::getRemoteResource() 으로 처리하도록 고침
2020-06-14 14:53:48 +09:00
BJRambo
b073700f96 Fix problem that do not send SMS in ncentelite 2020-06-13 22:22:13 +09:00
BJRambo
a925f68871 Add to image upload for SolAPI driver 2020-06-13 21:43:06 +09:00
BJRambo
43161bab35 Fix typo 2020-06-13 20:34:03 +09:00
BJRambo
8c4e300f1a Add SolAPI driver for SMS 2020-06-13 20:19:45 +09:00
Kijin Sung
bf8d2c8b09 Improve handling of multiple routes per action 2020-06-13 11:48:58 +09:00
Kijin Sung
7fc3d83888 Generate mid/act URLs, too 2020-06-13 01:45:33 +09:00
Kijin Sung
607de73a76 Implement reverse generation of URLs 2020-06-13 01:38:45 +09:00
Kijin Sung
522e3af8c1 Remove unnecessary 'i' modifier in variable regexp 2020-06-13 01:38:23 +09:00
Kijin Sung
4a5159b255 Always cache module and action info 2020-06-13 01:04:21 +09:00
Kijin Sung
1bf5b4c240 Change syntax for specifying multiple routes for the same action 2020-06-13 00:37:59 +09:00
Kijin Sung
b706f2f6ab Add support for the generic mid/act URL pattern 2020-06-13 00:27:23 +09:00
Kijin Sung
f02c4aa4c4 Remove object return type declaration for compatibility with PHP < 7.2 2020-06-12 23:53:09 +09:00
Kijin Sung
eb2c9d0aed Spaces to tabs 2020-06-12 23:49:33 +09:00
Kijin Sung
e6c61c4042 Support module-defined routes 2020-06-12 23:38:01 +09:00
Kijin Sung
17897aef5a Add some routes to the board module 2020-06-12 23:21:25 +09:00
Kijin Sung
b44f9a2c78 Fix cache key mismatch in getModuleActionXml() 2020-06-12 23:20:59 +09:00
Kijin Sung
2d1a7ec432 Add ability to parse routes into regexp 2020-06-12 23:19:23 +09:00
Kijin Sung
7cf17bc43f Implement SimpleXML parsers for info.xml and module.xml 2020-06-12 22:41:18 +09:00
Kijin Sung
f0b8836595 Fix short URL for category 2020-06-12 20:20:30 +09:00
Kijin Sung
a680f89326 Adjust some parts of Context class for better integration with Router 2020-06-12 14:54:05 +09:00
Kijin Sung
baddbd3cba Support XE-compatible rewrite rules 2020-06-12 14:16:36 +09:00
Kijin Sung
1cd3cfc7d9 Support different rewrite levels for XE compatibility 2020-06-12 13:24:01 +09:00
Kijin Sung
e23c693446 Create a basic structure for the Push driver system 2020-06-12 11:28:32 +09:00
Kijin Sung
f01fb9ae42 Merge branch 'develop' into next 2020-06-12 10:28:36 +09:00
Kijin Sung
369858012e
Merge pull request #1312 from nemo9l/improve/exec_json
#1311 exec_json 에서 callback_error 의 반환값에 따라 alert 하지 않도록 수정
2020-06-12 08:20:35 +09:00
Webstack
7830e2f8f4 #1311 exec_json 에서 callback_error 의 반환값에 따라 alert 하지 않도록 수정 2020-06-11 17:02:04 +09:00
Kijin Sung
748dbeb95a Allow custom notifications to set target_srl for future reference 2020-06-09 16:07:58 +09:00
Kijin Sung
5fa7308a09
Merge pull request #1309 from misol/is_countable
count() 함수를 사용하기 전에, 셀 수 있는 변수인지 확인
2020-06-08 20:39:30 +09:00
Kijin Sung
494e0ee028 Clean up usage of is_countable() 2020-06-08 20:35:54 +09:00
Min-Soo Kim
67a9aba082 Check is_countable in the DB.class.php 2020-06-07 23:03:52 +09:00
Min-Soo Kim
a641b3103a is_countable?! 2020-06-07 22:56:21 +09:00
Kijin Sung
2c6f1a2b24 Merge branch 'develop' into next 2020-05-31 23:59:17 +09:00
Min-Soo Kim
43fe12af13
알림 수신 거부 기능을 드롭다운 메뉴에 추가 (#1301)
알림센터의 수신 거부 기능을 드롭다운 메뉴에 추가.

* 알림 수신 설정 메뉴 트리거 코드 수정
* Unsubscribe_srl이 잘못된 값일 경우에 대한 오류 처리 추가
* Refining the unsubscribing methods
* 사용하지 않는 변수 제거, 오류 문구 정리
* 사용할 필요가 없어진 $member_srl 변수 사용 안함.
* 수신 거부 해제 대상이 아닌 컨텐츠를 수신 거부 해제 요청시 오류 문구 추가.
* Support multi-lang for the unsubscribing page of default skin
2020-05-31 22:44:14 +09:00
Kijin Sung
29b929b7eb Fix typo 2020-05-31 16:40:01 +09:00
Min-Soo Kim
81774f6e96
Update a skin html for user config. page of the notification module (#1300)
알림센터 모듈의 default_bottom 스킨의 사용자 설정 페이지에 설정이 일부 빠져 있어서 업데이트 합니다.
2020-05-31 15:18:22 +09:00
Kijin Sung
fa9e8fbe21 Fix duplicate slash in point module config screen 2020-05-31 13:36:29 +09:00
Kijin Sung
c087121262 Change ModuleModel::getModuleConfig() to return null if no config exists 2020-05-26 19:22:43 +09:00
Kijin Sung
6afbdf1de5 Merge branch 'develop' into next 2020-05-26 19:19:51 +09:00
Kijin Sung
3f9d406f8d Fix #1295 empty list returned in procCommentGetList 2020-05-26 19:19:20 +09:00
Kijin Sung
34eb311ac0 Merge branch 'develop' into next 2020-05-26 09:00:15 +09:00
Kijin Sung
5cd1cc53a5 Fix #1298 array/object confusion in point module 2020-05-26 08:25:05 +09:00
Kijin Sung
55f7898dc9 Return null by default in getModulePartConfig() 2020-05-26 08:24:44 +09:00
Kijin Sung
55cba46f26 Remove unnecessary check for array in getModulePartConfig() 2020-05-26 00:27:31 +09:00
Kijin Sung
b419dcf2bc Merge branch 'develop' into next 2020-05-24 21:29:08 +09:00
Kijin Sung
4d64264573
Merge pull request #1296 from kijin/pr/static-models
정보를 불러오는 메소드들 대부분을 static으로 변경
2020-05-24 21:27:39 +09:00
Kijin Sung
530b00e3c1 Add ModuleModel::getModuleInfo() shortcut method 2020-05-24 21:05:18 +09:00
Kijin Sung
f6d4de8e70 Change method calls to static in point module 2020-05-24 20:49:09 +09:00
Kijin Sung
c90d529c74 Change method calls to static in many core modules 2020-05-24 20:43:52 +09:00
Kijin Sung
89ec44152e Convert most methods in FileModel to static 2020-05-24 19:23:42 +09:00
Kijin Sung
2e2e11618b Fix inconsistent data type for point module part config 2020-05-24 11:00:50 +09:00
Kijin Sung
1254594a7c Stop using ArrayObject in module part config
module part config에 배열을 저장한 경우 배열을 그대로 반환하고, 그렇지 않으면
항상 오브젝트를 반환하도록 변경함. 만약 ArrayObject가 저장되어 있는 경우
오브젝트로 변환하여 반환함.

https://bugs.php.net/bug.php?id=77298 버그로 인해 ArrayObject를 serialize하여
저장했다가 나중에 다시 불러와서 조작하려고 하면 segfault가 발생함.
그 때문에 일부 PHP 7.3 버전에서 라이믹스를 정상적으로 사용하기가 불가능함.
특히 카페24의 PHP 7.3 웹호스팅에서 "페이지 로딩이 지연되었습니다" 에러 발생.

PHP 엔진 자체의 버그이지만, 라이믹스에서 지원하는 버전 대역에 포함되어 있고
실제로 많이 사용되는 버전이므로 라이믹스에서 땜빵하는 것이 옳다고 생각됨.

만약 이 패치 때문에 설정을 제대로 불러오거나 저장할 수 없는 모듈이 발견된다면
해당 모듈을 수정해야 함. 자기 설정의 자료형이 뭔지도 모르는 모듈을
코어에서 배려해 줄 필요 없음.
2020-05-24 10:44:22 +09:00
Kijin Sung
eceb12c85a Add MemberModel::getMemberInfo() 2020-05-23 19:16:38 +09:00
Kijin Sung
8dbb023816 Convert most methods in PointModel to static 2020-05-23 19:13:20 +09:00
Kijin Sung
9b5decbd2e Convert most methods in CommentModel to static 2020-05-23 19:10:13 +09:00
Kijin Sung
145ce98268 Convert most methods in DocumentModel to static 2020-05-23 14:13:35 +09:00
Kijin Sung
55ee9d03cb Fill in more function modifiers 2020-05-23 14:13:13 +09:00
Kijin Sung
eca99205df Fill in missing function modifiers 2020-05-22 00:02:57 +09:00
Kijin Sung
d9f16f888b Convert most methods in MemberModel to static 2020-05-21 23:21:17 +09:00
Kijin Sung
40db6ceb73 Convert most methods in ModuleModel to static 2020-05-21 22:53:55 +09:00
Kijin Sung
3c3c8f6712 Merge branch 'develop' into next 2020-05-21 21:00:08 +09:00
Kijin Sung
a5f7d25b32 Fix Object::getObjectVars() 2020-05-21 21:00:01 +09:00
Kijin Sung
953faecd55 Detect AJAX abort due to page unload #1280 2020-05-21 20:53:49 +09:00
Kijin Sung
4f1264dee5
Merge pull request #1292 from kijin/pr/object-cleanup
모듈 클래스 인스턴스를 직접 생성할 수 있도록 개선
2020-05-20 21:34:41 +09:00
Kijin Sung
766cd4b1d5 Fix .travis.yml warnings 2020-05-19 21:04:57 +09:00
Kijin Sung
a635546f39 Fix #1293 incorrect sender of message when managing documents 2020-05-19 21:00:55 +09:00
Kijin Sung
dc564a4a1a Update .travis.yml to reorder tests and remove unnecessary commands 2020-05-19 20:56:32 +09:00
Kijin Sung
37de1bc9ee Update .travis.yml to use xenial environment for PHP 7.4 2020-05-19 20:53:06 +09:00
Kijin Sung
14ad62e869 Fix incorrect use of curly braces in legacy classes 2020-05-19 20:52:44 +09:00
Kijin Sung
786c9c9b8c Replace some usages of getModel(), getController(), etc. in the Rhymix Framework 2020-05-18 21:51:36 +09:00
Kijin Sung
052930a6d4 Replace some usages of getModel(), getController(), etc. with getInstance() 2020-05-18 21:45:44 +09:00
Kijin Sung
6f9bfb0bac Remove unnecessary function calls 2020-05-18 21:26:57 +09:00
Kijin Sung
abedfbb55c Implement getInstance() for module classes 2020-05-18 21:20:38 +09:00
Kijin Sung
fda343afd1 Set $this->user only once 2020-05-18 20:41:57 +09:00
Kijin Sung
564563f56c Clean up constructors and other method signatures 2020-05-18 20:37:16 +09:00
Kijin Sung
2cbfd4500c Remove error_return_url more efficiently 2020-05-18 19:54:05 +09:00
Kijin Sung
586f010f55 Allow passing an array of keys/values to getUrl()
getUrl()을 호출할 때 파라미터 이름과 파라미터 값을 풀어서 각각의 파라미터로
넘길 필요 없이, 하나의 연관배열로 넘길 수 있도록 허용합니다.

    $args = array(
        'mid' => $mid,
        'document_srl' => $document_srl,
    );

    getUrl($args);

이 문법을 사용하면 맨 앞에 빈 문자열을 넘겼을 때와 마찬가지로 기존의 URL
파라미터들은 모두 초기화됩니다. 즉 아래와 동일한 효과입니다.

    getUrl('', 'mid', $mid, 'document_srl', $document_srl);

기존의 URL 파라미터들을 남겨놓으려면 기존 방식대로 풀어서 써야 합니다.
2020-05-18 19:41:06 +09:00
Kijin Sung
3430e21be4 Fix unnecessary query when there are no polls 2020-05-18 19:12:06 +09:00
Kijin Sung
cd58305fc1 v1.9.9.7 Pensacola 2020-05-17 21:51:08 +09:00
Kijin Sung
12f603feee Fix #1288 support meta keywords and description per domain 2020-05-17 21:38:37 +09:00
Kijin Sung
94ae4ccebe Add disclaimer about download count being incremented
https://xetown.com/questions/1402724
2020-05-17 21:25:49 +09:00
Kijin Sung
b5fc7b9ab2 Fix #1285 #1286 prevent change of status of deleted comments 2020-05-17 21:14:59 +09:00
Kijin Sung
b36675aeba Fix #1285 status displayed as 'undefined' in comment management popup 2020-05-17 20:53:17 +09:00
Kijin Sung
fab11bfd39 Fix #1285 display comment status properly in list 2020-05-17 20:46:14 +09:00
Kijin Sung
f1c15ab1e1 Fix #1283 do not show comments on secret documents in integration search 2020-05-17 20:06:27 +09:00
Kijin Sung
49a1c52913 Fix error in integration search when exclusion list is empty 2020-05-17 19:52:31 +09:00
Kijin Sung
bd94b6915e Fix cache select box displaying 'apc' if no config exists 2020-05-17 00:26:17 +09:00
BJRambo
ab712585d3 Fix #1290 기존 스킨의 호환성을 위한 메소드 추가 2020-05-16 02:01:59 +09:00
BJRambo
2b6d6b9925 Fix #1290 함수명을 일괄성있게 고침 2020-05-15 16:06:01 +09:00
Kijin Sung
7c7727f8d1 Remove DB version check
PHP 7.0 이상 호스팅에서 MySQL 5.0 미만을 사용하는 사례는 사실상 전무하므로
불필요한 문제를 일으키는 DB 버전 체크 과정을 제거함.

cf. rhymix/rhymix-docs#3
2020-05-10 21:18:34 +09:00
BJRambo
cf0bd0140b Fix #1287 쪽지수신여부 설정시 캐싱을 하지 않던 문제 고침 2020-05-05 23:57:02 +09:00
Kijin Sung
9ca361ab45
Merge pull request #1284 from nemo9l/fix/strict-for-blank
Fix #1281
2020-05-04 09:35:10 +09:00
Ji Yong, Kim
9966a4eedd Fix #1281 2020-05-04 08:29:20 +09:00
Kijin Sung
098a02a008 Fix #1275 add layout (before) trigger point 2020-04-27 22:46:52 +09:00
Kijin Sung
ae36419ee7 Remove temporary fix for session domain
2020년 3월 한때 develop 브랜치에서 세션 도메인이 잘못 지정되었던 문제를
우회하기 위해 삽입했던 임시 코드를 삭제 또는 주석처리함.

문제가 있던 당시에 develop 브랜치로 업데이트했던 일부 사이트 외에는
필요하지 않은 코드이므로, master 머지를 앞두고 제거함.

참고: #1264
2020-04-21 22:49:02 +09:00
Kijin Sung
04bb0493c7 Implement SameSite cookie policy
- 세션 쿠키, 세션 보안키 등에 SameSite 속성을 적용할 수 있는 기능 추가
  (시스템 설정 -> 보안 설정)
- 일반적인 사이트는 Lax를 권장함, PG사 연동 오류 등의 경우 None 사용
- None 사용시 크롬 80부터는 SSL 전용 세션으로 지정해야 함
- Rhymix\Framework\Session에서 쿠키 관련 루틴들 정리
- PHP 7.3 이상, 7.2 이하 버전으로 나누어 처리
2020-04-21 22:39:10 +09:00
Kijin Sung
e33d8569bc Fix doChangeLangType() redirecting to main page when short URL is used
https://xetown.com/questions/1381097
2020-04-18 10:23:54 +09:00
Kijin Sung
4bac63f387 Add option to control custom notification channels 2020-04-16 19:51:10 +09:00
Kijin Sung
ebe455e824 Add ncenterliteController->sendNotification() method
임의의 회원에게 임의의 메시지를 쉽게 보낼 수 있는 메소드 추가
쪽지 보내는 것처럼 간단하게 사용할 수 있음
2020-04-16 19:46:13 +09:00
Kijin Sung
b193ad73e3 Fix #1274 check chunked uploads after all chunks are ready 2020-04-16 18:17:04 +09:00
Kijin Sung
2284fb7128 Remove excess dots from filenames #1251 2020-04-16 17:46:39 +09:00
Kijin Sung
f5f2cd99e0 Fix #1269 use proper translation for browser title 2020-04-16 17:38:38 +09:00
Kijin Sung
16b6b69276 Fix #1269 use browser title, not mid, in new comment notification 2020-04-16 17:34:41 +09:00
Kijin Sung
aa120f7f6d Fix #1273 최고관리자가 자신의 권한을 박탈하거나 차단할 수 없도록 변경 2020-04-16 17:18:50 +09:00
BJRambo
67e4da30d9 알림 숨기기 항목에 설정된 값으로 해당 모듈에서 알림이 발생되지 않도록 개선 2020-04-13 21:37:46 +09:00
BJRambo
a2a8e99ef1 지식인 모듈 지원 종료 2020-04-13 21:34:59 +09:00
Kijin Sung
6774767f6f Fix setCookie() in JS not respecting zero expires
https://xetown.com/questions/1377668
2020-04-12 14:41:48 +09:00
Kijin Sung
351cd825cf Fix incorrect flattening of extravar value
- https://xetown.com/questions/1375456
- xpressengine/xe-core#1659
- xpressengine/xe-core#1661
2020-04-08 23:35:37 +09:00
Kijin Sung
39b46f0591 Update Korea IP range data 2020-04-08 00:17:20 +09:00
Kijin Sung
10ef0dd33d Rename Leafo\ScssPhp to ScssPhp\ScssPhp 2020-04-08 00:11:50 +09:00
Kijin Sung
7fe640bb47 Re-add mail transport to SwiftMailer 2020-04-08 00:11:20 +09:00
Kijin Sung
61d2e8c141 Update composer dependencies 2020-04-08 00:10:06 +09:00
Kijin Sung
255352df62 Fix #942 SSO error when CSRF token checking is enabled 2020-04-07 23:43:14 +09:00
Kijin Sung
039034c1be
Merge pull request #1264 from kijin/pr/session-fixall
세션 도메인 관련 정리
2020-04-07 23:08:46 +09:00
Kijin Sung
b174ee7b1c Merge branch 'develop' into pr/session-fixall 2020-04-06 19:26:07 +09:00
Kijin Sung
2d10e9c781 Fix #1265 when category description is empty 2020-04-06 19:00:59 +09:00
Kijin Sung
dc9c137243 Fix all functions relying on domain from Session::_getParams() 2020-04-05 14:33:39 +09:00
Kijin Sung
99bab256b3 Regenerate session cookie after removing conflict 2020-04-05 00:43:04 +09:00
Kijin Sung
d0df41d232 Clean conflicting cookies from current host if needed 2020-04-05 00:39:48 +09:00
Kijin Sung
efc0d55f98 Restrict UA and lang_type cookies to RX_BASEURL 2020-04-04 23:17:04 +09:00
Kijin Sung
f7c67b54fd Set session domain to null by default 2020-04-04 23:13:09 +09:00
Kijin Sung
03160fe0ca Remove leading dot from session domain consistently 2020-04-04 17:02:18 +09:00
conory
6f4e1839a0 추천취소시 알림 삭제 조건(가독성 등) 개선 2020-04-04 15:44:21 +09:00
conory
af430419e2 추천 취소시 유저 알림 설정과 상관없이 알림 삭제 2020-04-04 15:02:00 +09:00
conory
3b698f2b28 회원메뉴에서 자신의 홈페이지와 블로그가 관리자의 공개 설정과 무관하게 무조건 노출되지 않도록 수정
관리자의 공개 설정과 무관하게 자신 계정에서 홈페이지와 블로그가 보이면 "홈페이지와 블로그는 공개정책"이라고 오해할 수 있음
2020-04-04 14:26:41 +09:00
conory
cd0ded1c46 게시글 추천 취소시 추천 알림이 삭제되지 않는 문제 수정
또한 댓글 추천 취소시 해당 댓글의 모든 추천 알림이 삭제되는 문제 수정

* 비회원은 IP기반의 추천이라 비회원이 추천 취소를 할 경우에는 알림을 특정할 수 없어 알림 삭제가 되지 않음
2020-04-04 01:15:31 +09:00
Kijin Sung
dfbdf46085 Fix #1262 2020-04-03 17:09:26 +09:00
Kijin Sung
95f0caafcc Rename session.override_domains to session.conflict_domains
- 설정 이름을 바꾸어 기존에 설정된 것 무효화
- 도메인 없이 setcookie()하는 부분을 모두 찾아 도메인 지정
2020-03-30 23:02:14 +09:00
BJRambo
1d11d4fa1e 하드코딩된 문구를 댓글의 언어파일에서 가져오도록 고침 2020-03-30 19:24:32 +09:00
BJRambo
4a636c1182 리스트에서 태그가 먹히는 문제 고치고 댓글에 이미지만 있을 경우 내용없음 출력하도록 고침 2020-03-30 19:18:49 +09:00
Kijin Sung
f27ea1b666 Add script to update all modules from the CLI 2020-03-29 17:30:00 +09:00
Kijin Sung
3cec3baf33 Force new domains to follow the main domain's SSL option 2020-03-26 22:14:52 +09:00
Kijin Sung
3ca551e5f2 Fix multidomain not working when domain is IDN 2020-03-26 22:12:33 +09:00
Kijin Sung
7c9b356662 Clean up unnecessary download headers 2020-03-24 01:07:23 +09:00
Kijin Sung
4f9fab5e8b Add MIME types for common executables and package formats 2020-03-24 01:07:07 +09:00
Kijin Sung
de9315fd0f v1.9.9.6 Your mission, should you choose to accept it 2020-03-23 21:32:27 +09:00
Kijin Sung
ecd8cd3ded Fix #1232 allow multiple auth attempts in a configured time 2020-03-23 21:20:26 +09:00
Kijin Sung
3bccc9ff2d Enable SSL by default when SMTP is selected as a sending method 2020-03-23 17:49:17 +09:00
Kijin Sung
f9f3d3db15 Enable member search by IP address 2020-03-23 17:38:58 +09:00
Kijin Sung
5b4cd0c14f Display signup & last login IP address in member info edit screen 2020-03-23 17:33:22 +09:00
Kijin Sung
2a6f991655 Fix #797 add ipaddress column to member table 2020-03-23 17:28:36 +09:00
Kijin Sung
66a6834204 Fix #1207 enable option to control whether audio/video files are downloaded directly or through procFileDownload 2020-03-23 02:09:25 +09:00
Kijin Sung
7633bc7b3a Add option to exclude multimedia files from direct download #1207 2020-03-23 01:52:57 +09:00
Kijin Sung
b8665d73cb Fix #1214 add option to display the first page of comments by default 2020-03-23 01:45:25 +09:00
Kijin Sung
676781a83e Fix #1225 clarify when error log is written
- 디버그를 꺼도 에러 로그는 계속 기록된다는 점을 표기
- 현재 설정된 에러 로그의 경로를 표기
2020-03-23 01:30:59 +09:00
Kijin Sung
8e593a9d60 Fix #1254 use cover image first when extracting images for SEO 2020-03-20 01:24:54 +09:00
Kijin Sung
6a43274826 Filter error location in JSON and XML responses 2020-03-19 17:56:38 +09:00
Kijin Sung
1f9fe48170 Use debug settings to determine whether to display error location 2020-03-19 17:50:59 +09:00
Kijin Sung
339fd234a5 Show where an Exception was thrown or error object was returned
- 관리자에게만 표시함
  - 오류 화면을 표시하는 방식에 따라서는 표시되지 않을 수 있음
  - 코어 내부에서 발생하는 오류는 표시되지 않을 수 있음
  - message 모듈 스킨에 의존함
2020-03-19 00:58:30 +09:00
Kijin Sung
9042e4110c Fix #1249 hide waiting message and leaving warning by default 2020-03-19 00:21:06 +09:00
Kijin Sung
f304283fd5 Fix #1249 hide waiting message from crawlers 2020-03-19 00:20:34 +09:00
Kijin Sung
9a049c9064 Fix phone country not being saved in admin edit screen 2020-03-19 00:12:59 +09:00
Kijin Sung
25162f9041 Enable sending SMS from ncenterlite to phone number in member profile 2020-03-19 00:08:44 +09:00
Kijin Sung
1db4a9d752 Cleanup related to phone country change 2020-03-18 23:56:54 +09:00
Kijin Sung
0e9ce525da Store three-letter country code instead of calling code 2020-03-18 22:05:19 +09:00
Kijin Sung
342c011a6c Add functions for converting between country codes and calling codes 2020-03-18 21:02:23 +09:00
BJRambo
3e0181a3c5
Merge pull request #1235 from bjrambo/pr/notify-block
개별 문서 댓글 알림을 차단하는 옵션 추가
2020-03-18 12:30:25 +09:00
Kijin Sung
7664987a2d
Merge pull request #1256 from kijin/pr/download-short-url
파일 다운로드시 짧은주소 지원 #1251
2020-03-18 10:52:27 +09:00
Kijin Sung
fd6c47e743 Fix nginx rewrite rules 2020-03-15 01:23:17 +09:00
Kijin Sung
9b4b07b29d Revert "Fix filename encoding for Android 10 webview #1251"
이 패치는 효과가 없는 것으로 밝혀졌으므로 취소함
짧은주소 다운로드 기능으로 대체함
2020-03-15 00:56:15 +09:00
Kijin Sung
5ecc345541 Implement downloading with filename in the URL, not the Content-Disposition header 2020-03-15 00:55:25 +09:00
Kijin Sung
320d5596f6 Add config to control short URL for downloading 2020-03-15 00:54:56 +09:00
Kijin Sung
e6305404c5 Add rewrite rules for downloading 2020-03-15 00:51:15 +09:00
Kijin Sung
80d3d3f416 Fix #1255 duplicate signup form fields 2020-03-14 16:16:17 +09:00
Kijin Sung
78e575f17b Fix filename encoding for Android 10 webview #1251 2020-03-11 16:58:09 +09:00
Kijin Sung
49569b6139 Add PHP 7.4 to unit tests 2020-03-08 18:05:19 +09:00
Kijin Sung
08d1ab98d0 Remove hyphens when 'tel' extra var is empty
cf. https://xetown.com/topics/1356877
2020-03-08 18:00:01 +09:00
conory
21bcd888c9 관리자의 게시글의 댓글도 관리자 메일로 알림되도록 수정 2020-03-06 01:31:32 +09:00
conory
a721429f8b 이모티콘 경로 문제 수정
짧은 주소 사용시 https://~/mid/modules/path가 되지 않도록 수정
이모티콘 추가시 '추가되었다'는 메세지 띄움
2020-03-03 21:49:37 +09:00
BJRambo
84f36ab6b5 문자열을 정수로 바꿔 회원 고유번호를 비교 2020-03-02 03:07:19 +00:00
BJRambo
ce03006e3f 본인의 회원 정보만 저장하도록 개선함
만약 member_srl 를 파라미터로 넘겼을 때 본인이 아닌 경우 차단설정을 조회할 수 있는 문제점이 있다.
이를 막고 조회하지 못하도록 개선
2020-03-02 02:58:44 +00:00
BJRambo
c627aa9e7c Merge branch 'develop' of github.com:rhymix/rhymix into pr/notify-block 2020-02-24 16:03:34 +00:00
conory
64e1258f0c 비회원의 댓글은 관리자 메일 알림이 되지 않을 수 있는 문제 수정
setReplyTo: Address in mailbox given [] does not comply with RFC 2822, 3.6.2.
2020-02-21 01:46:23 +09:00
Kijin Sung
09f8488593 Fix potentially missing detail in message mobile skin #1227 2020-02-15 17:13:10 +09:00
Kijin Sung
c4116b9fcb Fix #1239 uninitiated object used in sscanf() 2020-02-15 17:06:39 +09:00
Kijin Sung
10f8fd7ebb Remove XE Core from autoinstall category list 2020-02-15 16:38:51 +09:00
Kijin Sung
1d0c1a5329 Add more protections to prevent XE core update 2020-02-15 16:32:09 +09:00
Kijin Sung
030f27d488 Fix #1228 #1243 thanks to @nemo9l 2020-02-14 16:27:10 +09:00
Kijin Sung
4ac0a6bf66 Use RX_WINDOWS constant in core and file module 2020-02-14 16:16:33 +09:00
Kijin Sung
76c68c63e0
Merge pull request #1242 from nemo9l/fix/article-page-m
Fix #902
2020-02-14 16:08:39 +09:00
Kijin Sung
ab74c3166e
Merge pull request #1241 from nemo9l/fix/legacy-mistyped
Fix typo
2020-02-14 16:08:22 +09:00
Kijin Sung
020b240579
Merge pull request #1240 from nemo9l/fix/admin-favorite-btn
Fix #1234
2020-02-14 16:08:04 +09:00
Kijin Sung
0c3c903c1b Add RX_WINDOWS constant 2020-02-14 16:07:34 +09:00
nemo9l
8f86d84746 Fix typo 2020-02-13 14:00:51 +09:00
nemo9l
8ea3f8ccd3 Fix typo 2020-02-13 13:20:20 +09:00
Ji Yong, Kim
cd0fff81bd Fix #1234 2020-02-12 23:17:32 +09:00
Kijin Sung
e064a742ea
Merge pull request #1238 from ehii/ffmpeg
윈도우서버에서 ffmpge 호환성 개선
2020-02-12 14:06:17 +09:00
ehii
7e4560a3c3 코드 간결하게 수정 2020-02-12 11:49:45 +09:00
ehii
54ed209261 윈도우서버에서 ffmpge 호환성 개선
1. ffmpge 실행파일의 경로명에 공백이 들어가는 경우에도 실행가능하도록 수정

2.ffmpeg 실행시 상호작용을 명시적으로 비활성 옵션을 추가하여, mp4변환시 500에러가 발생하던 것을 수정
2020-02-12 09:59:26 +09:00
conory
482985aa4a 윈도우에서 실행파일을 체크하지 못하는 문제 수정
https://xetown.com/questions/1333742
2020-02-07 21:45:11 +09:00
BJRambo
696ca5a6bf 단어를 범용적으로 바꾸고 회원 메뉴에 차단리스트 추가 2020-02-05 15:47:59 +09:00
BJRambo
ad76cc030f 개별 게시글 댓글알림 차단하고 일부 코드 수정 2020-02-04 12:31:01 +09:00
BJRambo
42271b2e3b Merge branch 'develop' of github.com:rhymix/rhymix into pr/notify-block 2020-02-04 12:14:43 +09:00
BJRambo
c315a6ad10 개별 문서 댓글 알림을 차단하는 옵션 추가 2020-02-04 12:12:02 +09:00
conory
56aca19fd2 php7.4에서 에디터 설정을 불러오지 못하는 문제 수정
getModulePartConfig()는 호환(배열로 접근할 있도록)을 위해 ArrayObject::ARRAY_AS_PROPS 플래그가 설정된 ArrayObject를 반환하고 있는 데 php7.4의 get_object_vars() 함수는 이런 경우를 처리하지 못하는 것으로 확인됨 (빈 배열만 반환)

이 문제에 대해 php측에 제보했으나, 버그가 아니라는 답변을 받은 상태.
https://bugs.php.net/bug.php?id=79101
2020-01-16 21:43:08 +09:00
conory
6864746682 같은 사이트 URL은 새창으로 띄우지 않도록 수정 2020-01-12 01:30:49 +09:00
conory
ffe891fdae 게시글 미리보기시 csrf 문제 수정
게시글 미리보기시 에디터 스타일이 반영될 수 있도록 추가
2020-01-12 00:37:11 +09:00
conory
3efc2a6b13 _rx_ajax_form 파라미터로 폼 제출 종류를 구분할 수 있도록 변경 2019-12-30 11:51:16 +09:00
conory
085b74b7db rx_ajax 사용시 XE_VALIDATOR_MESSAGE 대신 rhymix_alert만 표시
일관성 유지
2019-12-29 18:55:43 +09:00
conory
d7b48eb5ad
Merge pull request #1229 from conory/pr/rhymix_alert
변경됨을 알리는 rhymix_alert 추가
2019-12-28 12:53:22 +09:00
conory
945ecb2da4 for dark background 2019-12-28 00:06:22 +09:00
conory
9bf9f6266a adjust size 2019-12-27 22:00:20 +09:00
conory
36aa4abb0c close when click 2019-12-27 11:11:15 +09:00
conory
b3068758ef for unit test 2019-12-26 23:36:44 +09:00
conory
40e35a9451 add rhymix_alert 2019-12-26 21:04:09 +09:00
conory
9e6005ccbc form rx_ajax 사용시 XE_VALIDATOR_MESSAGE 세션을 이용한 메세지 표시가 되지 않는 문제 수정 2019-12-25 23:01:37 +09:00
BJRambo
9cfd4ca363 관리자 체크를 함수로 하는 오류 고침 2019-12-24 22:54:46 +09:00
Kijin Sung
e3da3ba794 Treat 'Mediapartners-Google' as a robot 2019-12-23 13:50:15 +09:00
BJRambo
7285a332b7 알림센터에서 커스텀알림 사용할 때 언어를 잘못가져오던 문제 고침 2019-12-16 17:26:21 +09:00
conory
273fe651bf #971 스패머 관리 UI 개선 2019-12-05 01:02:46 +09:00
Kijin Sung
4ed6445d9b Adjust order of error message and redirect when using rx_ajax 2019-12-03 13:41:38 +09:00
BJRambo
069d09c20f 리펙토링 과정에서 익명을 고려한 값을 누락된 문제 고침 2019-12-02 15:31:53 +09:00
Kijin Sung
9f9cc46d54
Merge pull request #1223 from misol/develop
컨텐츠 위젯 내용 중 object 선언 안 된 곳 수정, 설치시 Nginx 설정 안내 링크 수정
2019-11-30 01:07:22 +09:00
BJRambo
8e47758218
Merge pull request #1221 from bjrambo/pr/ncenterlite-user
유저알림 설정에 스크랩 추천 대댓글 알림도 설정옵션 추가
2019-11-30 01:04:46 +09:00
Min-Soo Kim
2896a8c58e 설치시 nginx 설정 안내 링크 수정
https://github.com/rhymix/rhymix/issues/1222 관련.
설치시 Nginx 설정 안내 링크를 수정합니다.
2019-11-30 00:45:57 +09:00
Min-Soo Kim
0c206c59e7 컨텐츠 위젯 내용 중 object 선언 안 된 곳 수정
정의 되지 않았던 변수를 바로 object로 사용하는 부분을 수정합니다.
2019-11-30 00:43:18 +09:00
BJRambo
c150b2a327 어색한 한글 설명을 고침 2019-11-26 14:46:57 +09:00
BJRambo
868808a920 칼럼 추가시 After_column 을 사용하여 순서대로 정렬하도록 개선 2019-11-26 14:41:46 +09:00
BJRambo
307486dbd9 댓글 추천시에도 유저 설정에 따라 차단기능 추가 2019-11-26 14:32:30 +09:00
BJRambo
52d89720a3 댓글 대댓글 스크랩 추천을 유저 설정에 따라 차단 2019-11-26 14:29:39 +09:00
BJRambo
72526438c8 유저알림 설정에 스크랩 추천 대댓글 알림도 설정옵션 추가 2019-11-25 20:00:56 +09:00
Kijin Sung
4aec371983 Fix double escaping and outdated function call in document module templates 2019-11-25 15:43:32 +09:00
Kijin Sung
9256503bea Fix inconsistent defaults for anonymous vote and scrap notification 2019-11-24 18:50:38 +09:00
Kijin Sung
e25658d371 v1.9.9.5 To infinity and beyond 2019-11-23 12:41:24 +09:00
Kijin Sung
4bf0611d21 Restore underlined operator #1202 2019-11-23 12:20:26 +09:00
Kijin Sung
5ddf928869 Fix #1202 allow REGEXP operator in XML query 2019-11-23 12:18:25 +09:00
Kijin Sung
b1e01b0fc5 Fix #1217 enable notifications for scrap 2019-11-23 12:04:14 +09:00
Kijin Sung
05fed158d0 Improve consultation detection in SEO 2019-11-23 11:42:30 +09:00
Kijin Sung
726709f2fc Fix #1209 승인 거부된 회원과 이메일 미인증 회원을 구분 2019-11-23 11:15:31 +09:00
Kijin Sung
aba1830fb3 Fix #1203 inappropriate exposure of SEO metadata 2019-11-23 10:47:17 +09:00
Kijin Sung
b1f7a7ba53 Fix #1210 autosave error for logged-in users @largeden 2019-11-23 10:33:13 +09:00
Kijin Sung
409ffe867b Fix editor skin and colorset not being applied in message write screen 2019-11-23 00:33:07 +09:00
Kijin Sung
00e70f80df Add defenses against XEVE-19-008
xpressengine/xe-core@1f048c94
2019-11-22 21:33:59 +09:00
Kijin Sung
2dd78849cf Import miscellaneous fixes from XE 1.11.6 2019-11-22 20:58:56 +09:00
Kijin Sung
cb3bf4aace 글 보기 권한이 없는 게시판에서 검색 제한
xpressengine/xe-core@5ef37ccc
2019-11-22 20:31:24 +09:00
Kijin Sung
9694e5da14 Fix #1208 remove double escape of '&' character from filename 2019-11-22 20:28:39 +09:00
Kijin Sung
b158aeb9d5 Fix #1216 restrict max level if max_input_vars is low 2019-11-22 20:13:04 +09:00
Kijin Sung
6213708216 Provide script to delete message attachments older than X days 2019-11-22 20:06:10 +09:00
Kijin Sung
253c66b67e Delete attached files when messages are deleted 2019-11-22 20:00:59 +09:00
Kijin Sung
46f19a9f17 Enable file upload when sending messages 2019-11-22 18:20:52 +09:00
Kijin Sung
1c07b2e0d2 Fill upload_target_type as soon as parent document/comment/module is saved 2019-11-22 17:37:52 +09:00
conory
12f047b822 사용자 지정 순서로 그룹 정렬 2019-10-12 16:29:57 +09:00
Kijin Sung
d1b419f0a2 Separate idx_mime_type index creation from column creation 2019-10-12 12:44:03 +09:00
conory
223475a351 4987a8928f 파일이 변환된 때에만 original_type이 채워지도록 보완 2019-10-11 20:59:40 +09:00
conory
4987a8928f 파일이 변환된 경우 무조건 original_type이 채워지도록 수정 2019-10-11 20:52:16 +09:00
conory
63b5d0288b 모듈별 업로드 용량 설정시 '용량 초과' 오류 문제 수정
오브젝트 참조로 인해 getFileConfig() 재호출시 이전에 셋팅된 오브젝트가 유지되지 못하고 새로 셋팅되는 문제
2019-10-11 15:50:27 +09:00
conory
c10e4c082b open_basedir로 제한되어 있는 경우 ffmpeg 기능을 사용할 수 없는 문제 수정 2019-10-10 18:44:45 +09:00
conory
ca8204a4c0
Merge pull request #1200 from conory/pr/gif
GIF → MP4 더 완벽하게...
2019-10-10 16:36:34 +09:00
conory
27af1fd8f6 direct_download = 'Y' 파일이라도 다운로드 권한이 없으면 게시자의 본문 삽입 전까지 act=getFileList에서 실경로를 획득할 수 없도록 보완 2019-10-10 16:30:57 +09:00
Kijin Sung
302f541234
Merge pull request #1206 from kijin/develop
화면 전환 없이 손쉽게 폼을 제출할 수 있도록 지원
2019-10-10 15:30:04 +09:00
Kijin Sung
9c10fa56bb Change order of redirect and error message 2019-10-10 15:08:40 +09:00
Kijin Sung
0f6c1edc68 Support success and error callbacks in rx_ajax forms 2019-10-10 02:36:03 +09:00
Kijin Sung
2385a62b95 Fix duplicate definition of request_info 2019-10-10 02:28:18 +09:00
Kijin Sung
4e6607c1c3 Automatically add method=POST and enctype=multipart/form-data to iframe submissions 2019-10-10 02:27:11 +09:00
Kijin Sung
69611520c3 Support submitting arbitrary forms by AJAX or IFRAME 2019-10-10 01:56:38 +09:00
conory
77122a32b2 is_command() 대체 2019-10-09 23:28:23 +09:00
Kijin Sung
9a78f0f0a0 이미지 크기 조정시 가로세로 비율이 유지되지 않는 문제 수정 2019-10-09 15:46:19 +09:00
Kijin Sung
4dffddc1d1 SQL 예약어와 충돌하는 type 컬럼명을 mime_type으로 변경 2019-10-09 15:32:57 +09:00
Kijin Sung
805a7324cc Storage::getContentType() 메소드를 MIME 클래스로 이동함 2019-10-09 15:20:19 +09:00
Kijin Sung
9163bc24e9 기존에 direct download가 허용되던 타입을 복원하되, 레거시 타입은 별도 표기 2019-10-09 15:19:47 +09:00
BJRambo
8bdaad3e72 게시판 리스트에서 추천과 추천취소시 모듈정보를 가져오지 못하는 문제 고침 2019-10-07 17:54:35 +09:00
conory
4bb380cfa8 관리자 업로드시 용량 제한을 '제한 없음'으로 표시 2019-10-05 13:26:45 +09:00
conory
111a010e72 크롬에서 업로드 후 자동 본문 삽입시 발생하는 간헐적인 CK에디터 오류 무시 (파일 증발 문제 수정)
Uncaught TypeError: Cannot read property 'checkReadOnly' of undefined (ckeditor.js)
2019-10-04 23:47:12 +09:00
conory
52fe5ecdc7 동영상 본문 삽입시 video 태그에 섬네일 URL이 들어가는 문제 수정 2019-10-04 21:09:59 +09:00
conory
ddf6bafaaa 잘못된 이미지 타입이 반환되어 작동하지 않는 문제 수정 2019-10-04 20:04:35 +09:00
conory
a208526a5c EXIF 제거 옵션 추가 2019-10-04 16:45:11 +09:00
conory
1075b528d6 MIME 타입과 지원 확장자 수정 2019-10-04 01:12:19 +09:00
conory
3964792b8b Fix unit test 2019-10-04 00:02:20 +09:00
conory
44c29e5fd1 Fix unit test 2019-10-03 23:51:27 +09:00
conory
6db830c4c4 파일이나 확장자가 이미지, 오디오, 동영상이며, MIME 타입이 전혀 다른 경우에만 확장자를 고치도록 수정
direct가 아닌 첨부파일 본문 삽입시의 오류 수정
이미지, 오디오, 동영상 MIME 타입을 mime_content_type()의 반환값으로 수정
2019-10-03 23:40:55 +09:00
conory
145f7e2c65
Update CONTRIBUTING.md 2019-10-03 18:09:39 +09:00
conory
ac9141b4f2 오디오가 없는 MP4 동영상만 GIF로 취급 하도록 개선 2019-10-02 14:57:38 +09:00
conory
16e44d44c7 움직이지 않는 gif도 mp4로 변환되는 문제 수정
FFmpeg 사용 불가 안내 메시지 추가
추후에 활용하기 위한 type, width, height, duration 컬럼 추가
업로드시 이미지, 오디오, 동영상 파일의 확장자가 잘못된 경우 올바른 확장자를 덧붙이는 기능 추가
2019-10-01 22:50:38 +09:00
conory
cdbc2d7a82 동영상 섬네일, GIF로 취급 기능 추가
이미지, 동영상 첨부시 구분할 수 있도록 그 섬네일에 play 아이콘 추가
모듈별 파일 설정시 파일 모듈의 업로드 기본, 이미지, 동영상 설정을 각각 달리 적용할 수 있도록 기본 설정 제어 옵션 분리
2019-09-27 00:34:19 +09:00
Kijin Sung
3c9e99967d Add search function to member scrap list 2019-09-23 17:06:01 +09:00
conory
c2025c4bde original_type로 column 이름 변경 2019-09-23 15:30:53 +09:00
conory
1fcba0a44c GIF → MP4 더 완벽하게... 2019-09-22 21:24:43 +09:00
Kijin Sung
1ac14a6964 Display both local and UTC time in server env page 2019-09-19 15:03:41 +09:00
Kijin Sung
159f3555b1 응답하라 v1.9.9.4 2019-09-16 18:43:12 +09:00
Kijin Sung
ffdd36bb09
Merge pull request #1197 from kijin/pr/customize-bottom-list
게시판 하단목록 관련 설정 추가
2019-09-14 21:57:21 +09:00
Kijin Sung
82213ce11a Add ability to customize robot user agents 2019-09-14 21:42:02 +09:00
Kijin Sung
72651ed095 Add option to customize the number of days until a document is considered old 2019-09-14 21:31:47 +09:00
Kijin Sung
0fdb48c31a Add options to hide the bottom list 2019-09-14 21:24:36 +09:00
Kijin Sung
fc8bc04569 Generate comment_srl URLs in comment module admin list #1192 2019-09-14 20:18:55 +09:00
Kijin Sung
63daede292 Redirect to URL with comment_srl after writing a new comment 2019-09-14 20:14:13 +09:00
Kijin Sung
9978388afb Generate comment_srl URLs in ncenterlite module 2019-09-14 20:05:58 +09:00
Kijin Sung
6961155f9c Recognize comment_srl in address to find cpage automatically #904 #1191 #1192 2019-09-14 20:05:33 +09:00
Kijin Sung
941542b991 Implement files changelog 2019-09-14 00:22:24 +09:00
Kijin Sung
2cd2d0528b Add option to save changelog for files 2019-09-13 23:57:21 +09:00
Kijin Sung
ee7f11b0f1 Separate agreement info into its own table
선택약관 동의 내역을 쉽게 관리할 수 있도록
확장변수가 아닌 별도의 테이블로 분리
2019-09-13 23:46:56 +09:00
Kijin Sung
73c5b6d84b Fix #1190 make comment page count configurable 2019-09-13 20:11:32 +09:00
Kijin Sung
9b64b0f925 Make getCommentList and getTotalCommentList triggers consistent with getDocumentList trigger 2019-09-13 19:58:51 +09:00
Kijin Sung
2238679527 Add search function to member's document and comment list 2019-09-13 18:11:49 +09:00
Kijin Sung
180b6668db Support playsinline attribute for audio/video tags #1187 2019-09-13 16:18:48 +09:00
Kijin Sung
65c8c6e9c1 Add experimental support for GIF->MP4 conversion 2019-09-13 16:18:15 +09:00
Kijin Sung
61a4400e1f Display phone number in member list if the field is enabled 2019-09-13 15:38:34 +09:00
Kijin Sung
a114976d2b Fix #1195 debug file not being written if comment is enabled 2019-09-13 15:02:00 +09:00
Kijin Sung
2a13e41953 Implement phone number verification by SMS 2019-09-13 14:57:36 +09:00
Kijin Sung
5d058942af Clean up activation workflow (fixes #1154) 2019-09-13 13:35:59 +09:00
Kijin Sung
f9b58784cb Fix incorrect display of empty phone number 2019-09-13 11:20:04 +09:00
Kijin Sung
c283537808 Preserve accept_agreement info when updating member info 2019-09-09 23:01:57 +09:00
Kijin Sung
9c42ba38ce Record which agreement(s) a member has agreed to
약관을 2개 이상 지정하고 그 중 일부를 선택으로 할 수 있으므로
각 회원이 가입시 어떤 약관에 동의하고 어떤 약관에 동의하지 않았는지
확장변수로 저장하도록 하여 이후 문제발생 소지를 제거함.
2019-09-09 22:42:54 +09:00
conory
0754a072c9 Error #0 "Call to a member function getNextPage() on null" in modules/member/skins/default/scrapped_list.html on line 55
Error #0 "Call to a member function getNextPage() on null" in modules/member/skins/default/active_logins.html on line 31
2019-09-06 15:41:40 +09:00
Kijin Sung
7de8ecc0ff
Merge pull request #1194 from huhani/develop
하이퍼링크 href값이 javascript나 mailto로 시작될 경우 target=_blank 속성을 추가하지 않게 수정
2019-08-31 17:20:06 +09:00
conory
5fb1352333
Merge pull request #1193 from conory/pr/select-limit
select 쿼리에 list_count=0 파라미터 전달시 LIMIT 해제
2019-08-30 19:54:14 +09:00
Huhani
a549513808 하이퍼링크 href값이 javascript나 mailto로 시작될 경우 target=_blank 속성을 추가하지 않게 수정 2019-08-29 23:33:22 +09:00
conory
456ad2ea34 page=0일때 page count 및 PageHandler를 사용하지 않도록 추가 2019-08-29 17:18:17 +09:00
conory
576c76a0be select 쿼리에 list_count=0 파라미터 전달시 Limit 해제 2019-08-29 15:46:23 +09:00
Kijin Sung
4d6335c660 Autogenerate editor_sequence if not provided
에디터를 통하지 않고 파일을 첨부할 수 있도록 하기 위한 준비작업
2019-08-29 14:15:10 +09:00
Kijin Sung
9d7f220417 Add option to apply maximum image size to administrator 2019-08-23 14:27:15 +09:00
Kijin Sung
c60d475aaf Add option to convert PNG images to JPG 2019-08-23 14:18:02 +09:00
Kijin Sung
b286cb15a9 Fix image auto-insertion 2019-08-20 10:43:30 +09:00
BJRambo
6dbb953423 잘못된 변수명을 고침 2019-08-14 16:24:44 +09:00
Kijin Sung
e65b1caf3c Fix #1187 auto-insert <audio> and <video> tags for appropriate attachments 2019-08-13 15:36:34 +09:00
Kijin Sung
023081019d Use signature instead of encryption to handle custom editor component properties in HTMLFilter 2019-08-13 15:15:59 +09:00
Kijin Sung
d8fa31722c Allow autoplay attribute of <audio> and <video> tags #1187 2019-08-13 15:11:08 +09:00
Kijin Sung
553ae9ce98 Fix #1189 expose search keyword in the title of integrated search page 2019-08-13 15:04:20 +09:00
Kijin Sung
669d5970d5 Fix allowed_extensions sometimes not being an array 2019-08-13 14:51:10 +09:00
Kijin Sung
01a708acf6 Also disable CKEditor tableselection plugin by default 2019-08-13 14:50:13 +09:00
Kijin Sung
4d1135392f
Merge pull request #934 from kijin/pr/member-phone-number
회원 테이블에 전화번호 컬럼 추가
2019-08-09 21:33:25 +09:00
Kijin Sung
18da97abdf Fix sub-settings being reset after a signup form item is disabled and re-enabled 2019-08-09 21:17:19 +09:00
Kijin Sung
a26ebf0cf4 Allow identifiers to be reordered 2019-08-09 21:10:44 +09:00
BJRambo
bd46493b01
Merge pull request #1185 from bjrambo/pr/vote-repack
신고를 취소하는 기능 추가
2019-08-09 20:54:59 +09:00
BJRambo
ee31294f62 Fix typo 2019-08-09 19:31:00 +09:00
BJRambo
4cc522b5dd 신고 취소시 뜨는 창의 UI를 일부 고침. 2019-08-09 19:29:41 +09:00
BJRambo
a7af0f9eb8 신고 취소전 문서 존재 여부 검사하도록 하고 불필요하게 정수로 만들지 않도록 함.
그리고 신고를 취소할 때 트리거에 신고 카운트변수가 선언되지 않는 문제 고침
2019-08-09 18:48:16 +09:00
BJRambo
7b02e8c080 ->getVoted 를 로컬변수로 만들어 불피요한 동작하지 않도록 개선 2019-08-09 18:14:22 +09:00
BJRambo
d477811a8b 코드 리뷰 요청에 대한 코드 수정
1. 신고를 취소할 경우 document_srl 먼저 검사하도록 수정
2. 신고 취소시 트리거와 신고 카운트를 가져오는 항목을 취소가능한 상태를 완벽하게 확인하고 트리거 실행하도록 함
3. 로그인 한 상태이라면 세션만 검사하여 리턴 시키지 않고 한번 더 디비로 검사하도로 개선
2019-08-09 18:10:42 +09:00
BJRambo
ef1e18caf8 로그인하지 않은 유저만 세션에서 리턴 하도록 고침 2019-08-09 17:49:28 +09:00
BJRambo
992ca78bb1 불필요한 저장옵션 제거 2019-08-09 17:46:23 +09:00
BJRambo
6bb0e8c797 Merge branch 'develop' of github.com:rhymix/rhymix into pr/vote-repack 2019-08-09 14:39:50 +09:00
BJRambo
0ce1c60a6c 비회원일 경우 추천 취소가 되지 않는 문제 고침 2019-08-09 14:36:50 +09:00
Kijin Sung
84fcdb8cfd Fix incorrect type for allowed_extensions 2019-08-09 00:10:22 +09:00
BJRambo
ff9c21d04f 팝업 메뉴에 추천, 비추천, 신고 취소 기능 작동하도록 추가. 2019-08-08 17:57:20 +09:00
BJRambo
adb68347ef 신고취소시 세션 검사 추가 2019-08-08 17:00:54 +09:00
BJRambo
239b231ffa #1183 #1152 추천 취소 기능 보강 2019-08-07 20:29:53 +09:00
BJRambo
de432e8e46 추천 비추천 신고를 채크하는 옵션 추가 2019-08-06 14:45:08 +09:00
BJRambo
b5db271ef1 잘못된 언어 문법 고침. By @kijin 2019-08-06 00:39:21 +09:00
BJRambo
cecbfc35cc Merge branch 'develop' of github.com:rhymix/rhymix into pr/vote-repack 2019-08-05 17:36:36 +09:00
BJRambo
7e345870a0 신고를 취소하는 기능 추가 2019-08-05 17:36:16 +09:00
Kijin Sung
dd7ee0c192 Add specific warning about installing on cafe24.com subdomain 2019-08-05 17:07:24 +09:00
Kijin Sung
4d607290e5 Clean up signup form config screen 2019-08-04 01:06:05 +09:00
Kijin Sung
24d516f1bc Fix phone number not appearing as required 2019-08-04 00:53:38 +09:00
Kijin Sung
4768781fd9 Clean up the login config screen 2019-08-04 00:47:55 +09:00
Kijin Sung
3b64318886 Ensure consistent display of Korean phone numbers 2019-08-03 22:19:17 +09:00
Kijin Sung
2cde47c5d1 Ensure consistent handling of non-numeric symbols in phone numbers and country codes 2019-08-03 22:16:32 +09:00
Kijin Sung
2029a6357e Enable login by phone number 2019-08-03 22:03:54 +09:00
Kijin Sung
584b274874 Show country code in member profile 2019-08-03 21:35:58 +09:00
Kijin Sung
d4794dcb44 Allow multiple identifiers 2019-08-03 21:31:42 +09:00
Kijin Sung
a352033fcb Reorder default signup form 2019-08-03 20:55:28 +09:00
Kijin Sung
8cf0903065 Add checks for invalid and duplicate phone numbers 2019-08-03 20:53:34 +09:00
Kijin Sung
1ee59e4196 Save phone number and country info 2019-08-03 20:35:17 +09:00
Kijin Sung
b37e70a41e Add options to designate a default country code 2019-08-03 20:22:08 +09:00
Kijin Sung
2300f6e83a Implement phone number input tags 2019-08-03 18:48:55 +09:00
Kijin Sung
8e5f55cbf6 Add calling code to country list 2019-08-03 18:48:38 +09:00
Kijin Sung
c2e08338d0 Add phone number to signup form (disabled by default) 2019-08-03 17:53:07 +09:00
Kijin Sung
09819b107e Merge branch 'develop' into pr/member-phone-number 2019-08-03 16:59:03 +09:00
Kijin Sung
daf51c24fd v1.9.9.3 2019-08-01 21:04:42 +09:00
Kijin Sung
16cf00154d
Merge pull request #1182 from kijin/develop
파일 업로드 관련 기능 개선
2019-08-01 21:01:46 +09:00
Kijin Sung
6d2a91134c Add option to apply default file settings to module 2019-08-01 20:49:34 +09:00
Kijin Sung
9d08cac27b Update description for allow_outlink 2019-08-01 20:27:40 +09:00
Kijin Sung
68076b40c6 Make JPG quality in document/comment thumbnails configurable, too 2019-08-01 16:37:05 +09:00
Kijin Sung
94efb351f7 Add image resizing and conversion options to per-module file config: 2019-08-01 16:10:10 +09:00
Kijin Sung
b0b5c99dba Update language files for allowed_filetypes 2019-08-01 16:03:04 +09:00
Kijin Sung
c40a47724d Simplify allowed_filetypes input format 2019-08-01 15:57:05 +09:00
Kijin Sung
8c242327a8 Implement auto-rotation of uploaded images 2019-08-01 15:25:12 +09:00
Kijin Sung
f3761fd934 Make image auto-conversion apply to the administrator, too 2019-08-01 14:35:25 +09:00
Kijin Sung
b9208a682b Allow customization of resize and conversion quality 2019-08-01 14:28:29 +09:00
Kijin Sung
2b67798cab Add option to adjust quality of JPG output 2019-08-01 03:49:16 +09:00
Kijin Sung
8e3f489744 Edit message about max image size 2019-08-01 03:39:27 +09:00
Kijin Sung
bf93afd7e5 Support converting BMP and WEBP images to JPG 2019-08-01 03:13:58 +09:00
Kijin Sung
62eb21abbb Separate image check into its own method and clean up 2019-08-01 02:21:04 +09:00
Kijin Sung
1e5eedf3e0 Implement automatically resizing images that are too large 2019-08-01 02:13:25 +09:00
Kijin Sung
c95f84adb8 Implement maximum image size constraint 2019-08-01 01:56:51 +09:00
Kijin Sung
280bdeb470 Rename dispFileAdminConfig to dispFileAdminUploadConfig 2019-08-01 01:14:13 +09:00
Kijin Sung
d9118289fb Fix confusing label 2019-08-01 00:22:15 +09:00
Kijin Sung
690803f3fc Separate upload config screen from download config screen 2019-08-01 00:20:40 +09:00
Kijin Sung
31b0bb4158 Fix #1180 remove session dependency from file download operation
파일 다운로드시 사용하는 key의 검증 과정에 세션을 사용하지 않도록 변경함.
전자서명을 사용하여 동일한 IP 주소에서 1시간 동안 유효한 key를 생성함.
2019-07-31 19:25:56 +09:00
Kijin Sung
b284d69760 Try raw output for Android browser, Whale, webview 2019-07-31 16:08:26 +09:00
Kijin Sung
188c4aa34a Fix #1129 display total size when selecting files for deletion 2019-07-30 21:21:05 +09:00
Kijin Sung
a23323335b Remove liststyle, tabletools, contextmenu CKEditor plugins by default 2019-07-30 21:05:13 +09:00
Kijin Sung
f33c8d9fbe Fix #1180 download filename issue in Android webview and Naver App 2019-07-30 20:43:27 +09:00
Kijin Sung
9cdff6ece5 Add memberModel::getMemberInfoByPhoneNumber() 2019-07-28 00:03:18 +09:00
Kijin Sung
11ffc78dda Merge branch 'develop' into pr/member-phone-number 2019-07-28 00:01:20 +09:00
Kijin Sung
c5628ee893 Fix inconsistent variable name $after_column 2019-07-28 00:00:54 +09:00
Kijin Sung
8bcc368f3a Delete unnecessary query for Cubrid 2019-07-28 00:00:33 +09:00
Kijin Sung
7815378607 Separate phone number field into number, country, and type 2019-07-27 23:58:44 +09:00
Kijin Sung
c09d2a773d Merge branch 'develop' into pr/member-phone-number 2019-07-27 23:47:24 +09:00
Kijin Sung
606e53122e Use object cache for spamfilter IP and word list 2019-07-27 23:43:56 +09:00
Kijin Sung
1bf488e367 Add hit counter and latest hit timer to IP spamfilter 2019-07-27 23:35:42 +09:00
Kijin Sung
853d6753eb Fix #1159 Add sort option to spamfilter word list 2019-07-27 23:21:35 +09:00
Kijin Sung
0a9d34c37f Add option to control taking points when a post is deleted 2019-07-27 22:49:08 +09:00
Kijin Sung
72577ce6bb Fix #1174 Add number_shorten() function and 'shorten' template filter 2019-07-27 21:33:30 +09:00
Kijin Sung
4f20f0e8c1 Fix #1177 incorrect URL in notification email
멀티도메인 사용 등 특수한 경우에 도메인이 이중으로 들어갈 수 있음
2019-07-27 20:33:38 +09:00
Kijin Sung
b5720557e8 Improve session detection in install module
- 세션 작동여부 확인과 session.auto_start 확인을 하나로 합침.
- 세션에 기록된 플래그와 license_agreement 파일에 기록된 시간을 비교하도록 하여
  예전에 기록된 플래그를 잘못 인식하지 않도록 함.
2019-07-27 20:21:05 +09:00
conory
0d2fde9da0 댓글 하이라이트 효과를 끌 수 있도록 설정 추가 2019-07-20 19:32:11 +09:00
conory
a15666b018 라이믹스 설치시 PHP 세션을 사용할 수 있는 지 체크
https://xetown.com/questions/1241882
2019-07-20 17:06:37 +09:00
conory
835fe39c9b https://github.com/rhymix/rhymix/issues/1178 중국어 누락분 추가 @rayhur 2019-06-27 13:16:33 +09:00
BJRambo
81c8f8a953 게시글의 내용이 아니라 댓글내용을 출력 2019-06-11 21:31:51 +09:00
BJRambo
c32ed82564 댓글알림을 받을 인원이 한명일 경우 member_srl 을 가져오지 못하는 문제 고침 2019-06-11 21:31:31 +09:00
Kijin Sung
3ce11f6432 Fix #1176 progress bar closing too early when uploading multiple files 2019-05-29 08:38:12 +09:00
Kijin Sung
f1f2ddc8f8 Fix Travis CI database credentials 2019-05-24 18:54:58 +09:00
Kijin Sung
2199f0d270 Fix #1175 incorrect path prefix in module filebox 2019-05-24 18:36:38 +09:00
Kijin Sung
bf5f53024e Fix blankshield.js error in Chrome 72+
https://xetown.com/topics/1218391
2019-05-13 17:33:28 +09:00
Kijin Sung
d873196aa8 Improve validation and formatting for 0303 and 0505 phone numbers 2019-05-13 15:34:09 +09:00
Kijin Sung
1d22aa9a44 v1.9.9.2 Duck of Death 2019-05-10 13:43:44 +09:00
Kijin Sung
939acbcf5c Remove PHP 7.3 from allowed failures list 2019-05-04 17:44:42 +09:00
Kijin Sung
58b70cc334 Update Korean IP range database 2019-05-04 17:44:18 +09:00
Kijin Sung
70108f858d XEVE-19-001, XEVE-19-003, XEVE-19-006
xpressengine/xe-core@18ec8078eb
2019-05-04 17:36:41 +09:00
Kijin Sung
880ae97e31 Fix incorrect author info in document history
xpressengine/xe-core#2378
2019-05-04 16:48:32 +09:00
Kijin Sung
2a9daaf806 Update README #1171
Thanks to @ptrkr
2019-05-04 15:09:13 +09:00
BJRambo
86c7bb0bc4 테스트 알림을 완료했다는 메세지를 출력 2019-04-28 13:37:32 +09:00
BJRambo
48949a79e3
Merge pull request #1168 from bjrambo/pr/ncenterlite-test
알림 더미 테스트시 ajax으로 알림을 생성하지 않고 XE에 직접 요청하도록 개선
2019-04-25 13:52:17 +09:00
BJRambo
ba772269a5 알림 더미 테스트시 ajax으로 알림을 생성하지 않고 XE에 직접 요청하도록 개선
일반 테스트 발송시 다음과 같이 문제 발생시 해당 문제를 파악할 수 없습니다.

문제 : https://xetown.com/questions/1212317

이는 JS의 ajax전송 방식을 사용함에 따라 알림 생성시 백그라운드에서 실행이후 새로고침 하는 형태이다 보니 해당 알림과정에서 에러가 발생시 해당 에러를 확인하는 부분이 js에 요청한 쪽에서 받게 됩니다. 이 경우 사용자가 테스트가 정상적으로 되지 않앗을 때 왜 오류가 발생되는지 알기 어렵습니다.

따라서 테스트 목적에 부합한 방법으로 수정합니다.
2019-04-24 16:38:10 +09:00
Kijin Sung
f81a98cde3 Update .htaccess like XE 1.11.3 2019-03-26 10:58:14 +09:00
Kijin Sung
ecd36ae815 Set RX_BASEURL earlier in CLI mode 2019-03-26 10:57:59 +09:00
BJRambo
34c4ea5b89
Merge pull request #1161 from bjrambo/pr/notify-comment-all
댓글에 게시글 작성자가 댓글을 남길경우 댓글을 남긴 모든 회원에게 알림
2019-03-24 13:58:27 +09:00
BJRambo
3c6aabb984
Merge pull request #1163 from bjrambo/pr/blacklist
www를 붙이거나 삭제해주는 애드온류를 블랙리스트에 추가
2019-03-24 13:01:52 +09:00
BJRambo
0af83e3887 www를 붙이거나 삭제해주는 애드온류를 블랙리스트에 추가
엘카님의 www제거 애드온을 사용시 워닝에러가 라이믹스에서 발생하는것을 발견하고 라이믹스에서는 더 이상 필요가 없는 기능이기 때문에 이용자들이 불편하지 않도록 삭제를 진행하였습니다. (도메인 주소를 검사해서 기본 주소로 301 리디렉트 해주는 기능이 이미 내장되어있기 때문에 다른 처리할 필요가 없을 것 같습니다.)
2019-03-24 11:59:42 +09:00
BJRambo
24fc7ceba2 잘못된 쿼리 아이디를 고침 2019-03-22 13:10:47 +09:00
BJRambo
f0b1f785c1 댓글 작성자 알림 설정페이지 만들고 모듈별로 선택하여 사용 2019-03-22 12:08:17 +09:00
BJRambo
d0ba49b233 좀 더 효율적으로 알림을 할 수 있도록 개선 2019-03-22 11:36:20 +09:00
BJRambo
347efc4f56 대댓글일 경우에만 알림을 할 수 있도록 고침 2019-03-13 16:25:40 +09:00
BJRambo
d2bbe769d4 댓글에 게시글 작성자가 댓글을 남길경우 댓글을 남긴 모든 회원에게 알림 2019-03-13 15:48:45 +09:00
BJRambo
b94105bc0c
Merge pull request #1160 from ndevkr/xedition
비추천 버튼의 속성명 오타 수정
2019-03-12 12:44:47 +09:00
Ji Yong, Kim
79a0de4d7c
비추천 버튼의 속성명 오타 수정 2019-03-10 10:07:20 +09:00
Kijin Sung
3d77451012 v1.9.9.1 Come with me if you want to live 2019-03-06 12:00:38 +09:00
Kijin Sung
248a0e89ff 상수 정리 2019-03-06 11:59:44 +09:00
Kijin Sung
48ddc420a6 Restore ability to search by prefix of user name or nick name 2019-03-06 01:25:24 +09:00
Kijin Sung
b328493d80 Fix #1139 don't check managed email address if email address hasn't changed 2019-03-06 01:11:36 +09:00
Kijin Sung
0263f63e41 Add trigger before insertNotify so that notifications can be canceled 2019-03-06 01:01:49 +09:00
Kijin Sung
e60fab4969 Fix #1142 move save button up a little bit
제대로 된 해결책은 아니지만, 메뉴 모듈 갈아엎을 때까지 임시방편
2019-03-06 00:50:17 +09:00
Kijin Sung
b97425fa92 Fix #1144 query error when searching by group 2019-03-06 00:41:30 +09:00
Kijin Sung
46f9d22541 Fix #1145 wrong path for site default image 2019-03-06 00:27:29 +09:00
Kijin Sung
a5e45d9063 Fix #1146 missing reason_update column if upgraded from XE 2019-03-06 00:23:41 +09:00
Kijin Sung
6e52abc41a Allow user_id shorter than 2 characters #1151 2019-03-06 00:12:10 +09:00
Kijin Sung
329ec0cfd4 Fix #1158 use internal timezone in RSS output 2019-03-06 00:05:54 +09:00
Kijin Sung
b72c5edcec Include warnings for XE version of advanced mailer and ncenterlite
XE용 고급 메일 발송 모듈이나 알림센터 사용시 표시되어야 하는 오류를
XE용 모듈의 lang.xml에 의존하지 않고 라이믹스에서 직접 제공

cf. https://xetown.com/questions/1179144
2019-02-25 16:27:25 +09:00
BJRambo
db14f7c8c9 알림센터의 알림이 관리자 페이지의 첫페이지에서 노출되는 문제 고침 2019-02-10 15:22:39 +09:00
BJRambo
935603743f Fix #1108 값이 없을경우 빈 배열의 값으로 반환하여 PHP7.2 워닝에러를 고침 2019-02-10 14:17:31 +09:00
conory
5f812820fa jshint warning: 'target_url' used out of scope 수정 2019-01-30 01:01:50 +09:00
conory
9c5fea46e5 잘못된 url을 가진 링크가 있을 경우 자바스크립트 오류가 발생되는 문제 수정
https://xetown.com/questions/1159682
2019-01-30 00:14:55 +09:00
conory
ba12035106 form action이 빈 경우 CSRF token 문제 수정
예) 회원 그룹 > 저장
2019-01-29 23:11:28 +09:00
Kijin Sung
baeedb7aae Add OpenGraph metadata and icons before final trigger
SEO 데이터와 아이콘 추가 작업을 display.before 트리거 실행 전으로 옮겨
서드파티 자료가 SEO 데이터를 추가하거나 변경할 수 있도록 함.
2019-01-29 23:05:00 +09:00
BJRambo
4604448c0e logged_info를 선언하지 않고 사용하여 빈값으로 들어가는 문제 고침 2019-01-24 16:28:54 +09:00
conory
677e63037f 알림바의 프로필 이미지, 사용자 알림 목록에도 익명처리
afd69cab25 보완
2019-01-24 14:08:08 +09:00
conory
afd69cab25 추천 알림시 추천인 익명 처리를 할 수 있도록 옵션 추가 2019-01-24 13:03:19 +09:00
Kijin Sung
d0ec85db3b Fix incorrect global filesize limit for admin
https://xetown.com/questions/1154564
2019-01-23 23:16:31 +09:00
conory
ed7368e6d9 회원 기본스킨에서 로그인시 비밀번호가 escape되는 문제 수정
https://xetown.com/contact/1149729

히스토리도 뒤져봤지만 로그인 폼에서만 action="./" 이 오지 못할 이유를 찾을 수 없어 변경함
2019-01-17 23:03:50 +09:00
conory
c2221a25e6 캐시가 없는 상황에서 DB 연결 에러시 DB 에러 메세지 대신 php 치명적 에러가 나오는 문제 수정
(라이믹스 오류 화면 출력시에도 DB 연결이 사용되므로 Debug::displayErrorScreen() 함수를 거치면 치명적 에러가 발생되기에 Exception로 처리하지 않았음)
라이믹스가 설치되지 않은 상태에서는 "에러 로그로 확인하라는 메세지" 없이 에러가 바로 출력되도록 수정
2019-01-17 18:26:46 +09:00
BJRambo
843e16f983 쪽지함 읽어도 알림이 사라지지 않는 문제 고침 2019-01-17 16:13:01 +09:00
conory
bf3a13b290 모듈 설정 화면을 관리자 레이아웃으로 사용할 경우 위젯 페이지 편집시 위젯 크기 레이어창이 깨지는 문제 수정 2019-01-11 23:43:07 +09:00
conory
f1b2dc6bd0 0a97a0de53 보충
모바일 페이지 오류 수정
2019-01-11 15:14:07 +09:00
conory
0a97a0de53 모듈 기본 스킨을 셋팅하는 코드 정리
init()에서 setTemplatePath(...)하는 모듈에서 사이트 기본 스킨을 사용할 경우 '/USE_DEFAULT/' 그대로 유지되어 템플릿 경로 오류가 발생하는 문제 수정
불필요한 코드 제거
2019-01-11 11:13:48 +09:00
BJRambo
7cabb04cac
Merge pull request #1131 from bjrambo/pr/numgeubogi
#1107 넘겨보는 사진옵션에서 하단 내용 표시에 대한 출력 옵션 추가
2019-01-04 14:03:43 +09:00
BJRambo
1d4cf3c4cd 기본값에 대한 문구 수정 및 설정의 위치 수정
처음 사용 안 함이 기본값으로 생각하였으나 그렇게 하지 않고 사용에 기본값을 두고 있으므로 설정이 없을 경우 사용이 먼저 노출되도록 수정함.

여전히 설정값이 없으면 block 이 기본값.
2019-01-02 16:03:15 +09:00
BJRambo
2cf30a9f62 삼항식으로 조건문 변경 2019-01-02 15:55:23 +09:00
BJRambo
c123a6d78c #1107 넘겨보는 사진옵션에서 하단 내용 표시에 대한 출력 옵션 추가 2019-01-01 18:34:54 +09:00
Kijin Sung
7e80ab2c62 Fix #1130 ignore site_srl in getSiteModules query 2018-12-29 15:11:18 +09:00
Kijin Sung
f844d30690 Reduce unnecessary use of site_srl 2018-12-29 10:45:37 +09:00
Kijin Sung
e25e2df6a8 Fix #1130 missing module list
예전에 멀티사이트 기능을 사용한 적이 있어서 일부 모듈의 site_srl 값이
0이 아닌 경우, 모듈 선택 화면에 표시되지 않는 문제 수정
2018-12-29 09:45:47 +09:00
Kijin Sung
6e0a51520d Don't encode Unicode when printing JSON error message 2018-12-20 11:55:04 +09:00
Kijin Sung
335d356c0c Don't print error in JSON if not an AJAX request
https://xetown.com/questions/1131537
2018-12-20 11:47:05 +09:00
Kijin Sung
ea5d955072 Use apcu_* functions for APC cache
PHP 7에서는 apcu 확장모듈이 apc의 기능을 제공합니다.
이 때 apcu_* 함수는 존재하지만, apc_* 함수가 존재한다는 보장은 없습니다.
(리눅스 배포판에 따라서는 apcu-bc 패키지를 추가로 설치해야 합니다.)

라이믹스는 PHP 7만을 타겟으로 하므로, apcu_* 함수를 직접 사용하도록
변경하여 apc_* 함수가 존재하지 않는 경우 오류가 발생하지 않도록 합니다.
2018-12-19 16:52:36 +09:00
Kijin Sung
a83785bc42 Don't accept empty key for Context::set() and Context::get()
https://xetown.com/questions/1130915
2018-12-19 15:52:26 +09:00
Kijin Sung
8c5e32945b Don't accept empty key for Context::set() and Context::get()
https://xetown.com/questions/1130915
2018-12-19 15:51:23 +09:00
Kijin Sung
0f91ab3204 Version 1.9.9 2018-12-18 17:45:03 +09:00
Kijin Sung
90f049caef Fix splitting by <enter> xpressengine/xe-core@4153dd3 2018-12-18 17:44:15 +09:00
Kijin Sung
cbb9daddbf Remove trackback count from member document list xpressengine/xe-core@7f058e3 2018-12-18 17:42:11 +09:00
Kijin Sung
a1faa08fec xpressengine/xe-core@60cd7a4 2018-12-18 17:40:12 +09:00
Kijin Sung
8b50caecc4 xpressengine/xe-core@8868260 2018-12-18 17:37:37 +09:00
Kijin Sung
4f9c80e424 Always use object cache for editor components 2018-12-18 17:36:12 +09:00
Kijin Sung
0978a3298d Rename srl fields in document manage screen 2018-12-18 16:37:17 +09:00
Kijin Sung
0c337f48cd Clean up other types of cache file path handling 2018-12-18 16:16:30 +09:00
Kijin Sung
930ebc97b7 Use proper file storage path for skin uploads 2018-12-18 16:03:27 +09:00
Kijin Sung
6a9a884680 Fix XEVE-18-006 2018-12-18 15:50:45 +09:00
Kijin Sung
6b209f64da Disallow overwriting zero or null value with extra var 2018-12-18 15:21:20 +09:00
Kijin Sung
bf6dca0f7d 디버그에서 최후의 수단으로 text를 출력하는 경우에도 상황에 맞는 인코딩 및 escape 처리 2018-12-18 14:36:48 +09:00
conory
ff79092019 디버깅 편의를 위해 오류 페이지 출력 도중 오류가 또 발생된다면 무시하고 그냥 text로 출력
https://xetown.com/questions/1123378
2018-12-15 01:13:37 +09:00
Kijin Sung
43f4a766c6 Remove unnecessary triggers at cache recompile
캐시파일 재생성 시점에 불필요한 트리거(현재 설치되어 있지 않은 모듈에서
등록한 트리거)를 일괄 삭제하여 평소 실행 속도를 개선함.
프로파일러 모듈에서 제공하는 것과 유사한 기능임.
단, 모듈 설정이나 애드온 설정은 재설치에 대비하여 그대로 둠.
2018-12-14 17:16:05 +09:00
Kijin Sung
bc14eecd50 Add point exception for reading notices #1124 2018-12-14 12:16:04 +09:00
Kijin Sung
26b494f1e5 Clean up module selector popup dialog
- 모듈 선택 팝업창에서 가상 사이트 검색 기능 삭제
- 게시판 모듈을 기본 선택 및 검색하도록 변경 (전에는 알파벳순으로 정렬되어
  출석부 등 문서 이동에 적절하지 않은 모듈이 먼저 노출되는 불편이 있었음)
2018-12-13 22:39:17 +09:00
Kijin Sung
f58be6185e
Merge pull request #1123 from kijin/fix/trash-point
휴지통과 관련된 포인트 회수 처리의 일관성 개선 #1119
2018-12-13 22:29:56 +09:00
Kijin Sung
17568e0cc7 Fix #1102 don't display menu if none is selected 2018-12-13 21:17:40 +09:00
Kijin Sung
7b9fe8f7f2 Revert "Fix var_export() not working for stdClass in PHP < 7.3"
This reverts commit 3f7f802585.
2018-12-13 18:59:27 +09:00
Kijin Sung
7e48c4989e Revert "Fix var_export() not working for ArrayObject class"
This reverts commit e527269633.
2018-12-13 18:59:18 +09:00
Kijin Sung
67047c0939 Make all descendents of BaseObject compatible with var_export() 2018-12-13 15:34:26 +09:00
Kijin Sung
e527269633 Fix var_export() not working for ArrayObject class 2018-12-13 15:29:33 +09:00
Kijin Sung
3f7f802585 Fix var_export() not working for stdClass in PHP < 7.3 2018-12-13 15:22:11 +09:00
Kijin Sung
a2c9274681 Fix #936 always show messages to/from deleted members
- 탈퇴환 회원과 주고받은 쪽지도 표시하도록 변경
- 탈퇴환 회원의 원래 닉네임이 기록되지 않는 구조이므로
  수신자/발신자 이름에 닉네임 대신 "탈퇴한 회원"이라고만 표시
2018-12-13 12:31:51 +09:00
Kijin Sung
3c34e26cb7 Fix #1122 allow widget CSS class to be changed to empty string 2018-12-13 12:10:21 +09:00
Kijin Sung
7d876a6fe0 Fix #1101 hidden save button in site map screen 2018-12-13 11:55:23 +09:00
Kijin Sung
4158d94606 Fix #1119 inconsistent point handling when moving comments in and out of Trash 2018-12-13 11:27:05 +09:00
Kijin Sung
93284d0787 Fix #1121 count() warning in document.view.php 2018-12-13 10:26:00 +09:00
BJRambo
da9f03d537
Merge pull request #1120 from bjrambo/pr/point-return
포인트 모듈의 setPoint 실행시 작동에 대한 최적화
2018-12-12 15:06:32 +09:00
Kijin Sung
199ab101ce Force session.serialize_handler to 'php' if using DB session
xpressengine/xe-core#2357
2018-12-12 13:55:19 +09:00
BJRambo
2a472100ee 포인트 모듈의 setPoint 실행시 작동에 대한 최적화 2018-12-12 13:48:55 +09:00
Kijin Sung
907c6619bb
Merge pull request #1117 from kijin/pr/remove-site-grant
권한 설정에서 "가입한 사용자" 옵션 제거
2018-12-05 14:47:14 +09:00
Kijin Sung
575987c7a2 Fix #1118 warning in rss.model.php 2018-12-04 19:26:32 +09:00
Kijin Sung
e6e5044f1f Remove site grant option 2018-12-03 22:38:46 +09:00
BJRambo
98f495c588
Merge pull request #1116 from bjrambo/pr/pointOutput
포인트를 저장하는 부분에 적용여부를 확인하지 않는 문제 고침
2018-12-03 21:40:12 +09:00
BJRambo
ad4c79ce6d 포인트를 저장하는 부분에 적용여부를 확인하지 않는 문제 고침 2018-12-03 21:21:54 +09:00
Kijin Sung
4b6737800f Throw exception if neither openssl nor mcrypt is available 2018-12-03 15:10:20 +09:00
Kijin Sung
75a468552d Check vote log before allowing cancellation 2018-11-30 16:04:50 +09:00
Kijin Sung
e7b272f7af Make more use of trigger result in updateVotedCount 2018-11-30 15:32:24 +09:00
Kijin Sung
bf0014a7d9 Add triggers before updateVotedCount/Cancel
문서 및 댓글 추천 액션에 after 트리거만 있고 before 트리거가 없어서
서드파티 자료에서 추천을 미리 막거니 변조하기가 어려웠음.
before 트리거를 추가하여 이 문제를 해결함.

추천 취소 액션에도 마찬가지로 before 트리거를 추가하고,
댓글 추천/취소시 document_srl 값도 받아올 수 있도록 개선함.
2018-11-30 15:05:47 +09:00
Kijin Sung
a228f0888b Add script to delete old logs 2018-11-20 15:31:34 +09:00
Kijin Sung
eeb74c3257 Fix member extra_var handling when value is an object 2018-11-20 15:31:05 +09:00
BJRambo
3f452a1cfe
Merge pull request #1109 from bjrambo/pr/mailFromeSet
커뮤니케이션모듈의 메일 전송 기능을 삭제하고 알림센터에서 메일 전송 기능 연동
2018-11-02 14:07:26 +09:00
BJRambo
149d819657 영어를 좀 더 명확하게 고침 2018-11-02 14:06:15 +09:00
BJRambo
759f46bbe8 메일알림을 받을시 알림을 알려주는 사이트가 어디인지 명확하게 확인하도록 개선 2018-10-29 13:21:55 +09:00
BJRambo
b4239c1c61 커뮤니케이션 모듈에 메일전송 기능을 삭제 2018-10-27 16:12:45 +09:00
Kijin Sung
0920f209b6 Add more warnings to dummy and mail() sending methods 2018-10-26 22:31:01 +09:00
BJRambo
6d239378a0 쪽지 알림 메일을 항상 라이믹스 알림에서 설정한 이메일주소로 전송되는 문제 고침 2018-10-26 16:52:12 +09:00
conory
964f87c276 부모가 없는 자식 댓글을 휴지통 복원하는 경우 에러조차없이 그냥 삭제되는 문제 수정
select 쿼리 결과가 없는 것은 에러가 아님
2018-10-25 22:51:55 +09:00
conory
4cb447f5bf 휴지통에서 댓글 복원시 현재 날짜로 작성날짜가 복원되는 문제수정 2018-10-25 20:03:17 +09:00
Kijin Sung
00ec48e108
Merge pull request #1105 from kijin/pr/file-folder-structure
첨부파일 폴더 구조 단순화
2018-10-23 23:08:59 +09:00
Kijin Sung
f80ea85b6f Add file.folder_structure setting to simplify file storage hierarchy 2018-10-18 16:06:53 +09:00
Kijin Sung
cd084d6073 Fix invalid function call 2018-10-18 15:51:44 +09:00
Kijin Sung
8a36a49d37 Fix mail() transport for compatibility with SwiftMailer 6 2018-10-18 15:03:14 +09:00
Kijin Sung
1a8a248359 Add back mail() transport from Swiftmailer 5.4.12 2018-10-18 14:47:11 +09:00
Kijin Sung
5d9808857d Update Korean IP range data 2018-10-18 14:35:48 +09:00
Kijin Sung
e98cf03d95 Move upload file filter to Rhymix Framework and add proper unit tests for SVG-based attacks 2018-10-18 14:34:19 +09:00
Kijin Sung
af64ae79c1 Rename checkXEE() to checkXXE() 2018-10-18 14:21:08 +09:00
Kijin Sung
6a7b1e3fd2 Use hash_equals() function if it exists 2018-10-18 14:18:06 +09:00
Kijin Sung
dead538afb Use egulias/EmailValidator to validate email addresses 2018-10-18 14:16:12 +09:00
Kijin Sung
ad96ae6bb6 Fix some obvious compatibility issues with new dependencies 2018-10-18 14:10:02 +09:00
Kijin Sung
ab195fbf3b Update composer dependencies 2018-10-18 14:03:18 +09:00
bnu
866a33fd39 #2314 #2284 이슈에서 수정했던 jquery.fileupload 플러그인의 Safari 호환성 문제 해결 코드로 인해 d&d 파일 업로드가 실패하는 문제 수정
- https://github.com/blueimp/jQuery-File-Upload/pull/3512
2018-10-18 09:59:23 +09:00
Kijin Sung
9a82af7366 Revert "Revert "#2284 jQuery Fileupload가 safari에도 파일 업로드에 실패하는 문제 수정""
This reverts commit fa4fb72b27.
2018-10-18 09:58:54 +09:00
Kijin Sung
2ab012f65b Revert "Revert "#2284 jQuery Fileupload 업데이트""
This reverts commit 7a97084df9.
2018-10-18 09:58:40 +09:00
Kijin Sung
d6128ed097 Add PHP 7.3 to .travis.yml (nightly is 7.4 now) 2018-10-17 18:11:26 +09:00
Kijin Sung
be70765853 Add warning about delaying session start #1104 2018-10-17 10:48:50 +09:00
Kijin Sung
9e51100c1d Fix incorrect escape in domain list screen 2018-10-17 08:47:23 +09:00
Kijin Sung
2b8373a5eb Version 1.9.8.4 Big Brother is Watching You 2018-10-13 17:13:00 +09:00
Kijin Sung
f8b0ca6a78 Improve granularity of Context security check
정규식에 따라 모두 막을지, 관리자만 허용할지 구분할 수 있도록 하고
이를 참조하여 <script> 태그는 관리자만 허용, PHP 태그는 모두 막도록 변경.
2018-10-13 16:42:19 +09:00
Kijin Sung
06349cdd98 Fix excessively strict check for scripts
XE보다 더 엄격하게 되어 버린 스크립트 입력 체크 기준을 다소 완화하여
<script language="php"> 등 PHP로 해석될 여지가 있는 것만 필터링함

cf. https://xetown.com/qna/1090769
2018-10-13 16:13:03 +09:00
Kijin Sung
7d318c3122 Fix #1100 member skin being overwritten by mid defaults 2018-10-11 20:27:28 +09:00
Kijin Sung
22a47b5c46 Version 1.9.8.3 Return of the Jedi 2018-10-11 14:40:05 +09:00
Kijin Sung
e027bc8319 Add jquery-latest.js to blacklist
http://code.jquery.com/jquery-latest.js 와 같은 스크립트를 임의로
로딩하지 못하도록 막음. 버전이 붙은 파일명은 이미 대부분 막혀 있었지만,
이 커밋에서는 -latest가 포함된 것도 막도록 변경함.

cf. https://xetown.com/qna/1089463
2018-10-11 14:32:10 +09:00
Kijin Sung
7a97084df9 Revert "#2284 jQuery Fileupload 업데이트"
This reverts commit d9a7b89a74.
2018-10-11 14:27:19 +09:00
Kijin Sung
fa4fb72b27 Revert "#2284 jQuery Fileupload가 safari에도 파일 업로드에 실패하는 문제 수정"
This reverts commit 21acfd97cc.
2018-10-11 14:27:12 +09:00
Kijin Sung
b2bd6bf1e4 Fix in_array() warning 2018-10-11 14:22:25 +09:00
Kijin Sung
cc2577af00 Fix user lang not working in board config page 2018-10-11 14:18:56 +09:00
Kijin Sung
b6b70bd8ad Add 'autolang' template filter for user lang handling
autoescape가 적용된 템플릿에서 사용자 정의 다국어가 제대로 출력되지 않는
문제를 수정하기 위해 'autolang' 필터를 추가함.
해당 변수 내용이 사용자 정의 다국어인 경우 escape하지 않고,
그 밖의 내용인 경우 escape하는 옵션임.
2018-10-11 13:56:11 +09:00
Kijin Sung
290ee0974d Fix open redirect in ncenterlite module 2018-10-11 09:27:26 +09:00
Kijin Sung
05df47f4e1 Fix #941 use relative target URLS in ncenterlite 2018-10-11 09:08:46 +09:00
Kijin Sung
3d8a9b7621 Produce relative URLs when appropriate 2018-10-11 09:07:38 +09:00
Kijin Sung
11858c0b13 Fix #985 improve responsive skin support
- 모바일에서 반응형 스킨 사용을 기본값으로 지정한 경우
  - 사이트 디자인 설정 화면에서 /USE_RESPONSIVE/가 노출되는 문제 수정
  - 신규 생성한 게시판에서 모바일 스킨을 찾지 못하는 문제 수정

- 게시판 모듈에서 스킨 처리하는 루틴을 ModuleObject로 이관하여
  모든 모듈에서 혜택을 볼 수 있도록 함

- 반응형 스킨이 기본값으로 지정된 경우, 아무 것도 지정되지 않은 경우,
  기본값으로 지정된 스킨이 삭제된 경우 등 다양한 상황에 대처

- TODO: 회원 모듈, 커뮤니케이션 모듈 등에서 자체 스킨을 들여오는 방식 재검토
2018-10-10 23:07:48 +09:00
Kijin Sung
ea964e72ba Support mobile and responsive skins in integration search module 2018-10-10 19:34:09 +09:00
Kijin Sung
1d35511e04 Enforce CSRF tokens if option is enabled 2018-10-10 18:20:48 +09:00
Kijin Sung
73e79fe547 Add option to check CSRF token 2018-10-10 18:17:27 +09:00
Kijin Sung
3484b2bb48 Fix 'security violation' error when no file is uploaded 2018-10-10 18:16:57 +09:00
Kijin Sung
c3f1e24b02 Ensure more consistent operation of security checks
- 수상한 파일이 업로드되었을 때 isSuccessInit = false로 지정
- isSuccessInit = false인 경우 무조건 에러메시지 출력 (xpressengine/xe-core#2304)
- 보안정책 관련 에러메시지는 msg_security_violation으로 통일
2018-10-10 16:27:23 +09:00
Kijin Sung
4dca555392 Don't cache member info if DB query fails
xpressengine/xe-core#2308
2018-10-10 15:58:45 +09:00
Kijin Sung
f842a977a3 Don't cache module info if DB query fails
xpressengine/xe-core#2308
2018-10-10 15:56:42 +09:00
Kijin Sung
666380f07f Fix #1063 SELECT list is not in GROUP BY in getModuleSkinDotList 2018-10-10 15:41:53 +09:00
Kijin Sung
c53e956ef7 Fix #1063 SELECT list is not in GROUP BY in getModuleListByInstance 2018-10-10 15:39:16 +09:00
Kijin Sung
d9178e91d6 Apply autoescape to admin module templates 2018-10-10 15:24:10 +09:00
Kijin Sung
24df74d618 Revert change to user_lang converter 2018-10-10 15:15:44 +09:00
Kijin Sung
720e7c6527 Update unit test for TemplateHandler 2018-10-10 15:13:01 +09:00
Kijin Sung
c54fa8dab1 Use escape more consistently
여기저기 htmlspecialchars가 들어 있는 것을 escape로 통일
2018-10-10 15:07:51 +09:00
Kijin Sung
d63da57045 Fix unit tests for autoescape 2018-10-10 14:50:34 +09:00
Kijin Sung
6abd345dcf Fix autoescape problems
- 삼항식 사용시 autoescape 우선순위가 꼬이는 문제 수정
- $lang 변수는 autoescape하지 않도록 변경
- ENT_COMPAT을 ENT_QUOTES로 변경 (자바스크립트에서 사용시 '홑따옴표' 이탈 방지)
2018-10-10 14:43:53 +09:00
Kijin Sung
254b83dfd7 Explicitly declare noescape 2018-10-10 13:12:32 +09:00
Kijin Sung
aac678de48 Explicitly declare noescape 2018-10-10 13:08:24 +09:00
Kijin Sung
56f20e84c0 Remove unnecessary exception from .htaccess
오래된 매뉴얼은 삭제되었으므로 .htaccess에서 예외를 삭제함.
2018-10-09 09:58:16 +09:00
Kijin Sung
a5e779866b Fix nginx rewrite rules to be compatible with external folders
실제 폴더가 있는 경우 mid로 인식하지 않도록 변경함.
라이믹스와 별도로 사용중인 다른 폴더가 있는 경우 유용함.
아파치 .htaccess에는 이미 해당 기능이 들어 있었음.

https://xetown.com/qna/1088212
2018-10-09 09:56:05 +09:00
Kijin Sung
5b60da6f62 Fix #1099 unnecessary setCookie function definition in ncenter_login skin 2018-10-08 17:57:33 +09:00
Kijin Sung
64de942800 Fix #1099 unnecessary setCookie function definition in ncenterlite skins 2018-10-08 17:55:53 +09:00
Kijin Sung
7bdcaba8ce Fix XSS in documentModel->getExtraVarsHTML()
16e8158
2018-10-08 17:46:47 +09:00
conory
33e44b8708 서브쿼리시 Warning: Invalid argument supplied for foreach() 오류 수정 2018-10-08 12:31:23 +09:00
conory
7764d88b82 executeQuery의 $arg_columns에서 별표(*)를 사용할 수 있도록 수정 2018-10-06 19:57:51 +09:00
Kijin Sung
1c6509597c Change version to 1.9.8.2 for an interim release 2018-10-04 16:45:16 +09:00
Kijin Sung
a3b67b2c7f Merge branch 'pr/js-cookie' into develop 2018-10-04 11:56:41 +09:00
Kijin Sung
24f1922718 Merge branch 'pr/xe-2293' into develop 2018-10-04 11:56:32 +09:00
Kijin Sung
71e5bdb354 Add js-cookie library 2018-10-02 23:20:31 +09:00
bnu
21acfd97cc #2284 jQuery Fileupload가 safari에도 파일 업로드에 실패하는 문제 수정
- safari에서 dialog에서 선택한 파일을 업로드할 수 없는 문제
- PR 코드로 패치 함 : https://github.com/blueimp/jQuery-File-Upload/pull/3512
2018-10-02 22:52:27 +09:00
bnu
d9a7b89a74 #2284 jQuery Fileupload 업데이트
- 9.22.0
2018-10-02 22:52:07 +09:00
bnu
71651c0542 검색엔진 수집이 불필요한 페이지에 대한 robots 메타 태그 추가
xpressengine/xe-core#2293 patch by @bnu
2018-10-02 22:50:05 +09:00
Kijin Sung
cb66b4e5df Fix xpressengine/xe-core#2295 2018-10-02 15:20:22 +09:00
Kijin Sung
64bc9205ff Add option to apply rel="nofollow" to all user-submitted links
참고: xpressengine/xe-core#2278

정상적인 사이트들 사이의 상호 교류를 저해할 위험이 있으므로
옵션으로 제공하고 기본값은 OFF로 함.
2018-10-02 15:17:23 +09:00
Kijin Sung
1a2f6e5513 Fix #1085 index creation error if duplicate rows already exist
기존에 중복으로 저장된 데이터가 있는 경우 UNIQUE 인덱스를 생성할 수 없으므로
이런 경우에는 기존 방식 그대로 일반 인덱스를 생성하도록 함.
2018-10-02 14:04:01 +09:00
Kijin Sung
a899ae6166 Fix #1093 remove unnecessary webfont from XEDITION layout 2018-10-02 14:00:28 +09:00
Kijin Sung
4c5d5650a6 Fix #1095 denied email hosts not applied in procMemberResetAuthMail 2018-10-02 13:50:13 +09:00
Kijin Sung
c49ce899ce Remove duplicate GPL license from ncenterlite 2018-10-02 13:44:46 +09:00
Kijin Sung
6d52a1fbf2 Clean up language in ncenterlite module 2018-10-02 13:44:07 +09:00
BJRambo
30f224ece2
Merge pull request #1092 from bjrambo/pr/ncenterlite-cleanup
알림센터의 코드를 정리합니다.
2018-09-29 19:43:42 +09:00
BJRambo
2edb8fd2b5 알림이 없을 경우 출력하는 기능 추가.
옵션 제공합니다. 기본값은 사용하지 않도록 되어있습니다.
2018-09-27 19:43:35 +09:00
BJRambo
011918066f 캐시키에 page값을 따로 지정하지 않아 1페이지 이외 캐시 생성 하지 않도록 고침
캐시키값에 page값을 따로지정하지 않고 있음. 따라서 2페이지의 디비가 만약 로딩이 되었더라면 아래의 캐시키를 통해서 2페이지를 로딩할 수 있는 문제점이 있을 수 있음. 따라서 그렇게 되지 않도록 고침
2018-09-27 19:00:11 +09:00
BJRambo
0e8f65fc6c 데이터값도 기본값으로 지정하고 원래대로 순서 변경 2018-09-27 18:38:30 +09:00
BJRambo
381101a31d Merge branch 'develop' of https://github.com/rhymix/rhymix into pr/ncenterlite-cleanup 2018-09-27 18:34:32 +09:00
Kijin Sung
cfa43dbfea Update error message about files directory permission 2018-09-20 23:09:12 +09:00
Kijin Sung
6f1777ebfd Fix explanation for DB types in install module
https://xetown.com/qna/1072602
2018-09-19 21:28:08 +09:00
BJRambo
c54ef2a08b 라이믹스 코어의 언어 함수를 사용 2018-09-19 17:51:02 +09:00
BJRambo
a94420908d 커스텀 알림을 위한 각 메서드들의 기본값을 제거
커스텀알림을 위한 메서드들에서 대부분 notify_srl 과같은 parameter에 기본값을 사용하고 있습니다.
이 기본값들이 대부분 알림센터의 내부에서 사용되고, 이 커밋에서 지웠던 부분 모두 디비쿼리에 필요한 notify_srl 값을 null으로 전송하여 입력이나 가져오는 것에 대부분 문제가 있었을 것으로 추정하였습니다.
문제가 있을 경우 백지가 나타나게 되어서 문제점을 알 수 없을 수 있는 위험은 있으나 대부분의 동작 코드에서 notify_srl 값이 강제적으로 필요한 것으로 작동되고 있기 때문에 일딴은 parameter의 기본값은 삭제합니다.
2018-09-19 17:50:30 +09:00
BJRambo
58932d22c9 알림을 추가할 때 디비 관련 에러검사 로직을 각각의 처리공간에서 처리 2018-09-19 17:46:42 +09:00
BJRambo
556cc60657 updateFlagFile 메서드의 피라미터위치를 변경합니다.
PHP7.2 이라서 그런지 모르겠지만 일부 두번째 parameter가 requied 일겨우 첫번째 parameter에 default 옵션을 사용할 수 없는 옵션이 생긴 것 같습니다.
이 내용을 그대로 유지할지 바꿀지 고민끝에 모든 서드파티 등등을 검토해보고 사용되는 메서드의 역할에서 알림센터 내부에서만 사용되는 것으로 판단되어 이 메서드의 parameter순서가 변경됩니다.

앞으로 updateFlagFile parameter 을 전달할 경우 순서는 Object, member_srl 입니다.
2018-09-19 17:36:41 +09:00
BJRambo
0d375fc721 Merge branch 'develop' of https://github.com/rhymix/rhymix into pr/ncenterlite-cleanup 2018-09-19 15:40:51 +09:00
Kijin Sung
19331e6746 Additional XSS checks #1088 2018-09-18 13:27:55 +09:00
Kijin Sung
e03ccbd7a9 Also filter XML and HTML file uploads
- Detect possible XML (including SVG) by actual content, not extension
- Check large files in overlapping chunks to reduce memory usage
- Check XML files for external entities
- Check HTML files for SSI and PHP code
2018-09-18 02:45:48 +09:00
BJRambo
45892d7419 주석 코드와 사용하지 않는 쿼리 삭제 2018-09-17 20:52:12 +09:00
BJRambo
15ab8b5353 회원 탈퇴시(트리거 발생시) 유저 세팅 데이터도 삭제 할 수 있도록 개선 2018-09-17 19:34:15 +09:00
BJRambo
a20156242f 회원 설정 이용시 리디렉트 방법 개선 2018-09-17 19:29:41 +09:00
Kijin Sung
60d390f52e Initial mitigations for #1088 #1089 2018-09-17 00:48:47 +09:00
conory
6d081b9fec XML쿼리에서 CAST(regdate as DATE) 와 같은 함수 사용시 발생하는 오류 수정
datatype도 escape되는 바람에 발생된 문제로, 우선 대문자에 한하여 escape 되지 않도록 수정하였습니다.
주석에 떡하니 된다고 해놓고 실제로는...
2018-09-15 00:58:50 +09:00
Kijin Sung
9b6e88bc33 Add try...catch to trigger functions 2018-09-06 19:44:25 +09:00
Kijin Sung
b048200a30 Allow multiple selection of display debug types 2018-09-06 17:00:50 +09:00
Kijin Sung
0dd20267af Use Moono Lisa colorset if current settings is incompatible with CKEditor
xpresseditor를 사용하던 사이트에서 라이믹스로 업데이트하면 컬러셋이 white, black,
black_text_nohtml 등 CKEditor에서 지원하지 않는 것으로 설정되어 있어 에디터가 로딩되지 않는 문제 수정.
이런 경우 강제로 Moono Lisa 컬러셋을 사용하도록 함.
2018-09-06 16:05:04 +09:00
Kijin Sung
7c2b0b94a2 문서 및 댓글 신고시 불완전한 정보가 기록되는 문제 수정
- 비회원이 작성한 글은 신고자가 로그인했더라도 IP 주소 기준으로만 중복을 체크하는 문제 수정
- 회원이 신고하면 신고자의 IP 주소가 기록되지 않는 문제 수정
2018-09-06 15:50:05 +09:00
Kijin Sung
54b4c3a99f 설치된 모듈 목록에서 모듈 순서가 뒤죽박죽이 되는 문제 수정 2018-09-06 15:42:27 +09:00
Kijin Sung
f25a731cee
Merge pull request #1082 from kijin/pr/exception
Exception 지원
2018-09-06 15:41:39 +09:00
Kijin Sung
b08472a380 Commit missing files 2018-09-06 15:35:28 +09:00
Kijin Sung
e5ab366d91 Fix missing sprintf() in page module 2018-09-06 15:28:18 +09:00
Kijin Sung
4d5401ef89 Merge branch 'develop' into pr/exception 2018-09-06 10:45:59 +09:00
Kijin Sung
b6a528bcaf Fix possible bug with cache invalidation in moveDocumentModule() 2018-09-06 10:44:08 +09:00
Kijin Sung
08964804be Use more granular exceptions and error messages in important modules 2018-09-06 10:11:05 +09:00
Kijin Sung
10c8d11785 Add FeatureDisabled and SecurityViolation exception classes 2018-09-06 10:00:47 +09:00
Kijin Sung
88dc76501a Return BaseObject instead of Exception in commonly used internal functions 2018-09-06 09:41:40 +09:00
Kijin Sung
54f0346a50 Update recaptcha addon to throw exceptions on error 2018-09-06 00:22:06 +09:00
Kijin Sung
d8a0773b97 Replace $this->stop() with proper exceptions 2018-09-06 00:19:47 +09:00
Kijin Sung
5b7ce90a3d Also catch exceptions in init() method of module instances 2018-09-06 00:19:27 +09:00
Kijin Sung
ad00ac800b Update document, comment, file modules to throw exceptions 2018-09-05 23:55:50 +09:00
Kijin Sung
5be05dd875 Fix syntax error 2018-09-05 23:38:44 +09:00
Kijin Sung
c4a4528e1b Update member and module module to throw exceptions 2018-09-05 23:35:43 +09:00
Kijin Sung
be1ce69073 Update more modules to throw exceptions 2018-09-05 23:12:08 +09:00
Kijin Sung
74b07cb5c4 Remove unnecessary parentheses in MySQL error handler 2018-09-03 15:48:02 +09:00
Kijin Sung
c1cbc5dbdb Add MustLogin exception and apply to communication module 2018-08-27 00:31:48 +09:00
Kijin Sung
fe4e336f2b Add 3 special exception classes for common situations 2018-08-27 00:21:21 +09:00
Kijin Sung
1863edcbb8 Update some modules to throw exceptions instead of BaseObject 2018-08-27 00:03:12 +09:00
Kijin Sung
f6fa7493f6 Catch Rhymix\Framework\Exception in module act and triggers 2018-08-26 23:46:13 +09:00
Kijin Sung
72287b2fe5 Fix duplicate revert 2018-08-26 23:31:40 +09:00
Kijin Sung
b7d38f0294 Revert "Revert "0848f2ad3c 보완""
This reverts commit 5ecb1241ca.
2018-08-26 23:21:52 +09:00
Kijin Sung
5ecb1241ca Revert "0848f2ad3c 보완"
This reverts commit 6beae3b620.
2018-08-26 23:21:45 +09:00
conory
6beae3b620 0848f2ad3c 보완 2018-08-23 17:52:01 +09:00
conory
0848f2ad3c getContentText() 사용시 중복으로 escape 되는 문제 수정
이미 작성 과정에서 escape 하였으므로 중복 처리하면 특수문자 <,>가 깨짐
2018-08-23 17:23:17 +09:00
conory
2b183435c8 insertComment($manual_inserted = true) 일 경우 오류 수정 2018-08-23 16:07:01 +09:00
Kijin Sung
f94c51ab41
Merge pull request #1073 from kijin/pr/remove-old-manual
오래된 XE 매뉴얼 삭제
2018-08-22 19:39:04 +09:00
Kijin Sung
98e98b4ecf
Merge pull request #1080 from wincomi/pr/admin-tpl-skipNav
관리자 페이지의 상단 여백 제거
2018-08-22 19:38:53 +09:00
Kijin Sung
694701cb2e
Merge pull request #1079 from wincomi/pr/point-tpl-config
포인트 모듈의 기본 설정 화면 세세한 변경
2018-08-22 19:38:42 +09:00
Kijin Sung
d578016ff9 Remove links to outdated manual 2018-08-22 19:35:42 +09:00
Kijin Sung
b86a66ce4c Merge branch 'develop' into pr/remove-old-manual 2018-08-22 19:23:51 +09:00
Min-Soo Kim
538346f9a6
Improve emoticon component to contain information of icons (#1078)
# Fix emoticon component to contain information of icons

- 이모티콘 컴포넌트의 이모티콘에 정보를 담을 수 있게 수정.
- 라이선스 정보도 담을 수 있고, 제작자 정보도 담길 수 있음.
- 정보를 담는 양식은 일반적인 skin.xml 형식을 그대로 따름.

# 이모티콘 컴포넌트 키보드 접근성 개선

- 키보드로 이모티콘 선택, 입력이 가능해짐.

# 사용권이 불분명한 msn 이모티콘 제거

- 기본 이모티콘이었던 msn 이모티콘의 사용권 문제가 불명확 했음.
- 기본 이모티콘을 트위터가 배포하는 트위모지로 변경.

# 이모티콘 SVG 지원

- 기본은 래스터 이미지. 같은 이름의 SVG 파일이 ./svg 디렉토리에 있으면 SVG를 지원하는 브라우저에서 반영됨.
2018-08-21 00:44:09 +09:00
COMI
6312d10ec0
관리자 페이지의 상단 여백 제거
메뉴 건너뛰기(.skipNav)로 인해 상단에 1px의 여백이 존재합니다. 관리자 페이지 디자인 개정에 따라 이 여백을 제거하였습니다.
2018-08-20 16:46:05 +09:00
COMI
d9662b407c 포인트 모듈을 켜지 않아도 모듈 설정에 접근이 가능하도록 함 2018-08-20 16:11:12 +09:00
COMI
6b5e7ff647
포인트 모듈의 기본 설정 화면 세세한 변경
- 설명에 x_help-block 클래스 추가
- 포인트 부여 표를 섹션으로 감싸 포인트 모듈을 사용하지 않을 경우 포인트 부여 표를 보이지 않게 함
- 포인트 뷰여 표의 제목을 나타내는 td 태그를 th 태그로 변경함
2018-08-20 15:05:15 +09:00
Kijin Sung
92406f797b Fix description hidden in details mode 2018-08-20 12:03:15 +09:00
Kijin Sung
666be26ca7 Clean up simple mode views
- 간단보기(모바일) 상태시 최근 글은 날짜 대신 시간을 표시
- 간단보기/상세보기 토글 위치를 일관성있게 변경
- 간단보기/상세보기 토글 버튼과 다른 버튼들 사이에 여백 확보
2018-08-20 11:19:05 +09:00
Kijin Sung
e7fc36f87b Fix #1064 incorrect lang name in document config 2018-08-19 21:50:36 +09:00
Kijin Sung
90223750b8 Display site name instead of default URL 2018-08-19 21:41:42 +09:00
Kijin Sung
5273fcf6d3 Remove admin title and logo customization 2018-08-19 21:38:11 +09:00
Min-Soo Kim
4a8133417c
Remove meaningless button on emoticon component
이모티콘 에디터 컴포넌트에서 복붙의 흔적으로 보이는 삽입 버튼 삭제.
2018-08-19 19:17:01 +09:00
COMI
85219dc027 회원 모듈의 기능을 사용하지 않을 경우 페이지 접근 차단 (#1074)
회원 모듈에서 차단한 기능 페이지 주소를 입력하면 접근이 가능한 문제가 있었습니다. 기능을 사용하지 않도록 하였으므로 접근이 차단되는 것이 합리적입니다.
2018-08-19 19:13:20 +09:00
Min-Soo Kim
bf0141d7bb
Fix emoticon insert
이모티콘이 입력되지 않게 수정된 버그 수정. a16670c6f6 에 대한 수정.
2018-08-19 17:15:59 +09:00
Min-Soo Kim
a16670c6f6
기본 팝업창 스타일 수정. (#1075)
# 기본 팝업창 스타일 수정.

- 바뀐 관리자 페이지 스타일과 통일성 유지.
 - 임시 저장 글 불러오는 팝업 창 스타일 조정
- 팝업창 크기 계산 함수 조정
 - 폭을 먼저 확정한 다음 높이를 계산하도록 순서 조정
 - 위젯 수정 페이지 팝업 창 크기 계산 수정
 - 창 너비를 자유롭게 바꿀 수 있기 때문에, `.popup` 클래스를 가진 객체의 가로 폭을 자바스크립트가 강제로 변경하지 않도록 수정. (초기 가로 폭은 정확히 계산하여서 기존과 동일하게 맞춤)
- 라이믹스 문법에 맞춤
 - `jQuery` 를 `$` 로 쓸 수 있으므로 생략 가능한 구문 수정
2018-08-19 16:50:00 +09:00
COMI
bf6e90d98b 문서 모듈의 한국어 추가 정리 (#1069) 2018-08-19 13:23:26 +09:00
Kijin Sung
86bd3f6753 Remove outdated XE manual 2018-08-19 12:04:50 +09:00
Kijin Sung
57325f5628 Fix page 2 of declared document list not being visible 2018-08-19 11:20:34 +09:00
Kijin Sung
0d26c75bdb Fix alignment in module list 2018-08-19 11:11:15 +09:00
COMI
a32721b6e1 숨겨진 관리자 설정의 설명을 보이도록 변경함 (#1072)
@wincomi 
* Update skin_config.html
* Update module_setup.html
* Update page_info.html
* Update config.html
* Update document_config.html
* Update module_grants.html
* Update skinsetting.html
* Update category_list.html
* Update module_grant_setup.html
2018-08-19 08:51:42 +09:00
Kijin Sung
fe53a99332
Merge pull request #1070 from wincomi/pr/document_config
Update document_config.html
2018-08-19 01:15:08 +09:00
COMI
488b84ef37
Update document_config.html
문서 모듈의 기본 설정 탭에 존재하는 조회 수 설정의 설명에 class를 추가하고 잘못된 html를 수정하였습니다.
2018-08-18 23:37:24 +09:00
Min-Soo Kim
d1911fd257
관리자페이지 스타일 미세 조정.
jstree 클릭시 기본 스타일 반영.
2018-08-18 20:30:27 +09:00
Min-Soo Kim
1484d0a97e
Fix the selection error on the menu item with double quotation mark. (#1067)
* selection error on the menu item with double quotation mark.

장기적으로는 메뉴 이름에 html entity 가 들어가지 않도록 하는 것이 좋을 것으로 보임.
2018-08-18 19:00:20 +09:00
Min-Soo Kim
919ae86241
문서 모듈 글 제목 순서 변경 (사소한 변경)
글 제목을 모듈 이름보다 앞으로.
2018-08-17 01:12:36 +09:00
COMI
dba2526d1d 문서 모듈의 한국어 정리 (#1065) 2018-08-16 21:59:51 +09:00
Min-Soo Kim
e21dffdc51
관리자 페이지 스타일 미세 조정 (계속) (#1062)
* 관리자 페이지 스타일 미세 조정 (계속)

- 컨텐츠 좌우 여백을 15px으로 조정.
- 모듈 즐겨찾기 별표 아이콘 크기 조정, 가운데 정렬.

* 필요 없어진 style 영역 제거
2018-08-15 15:13:50 +09:00
Min-Soo Kim
5e2d89ee4d
관리자페이지 컨텐츠 좌우 폭 미세 조정. (#1061)
* 컨텐츠 좌우 폭 미세 조정.
* 사이트맵 모듈에서 여백 크기 미세 조정.
2018-08-15 13:01:23 +09:00
Min-Soo Kim
bded31ac0b
관리자 페이지 새 스타일에 맞추어서 픽셀과 position 조정. (#1060) 2018-08-15 02:11:38 +09:00
Min-Soo Kim
0b22cb6590 Revert "관리자 페이지에 커스텀 문자열만 설정할 경우 나타나지 않던 문제 수정."
This reverts commit 0e0be106c4.
2018-08-14 22:05:01 +09:00
Min-Soo Kim
94c6d85f0d Revert "글자만 설정했을 때, 기본 아이콘은 숨김."
This reverts commit 4d5cb5c240.
2018-08-14 22:04:53 +09:00
Min-Soo Kim
4d5cb5c240
글자만 설정했을 때, 기본 아이콘은 숨김.
소소한 수정이라 바로 반영합니다.
2018-08-14 22:00:13 +09:00
Min-Soo Kim
0e0be106c4
관리자 페이지에 커스텀 문자열만 설정할 경우 나타나지 않던 문제 수정.
소소한 수정이라 바로 올립니다.
2018-08-14 21:58:07 +09:00
conory
9e59a6d839 페이지 편집 페이지에서 '모듈 설정 화면' 설정과는 상관없이 무조건 사용자 레이아웃 적용
레이아웃마다 너비가 모두 다르므로 관리자 레이아웃 적용시 정확도가 엄청 떨어짐
2018-08-14 15:20:00 +09:00
Kijin Sung
65a96a0344 Version 1.9.8.1 2018-08-14 14:22:11 +09:00
Kijin Sung
8fa632e996 Adjust margins 2018-08-14 14:16:48 +09:00
Kijin Sung
2906826e71
Merge pull request #1058 from kijin/pr/spamfilter-regexp
스팸필터 모듈 개선
2018-08-14 14:12:48 +09:00
Kijin Sung
7c07727e91 Add regexp support to spamfilter 2018-08-14 13:15:11 +09:00
Kijin Sung
75f55c9b5e 관리자 메일 주소 대신 닉네임을 표시 2018-08-14 12:46:24 +09:00
Kijin Sung
6f447df66c Add option to view module config screen in admin layout
모듈 설정 화면을 관리자 레이아웃으로 보는 기능을 옵션으로 만들어 복원함
최근 수정된 관리자 레이아웃 디자인을 여기에도 적용
2018-08-14 12:41:30 +09:00
Kijin Sung
deae9357fa 모듈 설정 화면에서 > 문자 줄바꿈 문제 수정 2018-08-14 12:27:45 +09:00
Kijin Sung
e804a43b4e Refine admin layout design
Improvement on #1056 by @misol

- 헤더에 불필요하게 크게 나오는 "Admin" 기본 문구를 톱니바퀴 아이콘으로 대체
- 모바일에서는 톱니바퀴 대신 햄버거 메뉴 아이콘을 표시하여 메뉴 토글 기능 부여
- 현재 선택된 메뉴를 좀더 분명히 구분할 수 있도록 색상 부여
- 색상 대비 개선 및 색상 일관성 개선
2018-08-14 12:22:37 +09:00
Kijin Sung
4ca3bdccc6 Display module settings in own layout
Partially revert 8d718c0
2018-08-14 11:11:58 +09:00
Min-Soo Kim
edf2a4c76a
관리자페이지에서 XE icon 을 불러오는 경로 수정
절대경로를 상대경로로 수정.
https://github.com/rhymix/rhymix/pull/1056#issuecomment-412355604
2018-08-13 01:54:30 +09:00
Min-Soo Kim
d802509c9e
줄어든 메뉴 버그 수정.
https://github.com/rhymix/rhymix/issues/1057
2018-08-13 01:46:51 +09:00
Min-Soo Kim
9929df9c07
관리자 페이지 디자인을 개정해보았습니다. (#1056)
* 관리자 페이지 디자인을 개정해보았습니다.

스마트폰과 같이 좁은 화면에서도 보기 좋도록 쉽게 조정할 수 있는 것들을 조정해보았습니다.
XE icon 1.0.4 를 활용했습니다.
2018-08-13 00:51:19 +09:00
Kijin Sung
deca0d40b1 Deselect all files after inserting to content
첨부파일 본문삽입 후 선택 해제
엔데벨님의 패치를 GPL/LGPL 허가에 따라 사용함
https://xetown.com/rxe_tip/1036447
2018-08-12 01:09:44 +09:00
conory
56d1470008
Merge pull request #1054 from conory/pr/admin_layout
모듈 매니저 페이지에서 디자인이 깨지는 문제 수정
2018-08-08 20:13:25 +09:00
Kijin Sung
19dfa9a146 Make spamfilter case-insensitive 2018-08-08 18:00:48 +09:00
conory
3a09e802ce $current_module_info->module로 admin/manager 구분 2018-08-08 16:48:49 +09:00
conory
addf4b54be module manager의 로그아웃, 회원정보를 링크 수정 2018-08-08 15:28:17 +09:00
conory
90a5d3e963 mid로 admin/manager 를 구분하도록 수정 2018-08-08 12:56:59 +09:00
conory
8d718c0ae8 mid=board&act=dispBoardAdminBoardInfo등 모듈 관리자페이지에서 디자인이 깨지는 문제 수정 2018-08-08 11:56:46 +09:00
Kijin Sung
68840c2ede Merge branch 'develop' into pr/member-phone-number 2018-08-06 16:49:15 +09:00
Kijin Sung
1d0fb32923 Version 1.9.8 2018-08-06 16:41:29 +09:00
Kijin Sung
9e08bd40ac
Merge pull request #1053 from rhymix/pr/css-unload-minimal
.btn 및 .message 클래스의 CSS 속성을 제거하는 옵션 제공 #950
2018-08-06 16:39:48 +09:00
Kijin Sung
8cef41a7ff
Merge pull request #1051 from misol/develop
Improve cookie security; Secure flag
2018-08-06 16:39:37 +09:00
Kijin Sung
a49f2f5f06 Change Context::isAlwaysSSL() to config('session.use_ssl_cookies')
- Main session cookie is httpOnly if use_ssl is true
- SSO cookie is always httpOnly
2018-08-06 01:23:22 +09:00
Kijin Sung
2c9bb88a14 Merge branch 'develop' into pr/1051 2018-08-06 01:08:51 +09:00
Kijin Sung
e58214d13a Move session and cookie security settings to "Security" tab
세션 및 쿠키 보안과 관련된 옵션은 "보안 설정" 탭으로 옮김
2018-08-06 01:06:03 +09:00
Kijin Sung
2cd960b9f1 Remove duplicate .btn styles from member and communication modules 2018-08-06 00:11:13 +09:00
Kijin Sung
637e4f9e46 Move admin layout assets to admin layout template files
@conory
2018-08-05 19:19:30 +09:00
Kijin Sung
4fc7605e93 Remove mobile.css from unit tests 2018-08-05 19:13:58 +09:00
Kijin Sung
6d77e860aa Add rhymix aliases to XE CSS classes 2018-08-05 01:50:39 +09:00
Kijin Sung
e9db9df53b Fix incorrect variables 2018-08-05 01:46:17 +09:00
Kijin Sung
59833bb291 Remove mobile.css 2018-08-04 23:35:51 +09:00
Kijin Sung
a39a48594b Remove debug code from rhymix.less 2018-08-04 23:31:29 +09:00
Kijin Sung
c176be9c9f Add an option to disable XE styles for .btn and .message
To disable XE styles for .btn, .btn-group, and .btnArea:
define('DISABLE_XE_BTN_STYLES', true);

To disable XE styles for .message:
define('DISABLE_XE_MSG_STYLES', true);

This is a limited version of XE's __DISABLE_DEFAULT_CSS__ constant.
Other styles and default CSS/JS resources are not affected.

DO NOT UNLOAD DEFAULT CSS/JS RESOURCES.
2018-08-04 23:20:45 +09:00
Kijin Sung
a489012d6d Remove unnecessary mobile.css
해당 파일의 내용은 rhymix.less와 100% 중복되므로 별도 로딩할 필요가 없음
2018-08-04 23:18:29 +09:00
Kijin Sung
45851744c1 Fix #1031 deleted comment is shown as secret 2018-08-04 21:54:41 +09:00
Kijin Sung
4b0e56b2d2 Remove invalid attribute from file input @misol 2018-08-04 21:41:29 +09:00
Kijin Sung
431fc363a2 Fix #1048 unable to use $lang in outside file 2018-08-04 21:22:04 +09:00
Kijin Sung
2ce08ffa71 Fix #1050 inconsistent line height between .xe_content, p, span 2018-08-04 21:11:36 +09:00
Kijin Sung
f8c42cc10b Fix #1049 disappearing zero values in extravar 2018-08-04 21:08:03 +09:00
Kijin Sung
8db2ac16c7 Revert "basic files의 로드를 막을 수 있도록 Context::unloadBasicFiles() 추가"
This reverts commit 35b73eec0b.
2018-08-04 20:56:41 +09:00
Kijin Sung
867d6930cf Revert "35b73eec0b 보완"
This reverts commit 30e0a5c583.
2018-08-04 20:56:34 +09:00
Kijin Sung
f12cf74dda Revert "다른 프레임워크와 css 충돌을 피하기 위해 rhymix.less의 class/id 이름에 prefix 처리"
This reverts commit b1cb1f3f34.
2018-08-04 20:56:24 +09:00
conory
b1cb1f3f34 다른 프레임워크와 css 충돌을 피하기 위해 rhymix.less의 class/id 이름에 prefix 처리
변경전의 xe.less 파일도 rhymix.less와 함께 load 하여 호환정 유지

CSS 충돌 예)
bootstrap의 .btn
사용 예)
bootstrap 사용시엔 {Context::unloadBasicFiles('xe')}으로 unload 시키면 문제없음
2018-08-03 19:45:30 +09:00
conory
30e0a5c583 35b73eec0b 보완
파일이름으로 unload 할 수 없도록 변경 (호환성 파괴 위험성이 크므로)
2018-08-03 12:32:42 +09:00
Min-Soo Kim
25d2e4892a Revert "Example of the cookie option"
This reverts commit 93a35c251b.
2018-08-02 00:35:52 +09:00
Min-Soo Kim
93a35c251b Example of the cookie option 2018-08-02 00:35:27 +09:00
Min-Soo Kim
798480df01
Add Soundcloud as a sharing service provider (#1052)
Add Soundcloud as a sharing music service provider.

사운드클라우드는 수익이 많이 나고 있는 서비스는 아니지만, 유투브 만큼이나 음악을 공유하기에 좋은 플랫폼입니다.
2018-08-01 23:34:38 +09:00
Kijin Sung
109203d12b Remove invalid characters from REQUEST_URI 2018-07-31 19:08:02 +09:00
Min-Soo Kim
d090f402cc Set session cookie as a httpOnly cookie.
PHP Session cookie 를 자바스크립트에서 직접 다루는 것은 코어에서 일어나지 않는 일이기도 하고, 바람직한 작업은 아닌 것 같아서 패치합니다.
2018-07-29 18:40:21 +09:00
Min-Soo Kim
30fd0c428c Improve cookie security; Secure flag
SSL 항상 사용 옵션인 경우 쿠키도 이에 맞추어 SSL 인 경우에만 사용되도록 secure flag 를 추가합니다.
선택적 SSL 인 경우 SSL 이 적용되지 않은 구간에서도 쿠키를 읽을 수 있어야 하므로, 적용하지 않습니다.

이 PR 로 변경되는 내용

- Context 클래스에 checkSslEnforce 메소드 추가
- SSL 항상 사용 옵션일 경우, 가능한 secure 플래그를 달아서 쿠기 굽기
- SSO 쿠키의 경우 javascript 접근이 필요 없을 것으로 예상 ( https://github.com/rhymix/rhymix/pull/1034 ) 되어서 `httpOnly` 플래그도 추가.

안드로이드 웹뷰의 경우 StackOverFlow 의 Reading secure cookies in android WebView 라는 글을 참고하면, 읽어오는 것이 가능하다고 합니다. 주소에 프로토콜을 적지 않을 경우 secure flag 가 달린 쿠키는 정상적으로 읽어오지 않는 듯 하니 안드로이드 웹뷰를 사용하시는 분들은 대응이 필요할 것으로 보입니다.

https: //github.com/rhymix/rhymix/pull/1034 를 실수로 merge 하여서 다시 올립니다.
Co-Authored-By: Kijin Sung <kijin@kijinsung.com>
2018-07-29 12:15:24 +09:00
Min-Soo Kim
b62a1322c9 Revert "Merge branch 'develop' into develop"
This reverts commit ec54bbd415, reversing
changes made to 9b12e0a71c.
2018-07-29 11:54:14 +09:00
Min-Soo Kim
ec54bbd415
Merge branch 'develop' into develop 2018-07-29 11:49:27 +09:00
Min-Soo Kim
6f981318ca Merge branch 'master' into develop 2018-07-24 23:47:55 +09:00
Kijin Sung
9b12e0a71c Update unit tests for UA::encodeFilenameForDownload() 2018-07-20 19:21:55 +09:00
Kijin Sung
4ccc84615b Automatically correct invalid and duplicate IDs in XML imports 2018-07-20 19:16:38 +09:00
Kijin Sung
d069cf1194 업로드 파일명 처리 관련 버그 수정
xpressengine/xe-core#2008
xpressengine/xe-core#2269
2018-07-20 19:14:36 +09:00
Kijin Sung
a0d688df9d unicode 문자를 이용한 닉네임 중복 우회 문제 고침
xpressengine/xe-core#2025
2018-07-20 18:56:43 +09:00
Kijin Sung
1b0466dd83 가입 인증메일 만료시 안내 메시지 개선
xpressengine/xe-core#2112
2018-07-20 18:54:02 +09:00
Kijin Sung
1b79f453b7 Include link and image URL in spam filter
스팸필터에 등록한 키워드가 <a href=""> 속성이나 <img src=""> 속성에
들어 있어도 제대로 필터링되도록 변경
2018-07-06 23:00:25 +09:00
Kijin Sung
625c3b741f Merge branch 'develop' into pr/member-phone-number 2018-07-06 09:15:52 +09:00
Kijin Sung
71bee10ae9 Support data types not defined in XE 2018-07-05 23:46:21 +09:00
Kijin Sung
32c9de472a Improve addColumn() and modifyColumn()
- 특정 컬럼 이후에 컬럼을 추가할 수 있도록 허용
- 모든 integer 타입의 size 속성을 무시 (tinyint 제외)
2018-07-05 22:43:53 +09:00
conory
35b73eec0b basic files의 로드를 막을 수 있도록 Context::unloadBasicFiles() 추가
예) Context::unloadBasicFiles('admin' , 'rhymix.less', ...);
2018-07-05 16:45:55 +09:00
Kijin Sung
20fa55a3fc Support HAVING in XML queries
GROUP BY에 사용되는 <groups> 태그 안에 <having> 태그를 넣을 수 있습니다.
문법은 <conditions> 부분에 적용되는 것과 같습니다.

<query id="queryId" action="select">
    ...
    <groups>
        <group column="document_srl" />
        <having>
            <condition operation="more" column="document_srl" var="myvar" default="0" />
        </having>
    </groups>
    ...
</query>

결과: SELECT ... GROUP BY document_srl HAVING document_srl >= 0
2018-07-03 15:40:52 +09:00
Kijin Sung
2b5cded376 Remove commented debug code 2018-07-02 16:41:13 +09:00
Kijin Sung
b8fc4ca46f Hide friend-only option if friend feature is disabled in communication module 2018-07-02 15:54:19 +09:00
Kijin Sung
712287d564
Merge pull request #1045 from kijin/pr/mysqli-only
MySQL을 제외한 모든 DB 타입 지원 중단
2018-07-02 15:46:54 +09:00
Kijin Sung
3359431d08 Allow nested condition groups
XML 쿼리에서 <conditions><group> 안에 <group> 태그를 또 쓸 수 있도록 허용함.
이제 WHERE (a AND (b OR (c AND d))) 이런 조건을 작성할 수 있음.
2018-06-30 23:01:55 +09:00
Kijin Sung
2cfb7585af Convert more SQL keywords to uppercase 2018-06-30 23:00:28 +09:00
Kijin Sung
3aaa0c60b2 Add sensible operation names to XML query syntax
XML 쿼리 문법에서 사용되는 operation 이름을 상식적으로 개선함

차이점을 이해하기 어려운 excess/more, below/less 조건을 다른 프레임워크에서
흔히 사용하는 gt (greater than), gte (greater than or equal to),
lt (less than), lte (less than or equal to) 라는 이름으로도 쓸 수 있도록 함.
실제 부등호는 XML 태그에 사용되므로 아직은 사용 불가...

not_in은 있는데 not_equal, not_null, not_like는 없는 문제를 개선함.
이제 위의 4가지 모두 언더바(_)를 넣든 안 넣든 동일한 의미로 쓸 수 있음.
2018-06-30 16:01:44 +09:00
Kijin Sung
efa1b603c4 Condition pipe defaults to AND
XML 쿼리 작성시 pipe="and"를 일일이 추가하지 않아도 기본값이 AND가 되도록 함
2018-06-30 15:55:06 +09:00
Kijin Sung
83362034cd Convert all SQL keywords to upper case
대소문자를 섞어서 쓰고 있던 SQL 키워드들을 모두 대문자로 통일
as, and, or, like, desc 등이 소문자였음
2018-06-30 15:42:52 +09:00
Kijin Sung
2258a811df Remove PHP 5.5 and 5.6 from Travis CI 2018-06-30 15:32:23 +09:00
Kijin Sung
6070707941 Remove index hint classes for MS SQL and Cubrid 2018-06-30 15:31:00 +09:00
Kijin Sung
f00ba6f272 Remove and disable all other DB classes 2018-06-30 15:13:22 +09:00
Kijin Sung
0e4eec6a3f Merge all MySQL DB classes into DBMysql.class.php 2018-06-30 15:12:59 +09:00
conory
9fb23bd3dd 문서의 검색, 확장변수와 관련된 비효율적인 코드 정리
- setToAllDocumentExtraVars() 최적화
- 확장변수(-1, -2)를 이용한 문서 다국어 기능 관련 버그 수정 및 개선
- getDocumentList() 최적화 (비효율적인 코드 대거 삭제)
- _setSortIndex(), _setSearchOption() 최적화 (확장 변수 관련 쿼리들 정리)
- 권한자가 아니라면 공개글만 검색되도록 개선 (검색 옵션과 상관없이)
--- 문서 검색(제목+내용,내용,댓글)시 권한자도 비밀글을 검색할 수 없었던 문제 수정
- 'NOTICE Undefined variable' 조차 발생되지 않도록 getGrant() 수정
- '(포인트가 부족한 경우) 글 열람 금지' 옵션 사용시 본문 뿐만 아니라 확장 변수도 볼 수 없도록 숨김
- 기타 버그 수정 (많이 잡은 것 같은 데 정확히 기억안남ㅠ)
2018-06-28 19:59:21 +09:00
Kijin Sung
6c28f5ac5a Make all module columns varchar(80)
utf8mb4 길이 제한 때문에 module_part_config 테이블에 인덱스가 추가되지 않는 문제 수정.
다른 테이블에서 module 컬럼은 이미 80자로 제한되어 있으므로 이 테이블에서만 길게 허용할 필요가 없음.
2018-06-26 10:19:28 +09:00
Kijin Sung
62895c945a Fix #1035 in message module 2018-06-25 23:07:34 +09:00
conory
bacca5d025 getActionForward() 에서 값이 없을 경우 빈 리턴을 하도록 개선
rss 모듈의 action forward가 등록되지 않는 문제 수정 (기존 서드파티에도 같은 문제가 발생될 것 같아 이렇게 수정함)
2018-06-21 16:13:03 +09:00
Kijin Sung
89fcea58c9 Fix unit tests for PHP 7.2 2018-06-14 15:37:04 +09:00
Kijin Sung
b6557622d2 Improve regex for robot detection
- User-Agent에 URL이 들어갈 때는 괄호에 넣거나 +를 붙이도록 되어 있음
- 워드프레스 핑백 공격도 로봇으로 취급
2018-06-14 14:18:27 +09:00
Kijin Sung
ca90ac2c8e Fix unit test for UA class 2018-06-14 14:18:05 +09:00
conory
9e2a09f108 웹 브라우저가 아닌 wget, curl, php를 봇으로 취급 2018-06-14 12:57:00 +09:00
conory
ce5a730505 네이버, 다음 등 일부 봇들을 인식하지 못하는 문제 수정 2018-06-14 12:00:30 +09:00
Kijin Sung
f9f96ddead Update minimum PHP version (English) 2018-06-12 00:05:06 +09:00
Kijin Sung
db1de5a9e8 Update minimum PHP version in README 2018-06-12 00:03:11 +09:00
Kijin Sung
5683ba7bba Version 1.9.7 2018-06-11 23:57:40 +09:00
Kijin Sung
26ddd6cdc3 module_part_config 테이블에 unique key 추가
xpressengine/xe-core#2242

이미 있는 idx_module_part_config 인덱스를 대체함.
2018-06-11 23:50:38 +09:00
Kijin Sung
bb6dc77acd 투명한 배경의 PNG 파일은 썸네일 생성시에도 투명하게 나오도록 변경
xpressengine/xe-core#2243
2018-06-11 23:40:33 +09:00
bnu
bacc942a9d #2250 회원 수를 나타내는 탭에 조건문이 잘못 설정된 문제 고침 2018-06-11 23:32:13 +09:00
Kijin Sung
15eb5c3715 openid_delegation_id 등 일부 애드온 및 레이아웃, 위젯 스킨을 배포본에서 제거
xpressengine/xe-core#2037
2018-06-11 23:29:13 +09:00
Kijin Sung
43732495fe
Merge pull request #1043 from dorami/develop
연결되지 않는 외부 링크 수정
2018-06-11 23:24:43 +09:00
Beom Jinhyeok
3f6a6c73ec 연결되지 않는 외부 링크 수정 2018-06-10 19:46:54 +09:00
conory
420e4eb536 전문 공개 (태그 포함) 설정이 무시되는 문제 수정
https://xetown.com/qna/988576
2018-06-04 23:33:13 +09:00
Kijin Sung
7b8bea5923 Fix #1021 hide secret documents and comments from search
게시판에서 검색할 때 아래의 경우에는 비밀글을 제외

  - 내용
  - 제목+내용
  - 댓글

댓글 검색시 비밀댓글도 제외
2018-05-30 22:47:00 +09:00
Kijin Sung
fad9400793 Fix #1035 responsive mobile skin not recognized in page module 2018-05-30 22:31:59 +09:00
Kijin Sung
a791baaed2 Fix #1039 add dispMemberSpammer to member popup menu 2018-05-30 22:26:54 +09:00
Kijin Sung
89abb2ef8e 문서 및 댓글 신고시 간단한 관리자 알림 기능 #588 2018-05-30 22:12:29 +09:00
Kijin Sung
1a3cbb7ae0 Fix #1037 IDN in Javascript @misol 2018-05-30 21:31:41 +09:00
Kijin Sung
83fe72be18 Fix #1037 IDN in Javascript @misol 2018-05-30 21:26:05 +09:00
Kijin Sung
4f35512241 0포인트로 설정하면 필터에서 막히는 문제 수정 @laelbe #1036 2018-05-30 21:15:38 +09:00
Kijin Sung
1fb64b87ac 이미지 경로 오류 수정 @laelbe #1036 2018-05-30 21:15:05 +09:00
Kijin Sung
4533dacd4b Add Storage::getLock() for exclusive access to a named lock
여러 프로세스를 동시에 실행할 경우 1개만 작동하도록
lock을 관리하는 기능을 코어 프레임워크에서 제공하도록 한다.

두 개 이상의 프로세스에서 동일한 이름의 lock을 요청할 경우
먼저 요청한 프로세스는 true, 나머지 프로세스들은 false를 받게 된다.
lock을 갖고 있던 프로세스가 종료되면 다시 요청할 수 있다.

예를 들어 크론탭에서 1분마다 실행하는 CLI 스크립트가 있는데
간혹 1분 이상 소요된다면 2개가 동시에 실행될 수도 있다.
이 때 lock을 받지 못한 쪽을 종료하면 동시 실행을 방지할 수 있다.
2018-05-30 21:04:30 +09:00
Kijin Sung
f278ae5e75 Add methods to enable/disable Debug log collection
크론탭 등에서 다수의 쿼리를 실행하거나 각종 일괄처리 작업을 할 때
디버그 기록 때문에 메모리 사용량이 무한정 증가하는 문제 방지
2018-05-30 20:48:04 +09:00
Min-Soo Kim
d390a66a51 Remove unvalid attribute from FILE input
file input element 에서 유효하지 않는 속성을 제거합니다.
2018-05-11 22:45:49 +09:00
Min-Soo Kim
3bdc896f4e Fix error on the IDN site javascript..
To handle url on the javascript, convert the url to punycode. If not, `isSameOrigin` and return `false` when we compare `location.href` and `request_uri` even though they are same...

On the normal domain (except IDN), they are not affected by this commit.
2018-05-07 01:04:34 +09:00
Min-Soo Kim
f8edfacde2 Refine secure cookie flag
_use_ssl 대신 site_module_info 를 직접 참조하도록 수정.
함수 이름을 조금 더 자연스럽게 수정.
2018-04-28 11:25:15 +09:00
Min-Soo Kim
da95eed96e Fix typo; Context class
오타 수정. 문장 끝 세미콜론 추가
2018-04-24 20:20:50 +09:00
Min-Soo Kim
c1c9a94623 Improve cookie security; Secure flag
SSL 항상 사용 옵션인 경우 쿠키도 이에 맞추어 SSL 인 경우에만 사용되도록 `secure` flag 를 추가합니다.
선택적 SSL 인 경우 SSL 이 적용되지 않은 구간에서도 쿠키를 읽을 수 있어야 하므로, 적용하지 않습니다.
2018-04-24 19:30:38 +09:00
conory
5ebbbf5b36 파라미터 이름이 *srl일 경우 발생되는 호환 문제 수정
mid의 레이아웃(layout_srl) 설정을 '사이트 기본 레이아웃' (음수값 -1) 으로 할 수 없는 문제 수정
2018-04-23 01:05:28 +09:00
Kijin Sung
591e9cb270 Revert "Improve cookie secure setting values"
This reverts commit 73da2af393.
2018-04-23 00:43:24 +09:00
Kijin Sung
cfca05c897 Revert "Fix httpOnly flag by mistake.... (#1032)"
This reverts commit 0347bb7053.
2018-04-23 00:42:12 +09:00
Min-Soo Kim
0347bb7053
Fix httpOnly flag by mistake.... (#1032)
73da2af393 fix.
2018-04-23 00:17:26 +09:00
Min-Soo Kim
73da2af393 Improve cookie secure setting values
HTTPS 를 사용하는 상황에 대한 판단을 할 수 있는 상황에서 쿠키의 secure flag 를 달아준다.
2018-04-22 23:58:13 +09:00
Min-Soo Kim
3c1e5bd64f Merge branch 'develop' of https://github.com/rhymix/rhymix into develop 2018-04-22 11:20:43 +09:00
Min-Soo Kim
16685763e9 Modify simple world/rx_prn skin agreement style
네모의 꿈 회원 스킨에  스타일이랄게 없이 존재하던 약관 부분에 스타일 적용.
2018-04-22 11:20:39 +09:00
Kijin Sung
be9d357f51 Add sort options to declared document/comment list
- 신고된 문서 열람 화면에서 작성일순 정렬 옵션 추가 (최근 신고순 옵션은 이미 있음)
- 신고된 댓글 열람 화면에서 작성일순, 최근 신고순 정렬 옵션 추가
- 신고된 문서와 댓글 열람 화면에서 일관성있는 표시를 위해 컬럼 순서를 일부 조정
2018-04-22 09:55:45 +09:00
conory
eacf1c43f0 디버그 사용자일 경우 발생하는 템플릿 XML 오류 문제 수정 2018-04-16 10:11:31 +09:00
Kijin Sung
e506975439 Fix #1028 JS error when attribute does not exist 2018-04-10 16:04:13 +09:00
conory
4ca57ae95a page, *_srl 파라미터의 값을 양의 정수로 고정
익명글을 쓴 회원을 찾을 수 있다던지 하는 의도하지 않은 문제 방지
2018-04-06 21:38:22 +09:00
conory
07dc7a2311 #1025 json request 호환 문제 수정
deprecated 이므로 내장함수 exec_json 사용 권장!
2018-04-06 12:09:01 +09:00
conory
eb17819ce0 게시판의 '작성 글 보기' 에서 닉네임과 상관없이 항상 해당 회원의 게시물만 출력될 수 있도록 개선
('작성 글 보기' 이용시 다른 회원의 게시물도 출력될 수 있는 문제 수정)
2018-04-06 00:17:46 +09:00
conory
c728250fd7 템플릿 foreach 처리시 디버그 편의를 위해 원래의 엄격한 방식으로 되돌림 2018-03-31 16:59:30 +09:00
conory
3d24c14f7f object 변수일 경우 템플릿 foreach 문이 작동하지 않는 문제 수정
#1023 문제 수정

레이아웃 확장변수 (extra_var)가 object 라서 발생한 warning 수정 (왜 object로 했는 지 모르겠지만, array가 더 맞는 듯함)
Warning: count(): Parameter must be an array or an object that implements Countable in php 7.2
2018-03-30 23:28:44 +09:00
conory
c4b12c301c 결과 메세지가 출력되지 않는 문제 수정 2018-03-30 22:10:56 +09:00
conory
f9f6b28476 불필요한 코드 제거
(빈 사이트맵이 있을 경우) Warning: count(): Parameter must be an array or an object that implements Countable in php 7.2
그리고 연결 관계가 전혀 없는 코드임으로 불필요함
2018-03-28 00:32:50 +09:00
conory
64b5299864 호환 문제 의심 수정 2018-03-27 15:40:05 +09:00
conory
e0edf3cb53 Context::setRequestArguments() 입력 정리 2018-03-26 23:55:07 +09:00
conory
605fcc87df Fix unit test for template 2018-03-22 17:49:00 +09:00
conory
a8e9c58d7a inline 템플릿 문법 인식 오류 수정
a6e9222fac 보완

잘못 인식된 문법 ex)
<input cond="$a" type="text" value="{'">'|escape}" />
<p id="<!--@if($a)-->a" class="o"<!--@else-->c"<!--@end-->>abc</p><div cond="$c">123</div>
2018-03-22 16:34:19 +09:00
Kijin Sung
2694bba7da
Merge pull request #1016 from kijin/pr/seo-hashtags
OpenGraph 메타 정보에 문서 태그 및 해시태그 추가
2018-03-15 14:04:36 +09:00
Kijin Sung
fb73a0d410 Add getTags() and getHashtags() to document item 2018-03-15 12:34:51 +09:00
Kijin Sung
e4fb4e1dbf Add document tags and hashtags to og:article:tag 2018-03-15 12:22:43 +09:00
Kijin Sung
7eed765ec5 Fix #1014 #1015 XMLRPC 2018-03-14 10:40:49 +09:00
Kijin Sung
7f5c45cc35 Exclude editor components that are not actually directories
xpressengine/xe-core#2241
2018-03-13 19:48:49 +09:00
Kijin Sung
79120ae5b6 Return immediately if JSON 2018-03-13 11:08:53 +09:00
Kijin Sung
e63d597168 Add comprehensive tests for Context::setRequestMethod() and args 2018-03-13 11:06:34 +09:00
Kijin Sung
39dd27762e Clean up of request method and argument handling 2018-03-13 11:06:17 +09:00
conory
4520a6a2a4 canonical URL이 출력되지 않는 문제 수정 2018-03-12 21:50:52 +09:00
conory
cbd66462c7 4d0cfabfb7 exec_json() 요청시 POST로 처리되어 AJAX communication error가 발생되는 문제 수정 2018-03-11 01:23:56 +09:00
conory
720570224c 4d0cfabfb7 exec_xml() 오류로 일부 되돌림 2018-03-10 23:49:03 +09:00
conory
4d0cfabfb7 XMLRPC 요청을 무시하는 문제 수정 2018-03-10 23:34:37 +09:00
Kijin Sung
5fa2dec9db Also detect force_download=Y option in procFileDownload 2018-03-10 00:30:03 +09:00
Kijin Sung
a1aa0a576e
Merge pull request #1013 from ForPeople/patch-2
Change Woorimail SSL Port
2018-03-09 14:36:30 +09:00
포피플
2306456154
Change Woorimail SSL Port
Some web hosting doesn't open a port 20080. So Woorimail change SSL port from 20080 to 443(ssl).
2018-03-09 14:13:51 +09:00
Kijin Sung
9e0298c067 Version 1.9.6 2018-03-08 14:48:19 +09:00
Kijin Sung
ddb2a8afa1 Fix CKEditor Korean line break issue in iOS #932
- iOS에서는 divarea 플러그인과 @largeden 님의 ios_enterkey 플러그인을 사용
- iOS에서는 divarea 플러그인과 호환되지 않는 에디터 컴포넌트를 로딩하지 않음
  - 추후 호환성 문제가 해결되면 다시 사용하도록 변경할 수 있음
- 기본 폰트 등의 스타일이 cke_wysiwyg_div 클래스에도 적용되도록 조치함
2018-03-08 14:23:47 +09:00
Kijin Sung
73a46bbac5 Update Cloudflare IP range list 2018-03-07 23:20:41 +09:00
Kijin Sung
a3f08eff7f Update Korean IP ranges list 2018-03-07 23:18:52 +09:00
Kijin Sung
f359a3448c Improve point module
글 작성 후 x일 이후에는 댓글 작성 포인트를 부여하지 않는 기능을 확장하여
추천, 비추천, 글읽기 포인트에도 기간 제한을 둘 수 있도록 함.
2018-03-07 23:13:32 +09:00
Kijin Sung
5a158a6633 Version 1.9.5 2018-03-07 17:47:19 +09:00
bnu
a6e9222fac cond, loop 등 템플릿 코드가 컴파일 되지 않고 출력되는 문제
- xpressengine/xe-core#2237
- 일부 해결됨을 확인하였으나, 다양한 환경에서 문제가 여전히 나타날 수 있음
2018-03-07 17:45:52 +09:00
Kijin Sung
adb93006b4 Add option to limit the size of documents and comments
지나치게 용량이 큰 글을 등록하여 서버 과부하나 트래픽을 유발하는 경우가 있음.
예: ㅋㅋㅋ를 1000만 번쯤 복사해서 넣는다거나...

이런 문제를 막기 위해 게시판에서 글과 댓글의 용량을 제한할 수 있도록 함.
지저분한 태그가 많이 붙은 HTML 콘텐츠을 복붙하는 경우에 대비하여
기본값은 글 1024KB, 댓글 128KB로 여유있게 책정하였으며
사이트 특성에 따라 줄이면 됨.
2018-03-07 15:51:36 +09:00
Kijin Sung
f11d3053f3 Update .travis.yml
- Codeception 2.2는 PHP 7.2에서 작동하지 않음
- Codeception 2.3은 PHP 7.2에서 작동하나, 세션이 저장되지 않아서 설치 도중 DB 에러가 남
- 아직 해결하지 못했으나 일단 버전만 변경함
2018-03-07 14:49:12 +09:00
Kijin Sung
7854d64641 Add URL parameter force_download=Y to force download images 2018-03-07 12:22:13 +09:00
Kijin Sung
53599756a1 Fix inconsistent use of 'data' variable in jquery.fileUpload integration script
공통으로 사용하는 data 변수를 이벤트 핸들러 파라미터 이름으로도 사용하여
특정 상황에서 스크립트 에러가 발생하는 문제를 수정함.
다른 이벤트 핸들러에서도 혼동의 여지가 없도록 변수명을 다르게 지정함.
2018-03-07 11:45:49 +09:00
Kijin Sung
2366d61ea4 Allow some file types to be downloaded inline
이미지, 오디오, 비디오, PDF 등 일부 파일을 다운로드하면
다운로드 창을 띄우지 않고 현재 창에 바로 표시할 수 있는 옵션 추가
단, text/html은 보안상 허용하지 않음
2018-03-07 11:39:40 +09:00
Kijin Sung
b253c8c0b1 Version 1.9.4 2018-03-07 02:58:12 +09:00
Kijin Sung
93e32b3143 Fix #1006 missing comment count in member document list 2018-03-07 02:52:04 +09:00
Kijin Sung
dd93a40e05 Remove enterkey plugin for CKEditor on iOS
- xpressengine/xe-core#2207
- rhymix/rhymix#932
- 실제 이 패치로 해결될 것 같지는 않으나 일단 XE와 맞춤
2018-03-07 02:45:02 +09:00
Kijin Sung
ed3696ae93 Fix #987 error in URI.js when invalid URL is supplied 2018-03-07 02:40:56 +09:00
Kijin Sung
46aa82d63b Clear autosave cookie when autosaved document is deleted 2018-03-07 02:25:22 +09:00
bnu
f72ea052f1 fix #2229 자동저장 기능에 IP 대신 암호키를 대조하도록 변경 2018-03-07 02:18:17 +09:00
Laighlinne
6a51d5a753 회원가입 설정에서 긴 텍스트 줄바꿈 2018-03-07 01:41:48 +09:00
bnu
a1a180989d #2122 상자위젯 간에 위치 이동이 안 되는 문제 고침 2018-03-07 01:39:31 +09:00
bnu
f78682b926 fix #2178 문서 히스토리 기능에 편집자 정보가 글 작성자의 정보로 잘못 기록하는 문제 고침 2018-03-07 01:37:48 +09:00
howtoxe
61b3ebce4e Update document.model.php 2018-03-07 01:36:44 +09:00
howtoxe
8a35c00e96 일부 레이아웃에서 모듈설정의 다국어 레이어가 표시되지 않는 문제점 수정 2018-03-07 01:36:27 +09:00
Kijin Sung
c3df75bfee
Merge pull request #1010 from kijin/pr/editor-frame
약관 편집 화면에서 쓰던 에디터 변환 기능을 다른 곳에서도 쓸 수 있도록 변경
2018-03-06 22:08:31 +09:00
Kijin Sung
f42e1f7a45 Reapply CKEditor option to dispEditorFrame 2018-03-06 22:04:25 +09:00
Kijin Sung
c4f3110291 Enable textarea to be used as member agreement editor 2018-03-06 21:58:33 +09:00
Kijin Sung
499a7e4457 Fix cursor selection after converting preview to editor 2018-03-06 21:57:59 +09:00
Kijin Sung
a0ae7a2a30 Apply editor replacement to all .editable_preview elements 2018-03-06 21:39:04 +09:00
Kijin Sung
1728d17867 Merge branch 'develop' into pr/editor-frame 2018-03-06 20:50:49 +09:00
포피플
43f6587d66 Add Indonesian locale 2018-03-06 20:50:04 +09:00
Kijin Sung
c707b3915d
Merge pull request #1009 from kijin/pr/context-tpl-vars
Context 클래스에서 static 속성과 인스턴스 속성을 분명히 구분
2018-03-06 20:49:27 +09:00
Kijin Sung
ed7ed13bb9 Remove and consolidate remainder of non-static methods in Context 2018-03-06 20:30:52 +09:00
Kijin Sung
a1848f5e89 Fix more unnecessary non-static method calls 2018-03-04 00:14:53 +09:00
conory
fe1c182ecc php7.2 Warning: count(): Parameter must be an array or an object that implements Countable 2018-03-03 21:45:45 +09:00
Kijin Sung
61114c5198 Clean up Context::getInstance(), constructor, and oFrontEndFileHandler
대부분의 Context 함수가 static으로 바뀌었기 때문에 기존 자료 호환성을 제외하면
instance를 사용할 일은 이제 거의 없음. instance에는 최소한의 속성만 남기고
생성자(__construct)에 있던 기능도 모두 getInstance()로 옮김.
2018-03-03 12:30:22 +09:00
Kijin Sung
2b40d1ef74 Fix unit test for $lang in templates 2018-03-03 12:07:13 +09:00
Kijin Sung
b2852e1936 Clean up SSL action cache file handling 2018-03-03 02:06:19 +09:00
Kijin Sung
e0a762d03a Use $lang as a local variable in template handler 2018-03-03 01:57:16 +09:00
Kijin Sung
9d06f6a9e2 Enable static calling of Context::init() and convert unnecessary instance properties into static properties 2018-03-03 01:44:05 +09:00
Kijin Sung
76aafac4a7 Set Context::$_tpl_vars to global $__Context__ 2018-03-02 21:17:52 +09:00
Kijin Sung
513f136c34 Isolate user-created template vars (Context::set) from Context instance properties 2018-03-02 21:02:59 +09:00
BJRambo
bec5e9ec5d PHP7.2 에서 따옴표 누락으로 워닝에러 고침. 2018-02-27 19:31:31 +09:00
Kijin Sung
7d5b78b269 Move editor frame function to editorView::dispEditorFrame 2018-02-26 14:11:13 +09:00
BJRambo
488181eaae FileHandler::writeFile 의 리턴 주석 고침.
기존의 경우 FileHandler::writeFile의 주석이 void으로 반환한다고 되어잇지만 실제 리턴값은 bool과 string으로 리턴합니다. 해당 리턴값주석을 Rhymix\Framework\Storage::write에 있는 내용과 일치 시켰습니다.
2018-02-26 13:36:32 +09:00
BJRambo
271fd78c08 Fix #993 읽지 않은 보관함에 있는 쪽지를 삭제할 수 없는 문제 고침
읽지않은 쪽지함으로 사용할때 부득이하게 코드의 절약과 구동 개선을 위해서 message_type  변수를 사용하였는데, 이 변수가 메세지의 보관함에 보관하는 것과 받은 사람, 보낸 사람 이렇게 나뉘는 부분을 확인하였습니다.
그래서 아래와 같은 동작으로 작동하도록 하엿습니다.

1. 메세지 타입이 N(읽지않은 경우) 의 값으로 호출이 된다면 무조건 메세지는 R(받은사람)의 쪽지를 기준으로 선택하도록 합니다.
2. 보관함의 경우 기본 동작은 메세지 읽기-> 보관함이동을 통해서 보관함으로 이동하기 때문에 보관함의 기준으로 삭제하는 기능의 대해서는 별 다른 조치를 취하지 않습니다.

위와 같이 동작을 확인하였으며 일단 전체적인 액션을 테스트 해본 결과 이상이 없어 보입니다.

이 커밋의 내용은 단순히 증상만 정상적으로 보이도록 하였을 수 있으며, 코드 리뷰를 통해서 좀 더 세밀하게 두고두고 볼 필요가 있을 것 입니다.
by @BJRambo
2018-02-25 08:50:46 +09:00
BJRambo
f8e00fac76 Fix #990 회원관리에서 정보수정시 자동으로 비밀번호 추가하는 문제 개선 2018-02-25 08:27:45 +09:00
BJRambo
de1f69a671 Fix #977 읽지 않은 쪽지함에서 읽은 쪽지함의 읽은 시간 표를 삭제 2018-02-25 08:03:37 +09:00
conory
3efd9759dc 쪽지 기본스킨에서 자동 줄바꿈이 되지 않아 깨질 수 있는 문제 수정 2018-02-20 22:34:11 +09:00
Kijin Sung
98b6789a44 Always use CKEditor when editing member agreements #1003 2018-02-16 12:06:35 +09:00
conory
54ff7076c7 문서가 존재하지 않는 경우 엉뚱하게 403 코드를 출력하는 문제수정 2018-02-05 18:11:08 +09:00
Kijin Sung
431ed92454
Merge pull request #1000 from kijin/pr/more-points
더 다양한 상황에서 포인트를 주고받을 수 있도록 개선
2018-02-02 17:41:25 +09:00
Kijin Sung
23d074b486 Optimize query getCommentParentNextSibling
검색 조건에 document_srl을 넣지 않아서 인덱스를 타지 않는 문제 수정
(복합 인덱스의 첫 번째 컬럼이 검색 조건에 포함되어 있지 않으면 인덱스가 없는 것과 마찬가지임)
2018-02-02 16:09:14 +09:00
Kijin Sung
b5f47e1b33 Fix not enough points message to include non-members 2018-02-02 15:51:34 +09:00
Kijin Sung
9939b8b747 Add option to allow robots to read documents 2018-02-02 15:48:45 +09:00
Kijin Sung
d946d75969 Remove unnecessary session check
$_SESSION['readed_document'][$document_srl]이 이미 참일 경우 실행되는 코드이므로
$_SESSION['readed_document'][$document_srl]을 참으로 지정해 줄 필요 없움.
2018-02-02 15:39:56 +09:00
conory
13ebfbfa8c Revert "context property의 이름과 템플릿 내의 변수 이름이 같을 경우 덮어쓰지는 문제 수정"
This reverts commit 51bd96b66a.
2018-02-01 15:34:00 +09:00
conory
51bd96b66a context property의 이름과 템플릿 내의 변수 이름이 같을 경우 덮어쓰지는 문제 수정 2018-02-01 15:01:40 +09:00
CONORY
8d812992e7
Merge pull request #996 from conory/pr/move_document
문서 이동 / 첨부 파일 삭제 기능 개선
2018-02-01 13:27:17 +09:00
Kijin Sung
856c6ae4bd Standardize on upvote/downvote instead of recommend/not recommend 2018-01-31 23:40:29 +09:00
Kijin Sung
7e74b45c5c Remove unnecessary reload of point from DB 2018-01-31 23:37:32 +09:00
Kijin Sung
0b9a3fd56c Implement giving points to author and/or uploader when their document is read or their file is downloaded 2018-01-31 23:35:59 +09:00
conory
c998bc8aaf 오류 메세지 변경, 닫는 태그 수정 2018-01-31 18:58:14 +09:00
Kijin Sung
08f6902798 Implement giving points to the voter 2018-01-31 18:37:10 +09:00
Kijin Sung
78aebbf77f Add more point options 2018-01-31 18:36:46 +09:00
conory
cd837d1124 procDocumentManageCheckedDocument() 정리
서드파티에서 조작할 수 있도록 document.manage 트리거 추가
게시물 관리 기본 쪽지 보내기 개선 (동일 작성자의 게시물을 모아 한번에 보내도록 )
2018-01-31 00:29:37 +09:00
conory
bbba3d013e 28dfc44a86 보완 @kijin 2018-01-30 00:22:38 +09:00
conory
28dfc44a86 913ccf4a3c 보완 2018-01-29 23:38:19 +09:00
conory
913ccf4a3c 디버그 기능 사용시 템플릿 경로를 표시하는 주석 태그 추가
관리자일 경우에만 표시
위젯 캐시 등 사용시 템플릿 주석이 노출될 가능성이 있으므로 HTMLDisplayHandler->prepareToPrint()에서 주석 제거 처리
2018-01-29 22:08:39 +09:00
Kijin Sung
afc0f26d6c Fix path handling in TemplateHandler 2018-01-29 15:07:00 +09:00
conory
54401ea28f copyDocumentModule(), deleteModuleDocument() 정리, 성능 개선 2018-01-29 00:57:35 +09:00
Kijin Sung
802ca2cf1b Fix incorrect sender info in new message notification
A 회원 계정으로 로그인한 상태에서 애드온이나 서드파티 모듈이
B 회원으로부터 C 회원에게 쪽지가 발송되도록 하면,
C회원에게 표시되는 쪽지 알림에는 A 회원으로부터 쪽지가 왔다고
잘못 표시되는 문제 수정.

- 쪽지 발송 트리거에서 sender_srl을 참조하는 코드가 누락되어 있었음.

- insertNotify에서 명시적으로 지정한 target_member_srl 속성보다
  현재 로그인한 사용자의 회원정보를 우선 처리하는 문제가 있었음.
  이러면 target_member_srl 속성을 쓰는 이유가 없음 ㅡ.ㅡ;;
2018-01-25 23:39:03 +09:00
BJRambo
6496055581 각종 PHP 7.2 에서 나는 워닝에러를 고침 2018-01-25 20:57:01 +09:00
conory
3d2ade4aa1 문서 이동 / 첨부 파일 삭제 기능 개선 2018-01-24 21:23:00 +09:00
BJRambo
f2d2867069 PHP7.2 count 관련 워닝에러를 고침. 2018-01-24 16:26:57 +09:00
BJRambo
8dd447bc15 맴버모듈의 member_list.html 파일에서 누락된 문자열 따옴표 추가. 2018-01-24 16:17:30 +09:00
BJRambo
66568474bc Fix the warning error in php 7.2 of the array error. use to countobj function. 2018-01-24 15:48:25 +09:00
conory
b180270e08 getExtraVars() 항상 array로 반환될 수 있도록 수정 2018-01-20 18:45:15 +09:00
conory
185a2657e6 Fix Warning: Invalid argument supplied for foreach() 2018-01-20 16:24:51 +09:00
Min-Soo Kim
bafc9005c6
Enable LESS and SASS @ editor style (#988)
* Enable LESS and SASS @ editor style

에디터 스타일에 LESS 또는 SASS를 사용할 수 없어서 기본 설정을 간결하게 반영하기 어려운 감이 있었습니다.
이를 해결합니다.

* Replace for to foreach

foreach 로 대체 가능한 for 문을 대체합니다.
2018-01-20 00:20:05 +09:00
Kijin Sung
0dedc76107 Clear ncenterlite cache data after deleting old notifications 2018-01-17 13:14:53 +09:00
Kijin Sung
c9d3645f10 Automatically fill cache in ncenterliteModel->_getNewCount()
285ea8a 보완

카운트 캐시가 없는 경우 자동으로 캐시를 생성하도록 변경함.
푸시앱 등 알림 내용은 안 불러오고 카운트만 받아가는 경우가 있어서
이렇게 하지 않으면 반복 호출해도 캐시 효과가 없음.

푸시앱 사용자가 많고 알림이 수천~수만 개씩 쌓이는 사이트에서
이 패치 적용 후 DB서버 부하가 50% 이상 줄어들었음.
2018-01-16 23:36:37 +09:00
Kijin Sung
285ea8a8ed Apply object cache to ncenterliteModel->_getNewCount()
알림이 많이 쌓여 있는 경우 푸시앱 등 알림센터에 직접 접근하는 서드파티 자료에서
알림 수를 가져올 때 부하가 발생함. 이미 알림 목록을 캐싱하도록 되어 있으므로
캐시를 활용하여 불필요한 SELECT COUNT(*) 쿼리를 하지 않도록 개선함.
2018-01-16 23:16:27 +09:00
Kijin Sung
2dd549f076 Add methods to clear debug entries (for long-running scripts) 2018-01-16 15:03:36 +09:00
BJRambo
564944263b 값을 조건문밖으로 빼서 아래 변수사용할 수 있도록 고침 2018-01-15 15:51:45 +09:00
BJRambo
5ceac274e4 702d94a 보안 페이지값이 1이상일 경우 디비에서 페이지리스트를 가져와야함 2018-01-15 15:41:04 +09:00
Kijin Sung
b7cfa59409 Add index on documents (module_srl, regdate)
게시판이나 위젯에서 작성일 역순으로 검색 및 정렬하는 경우가 많은데
(특히 list_order가 정확하지 않던 구버전 XE에서는 어쩔 수 없이 regdate로
정렬하는 사이트가 많았음) module_srl+regdate에 인덱스가 없어서
다른 컬럼으로 정렬할 때보다 성능이 떨어지는 문제 수정
2018-01-15 14:32:49 +09:00
Kijin Sung
702d94a9e7 Use object cache to store notification list in ncenterlite
오브젝트 캐시 사용시 알림센터에서 플래그 파일 대신 캐시를 활용하도록 변경.
기존 방식에서 오브젝트 캐시로 전환시 플래그 파일은 삭제됨.
2018-01-15 14:20:51 +09:00
Kijin Sung
25369a15f8 Eliminate slow query from ncenterlite auto read trigger
글읽기시 해당 글과 관련된 알림을 자동으로 읽기 처리해 주는 루틴에서
불필요한 SELECT COUNT(*) 쿼리와 플래그 파일 갱신이 발생하는 문제 수정.

SELECT COUNT(*) 쿼리 없이 무조건 업데이트부터 하고
affected rows 값에 따라 플래그 파일 갱신 여부를 결정하도록 함.
2018-01-15 14:01:16 +09:00
Kijin Sung
fa2b2914f2 Add getAffectedRows() and getInsertID() to DB classes
쿼리 실행 후 affected rows, last insert ID 값을 받아올 수 있도록
DB 클래스에 관련 메소드를 추가함
2018-01-15 13:59:14 +09:00
Kijin Sung
8ef0d05ecb Fix incorrect translation of use_object_cache setting to XE format 2018-01-13 20:15:48 +09:00
Min-Soo Kim
3b366dde76
Remove unnecessary string replacing. (#982)
I have an mistake at
3dc1b5d804
. It was late, but I fix it now.
2018-01-13 19:20:24 +09:00
Kijin Sung
038621d1a0 Fix recursion when initializing memberModel 2018-01-13 14:33:00 +09:00
Kijin Sung
c0007767ad Fix recursion when initializing memberModel 2018-01-13 14:26:18 +09:00
Kijin Sung
9a87376e35 Always get $this->user directly from Rhymix\Framework\Session
서드파티 자료가 Context->get('logged_info')에 stdClass를 넣는 경우
$this->user->isAdmin() 등의 메소드를 사용할 수 없게 되는 문제 수정
2018-01-13 14:13:53 +09:00
Kijin Sung
d417cee611 Add PHP SAPI to server info display 2018-01-13 14:13:28 +09:00
Kijin Sung
10049e9471 Version 1.9.3 2018-01-12 20:18:14 +09:00
Kijin Sung
084d353b8e Fix #981 clear date button clears all inputs in simple_world member skin 2018-01-12 20:14:20 +09:00
Min-Soo Kim
845b02b928 Readme 파일 문구 수정 (#969) 2018-01-12 20:08:10 +09:00
Kijin Sung
bbc3b6eba4 Fix #955 all modules are included in integration search
통합검색 모듈 설정과 각 모듈의 접근 권한 설정의 상호작용으로
검색 가능한 모듈이 하나도 없는 경우 모든 모듈이 검색되는 문제 수정
2018-01-12 20:02:42 +09:00
Kijin Sung
c431855bbf Fix #975 do not move file when moving document
문서를 다른 게시판으로 이동할 때 첨부파일 경로를 변경하지 않도록 하여
아래와 같은 문제 발생을 사전에 차단합니다.

- 본문에 삽입한 이미지 경로와 실제 파일이 저장된 경로가 달라지는 문제
- 경로 변경에 실패하여 파일이 증발하는 문제

단, files/attach/(images|binaries)/(기존 게시판의 module_srl) 폴더에
파일이 그대로 남아 있게 되므로, 게시판 삭제 후 해당 폴더를 수동으로
삭제하면 문제가 될 수 있습니다. 더이상 게시판의 module_srl과 해당 폴더에
저장된 파일들의 소속 모듈이 일치하지 않을 수 있다는 뜻입니다.
2018-01-12 19:51:45 +09:00
Kijin Sung
09f22aa42e Fix #962 hide deleted comment from integration search 2018-01-12 19:40:09 +09:00
Kijin Sung
a8f2bc9bd4 Fix #972 missing sprintf() for excess_ip_access_count 2018-01-12 19:32:31 +09:00
BJRambo
b6dd614dc7 관리자의 경우 회원 닉네임이 노출되지 않는 문제 고침 2018-01-11 20:35:19 +09:00
BJRambo
8f2f4aae42 Fix #968 알림센터의 유저 알림기본 동작을 항상 받는 동작으로 개선 2018-01-11 20:31:08 +09:00
Kijin Sung
2bbf4d902f Fix isSameOrigin() with relative URLs 2018-01-11 17:36:05 +09:00
Kijin Sung
7563ab859d Update jQuery, jQuery Migrate, jQuery UI 2018-01-10 23:53:44 +09:00
bnu
2119c84b77 회원 프로필 사진 업로드 시 파일 용량 제한 설정 추가
xpressengine/xe-core#2202

- 기본 값 : 용량 제한하지 않음
- KB 단위로 지정할 수 있으며
- 이미지가 리사이즈 과정을 거치는 경우 리사이즈 된 파일의 용량으로 적용 함
2018-01-10 23:27:38 +09:00
bnu
4dede913e4 fix #2183 포인트 모듈별 설정 페이지에서 page 모듈을 제외 2018-01-10 23:19:04 +09:00
bnu
aed4a819f9 사이트맵 URL 입력란에 기본 값 제거
xpressengine/xe-core#2158

- 기본으로 입력되어 있는 http://를 placeholder로 변경함
- XE와 같은 예제는 넣지 않음
2018-01-10 23:17:32 +09:00
churow
aae2ffb70a 가입일, 최근로그인 정렬에 회원그룹 검색값 추가
특정 회원그룹을 검색해서 볼 때 가입일, 최근로그인으로 정렬하면 검색이 풀리는 문제 해결
2018-01-10 23:14:09 +09:00
Kijin Sung
61bad46913 게시판에서 상담 기능과 익명글 기능을 동시 사용 시 문제 고침
xpressengine/xe-core#2140
2018-01-10 23:10:02 +09:00
Kijin Sung
af2452ba65 Fix incorrect variable 2018-01-10 17:47:49 +09:00
Kijin Sung
4ef67f1d00 Fix last_login not being updated when autologin is used 2018-01-10 17:47:06 +09:00
Kijin Sung
49be8be6c0 Fix error me_007 when sending email to multiple recipients via Woorimail 2018-01-04 14:20:57 +09:00
Kijin Sung
f41c976fcf Add index hint to ncenterlite.getNotifyNewCount 2018-01-04 14:01:43 +09:00
Kijin Sung
d6428bb71d Add index hint to ncenterlite.getNotifyList query 2018-01-04 12:08:05 +09:00
Kijin Sung
e0d7ae3641 Fix fatal error when using index hint with mysqli, mysqli_innodb, etc. 2018-01-04 12:07:45 +09:00
Kijin Sung
ba1942a65d Fix incorrect handling of secret comments in commentItem::isAccessible()
Regression #961

댓글은 비밀 여부를 status 필드가 아니라 is_secret 필드로 표시함.
문서 모듈 쪽의 코드를 그대로 복붙하여 발생한 오류로 보임.
2017-12-27 14:17:38 +09:00
Kijin Sung
17bec44046 Hide option to allow duplicate nickname 2017-12-21 15:39:38 +09:00
Kijin Sung
7a0172b559 Do not display duplicate nickname warning if duplicate is allowed 2017-12-21 15:39:23 +09:00
Kijin Sung
3e1d223962 Allow programs to determine whether a member has points without calling isExistsPoint() and getPoint() separately
포인트 정보가 아예 없는 경우와 0포인트가 있는 경우를 구분하기 위해
isExistsPoint()와 getPoint()를 각각 호출하지 않아도 되도록
getPoint()에 3번째 인자 $exists를 추가함
2017-12-21 15:24:55 +09:00
Kijin Sung
01ee23b7d9 Fix JS error when either url1 or url2 is undefined in isSameOrigin() 2017-12-21 15:16:16 +09:00
Kijin Sung
bc17e4b2d5 Add option to allow duplicate nicknames 2017-12-21 15:11:13 +09:00
Kijin Sung
98b328fa3f Add index for nick_name in documents and comments table 2017-12-21 14:50:02 +09:00
Kijin Sung
ae4fd85bfe Add option to empty the contents of the cache dir, not delete it
files/cache 폴더에 다른 파티션이나 램디스크 등이 마운트되어 있는 경우
캐시파일 재생성시 폴더를 삭제할 수 없어 오작동하는 문제를 우회하기 위해
폴더 자체를 삭제하지 않고 내용만 비우는 옵션을 추가함.
2017-12-21 14:39:39 +09:00
Kijin Sung
b6aac0beac Use 'equal' not 'like' for searches on user_id, user_name, nick_name
user_id, user_name, nick_name 검색에는 like가 아닌 equal 조건을 사용하도록 변경함.

이름이나 닉네임으로 검색할 때 LIKE %검색어% 문법이 사용되어
검색 속도가 느려지는 것은 물론, 특정 회원의 작성글 보기 메뉴를 클릭하면
검색어가 포함된 닉네임을 가진 다른 회원의 글까지 모두 표시되어
닉네임을 변경했거나 다중아이디를 사용하는 것으로 오해받는 문제를 수정함.
(예: '라이믹스' 닉네임을 검색하면 '라이믹스최고' 회원의 글도 검색되었음)
2017-12-21 14:06:46 +09:00
Kijin Sung
28a2398e91 Fix null value in some circumstances in insertNotify() 2017-12-21 00:27:02 +09:00
Kijin Sung
b9074335aa Fix inconsistent document & comment vote handling in ncenterlite 2017-12-21 00:20:14 +09:00
Kijin Sung
42a57421f1 Fix check for DB connection in ModuleHandler 2017-12-21 00:19:51 +09:00
Kijin Sung
2f3f1d4be0 Use object cache for member point
오브젝트 캐시 사용시 회원 포인트를 캐시에 저장하도록 변경하여
불필요한 캐시 파일이 다량으로 생성되는 것을 방지함.
2017-12-19 23:53:30 +09:00
Kijin Sung
4b0a2c512e Do not cache nonexistent member info
존재하지 않는 회원 정보가 캐싱되는 문제 수정
2017-12-19 23:34:44 +09:00
Kijin Sung
92d8f17482 Fix caching of nonexistent documents
존재하지 않는 문서가 캐싱되어 버려서
나중에 해당 문서가 존재하게 되어도 불러올 수 없는 문제를 수정함
GPL/LGPL 듀얼 라이선스로 XE에서도 적용할 수 있도록 허용함
2017-12-19 23:30:11 +09:00
Kijin Sung
455e39cbba Fix unnecessary reloading of user lang 2017-12-19 12:00:50 +09:00
Kijin Sung
d3b78d1d47 Fix unnecessary cache file refresh in menu module 2017-12-19 12:00:19 +09:00
Kijin Sung
40adc7f6dc Fix unnecessary query from point level icon addon 2017-12-19 12:00:00 +09:00
BJRambo
3fbcc3da9a Delete unuse class call at login. 2017-12-18 16:16:53 +09:00
Kijin Sung
7099e30372 Fix isSameOrigin() 2017-12-18 15:14:44 +09:00
CONORY
8fe6528e4a
Merge pull request #961 from conory/pr/isAccessible
comment, document 모듈의 권한 정리
2017-12-14 12:02:33 +09:00
conory
f93ad9c0f6 코드 정리 2017-12-13 21:10:46 +09:00
conory
48c818d7de 잘못된 지정 수정 2017-12-12 14:30:27 +09:00
conory
f8ac11bda6 isAccessible()로 통일 2017-12-12 13:23:45 +09:00
conory
81986c40a9 document의 isAccessible() 개선 2017-12-12 13:21:37 +09:00
conory
6bc8376435 isAccessible() 개선 2017-12-12 13:10:15 +09:00
Kijin Sung
be3e3cd4cb Fix integration search exclusions not being applied
통합검색에서 제외한 모듈 설정이 무시되고 권한에 따라서만 표시되는 문제 수정
2017-12-11 00:22:50 +09:00
Kijin Sung
1280f6a0a0 Fix allow_no_category being overwritten on module config change 2017-12-11 00:11:52 +09:00
Kijin Sung
1a234070ca Fix content style radio buttons 2017-12-09 03:18:18 +09:00
Kijin Sung
a8a3c3ef0f Save comment content style 2017-12-09 03:15:57 +09:00
Kijin Sung
6eca39fd98 Version 1.9.2 2017-12-09 03:08:43 +09:00
Kijin Sung
fc5e60f4ce Version 1.9.1 2017-12-09 03:08:19 +09:00
Kijin Sung
d7a3e1bc26 Fix unit tests that don't work in PHP 7.2 2017-12-09 03:00:51 +09:00
Kijin Sung
3feaf36c23 Adjust unit tests to accommodate new template parser behavior 2017-12-09 02:55:01 +09:00
Kijin Sung
e3a2c1a6aa Guard more count() calls in common framework classes 2017-12-09 02:49:01 +09:00
Kijin Sung
3dbc600aa9 Suppress warnings thrown by count() in template parser 2017-12-09 02:39:14 +09:00
Kijin Sung
2158c4fa3b Remove unnecessary count() calls in MediaFilter 2017-12-09 02:32:40 +09:00
Kijin Sung
2d6bde8f8c Guard some count() calls with is_array() in install module 2017-12-09 02:23:22 +09:00
Kijin Sung
ebcf19b9ec Fix #958 missing option for comment content style 2017-12-09 02:19:23 +09:00
Kijin Sung
a7d222184d Fix #959 incorrect escape of layout configuration 2017-12-09 02:10:47 +09:00
bnu
1943289bb8 fix #2185 게시판 카테고리 및 메뉴 관리가 동작하지 않을 수 있는 문제 고침 2017-12-09 01:50:02 +09:00
Kijin Sung
0b44e47d65 Remove unnecessary cache clearing in Direct module installer
라이믹스 내장 함수를 사용하여 직접 파일을 복사하는 경우
opcache와 stat cache가 자동으로 비워지므로 별도로 호출할 필요가 없음
2017-12-09 01:44:09 +09:00
bnu
849201a2b6 #2189 쉬운 설치 후 복제된 파일들에 대한 status cache 및 opcache 제거 2017-12-09 01:41:58 +09:00
Kijin Sung
0023a9cc1a Cache opcache status to reduce function_exists() calls 2017-12-09 01:40:04 +09:00
Kijin Sung
b25ce87ae5 Import new XE functions clearStatCache() and invalidateOpcache()
xpressengine/xe-core 23ec7b7

라이믹스는 Storage 클래스에서 파일을 쓸 때마다 opcache와 stat cache를
자동으로 비워주고 있으므로 이런 조치가 필요하지 않으나,
XE와의 호환성을 위해 동일한 함수를 제공함. 사용을 권장하지 않음.
2017-12-09 01:38:46 +09:00
Kijin Sung
cfe5ae01d3 Allow converter to be used even when manually inserted
익명게시판에서는 댓글 작성시 $manual_inserted = true로 설정되기 때문에
converter가 작동하지 않음. 이런 경우에도 allow_html, use_html 등의
변수가 지정된 경우 converter를 사용하도록 변경하여
에디터를 지원하지 않는 모바일 스킨과의 호환성을 높임.
2017-12-07 14:43:54 +09:00
Kijin Sung
78a8bd362d Fix invalid CSS when title color starts with #
칼라피커를 어떤 것을 사용하는지에 따라 색상 앞에 #가 붙어 들어올 때가 있음
이런 경우 문법에 맞지 않는 ##xxxxxx 결과가 나오지 않도록 패치
2017-12-07 14:41:52 +09:00
bnu
89e4936fb1 Context::convertEncoding() charset 목록 정리 2017-12-07 12:55:50 +09:00
Kijin Sung
697e0fd241 Accept Unix socket paths starting with unix: 2017-12-07 12:40:26 +09:00
Kijin Sung
fbd9af16a9 Fix #955 exclude inaccessible modules from integration search 2017-12-06 14:04:36 +09:00
Kijin Sung
f0ad692650 Enable responsive skin in member, communication, and ncenterlite
회원, 커뮤니케이션, 알림센터Lite 모듈에서 모바일 스킨을 선택할 때
PC와 동일한 반응형 스킨을 지정할 수 있도록 개선
2017-12-05 23:58:04 +09:00
Kijin Sung
eb3108b446 Add option to allow selecting no category
관리자 이외의 사용자가 글을 쓸 때 분류를 선택하지 않아도 되도록
허용하는 옵션 추가 (기본값: 허용하지 않음)
2017-12-05 23:36:26 +09:00
Kijin Sung
2c64e16bd2 Add method to update extra_vars of a member 2017-12-05 00:11:17 +09:00
Kijin Sung
f97a16e7e8 Reorder includes in autoload.php
- 사용자 환경설정(config.user.inc.php)을 로딩하기 전에 autoload 완료
- Object 클래스 로딩 위치 변경
2017-12-04 20:53:42 +09:00
Kijin Sung
44aea4301d Fix msg_not_permitted in communication module on mobile 2017-12-04 10:56:31 +09:00
Kijin Sung
0396d32ae5 Improve module update notification
- 모듈 업데이트 후 "success"라고만 뜨는 문제를 수정
- 반드시 필요한 "모듈 업데이트"를 "새 버전 설치"로 오해하여 피하는 일이 없도록
  "설정 완료"라는 표현을 사용하고 설명을 추가함
- 새 버전이 있을 경우 현재 버전과 새 버전을 함께 표시하고, 모듈 업데이트와
  혼동하지 않도록 "자료실"에 등록된 새 버전 알림이라는 설명을 추가함
2017-12-03 23:03:21 +09:00
Kijin Sung
e78189ea5c Fix invisible message content on mobile default skin
- 모바일에서 쪽지 본문이 보이지 않는 문제 수정
- 모바일 쪽지 기본 스킨에서 본문 아래에 목록을 표시하도록 수정
- 항상 Context::get('m') 변수를 사용할 수 있도록 수정
2017-12-03 22:23:48 +09:00
Kijin Sung
0c62ff7561 Prevent exception on servers with flaky random_bytes() implementation
카페24 PHP 7.0 웹호스팅 상품에서 random_bytes() 함수가 작동하지 않음
2017-12-03 10:06:33 +09:00
Kijin Sung
4d180edbf1 Fix rhymix.less to use guarded mixins 2017-12-01 18:12:06 +09:00
Kijin Sung
487509c1e5 Revert "Revert "Convert default SCSS stylesheet to LESS""
This reverts commit 5586956fea.
2017-12-01 18:02:41 +09:00
Kijin Sung
5586956fea Revert "Convert default SCSS stylesheet to LESS"
This reverts commit 1a98f0974c.
2017-12-01 17:57:30 +09:00
Kijin Sung
1a98f0974c Convert default SCSS stylesheet to LESS
서버단에서 컴파일하는 속도가 SCSS보다 LESS가 훨씬 빠름
2017-12-01 17:32:55 +09:00
Kijin Sung
671e452e6b Fix line height in editor preview in member module 2017-12-01 17:26:11 +09:00
Kijin Sung
2cca84bd3f Follow XE version 1.9.0 2017-12-01 02:09:15 +09:00
Kijin Sung
8909abeb29 Fix syntax error after merge 2017-12-01 02:08:38 +09:00
Kijin Sung
8f64e7c6b9 Merge branch 'develop' into pr/member-phone-number 2017-12-01 02:04:09 +09:00
Kijin Sung
5d29d66041 Allow PHP 7.2 test failures for now 2017-12-01 01:57:11 +09:00
Kijin Sung
3992b4b5bc Fix strict count() behavior in PHP 7.2 2017-12-01 01:49:20 +09:00
Kijin Sung
6f35f5bafc Fix strict count() behavior in PHP 7.2 2017-12-01 01:42:03 +09:00
Kijin Sung
6f7f92f3e2 Add PHP 7.2 to test suite 2017-12-01 01:19:53 +09:00
Kijin Sung
7cfc23eedb
Merge pull request #947 from bjrambo/pr/changeObject
php7.2호환을 위해 변경한 클래스 Object 를 BaseObject으로 변경
2017-12-01 01:18:22 +09:00
Kijin Sung
9c540ea414 Fix classes inheriting Object 2017-12-01 01:14:23 +09:00
Kijin Sung
ae971306b7 Change instanceof Object to instanceof BaseObject 2017-12-01 01:10:48 +09:00
Kijin Sung
84e5542d77 Remove unnecessary use of BaseObject
- 트리거 등 반환값이 필요하지 않은 곳에서 new BaseObject()를 반환하는 것 삭제
- 모듈 설치, 업데이트 후 무의미한 new BaseObject()를 반환하는 것 삭제
- 사용자에게 에러 메시지를 돌려주는 용도로 new BaseObject(-1, '에러메시지')를
  사용하는 경우는 대부분 $this->setError()로 변경함. 언어 변환과 sprintf()
  처리까지 한 번에 이루어지므로 이쪽이 더 편리함.
2017-12-01 00:54:51 +09:00
Kijin Sung
03d74a984f Merge branch 'develop' into pr/change-object 2017-11-30 23:30:21 +09:00
Kijin Sung
e19c196a67 Fix too many simultaneous requests on agreement edit screen
약관 에디터 iframe을 동시에 5개 띄우면서 과부하가 발생하는 문제 수정
2017-11-30 23:23:07 +09:00
Kijin Sung
04fbcdd514 Fixed single quotes in category XML output 2017-11-30 23:03:45 +09:00
Kijin Sung
2dbc77ff68 Eliminate null returns in DB class 2017-11-30 23:03:18 +09:00
Kijin Sung
e48179aa05 다국어 등 코드를 생성하여 만들어지는 cache 파일의 취약점 수정
- 관리자 메뉴, 사용자 지정 다국어 cache를 object cache로 변경
- xpressengine/xe-core#2182
2017-11-30 22:50:36 +09:00
Kijin Sung
999bc92753 mailto: 등 URN 링크 문제 고침 by @bnu
xpressengine/xe-core#2174
2017-11-30 22:11:55 +09:00
bnu
a199333a2e fix #2177 XEVE-17-023 회원의 이메일을 회원 정보에서 노출하지 않도록 변경
- 모듈 업데이트를 통해 기존 설정이 변경됩니다
- 회원의 이메일 주소를 공개하도록 설정할 수 없도록 합니다
- 최고 관리자에게는 회원 정보보기에서 이메일 주소를 확인할 수 있습니다
2017-11-30 22:03:10 +09:00
Kijin Sung
d7beeb783c config파일 읽을 때 BOM문자 제거
xpressengine/xe-core#1604
2017-11-30 21:53:23 +09:00
BJRambo
1803883e1d 코드가 new Object으로만 작성된 코드에 대해서도 동일하게 BaseObject 호출하도록 추가. 2017-11-28 20:07:08 +09:00
BJRambo
f3f40f6859 php7.2호환을 위해 변경한 클래스 Object 를 BaseObject으로 변경 2017-11-28 20:01:28 +09:00
람츠
f4c19a3e0f $request_method 속성에 대한 주석변경
JSON 추가.
2017-11-28 19:41:52 +09:00
람츠
e2704f684a Update Context.class.php 2017-11-28 19:41:41 +09:00
bnu
ec5edff77b 이미 로드한 xe.js 등을 템플릿에서 중복으로 로드하는 코드 제거
d632bffb9f
2017-11-28 19:28:02 +09:00
BJRambo
49f1a691d1
Merge pull request #946 from bjrambo/pr/document-icons
문서 모듈의 아이콘을 스킨으로 설정할 수 있도록 개선
2017-11-28 19:06:21 +09:00
bnu
25b6415587 #2172 복원된 페이지에 남아있는 썸네일 삭제 기능 개선 2017-11-28 18:58:44 +09:00
BJRambo
e3e3a375ec 불필요한 리턴 리디렉트 액션 제거. 2017-11-28 18:57:15 +09:00
BJRambo
7ba2c74e19 사용않함 설정시 실행되는 설명 추가 2017-11-28 18:49:20 +09:00
kijin
9f15787dd2 스킨설정이 없을경우 default 스킨을 가져오도록 추가 2017-11-28 18:42:23 +09:00
BJRambo
75ea89e203 문서 모듈의 아이콘을 스킨으로 설정할 수 있도록 개선
https://github.com/xpressengine/xe-core/pull/2172
2017-11-28 18:07:33 +09:00
Kijin Sung
3eb6e7319f Fix empty agreement becoming required on upgrade
기존에 약관이 없던 사이트도 첫 번째 약관이 필수로 지정되는 버그 수정
@gosugoon
2017-11-28 17:23:09 +09:00
Kijin Sung
1a81fd43f3 Convert Object class to BaseObject in core classes 2017-11-27 22:34:28 +09:00
conory
5bdf95932f kind가 admin이 아닐 경우 (ex. *.controller.php) 확장 모듈로 등록할 수 없는 문제 수정 2017-11-27 21:27:28 +09:00
Kijin Sung
9a83e71bff Allow adding error message and sprintf() variables using setError()
xpressengine/xe-core#2181 적용시 에러 반환 문법을 단순화하기 위한 조치

기존 방식: return new Object(-1, '에러메시지');
XE 제안 방식: return class_exists('BaseObject') ? new BaseObject(-1, '에러메시지') : new Object('에러메시지');
라이믹스 방식: return $this->setError('에러메시지');

기존의 setError() 메소드가 에러 코드만 받을 수 있어서 호환성 보장에 도움이 안 되므로
에러 코드와 에러 메시지를 동시에 넣을 수 있도록 개선하고,
에러 코드를 넣지 않고 에러 메시지만 지정해도 자동으로 -1 에러 코드가 들어가도록 하였음.
(첫 번째 인자가 정수인지 아닌지에 따라 판단함.)

setError(), setMessage(), setMessageType() 등 기존에 무의미한 반환값을 가지던 메소스들 모두
$this를 반환하도록 함으로써 액션이나 트리거 등의 반환값으로 유효하도록 하고,
원할 경우 method chaining까지 사용할 수 있음.

또한 에러메시지에 변수를 넣어야 할 경우
return new Object(-1, sprintf(Context::getLang('error_msg'), $var1, $var2));
이렇게 복잡해지는 문제도 해결하기 위해
setError()에 추가로 넣은 인자는 모두 자동으로 sprintf() 처리를 거치도록 함.
예: return $this->setError('error_msg', $var1, $var2);

즉, 아래와 같은 호출 형태가 모두 유효함.

  - $this->setError(-1);
  - $this->setError(-1, 'error_msg');
  - $this->setError(-1, 'error_msg', $var1, $var2);
  - $this->setError('error_msg');
  - $this->setError('error_msg', $var1, $var2);

단, 이 커밋 이후 신규 작성하는 코어 클래스나 서드파티 자료에서만 사용할 수 있음.
기존 버전과의 호환성을 유지하기를 원하는 서드파티 자료는 XE에서 제안한 삼항식을 사용해야 함.
2017-11-27 16:33:33 +09:00
Kijin Sung
bf6ccfcb44 Force refresh of signup config and signup ruleset if agreement is in old format 2017-11-27 14:52:15 +09:00
Kijin Sung
11c04c5a26 Add multiple member agreements
- 가입 약관, 개인정보처리방침 등을 5개까지 추가할 수 있음
- 약관마다 각각 필수 또는 선택을 지정할 수 있음
- 모든 필수 약관에 동의해야 가입 가능
- 기본 스킨은 수정함. 서드파티 스킨에는 여전히 약관 1개만 표시됨
- 서드파티 스킨 사용시 동의 하나만 선택해도 전체 동의로 간주
2017-11-27 14:43:20 +09:00
Kijin Sung
20f924678a Always enable signup tab in member config screen
회원 가입을 막아 놓으면 회원 설정에서 회원가입 탭아 아예 안 보여서
약관을 수정하거나 확장변수를 추가하는 것도 불가능한 문제를 고침.
2017-11-27 13:06:19 +09:00
Kijin Sung
a8da651f29 Change data type of module_config.config to bigtext
xpressengine/xe-core#2179
xpressengine/xe-core#2180
2017-11-27 13:03:47 +09:00
Kijin Sung
6d6acd5c9e Clean up some comments and line spacing 2017-11-25 19:05:24 +09:00
Kijin Sung
bb51db5956 Add trigger after documentItem->getComments() 2017-11-25 15:51:49 +09:00
Kijin Sung
877863854e Add triggers before and after getCommentList()
예전에 getDocumentList() 전후에 트리거를 추가한 것처럼 댓글 목록에서도
트리거를 사용하여 검색 조건을 바꾸거나 결과를 조정할 수 있도록 함.
2017-11-25 15:32:54 +09:00
Kijin Sung
509b403eff Allow member info to be customized by trigger
문서나 댓글을 작성하거나 수정할 때 트리거에서 회원 정보를 조작할 수
있도록 허용함. $obj->manual_member_info = true 로 바꾸어 반환하면
글쓴이의 정보가 현재 로그인한 사용자나 최초 작성시 정보로 덮어씌워지지
않고 트리거에서 지정한 그대로 남음.

기존에도 $manual_inserted 를 사용하면 이런 기능을 구현할 수 있었으나,
이 변수는 트리거에서 조작할 수 없으며 다른 체크도 모두 건너뛰는 등
여러 가지 불편이 있어서 이렇게 일부 정보만 변경하도록 허용하는 새 방법을
제공함. 익명 게시판 등을 좀더 편리하게 개발할 수 있을 것으로 예상됨.
2017-11-24 23:42:28 +09:00
Kijin Sung
17ca61eed3 Fix #832 make the viewport setting customizable
모바일 접속시 <meta name="viewport"> 태그에 들어가는 내용을
시스템 설정 메뉴에서 커스터마이징할 수 있도록 변경함.
2017-11-23 16:54:06 +09:00
Kijin Sung
2f10d5c0b5 94cdcb2 보완
dispBoardCommentPage 액션은 HTML을 반환하도록 하여 애드온 작동에 지장이 없도록
변경함. (포인트 레벨 아이콘 등이 표시되지 않는 문제가 있었음.)

getBoardCommentPage 액션은 기존 방식처럼 XMLRPC 또는 JSON으로 호출 가능함.
2017-11-23 16:11:51 +09:00
Kijin Sung
460cfd5455 Eliminate unnecessary require_once in mobile classes 2017-11-21 18:09:23 +09:00
Kijin Sung
17c6e48784 Eliminate duplicate methods in communication mobile class 2017-11-21 18:06:04 +09:00
Kijin Sung
94cdcb2e7c Allow dispBoardCategory() and dispBoardCommentPage() to be used in PC
모바일에서만 사용할 수 있었던 dispBoardCategory() 액션을 PC에서도 사용할 수
있도록 변경함. (PC용 스킨에서 category.html 템플릿을 제공하는 경우에 한함)

모바일에서만 사용할 수 있었던 getBoardCommentPage() 액션의 이름을
dispBoardCommentPage()로 바꾸어 PC에서도 사용할 수 있도록 변경하고
기존의 모바일 getBoardCommentPage() 액션은 dispBoardCommentPage()로 연결함.
(get으로 시작하는 액션명은 원래 model에서 써야 하는데 잘못 지정됨)

누가 모바일 스킨을 만들다가 필요해서 추가한 액션인 것 같은데
왜 PC에서는 사용할 수 없도록 해놓았는지 의문임.
비슷한 기능을 PC에서 사용하기 위해 getBoardCommentPageForPC() 등의 액션을
임의로 추가하여 사용하는 사이트가 은근히 많이 보임.
2017-11-21 15:56:17 +09:00
Kijin Sung
9ba0b1e3e6 Add option to control focus on CKEditor
https://www.xetown.com/qna/801549
2017-11-21 15:33:24 +09:00
BJRambo
cb2920bc99
Merge pull request #943 from bjrambo/pr/display-to-send
메세지 보낼때 수신거부인지 확인하여 경고 메세지를 띄움.
2017-11-21 01:05:24 +09:00
BJRambo
e21c203a78 Check if can i receive message when send message. 2017-11-14 06:23:40 +09:00
BJRambo
a23f4f6647 Fix a problem with not running editor on mobile.
Failed to use it in 필요할때 라이믹스 skins.
2017-11-14 06:17:25 +09:00
Kijin Sung
66e8ba4fca Fix URI.js error when processing mailto: links
https://www.xetown.com/rxe_issue/792186
xpressengine/xe-core#2174
2017-11-13 08:44:44 +09:00
Kijin Sung
0a518910e6 Reorder rewrite rules in .htaccess
Bug reported in https://www.xetown.com/qna/788451
2017-11-08 11:33:49 +09:00
BJRambo
2c3de50678 Fix #940 member_srl 과 로그인정보가 없을 경우에 리턴하도록 고침. 2017-11-05 21:33:33 +09:00
BJRambo
60a08982f5 Fix typo. 2017-11-05 14:15:25 +09:00
BJRambo
7f42031e2a Fix #940 fix the ability to pass logged_info when member_srl is empty. 2017-11-05 14:14:01 +09:00
Kijin Sung
c9026e44a1 Ensure that jQuery works properly even if there is some conflict 2017-10-30 01:31:23 +09:00
Kijin Sung
a29fa554c1 Fix compatibility with sketchbook skin after removal of XpressEditor
스케치북 스킨 등에서 XpressEditor 파일을 강제로 로딩하려고 할 경우
CKEditor의 동일 파일로 치환하도록 변경함

https://www.xetown.com/qna/778780

오류가 발생하는 사이트에서는 캐시파일 재생성이 필요할 수 있음
2017-10-29 01:43:22 +09:00
Kijin Sung
427f22a903 Fix password required in initial auth mail 2017-10-19 18:14:30 +09:00
Kijin Sung
1d0394c9b9 Fix duplicate query result 2017-10-19 18:13:42 +09:00
Kijin Sung
2db9034e17 Version 1.8.46 2017-10-19 14:32:26 +09:00
Kijin Sung
7b34a19574 XEVE-17-029
xpressengine/xe-core#2163
2017-10-19 13:57:30 +09:00
Kijin Sung
b1a4d322c7 Update admin check function in Debug::displayErrorScreen() 2017-10-15 23:42:38 +09:00
Kijin Sung
e707f9fa93 Close session before module update and reopen after update
모듈 업데이트에 오랜 시간이 걸리는 경우 세션이 잠겨버려서
다른 페이지까지 먹통이 되어 버리는 문제를 방지함
2017-10-13 18:22:05 +09:00
Kijin Sung
e47462fb32 Update member queries to add data to phone_number column 2017-10-13 17:51:56 +09:00
Kijin Sung
2c221019e4 Add 'phone_number' column to member table 2017-10-13 17:47:59 +09:00
Kijin Sung
91550131ac Allow a new column to be added at a specific position 2017-10-13 17:47:38 +09:00
Kijin Sung
e22551b224 Remove unnecessary alert after email address change
회원 이메일 주소 변경 후 불필요한 alert을 제거하고 회원정보 화면으로 바로 리다이렉트하여
변경 결과를 확인할 수 있도록 함
2017-10-13 17:16:58 +09:00
Kijin Sung
87d8ba41e3 Update procMemberAuthAccount
- 불필요한 중복 체크 제거
- 인증 성공시 alert을 사용하지 않고 인증 관련 안내 메시지를 XE_VALIDATOR_MESSAGE에 넣은 후 로그인 화면으로 리다이렉트
- XE_VALIDATOR_MESSAGE를 임의로 지정할 수 있도록 Context::setValidatorMessage() 함수 추가
2017-10-13 17:08:35 +09:00
Kijin Sung
dc0add9e8c Merge pull request #933 from kijin/pr/remove-pw-question
질문/답변으로 비번 찾는 기능 제거
2017-10-13 16:39:52 +09:00
Kijin Sung
38fa335bce Fix #927 use password input in admin member modify screen 2017-10-12 17:23:54 +09:00
Kijin Sung
1be8ee18a3 Fix syntax error when a module is installed in the wrong folder
GitHub에서 다운받은 모듈이 modulename-master 등 잘못된 폴더에 설치된 경우
하이픈 문자 때문에 files/site_design/design_0.php 파일의 문법이 잘못되어
사이트 전체가 먹통이 되어 버리는 문제가 있었음.
해당 캐시파일 작성시 문자열을 제대로 escape 처리하도록 수정함.
관리자가 생성한 폴더명 때문에 발생하는 문제이므로 보안이슈는 아님.
2017-10-12 17:15:53 +09:00
Kijin Sung
fcd8c2f211 Hide unhelpful messages in file upload box in mobile #928 2017-10-12 16:54:04 +09:00
Kijin Sung
d725355a1d Remove hashing of find account answer 2017-10-12 16:44:09 +09:00
Kijin Sung
f02b70afb5 Remove find account by question 2017-10-12 16:28:59 +09:00
Kijin Sung
d47aea0aba Disallow directly downloadable swf uploads in layout module 2017-10-12 16:00:34 +09:00
Kijin Sung
eb5bff0fb3 Import URI related changes from XE
xpressengine/xe-core f680eb4, 27c8bf9 by @bnu
2017-10-12 15:55:45 +09:00
bnu
fc1ba5b9ce fix #2133 비회원 게시물 작성폼에서 불필요한 공백으로 인한 틀어짐 고침 2017-10-12 14:45:53 +09:00
Kijin Sung
1f9f449fb0 Stop treating .swf as directly downloadable file
플래시 첨부파일을 본문에 직접 삽입하는 방식에서 다운로드만 가능한 방식에서 변경
file, importer, integration_search 등 모든 모듈에 일관성있게 적용

xpressengine/xe-core#2149
2017-10-12 00:29:22 +09:00
Kijin Sung
7948059c91 Fix JS error when a link has no target
xpressengine/xe-core#2162
2017-10-12 00:22:18 +09:00
Kijin Sung
f2bee9d9ff Add default fonts for Chinese and Japanese 2017-10-09 23:44:51 +09:00
conory
1069682b86 comment 중국어 수정
https://www.xetown.com/rxe_issue/757466
2017-10-07 16:13:00 +09:00
Kijin Sung
336b6ee144 Merge pull request #925 from kijin/pr/remove-xpresseditor
XpressEditor 제거 #895
2017-09-29 11:38:14 +09:00
Kijin Sung
c26ed92e66 Also hide dreditor from list of installed editor skins 2017-09-28 19:28:46 +09:00
Kijin Sung
824867259f Remove support for drEditor components #895 2017-09-28 18:13:30 +09:00
Kijin Sung
9d95873a77 Do not display xpresseditor as an option even if it is installed 2017-09-28 18:07:45 +09:00
Kijin Sung
e3b48d2604 Remove supporting files for xpresseditor 2017-09-28 18:01:58 +09:00
Kijin Sung
53031079ae Remove xpresseditor #895 2017-09-28 17:57:27 +09:00
Kijin Sung
263d0e6919 Merge pull request #924 from kijin/pr/scrap-message-folders
스크랩 기능을 폴더로 나누어 관리할 수 있도록 개선
2017-09-28 17:37:59 +09:00
Kijin Sung
69b868c77f Fix #919 make child comment secret if parent comment is secret 2017-09-28 17:29:47 +09:00
Kijin Sung
e65bbbf508 Clean up 2017-09-28 17:17:55 +09:00
Kijin Sung
3b31830998 Separate migrateMemberScrappedDocument() to its own method 2017-09-28 17:16:58 +09:00
Kijin Sung
924649beba Assign to default scrap folder when a document is scrapped 2017-09-28 14:38:49 +09:00
Kijin Sung
645902fc41 Prevent renaming or deleting the default scrap folder 2017-09-28 14:33:42 +09:00
Kijin Sung
25b6e71cf4 Implement scrap folders in simple_world skin, too 2017-09-28 14:20:04 +09:00
Kijin Sung
4a5385a635 Implement creating, renaming, and deleting scrap folders 2017-09-28 14:09:57 +09:00
Kijin Sung
cf0a5d019c Implement moving scrap to another folder 2017-09-28 13:28:43 +09:00
Kijin Sung
ed02a0f064 Assign default folder to all previous scraps 2017-09-28 12:19:02 +09:00
Kijin Sung
b11a6d82e9 Add folder for member_scrap 2017-09-28 11:59:20 +09:00
Kijin Sung
7b1f0b4ee2 Fix #916 show error earlier if attempting to add self as friend 2017-09-28 11:34:15 +09:00
Kijin Sung
cc0f2c5a62 Clean up language files for board module configuration 2017-09-27 20:35:26 +09:00
BJRambo
f75efa1b5d Improve anonymous nickname to generate random number per date and document.
https://www.xetown.com/qna/745244
2017-09-27 15:48:02 +09:00
Kijin Sung
5138a765d4 Fix fatal error when trying to send an email with no To: address
https://www.xetown.com/qna/743677
2017-09-24 20:28:38 +09:00
conory
12048bf4d0 RSS 등록일 기준으로 정렬 2017-09-21 13:56:16 +09:00
Kijin Sung
8c65f7c022 Fix #914 incorrect overwriting of integration search module config 2017-09-20 18:17:15 +09:00
Kijin Sung
c602c64878 Fix #917 remove misleading configuration in member module 2017-09-20 17:41:52 +09:00
Kijin Sung
7c91f3a5e7 Fix unit test for blocking common scripts 2017-09-20 17:32:24 +09:00
Kijin Sung
c686cb3229 Clean up duplicate blocking of common scripts 2017-09-20 17:32:11 +09:00
Kijin Sung
a722f279d9 Fix #922 failure to load scripts with the name 'jquery' in it 2017-09-20 17:16:48 +09:00
Min-Soo Kim
09e60ee3eb 필요할 때 라이믹스 (Rhymix PRN) - 멤버 모바일 스킨 (#885)
* 필요할 때 라이믹스 (Rhymix PRN)

# 필요할 때 라이믹스 (Rhymix PRN)

마더캣님과 작업하는 정식 라이믹스 회원 모듈 모바일 스킨
디자인: 마더캣
구현: 미솔

참고: 미솔의 개인적인 스케줄이 바빠서 오래 걸릴 예정. rhymix-designs 에서 작업하고 사용할만하게 되면 옮겨오는
식으로 작업중...

* Simple world 스킨 흔적 지우기.

* 프로필 이미지 등록, 삭제 UI

* 탈퇴 페이지에서 필수가 아닌 변수 삭제

https://github.com/rhymix/rhymix/pull/885 @bjrambo 님 의견 반영

* 회원 모듈 스킨, 커뮤니케이션 모듈 스킨

* 잘못 들어간 파일삭제

* 잘못 들어간 파일 삭제

* 깨진 이미지 복구

* 스킨 다듬기
2017-09-20 09:21:51 +09:00
conory
1b5818e73c content 위젯 출력시 item URL에 mid가 포함되도록 개선 2017-09-15 19:29:14 +09:00
conory
345b3bb184 getModulePartConfig() 에서 ArrayObject 으로 인해 객체 속성을 배열로 사용할 수 없었던 문제수정
문제점 예) https://www.xetown.com/contact/733548
2017-09-15 15:05:21 +09:00
Kijin Sung
8e1cb8b3a9 Fix returning null in insertComment()
This causes a fatal error if someone tries to call toBool() on the return value.
2017-09-14 00:14:01 +09:00
Kijin Sung
8e5c30bf63 Version 1.8.45 2017-09-13 00:44:02 +09:00
Kijin Sung
081578ef8e Clean up file module configuration 2017-09-13 00:30:28 +09:00
Kijin Sung
401d2c0179 Fix #747 misleading explanation in file module config 2017-09-13 00:25:00 +09:00
Kijin Sung
54cf5bb056 Add comment about base64_encode_urlsafe() 2017-09-12 23:56:20 +09:00
bnu
f867efacea fix #2146 XEVE-17-028 2017-09-12 23:38:43 +09:00
Kijin Sung
e33000efe0 Version 1.8.44 2017-09-12 14:45:12 +09:00
Kijin Sung
b98f55b633 Remove oembed addon (see #895) 2017-09-12 14:41:18 +09:00
Kijin Sung
ecb598dc15 Add option to specify a global header script per domain 2017-09-12 14:39:33 +09:00
Kijin Sung
1a6e84d9cc Add configuration for thumbnail target
- 썸네일 생성 대상 설정과 썸네일 생성 방식 설정을 분리하여
  외부이미지 썸네일 생성을 방지할 수 있는 옵션 추가
- 문서 모듈과 관리 모듈에 흩어져 있는 썸네일 관련 언어파일을
  관리 모듈로 합침
2017-09-12 14:20:05 +09:00
Kijin Sung
28d5f12cf1 Fix #892 deleted documents and inconsistent counts in declared list 2017-09-12 13:55:42 +09:00
Kijin Sung
905985cdfa Fix screenshot URL in sitemap
60afa98
2017-09-12 12:20:26 +09:00
Kijin Sung
9a09fdf820 Hey travis, why do you randomly fail to log into MySQL? 2017-09-11 21:17:19 +09:00
Kijin Sung
da4b995dc8 Fix spurious addition of 'undefined' to 'rel' attribute 2017-09-11 21:11:08 +09:00
Kijin Sung
d182a2c26c Fix all remaining skins making unnecessary use of window.open() 2017-09-11 21:10:40 +09:00
Kijin Sung
fdc4610bfb Perform account recovery over POST, not GET 2017-09-11 20:52:33 +09:00
Kijin Sung
7145d38822 Implement remainder of tabnapping protection from XE 1.8.44 2017-09-11 20:48:41 +09:00
Kijin Sung
c91feddbf0 Redirect to GET if integration search is called with POST 2017-09-11 19:57:51 +09:00
Kijin Sung
d17eaf63a0 Preserve some commonly used POST variables
091199bc
2017-09-11 19:49:15 +09:00
Kijin Sung
c1d63ce38f Fix intermittent error with Travis CI 2017-09-11 19:30:56 +09:00
Kijin Sung
adcfb0c24b Flush privileges in Travis CI 2017-09-11 18:25:56 +09:00
bnu
7721a64dc9 fix #2139 XEVE-17-026
- 제보 및 패치 제공 : @kijin
2017-09-11 18:22:07 +09:00
bnu
3ee3d63cb7 fix #2142 onclick이 사용된 새 창 열기를 target 속성으로 변경
- 통합검색 모듈 misol_town 스킨도 마찬가지로 수정
2017-09-11 18:21:16 +09:00
Kijin Sung
1bf96e646e Add Blankshield.js and URI.js 2017-09-11 18:04:46 +09:00
Kijin Sung
1042479d5b Allow connection to Memcached and Redis via unix socket 2017-09-11 17:33:19 +09:00
Kijin Sung
363f2feeac Fix infinite attempt to migrate member agreement format 2017-09-11 15:31:44 +09:00
Kijin Sung
e9daae400e Fix incorrect display of postcode on document edit screen 2017-09-11 14:48:07 +09:00
conory
1d8d685fc1 의도에 맞도록 getRegdateGM(), getUpdateGM() 개선
RSS Feed의 날짜 표시를 GMT+0으로 변경
2017-09-06 23:38:42 +09:00
CONORY
d599f1e4e9 Merge pull request #906 from conory/pr/rss
RSS 모듈 재정비
2017-09-06 11:15:54 +09:00
conory
b667808d95 Feed 유효성 통과!
https://validator.w3.org/feed/
2017-09-05 10:18:26 +09:00
Kijin Sung
25dbe2c87b Disable xdebug extension in Travis CI 2017-09-04 14:11:48 +09:00
Kijin Sung
e734caf7b3 Fix unit tests to accommodate change to trusty in Travis CI 2017-09-04 14:04:41 +09:00
conory
22b16ecc73 모듈 설정 부분을 효율적으로 개선
서드파티에서 getModulePartConfig() 사용시 Creating default object from empty value 문제가 발생되지 않도록 수정
2017-09-02 21:52:52 +09:00
conory
2440058557 RSS 모듈 재정비 2017-09-02 21:42:24 +09:00
bnu
429acbae11 fix #2024 제거된 모듈의 즐겨찾기를 삭제할 수 없는 문제 고침 2017-09-01 15:43:47 +09:00
Kijin Sung
cc21af669f Fix incorrect URL conversion in image_link component 2017-08-28 19:48:47 +09:00
Kijin Sung
6aebe472e2 Remove addons no longer used in XE 1.9
- Remove mobile and openid_delegation_id
- Keep blogapi for now
2017-08-24 14:27:13 +09:00
BJRambo
0871b247c1 Merge pull request #901 from bjrambo/pr/updateLogExtraVars
게시글 수정내역에서 확장변수를 정상적으로 표시하도록 개선.
2017-08-24 14:19:19 +09:00
BJRambo
2cbe9b691f Display to extra_vars html in update log viewer 2017-08-24 08:10:41 +09:00
BJRambo
f033e4e36f Fix comment Context::set parameter type. 2017-08-24 08:08:46 +09:00
Kijin Sung
9b4a61ce58 Fix incorrect getUrl() in default message skin
xpressengine/xe-core#2134
2017-08-23 11:45:56 +09:00
BJRambo
3a91aa61c2 Merge pull request #889 from bjrambo/pr/notify-mention
알림센터 코드 개선 작업
2017-08-20 09:06:57 +09:00
BJRambo
ad2beed710 Fix display notify menu depends on user notify setting 2017-08-19 17:18:03 +09:00
BJRambo
063e22152d Fix typo to newline in en.php. 2017-08-19 17:07:07 +09:00
BJRambo
c1d48b9912 Add to default user_notify_setting. 2017-08-19 17:03:19 +09:00
BJRambo
6b11100822 Add option to user notify setting. 2017-08-19 16:55:02 +09:00
BJRambo
76f3df792f Do not double-check the member serial. 2017-08-19 15:35:21 +09:00
BJRambo
d680ea9529 Fix typo in admin comment notify. 2017-08-19 15:31:53 +09:00
conory
03510af211 7d222acdfa 보완
목록 권한뿐만 아니라 읽기 권한도 체크할 수 있도록 추가
다른 서드파티 게시판 모듈의 목록, 읽기 권한도 체크할 수 있도록 개선
기타 코드 정리
2017-08-19 11:44:23 +09:00
conory
f040534559 4eae6ac04e 보완
잘못된 변수 지정으로 인해 관리자 회원정보수정 페이지에서 닉네임,생일 등의 값이 표시되지 않았던 문제 수정
답변 값을 삭제할 수 없었던 문제 수정
답변이 저장되어 있을 경우 '****'으로 표시하여 답변이 저장되어 있음을 알 수 있도록 개선
불필요한 코드 제거 및 코드 정리
2017-08-19 10:44:34 +09:00
BJRambo
5c7b480501 Delete unuse custom code. 2017-08-19 09:52:38 +09:00
BJRambo
1b4caf710d Fix check login and execute trigger. 2017-08-19 07:11:38 +09:00
BJRambo
c5afdebd85 Delete unused parameter 2017-08-17 18:29:36 +09:00
BJRambo
3756acac59 Delete unnecessary comment 2017-08-17 18:21:32 +09:00
BJRambo
a771266443 Add to comment voted notify feature. 2017-08-17 18:17:58 +09:00
BJRambo
4409c2481a Ver 1.8.43 2017-08-17 16:55:35 +09:00
BJRambo
ee0ac2b573 Fix Context::get return comment 2017-08-17 16:55:21 +09:00
BJRambo
42ba503bea Change the call location of getSmsHandler and improbe member login check. 2017-08-17 16:42:50 +09:00
BJRambo
763052eb58 Fix call worning method name in dispNcenterliteUserConfig. 2017-08-17 11:59:47 +09:00
BJRambo
dcb7b0b321 Intuitive change the name. 2017-08-17 09:33:39 +09:00
BJRambo
f981e2cd29 Mobile code cleanup 2017-08-17 09:08:33 +09:00
BJRambo
208761b866 Improbe not to initialize return url in procNcenterliteUserConfig 2017-08-17 09:07:11 +09:00
BJRambo
589e196230 Create a method to send a montions. 2017-08-17 09:00:11 +09:00
Kijin Sung
c714c3629a Fix #879 align multimedia search results to the left 2017-08-16 23:20:08 +09:00
Kijin Sung
73c09ce876 Fix handling of external CSS/JS URLs with query strings
xpressengine/xe-core#2114
2017-08-16 23:05:45 +09:00
Kijin Sung
224410c857 Fix incorrectly merged file 2017-08-16 22:52:56 +09:00
bnu
ac953cc216 특정 입력 값에 대한 escape 처리를 스킨 출력 시 적용되지 않는 문제 고침
- @kijin 님께서 알려주셨습니다
2017-08-16 22:41:38 +09:00
bnu
6679dbf181 #2129 모듈 업데이트 기록 및 확인 기능 추가
- moduleModel::needUpdate()
- moduleController::insertUpdatedLog()
2017-08-16 22:38:49 +09:00
bnu
4eae6ac04e - 저장된 답변 내용의 암호화 적용
- 기존에 입력된 유지되며, 새로 입력/수정되는 항목에만 적용 함
2017-08-16 22:33:59 +09:00
bnu
b8aff16cff fix #2111 document 모듈의 Query ID가 잘못 지정된 문제 고침 2017-08-16 22:27:08 +09:00
conory
ffdb924b7a '권리자만' 모듈 권한 타입 체크 코드 추가
319736deb6
2017-08-11 16:50:03 +09:00
bnu
7d222acdfa #2126 문서 스크랩 기능에서 게시판의 목록 보기 권한과 상담 기능 사용 시 권한 확인 2017-08-11 11:19:55 +09:00
bnu
3b557978e9 #2127 에디터 컴포넌트에 관련한 보안 문제 고침 2017-08-11 11:17:39 +09:00
BJRambo
d0d5e81e08 Merge pull request #884 from bjrambo/pr/spamfilter
Fix #775 스팸필터에서 오류내역으로 스팸키워드노출 여부를 설정
2017-08-09 10:41:05 +09:00
BJRambo
3f307da258 Delete display keyword select setting. 2017-08-08 18:43:24 +09:00
Kijin Sung
744827518d Fix Reply-To for Woorimail driver 2017-08-07 23:01:29 +09:00
BJRambo
ced76f7e50 Fix #775 스팸필터에서 오류내역으로 스팸키워드노출 여부를 설정 2017-08-04 18:25:37 +09:00
conory
04ab022864 content 위젯에서 휴지통으로 이동된 문서의 댓글, 비밀댓글이 표시되는 문제 수정 2017-08-04 14:49:35 +09:00
BJRambo
b37ffc27bb Merge pull request #883 from bjrambo/pr/ncenterlite-notuse
잠금화면일때 알림센터에서 일반회원의 알림이 노출되는 문제 고침.
2017-07-31 23:51:05 +09:00
BJRambo
f2dd50f37e 조건문을 Context::isLocked()으로 검사 2017-07-31 23:42:47 +09:00
BJRambo
ef7863d7c3 Merge branch 'develop' of github.com:rhymix/rhymix into pr/ncenterlite-notuse 2017-07-31 23:36:11 +09:00
Kijin Sung
118b209042 Add Context::isLocked() to detect site lock easily 2017-07-31 23:33:25 +09:00
BJRambo
cf5def3ed3 잠금 아이피도 함께 검사한다음 잠금아이피에 들어가있찌 않은경우에 리턴하도록 개선 2017-07-31 23:09:27 +09:00
BJRambo
dbaada29a6 리턴방식 통일 및 잠금시 일반회원이 알림센터를 확인할 수 없도록 고침 2017-07-31 22:58:29 +09:00
Kijin Sung
a3b557dcbc Revert "Fix #881 disable display.before triggers if site is locked and visitor is not admin"
This reverts commit 44be0468ab.
2017-07-31 15:57:53 +09:00
Kijin Sung
44be0468ab Fix #881 disable display.before triggers if site is locked and visitor is not admin 2017-07-23 22:21:28 +09:00
conory
468b1cc00f XML 응답 처리 문제 수정
rss 요청시 Content-Type: text/xml 헤더로 응답할 수 없었던 문제 수정
2017-07-22 21:32:16 +09:00
Kijin Sung
4e1ee79da2 Update README.md to link installation requirements to external manual 2017-07-22 20:34:37 +09:00
Kijin Sung
f953a53c09 Update CONTRIBUTING.md 2017-07-22 20:32:04 +09:00
conory
c15ddc5d5c nl2br 컨버터 if 추가 2017-07-19 23:08:50 +09:00
conory
686032df29 <p><br> 외의 태그만 사용되었을 경우 줄바꿈 처리가 엉망으로 되는 문제 수정 2017-07-19 22:53:29 +09:00
conory
26d5323e5b file_upload 언어 불러오기 수정 2017-07-16 21:37:41 +09:00
CONORY
938d81b685 Merge pull request #873 from conory/pr/nohtml
no html 에디터 위한 설정 추가
2017-07-16 17:56:36 +09:00
conory
aecb165532 로직 정리 2017-07-16 17:12:19 +09:00
conory
0437b3797a text 컨버터에 trim 공백 정리 과정 추가 2017-07-16 00:15:04 +09:00
conory
827be8a286 회원 서명 text 소급 적용시 여러줄이 생성되는 문제 수정 2017-07-15 23:32:35 +09:00
conory
56d62a816f textarea 에디터 미리보기에서 오류가 발생되는 문제 수정 2017-07-15 21:10:04 +09:00
conory
77418672bb 단일 컨버터로 처리 2017-07-15 10:52:40 +09:00
conory
4ed0ce5568 textarea 에디터에서 컨버터 사용으로 이제는 더 이상 필요 없게 되버린 부분 제거 2017-07-14 21:27:54 +09:00
conory
66e276c969 컨버터 이름 소문자로 통일 2017-07-14 21:22:12 +09:00
conory
35646700fe converter() 로 변경 및 개선 2017-07-14 16:17:26 +09:00
conory
146975f277 Merge branch 'develop' of https://github.com/rhymix/rhymix into pr/nohtml
# Conflicts:
#	modules/module/module.model.php
2017-07-13 22:48:02 +09:00
conory
0e0bc311c9 에디터 스킨단에서 converter를 지정할 수 있도록 추가 2017-07-13 22:37:15 +09:00
conory
6e9e9e9171 회원 서명에도 convertHTML() 적용 2017-07-13 18:25:06 +09:00
conory
4ccbd62b67 마크다운 에디터를 위한 추가 2017-07-13 17:56:52 +09:00
conory
c72e2ad49f 에디터 미리보기 개선 2017-07-13 15:59:00 +09:00
conory
9204353a15 에디터 컬러셋 act 퍼미션 변경
모듈 관리자가 에디터를 변경할 수 없었던 문제 수정
2017-07-13 13:06:30 +09:00
conory
a8e0acc6cf 에디터 기본 설정에 '자동저장 사용, HTML 허용' 설정 추가 2017-07-13 12:53:37 +09:00
conory
820c725d69 convertHTML() 로 변경 2017-07-13 11:15:12 +09:00
conory
da0ad3bd39 에디터 모듈에 HTML 허용 설정 추가
회원 모듈에도 no html 서명을 위한 옵션 추가
2017-07-13 00:46:28 +09:00
Kijin Sung
231a5a5d4c Fix incorrect encoding of HTML content in RSS feeds 2017-07-11 17:09:07 +09:00
Kijin Sung
aa7dc75f56 Add getContentPlainText() and fix improper escaping in getContentText() 2017-07-11 17:08:48 +09:00
Kijin Sung
8998c752a5 Fix unnecessary use of uninitialized variables 2017-07-11 16:50:54 +09:00
Kijin Sung
094f1bf0d1 Fix #872 remove weird characters from tags 2017-07-11 16:31:07 +09:00
BJRambo
4bc0a14dd1 rhymix 는 site_srl 이 항상 0이므로 불필요하게 module_info를 가져올 필요가 없음 2017-07-11 12:15:08 +09:00
Kijin Sung
f7915f8204 Fix #872 remove CDATA from RSS/Atom feeds 2017-07-10 22:35:23 +09:00
conory
4904ca5155 회원 모듈의 서명, 가입 약관 에디터 개선 2017-07-10 22:14:54 +09:00
BJRambo
7a35c60f40 알림센터에서 $obj->disable_triggers 설정 추가
게시글 등록시 여러글을 한꺼번에 입력해주는 모듈을 이용할 경우 해당 모듈에서 작동할때 불필요하게 트리거를 거쳐 작업이 많이 이루어지게 됩니다. 알림센터에서 글작성 트리거를 실행하지 않고 싶다면 다음과 같이 추가하면 됩니다.

$args->disable_triggers = array('ncenterlite' => true);

위의 코드를 이용해서 알림센터 모듈의 경우 글작성 트리거를 실행하지 않도록 할 수 있습니다.
2017-07-09 12:09:07 +09:00
Kijin Sung
1f3bf62c34 Fix mobile editor in default skins
게시판별 에디터 설정이 아닌 에디터 모듈의 기본 설정이 적용되는 문제 수정
2017-07-08 23:51:52 +09:00
Kijin Sung
e18857532d Enable word-wrap in the email subject and SMS content fields of advanced mailer logs 2017-07-08 21:44:15 +09:00
Kijin Sung
8289a4b925 Do not use output buffering if invoked on the CLI 2017-07-08 21:43:44 +09:00
BJRambo
47433841a8 Create default object in ModuleModel::loadSkinInfo 2017-07-07 19:07:42 +09:00
Kijin Sung
701a6c88d8 Add triggers after updateMemberEmailAddress 2017-07-07 17:40:21 +09:00
Kijin Sung
071424e05d Add triggers before and after procMemberAuthAccount 2017-07-07 01:02:59 +09:00
Kijin Sung
e51836c0d9 Convert all relative src attributes, not just images 2017-07-05 17:32:11 +09:00
BJRambo
9e78e9057f module_srl가 숫자값이 아닐경우에도 리턴하도록 개선 2017-07-05 14:34:24 +09:00
BJRambo
7245e96456 Merge pull request #869 from bjrambo/pr/moduleinfo
module 시리얼 넘버가 누락되면 모든 모듈을 가져옴.
2017-07-05 14:17:39 +09:00
BJRambo
9e82a173a9 Module시리얼 넘버가 누락되면 모든모듈의 정보를 가져오는 문제
getModuleInfoByModuleSrl 에서 module_srl 넘버가 누락이되면 모든모둘의 데이터를 가져오게 됩니다.
그걸 모두 쿼리하고 그걸 모두 캐시를 하는경우가 발생되더라구요.

혹시 이게 사용되는 부분에서 하나의 데이터만 넘겨주는 것이 맞다면 아무래도 이렇게 처리되는것이 맞지 않을까요?
2017-07-05 13:55:22 +09:00
Kijin Sung
280c94c9bd Improve file upload dialog #800
- 파일 첨부 버튼을 "사진 및 파일 첨부"로 변경 #800
- 파일 첨부 상자를 CKEditor 기본 스킨과 같은 색으로 변경
- 파일 첨부 상자의 border-radius를 제거하여 CKEditor와 통일성 유지
2017-07-05 12:33:56 +09:00
Kijin Sung
6a9c82284d Fix #865 set height of CKEditor container more intelligently 2017-07-05 12:21:52 +09:00
Kijin Sung
aed5c0fc6a Fix CKEditor extraPlugins and removePlugins support 2017-07-05 12:11:51 +09:00
Kijin Sung
e1846a4b6d Use api_key and api_secret settings for Amazon SES mail driver 2017-07-04 22:17:33 +09:00
Kijin Sung
e6d7257c11 Support more types of configuration in mail and SMS drivers 2017-07-04 22:10:48 +09:00
Kijin Sung
917b56b07e Fix #867 fallback to 'default' skin instead of default skin 2017-07-04 22:03:58 +09:00
Kijin Sung
53ca1a7b4c Fix additional_mobile_css not being applied 2017-07-04 17:52:08 +09:00
Kijin Sung
99d8383a37 Fix #866 content encoding error when saving widget page content 2017-07-04 17:45:36 +09:00
Kijin Sung
55af3f252e Fix signature editor skin and colorset not being applied 2017-07-03 13:57:04 +09:00
Kijin Sung
96738bd97d Clear extravar cache if document is deleted 2017-07-03 13:06:24 +09:00
Kijin Sung
1dcac98662 Clear local document cache if document is deleted 2017-07-03 10:41:08 +09:00
Kijin Sung
5ae15f4b66 Remove _rx_ajax_compat and _rx_csrf_token from request vars
JSON/XMLRPC 호환성 확보와 CSRF 공격 방지를 위해 사용되는 이 변수들이
Context::getRequestVars()에 포함되어 불필요하게 여기저기 저장되거나
URL에 포함되어 나오는 문제를 방지합니다.
2017-07-02 21:46:50 +09:00
Kijin Sung
107765a19d Fix #864 auto creation of duplicate layouts 2017-07-02 11:26:01 +09:00
Kijin Sung
20177f9f41 Use strict mode in xml_handler.js 2017-07-02 00:53:06 +09:00
Kijin Sung
c96d586827 Fix scripts where broken jQuery might cause issues
서드파티 자료에서 jQuery의 $를 덮어써 버릴 경우 발생할 수 있는 문제를
미리 차단하기 위해 다소 보수적으로 코딩함
2017-07-02 00:48:52 +09:00
Kijin Sung
21072195c0 Prevent overwriting jQuery and other common scripts
- Block third-party programs trying to load their own version of jQuery
- Block obsolete scripts such as xe.css and xe.js
- Block minified versions of the above, too
- Increase blocking index threshold from 1,500,000 to 1,500,000,000
- Add unit tests for script blocking
2017-07-02 00:36:19 +09:00
Kijin Sung
99cc64163f Merge pull request #863 from kijin/pr/responsive-skin
PC용 스킨이나 레이아웃을 모바일에서도 선택할 수 있도록 개선
2017-07-02 00:06:21 +09:00
Kijin Sung
02d73f3905 Fix incorrect fallback to site default skin 2017-07-01 21:52:36 +09:00
Kijin Sung
7357e02474 Fix page module configuration screen 2017-07-01 21:16:32 +09:00
Kijin Sung
15b4782d53 Include PC layouts in mobile layout list 2017-07-01 21:13:33 +09:00
Kijin Sung
2cd6140a89 Also allow selecting a PC layout for mobile view 2017-07-01 21:03:10 +09:00
Kijin Sung
27e2106c96 Use PC skin if mobile skin name is /USE_RESPONSIVE/ 2017-07-01 20:25:59 +09:00
Kijin Sung
7904304dc3 Support /USE_RESPONSIVE/ as a valid mobile skin option 2017-07-01 20:25:41 +09:00
Kijin Sung
dae2e9c2d8 Add option to use PC skin as mobile skin, too 2017-07-01 20:25:10 +09:00
Kijin Sung
3c718bd3ab Fix handling of file upload grant and other settings in editor 2017-07-01 15:39:56 +09:00
Kijin Sung
9767b0ee7f Fix permissions on common/js, especially CKEditor 2017-06-30 16:16:04 +09:00
Kijin Sung
eece4e9704 Update CKEditor to version 4.7.1 2017-06-30 16:13:11 +09:00
Kijin Sung
515aa6eb1b Merge pull request #862 from kijin/pr/korea-ip-ranges-20170630
국내 IP 대역 정보를 2017/06/30 기준으로 업데이트
2017-06-30 00:29:31 +09:00
Kijin Sung
ecb9c3e720 Merge pull request #861 from kijin/pr/composer-update
Composer 라이브러리 업데이트
2017-06-30 00:28:42 +09:00
Kijin Sung
0a9d91967d Update Korea IP range data to 2017/06/30 2017-06-30 00:09:11 +09:00
Kijin Sung
464325c6f6 Update Markdown formatter to support footnotes and hard wraps natively 2017-06-29 23:58:20 +09:00
Kijin Sung
cbd324c35b Update composer dependencies 2017-06-29 23:39:23 +09:00
Kijin Sung
49cc39e507 Merge pull request #860 from kijin/pr/autohtml
모바일에서 댓글 작성 또는 수정시 HTML 태그가 escape되는 문제 수정
2017-06-29 20:11:39 +09:00
Kijin Sung
8c752b9baf Add more unit tests for is_html_content() 2017-06-29 19:54:33 +09:00
Kijin Sung
b8cd244836 Fix incorrect reporting of maximum allowed filesize 2017-06-29 19:51:00 +09:00
Kijin Sung
db8aa6fc2d Always treat the textarea skin as producing HTML content, because it automatically generates HTML 2017-06-29 19:43:19 +09:00
Kijin Sung
2533db414b Always treat CKEditor as producing HTML content 2017-06-29 19:42:52 +09:00
Kijin Sung
24ab7dba9e Fix erroneous identification of nohtml config 2017-06-29 19:39:18 +09:00
Kijin Sung
1d2368f105 Do not allow HTML content if editor config says nohtml 2017-06-29 19:23:39 +09:00
Kijin Sung
67e02824e3 Use is_html_content() in document and comment modules 2017-06-29 19:08:53 +09:00
Kijin Sung
2a023f0854 Also use the <span> tag to determine whether an editor was used 2017-06-29 18:53:46 +09:00
Kijin Sung
3c772bf1cf Separate <p> tests from <br> tests 2017-06-29 18:44:52 +09:00
Kijin Sung
804533222c Add is_html_content() function to detect whether a string is HTML 2017-06-29 18:25:36 +09:00
Kijin Sung
61930d5129 Use new Mail class in communication and ncenterlite modules for all notifications 2017-06-29 17:46:06 +09:00
Kijin Sung
c891415105 Use new Mail class in board and comment modules for all notifications 2017-06-29 17:45:44 +09:00
Kijin Sung
0920172c1e Fix inconsistent assignment of sender address in member emails 2017-06-29 17:26:07 +09:00
Kijin Sung
986f532ba5 Fix mail error messages being displayed as 'Array' only 2017-06-29 17:09:55 +09:00
Kijin Sung
da75c078cc Fix #857 use input type=password for sender key configuration 2017-06-28 16:35:22 +09:00
Kijin Sung
2ac65beaa8 Disable autoplay of multimedia thumbnail #677 #843 2017-06-28 16:32:01 +09:00
Kijin Sung
a9dba51f79 Fix #858 allow negative margins for widget 2017-06-28 15:56:02 +09:00
Kijin Sung
e4d4b42869 Update version to 1.8.42 2017-06-27 20:18:00 +09:00
Kijin Sung
0432e20dfc Remove 'set as homepage' link from menu configuration screen 2017-06-27 20:08:08 +09:00
Kijin Sung
af11056fae Merge pull request #855 from kijin/pr/ckeditor-4.7
CKEditor 4.7 버전으로 업데이트
2017-06-27 19:00:31 +09:00
Kijin Sung
399bebd5c9 Implement option to specify additional plugins for CKEditor 2017-06-27 18:37:55 +09:00
Kijin Sung
0bb8945453 Change the default for comment editor to show the toolbar 2017-06-27 18:22:47 +09:00
Kijin Sung
d4f034606c Move font preview below the font selection 2017-06-27 18:21:06 +09:00
Kijin Sung
63160bf5bf Implement simple toolbar option for CKEditor 2017-06-27 18:16:12 +09:00
Kijin Sung
4adf223524 Implement control of whether to hide the editor toolbar 2017-06-27 18:04:26 +09:00
Kijin Sung
0d257b6b67 Respect PC and mobile editor height settings in CKEditor and textarea 2017-06-27 17:42:28 +09:00
Kijin Sung
fcef0427e6 Enable the editor in all default mobile skins 2017-06-27 17:41:46 +09:00
Kijin Sung
2562dee8e9 Eliminate unnecessary duplication of config values (Part 2) 2017-06-27 17:28:21 +09:00
Kijin Sung
2d90ea38e9 Eliminate unnecessary duplication of config values 2017-06-27 17:15:54 +09:00
Kijin Sung
53ea3d4a31 Eliminate tedious shuffling of config values 2017-06-27 16:52:10 +09:00
Kijin Sung
8b9f6fb230 Add editor config for mobile height and additional CSS 2017-06-27 16:10:01 +09:00
Kijin Sung
f8cb162186 Replace Japanese preview text in editor config page 2017-06-27 15:45:26 +09:00
Kijin Sung
e262836d57 Fall back to default content style if the configured style does not exist 2017-06-27 15:30:10 +09:00
Kijin Sung
46ec31fc4b Fix #837 delete unnecessary editor content styles 2017-06-27 15:29:37 +09:00
Kijin Sung
f516b1f889 Fix incorrect display of comment editor colorset 2017-06-27 15:25:14 +09:00
Kijin Sung
9f652e422f Add 'textarea' editor skin for simple replacement 2017-06-27 15:20:09 +09:00
bnu
e91c2114ab fix #2110 다중 파일을 업로드 시 첨부한 파일의 목록을 잘못 처리하는 문제 고침
- `aaa[]`, `bbb[]` 폼 전송 시 `aaa[]`파일이 `bbb[]`에도 동일하게 업로드한 것처럼 잘못 처리하는 문제
2017-06-27 14:40:46 +09:00
bnu
aee7848706 setQuery() 테스트 수정 2017-06-27 14:32:35 +09:00
Kijin Sung
3754d465e9 Fix selection of wrong content style after initial install 2017-06-26 15:54:40 +09:00
bnu
4ed2597d1a fix #2108 CKEditor에서 비어있는 태그를 제거하는 기능으로 인해 일부 코드가 제거되는 문제 고침
- ins, i
2017-06-26 13:38:48 +09:00
bnu
4ca6af970e #2066 simpleGray 스킨의 댓글에서 p 태그에 적용된 display 스타일 제거 2017-06-26 13:37:34 +09:00
Kijin Sung
344a843206 Update CKEditor to 4.7.0 2017-06-26 13:36:10 +09:00
Kijin Sung
19952bb9dd Fix #852 English translation for message_box['N'] 2017-06-25 21:12:38 +09:00
Kijin Sung
c6e51cddc9 Fix fatal error when unable to connect to Woorimail server 2017-06-25 21:12:31 +09:00
Kijin Sung
c8c033de66 Fix fatal error when unable to connecto to reCAPTCHA server 2017-06-25 21:12:24 +09:00
conory
b2d9a43bc9 회원 모듈의 기능 설정시 '모듈 업데이트' 가 나오는 문제 수정
$config->agreement 도 같이 저장되는 것이 원인이였음
2017-06-24 21:54:23 +09:00
BJRambo
0fecc87141 모바일에서 읽지 않은 목록이 나타나지 않던 문제 고침 2017-06-24 18:27:56 +09:00
Kijin Sung
227e1c53d1 Fix no Reply-To header when using Woorimail paid service 2017-06-22 16:19:28 +09:00
BJRambo
1f605dd396 Merge pull request #854 from bjrambo/pr/document
회원의 익명글도 확인할 수 있도록 개선
2017-06-21 17:56:37 +09:00
BJRambo
a199536828 회원 게시글 가져오는 항목에서 로그인 검사 처리 간단하게 개선 2017-06-21 17:51:13 +09:00
Kijin Sung
9460f8ee7c 익명글 포함 검색 권한 체크를 documentAdminView에서 처리 2017-06-21 17:35:48 +09:00
BJRambo
79b9cc27ae 회원의 익명글도 확인할 수 있도록 개선 2017-06-21 16:58:33 +09:00
Kijin Sung
3245c4183f Remove HHVM from Travis CI test suite 2017-06-19 17:27:06 +09:00
BJRambo
84ccece609 Merge pull request #850 from bjrambo/pr/comunication-error
읽지않은 쪽지함에서 쪽지를 읽을 수 없는 문제 고침
2017-06-19 17:13:29 +09:00
BJRambo
f88b4ee99e Deleted debug code 2017-06-19 16:39:23 +09:00
BJRambo
c64f29767e Fixed Typo 2017-06-19 16:37:01 +09:00
BJRambo
0cdda975f9 읽지 않은 쪽지함을 'dispCommunicationMessages' 액션에서 처리하도록 개선 2017-06-19 16:33:23 +09:00
BJRambo
89881d38dd 읽지않은 쪽지함에서 쪽지를 읽을 수 없는 문제 고침 2017-06-19 16:04:39 +09:00
Kijin Sung
0399a50965 Fix outdated comment on security key 2017-06-12 15:40:49 +09:00
Kijin Sung
4ffecbb7ee Remove outdated condition 2017-06-12 15:40:06 +09:00
BJRambo
55ffe34ca5 비밀글 채크박스를 제거
비밀글은 이미 오른쪽 공개/비밀 선택하는 ratio 에서 처리하기 때문에 비밀글기능에 다시 채크를 할 필요가 없습니다.
2017-06-11 10:35:59 +09:00
Kijin Sung
395fa7c229 Revert "Fix #844 fill in default act if none is given in the URL"
This reverts commit d25cf782e9.
2017-06-10 09:38:48 +09:00
Kijin Sung
b584dc3a48 Prevent autoinstalling latest version of XE Core when trying to update a single package 2017-06-09 23:09:17 +09:00
Kijin Sung
ddda1cd79c Fix missing progress indicator in installer 2017-06-09 22:55:57 +09:00
Kijin Sung
d25cf782e9 Fix #844 fill in default act if none is given in the URL 2017-06-09 22:46:39 +09:00
Kijin Sung
224b2748a5 Fix #847 separate 'isvalid' parameter from other search options 2017-06-09 22:25:34 +09:00
Kijin Sung
3462778803 Fix #847 separate getFileList query from getFileListByTargetStatus 2017-06-09 22:24:27 +09:00
Kijin Sung
15bba27967 Fix #847 missing files in admin view 2017-06-09 22:19:35 +09:00
5860 changed files with 313443 additions and 259947 deletions

View file

@ -1,9 +1,23 @@
root = true
[*]
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = false
end_of_line = lf
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = tab
[*.md]
trim_trailing_whitespace = false
[*.py]
indent_style = space
indent_size = 4
[*.{json,yml,md}]
indent_style = space
indent_size = 2
[*.{jsx,tsx,svelte,vue}]
indent_style = space
indent_size = 2

6
.gitattributes vendored
View file

@ -1,6 +1,6 @@
.gitattributes export-ignore
.github export-ignore
.gitignore export-ignore
/tools/ export-ignore
codeception.dist.yml export-ignore
/tests/ export-ignore
Gruntfile.js export-ignore
.travis.yml export-ignore
/common/vendor/bin/ export-ignore

35
.github/workflows/ci.yml vendored Normal file
View file

@ -0,0 +1,35 @@
name: PHP Lint & Codeception
on: [ push, pull_request ]
jobs:
build:
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
php: [ '7.4', '8.0', '8.1', '8.2', '8.3', '8.4', '8.5' ]
name: PHP ${{ matrix.php }}
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Install PHP
run: chmod +x .github/workflows/setup-php.sh && .github/workflows/setup-php.sh ${{ matrix.php }}
- name: Create test database
run: chmod +x .github/workflows/setup-mysql.sh && .github/workflows/setup-mysql.sh
- name: PHP Lint
run: if find . -name "*.php" ! -path "./common/vendor/*" -print0 | xargs -0 -n 1 -P 8 php -l | grep -v "No syntax errors detected"; then exit 1; fi
- name: Download codeception
run: wget https://res.rhymix.org/ci/php${{ matrix.php }}/codecept.phar
- name: Run PHP development server
run: php -S localhost:8000 &
- name: Build and run codeception
run: |
php codecept.phar build
php codecept.phar run --debug --fail-fast

14
.github/workflows/setup-mysql.sh vendored Normal file
View file

@ -0,0 +1,14 @@
#!/bin/bash
AUTH="-uroot -proot"
# Start MySQL
sudo systemctl start mysql.service
# Create default database
sudo mysql $AUTH -e "CREATE DATABASE rhymix CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci"
sudo mysql $AUTH -e "CREATE USER rhymix@localhost IDENTIFIED WITH mysql_native_password BY 'rhymix'"
sudo mysql $AUTH -e "GRANT ALL ON rhymix.* to rhymix@localhost; FLUSH PRIVILEGES"
# Check MySQL version
sudo mysql $AUTH -e "SELECT VERSION()"

39
.github/workflows/setup-php.sh vendored Normal file
View file

@ -0,0 +1,39 @@
#!/bin/bash
# Based on https://github.com/nanasess/setup-php
sudo add-apt-repository -y ppa:ondrej/php
# Install all required packages
sudo apt -y install \
php$1-apcu \
php$1-bcmath \
php$1-cli \
php$1-common \
php$1-curl \
php$1-gd \
php$1-intl \
php$1-mbstring \
php$1-mysql \
php$1-readline \
php$1-sqlite3 \
php$1-xml \
php$1-zip
# Adjust php.ini settings
sudo bash -c "echo 'register_argc_argv = On' >> /etc/php/$1/cli/php.ini"
sudo bash -c "echo 'opcache.enable = 1' >> /etc/php/$1/cli/conf.d/10-opcache.ini"
sudo bash -c "echo 'opcache.enable_cli = 1' >> /etc/php/$1/cli/conf.d/10-opcache.ini"
sudo bash -c "echo 'opcache.jit = tracing' >> /etc/php/$1/cli/conf.d/10-opcache.ini"
sudo bash -c "echo 'opcache.jit_buffer_size = 128M' >> /etc/php/$1/cli/conf.d/10-opcache.ini"
# Enable APCu
if [ -f "/etc/php/$1/cli/conf.d/20-apcu.ini" ]; then
sudo bash -c "echo 'apc.enable_cli = 1' >> /etc/php/$1/cli/conf.d/20-apcu.ini"
fi
# Disable xdebug
sudo phpdismod -v ALL -s ALL xdebug
# Set and check default PHP version
sudo update-alternatives --set php /usr/bin/php$1
php -v

3
.gitignore vendored
View file

@ -17,10 +17,11 @@ codeception.yml
/node_modules/
/bower_components/
composer.phar
codecept.phar
.idea
*.sublime-workspace
*.sublime-project
.codeintel
.vscode
error_log

View file

@ -2,9 +2,8 @@ RewriteEngine On
# block direct access to templates, XML schema files, config files, dotfiles, environment, etc.
RewriteCond %{REQUEST_URI} !/modules/editor/(skins|styles)/
RewriteCond %{REQUEST_URI} !/common/manual/
RewriteRule ^(addons|common/tpl|files/ruleset|(m\.)?layouts|modules|plugins|themes|widgets|widgetstyles)/.+\.(html|xml)$ - [L,F]
RewriteRule ^files/(attach|config|cache/store)/.+\.php$ - [L,F]
RewriteRule ^(addons|common/tpl|files/(faceOff|ruleset)|(m\.)?layouts|modules|plugins|themes|widgets|widgetstyles)/.+\.(html|xml|blade\.php)$ - [L,F]
RewriteRule ^files/(attach|config|cache)/.+\.(ph(p|t|ar)?[0-9]?|p?html?|cgi|pl|exe|[aj]spx?|inc|bak)$ - [L,F]
RewriteRule ^files/(env|member_extra_info/(new_message_flags|point))/ - [L,F]
RewriteRule ^(\.git|\.ht|\.travis|codeception\.|composer\.|Gruntfile\.js|package\.json|CONTRIBUTING|COPYRIGHT|LICENSE|README) - [L,F]
@ -14,27 +13,7 @@ RewriteRule ^(.+)/(addons|files|layouts|m\.layouts|modules|widgets|widgetstyles)
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.+)\.min\.(css|js)$ ./$1.$2 [L]
# rss, blogAPI
RewriteRule ^(rss|atom)$ ./index.php?module=rss&act=$1 [L]
RewriteRule ^([a-zA-Z0-9_]+)/(rss|atom|api)$ ./index.php?mid=$1&act=$2 [L]
# trackback
RewriteRule ^([0-9]+)/(.+)/trackback$ ./index.php?document_srl=$1&key=$2&act=trackback [L]
RewriteRule ^([a-zA-Z0-9_]+)/([0-9]+)/(.+)/trackback$ ./index.php?mid=$1&document_srl=$2&key=$3&act=trackback [L]
# document category
RewriteRule ^([a-zA-Z0-9_]+)/category/([0-9]+)$ ./index.php?mid=$1&category=$2 [L,QSA]
# document permanent link
RewriteRule ^([0-9]+)$ ./index.php?document_srl=$1 [L,QSA]
# mid link
# all other short URLs
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^admin/?$ ./index.php?module=admin [L,QSA]
RewriteRule ^([a-zA-Z0-9_]+)/?$ ./index.php?mid=$1 [L,QSA]
# mid + document link
RewriteRule ^([a-zA-Z0-9_]+)/([0-9]+)$ ./index.php?mid=$1&document_srl=$2 [L,QSA]
# mid + entry title
RewriteRule ^([a-zA-Z0-9_]+)/entry/(.+)$ ./index.php?mid=$1&entry=$2 [L,QSA]
RewriteRule . index.php [L]

View file

@ -1,24 +0,0 @@
language: php
php:
- 5.5
- 5.6
- 7.0
- 7.1
- hhvm
matrix:
allow_failures:
- php: hhvm
sudo: false
before_script:
- npm install grunt grunt-cli grunt-contrib-jshint grunt-contrib-csslint grunt-phplint --save-dev
- mysql -u root -e "CREATE DATABASE rhymix"
- mysql -u root -e "SET PASSWORD FOR 'travis'@'localhost' = PASSWORD('travis')"
- if [[ $TRAVIS_PHP_VERSION != "hhvm" ]]; then php -S localhost:8000 & fi
- wget http://codeception.com/releases/2.1.11/codecept.phar
script:
- php codecept.phar build
- if [[ $TRAVIS_PHP_VERSION == "hhvm" ]]; then php codecept.phar run -d --fail-fast --env travis --skip install; fi
- if [[ $TRAVIS_PHP_VERSION != "hhvm" ]]; then php codecept.phar run -d --fail-fast --env travis; fi
- grunt lint
notifications:
email: false

View file

@ -1,219 +1,7 @@
# 개발에 참여하고 싶으신 분들께 드리는 안내문
## 이슈 작성
이 파일의 내용은 공식 매뉴얼로 옮겨졌습니다.
- **구글에서 답을 찾을 수 있는지 먼저 확인해 주십시오.**
- 관련된 이슈가 이미 있는지 검색하고, 같은 내용이라면 댓글로 덧붙여 주십시오.
오래된 이슈라도 메일로 알림이 전달되므로 묻힐 염려가 없습니다.
- 무관한 이슈에 댓글을 달지 말아 주십시오. 엉뚱한 사람에게 메일 알림이 전달됩니다.
- 2가지 이상 서로 다른 문제가 있는 경우, 각각 이슈를 등록해 주십시오.
- 보안 취약점은 공개적으로 언급하지 말고 devops@rhymix.org로 알려 주시면 감사하겠습니다.
- **버그 신고 전 자신의 서버가 Rhymix의 실행 환경을 충족하는지 확인해 주십시오.**
- PHP 5.5 미만, EUC-KR 환경, 퍼미션 오류 등은 호스팅 업체에 문의하셔야 합니다.
- 자신의 서버 환경은 `phpinfo`를 사용하여 확인할 수 있습니다.
- **버그 신고에는 아래의 내용을 반드시 포함시켜 주십시오.**
- 실행 환경
- 호스팅 환경에 대한 간단한 설명 (예: ○○24 리눅스 웹호스팅)
- Rhymix 버전 (예: 1.8.15)
- PHP 버전 (예: 5.6.16)
- 브라우저 종류 및 버전 (예: IE 11)
- 에러가 발생하는 경우 에러 메시지 전체
- 화면상에 에러가 표시되거나 디자인이 깨져 보이는 경우, 해당 스크린샷
- 브라우저의 개발자도구(F12)에 에러가 표시되는 경우, 콘솔 및 네트워크 탭의 스크린샷
- 증상을 확인해 볼 수 있는 웹사이트 주소
- 내부망이나 로컬 개발환경 등 외부인의 접속이 원천적으로 불가능한 경우가 아니라면 반드시 주소를 남겨 주시기 바랍니다.
## 풀 리퀘스트(PR) 작성
- 자신의 저장소에서 별도의 브랜치를 만들어 작업하신 후, `develop` 브랜치로 풀 리퀘스트를 넣어주시면 됩니다.
- 예: 썸네일 관련 버그를 수정하는 경우 자신의 저장소에서 `fix/thumbnail` 브랜치를 만들어 작업하십시오.
작성 후에 수정할 것이 있으면 이 브랜치에서 계속 작업하고 커밋하시면 됩니다. PR 페이지에 자동으로 반영됩니다.
- 개발 진행 및 안정화에 따라 브랜치별 운영 정책이 변경될 수 있으니 유의하십시오.
- 아래의 코딩 규칙을 지키려고 노력해 주시기 바랍니다.
- **코딩 규칙에 맞지 않는 소스를 발견하더라도 PR의 주제와 관계없는 부분은 함부로 고치지 마세요!
코딩 규칙에 맞도록 소스를 수정하는 작업은 모두 별도의 PR로 처리하여야 합니다.**
- **단, PR을 검토하는 개발자들은 괄호의 위치와 같은 사소한 문제를 지적하느라고
실제 기능에 관심을 주지 못하는 오류를 범하지 않도록 노력해야 합니다.**
- PR의 제목은 커밋 메시지에 적용되는 규칙을 참고하되, 가능하면 한글로 작성해 주십시오.
- 유닛 테스트를 통과하지 못하거나, 통과하기 위해 테스트를 삭제할 경우 PR이 거부될 수 있습니다.
단, 테스트 자체에 문제가 있거나 테스트 내용을 변경해야 한다고 생각되는 경우 개발팀과 의논해 주십시오.
## 저작권 및 라이선스
- 모든 소스 코드의 저작권은 해당 작성자가 가집니다.
- 모든 소스 코드에는 GPL v2 또는 그 이후 버전의 라이선스가 적용됩니다.
- Rhymix 개발팀을 비롯한 전세계 어느 누구라도 어떤 목적으로든지 자유롭게 사용, 수정, 재배포할 수 있습니다.
- 타인에게 저작권이 있는 코드를 가져온 경우, 원본의 라이선스를 GPL로 전환할 수 있어야 합니다.
- 한 번 적용한 라이선스는 철회할 수 없습니다.
- **풀 리퀘스트를 작성하실 경우 위의 두 가지에 동의하시는 것으로 간주합니다.**
## 코딩 규칙
### 일반
PHP, HTML, XML, CSS, JS 등 모든 텍스트 파일의 문자셋은 BOM이 없는 UTF-8입니다.
줄바꿈 문자는 유닉스 방식(`LF`)을 따릅니다.
윈도우 메모장에서 편집한 파일은 위의 두 가지 규칙에 어긋납니다.
윈도우 사용자는 [Notepad++](https://notepad-plus-plus.org/) 등의 개발자용 에디터를 사용하여 편집하시기 바랍니다.
들여쓰기는 1개의 탭으로 합니다.
단, 탭 대신 공백을 사용하는 파일에서는 일관성 유지를 위해 4칸의 공백을 사용할 수 있습니다.
들여쓴 줄들 사이의 빈 줄도 들여씁니다. (에디터에서 후행 공백을 제거하지 않도록 설정하십시오.)
PHP 코드만으로 이루어진 파일은 맨 끝에 `?>` 태그를 사용하지 않습니다.
### 공백 및 줄바꿈 규칙
클래스 및 함수 선언과 `if`, `for`, `foreach`, `while` 등의 중괄호는 다음 줄에 씁니다.
class Foo
{ // RIGHT
public function bar() { // WRONG
}
}
조건문이나 순환문 내에 하나의 명령만 있는 경우에도 반드시 중괄호를 사용합니다.
그래야 나중에 명령이 추가될 경우 수정하기 편리합니다.
if (!$foo) return false; // WRONG
if (!$bar) // RIGHT
{
return true;
}
단, 클로져는 같은 줄에 중괄호를 쓸 수 있으며,
이 경우 중괄호 앞뒤에 한 칸씩 공백을 두어 클로져가 시작되고 끝나는 지점을 찾기 쉽도록 합니다.
닫는 중괄호와 그 뒤의 기호 사이에는 공백을 두지 않습니다.
$foo = function($bar) { return $bar + 1; }; // RIGHT
$foo = function($bar) { // RIGHT
return $bar + 1;
};
$foo = function($bar){return $bar + 1;}; // WRONG
자바스크립트에서는 거의 모든 함수가 클로져이며, 잘못 줄바꿈할 경우 세미콜론이 삽입될 수 있으므로
중괄호를 다음 줄에 쓰지 않아도 됩니다.
$("#foo").on("click", function() { // OK
if ($(this).val() === "bar") { // OK
$(this).val("baz");
}
});
함수 호출시 함수명과 괄호 사이, 괄호와 인자 사이에 공백을 두지 않습니다.
인자를 구분하는 쉼표는 뒤쪽에만 한 칸의 공백을 둡니다.
function foobar($baz, $param) // RIGHT
function foobar ( $baz , $param ) // WRONG
`if`, `for`, `foreach`, `while` 등의 키워드 뒤에는 한 칸의 공백을 둘 수 있으며,
`==`, `!=`, `>` 등의 연산자는 앞뒤에 한 칸씩 공백을 둡니다.
if ($foo === $bar) // RECOMMENDED
if($foo === $bar) // OK for XE Compatibility
if($foo==$bar){ // WRONG
여러 줄에 걸쳐 배열을 선언할 경우, 마지막 구성요소 뒤에 쉼표를 남깁니다.
그래야 나중에 구성요소를 추가할 때 편리합니다.
$animals = array(
'bear',
'cat',
'dog', // COMMA
);
단, 자바스크립트 및 JSON에서는 마지막 쉼표를 반드시 삭제해야 합니다.
쉼표를 남겨둘 경우 일부 브라우저에서 오류가 발생할 수 있기 때문입니다.
var animals = [
'bear',
'cat',
'dog' // NO COMMA
];
### 주석
주석은 관련 코드 윗줄에 써야 합니다. 조건문이나 루프의 경우에도 마찬가지입니다.
// If foo is bar, do something.
if ($foo->isBar())
{
// Note: this will do X, Y, and Z.
$foo->doSomething();
}
// Otherwise, do something else.
else
{
// TODO: Refactor this later.
$foo->doSomethingElse();
}
모든 클래스와 함수에는 `/**`으로 시작하는 PHPDoc 방식의 주석을 붙여야 합니다.
PHPDoc 주석 작성에 어려움이 있는 경우, 다른 클래스와 함수의 주석을 참고하십시오.
/**
* This is the Foo class.
*/
class Foo
{
/**
* Constructor.
*
* @param string $member_srl
*/
public function __construct($member_srl)
{
// 생략
}
/**
* Check if this Foo is bar.
*
* @return bool
*/
public function isBar()
{
return true;
}
}
불가피한 경우를 제외하면 주석은 영문으로 쓰는 것을 원칙으로 하며,
대문자로 시작하는 완전한 문장으로 이루어져야 합니다.
### 커밋 메시지
커밋 메시지는 가능하면 영문으로 작성하며, **현재형** 동사로 시작하는 **명령형** 문장 사용을 원칙으로 합니다.
Delete unnecessary condition // RIGHT
Fix #1234 // RIGHT
Deletes unnecessary condition // WRONG (불필요한 동사변화)
Fixed #1234 // WRONG (불필요한 과거형)
이 규칙에 맞추어 영문으로 커밋 메시지를 작성하기 어려운 경우, 한글로 작성해도 무방합니다.
한글 커밋 메시지는 **어디서** **무엇을** **어떻게** 했는지 간결하고 명확하고 격식있게 표현하며,
가능하면 현재형 동사로 마치도록 합니다.
크롬 최신 버전에서 스크립트 오류 해결 // RIGHT
Foo 클래스에 bar() 메소드 추가 // RIGHT
파일첨부 에러나는거 고쳤쩌염~^^ // WRONG (격식없는 표현)
함수 개선 // WRONG (두리뭉실한 표현)
### 기타
Rhymix의 기본 `error_reporting` 설정 하에서 어떤 에러도 발생하지 않도록 하는 것을 목표로 합니다.
문자열과 문자열, 정수와 정수를 비교할 때는 가능하면 `==` 대신 `===`을 사용합니다.
실제 자료형이 다를 가능성이 있는 경우 `intval()`, `strval()` 등의 함수와 함께 사용합니다.
PHP 5.4 이상에서 지원하는 간단한 배열 문법(`[1, 2, 3]`)을 사용할 수 있으나,
복잡한 구조의 배열을 선언할 때는 이 문법이 오히려 가독성을 해칠 수 있으니 주의하시기 바랍니다.
전역 상수를 참조할 때는 `\RX_CLIENT_IP`와 같이 `\`를 앞에 붙여서,
추후 다른 네임스페이스로 코드를 이동 또는 복사하더라도 문제가 생기지 않도록 합니다.
여기에서 규정하지 않은 내용은 [PSR-1](http://www.php-fig.org/psr/psr-1/)과
[PSR-2](http://www.php-fig.org/psr/psr-2/)를 따릅니다.
- [이슈 및 PR 작성 방법](https://rhymix.org/manual/contrib/github)
- [코딩 규칙](https://rhymix.org/manual/contrib/coding-standards)
- [GPL: 개발자, 디자이너, 사용자 등의 권리와 의무](https://rhymix.org/manual/contrib/license)

View file

@ -1,2 +0,0 @@
Copyright (c) Rhymix Developers and Contributors <devops@rhymix.org>
Copyright (c) NAVER <http://www.navercorp.com>

View file

@ -1,87 +0,0 @@
module.exports = function(grunt) {
"use strict";
grunt.file.defaultEncoding = 'utf8';
grunt.initConfig({
jshint: {
files: [
'Gruntfile.js',
'common/js/*.js',
'modules/admin/tpl/js/*.js',
'modules/board/tpl/js/*.js',
'modules/board/skins/*/*.js',
'modules/editor/tpl/js/*.js',
'modules/menu/tpl/js/*.js',
'modules/widget/tpl/js/*.js',
],
options : {
ignores : [
'**/jquery*.js',
'**/swfupload.js',
'**/**.min.js',
'**/*-packed.js',
'**/*.compressed.js',
'**/jquery-*.js',
'**/jquery.*.js',
'common/js/html5.js',
'common/js/x.js',
'common/js/xe.js',
'common/js/xml2json.js',
'common/js/modernizr.js',
'vendor/**',
'tests/**',
]
}
},
csslint: {
'common-css': {
options: {
import : 2,
'adjoining-classes' : false,
'box-model' : false,
'box-sizing' : false,
'font-sizes' : false,
'duplicate-background-images' : false,
'order-alphabetical' : false,
'ids' : false,
'important' : false,
'overqualified-elements' : false,
'qualified-headings' : false,
'star-property-hack' : false,
'underscore-property-hack' : false,
},
src: [
'common/css/*.css',
'!common/css/bootstrap.css',
'!common/css/bootstrap-responsive.css',
'!**/*.min.css',
'!vendor/**',
'!tests/**',
]
}
},
phplint: {
default : {
options: {
phpCmd: "php",
},
src: [
"**/*.php",
"!files/**",
"!tests/**",
"!tools/**",
"!common/libraries/**",
"!vendor/**",
"!tests/_output/**"
],
},
}
});
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-csslint');
grunt.loadNpmTasks('grunt-phplint');
grunt.registerTask('lint', ['jshint', 'csslint', 'phplint']);
};

View file

@ -1,10 +1,13 @@
[![Rhymix](./common/img/logo.png)](https://rhymix.org)
![PHP Lint & Codeception](https://github.com/rhymix/rhymix/workflows/PHP%20Lint%20&%20Codeception/badge.svg)
# 한국어
[![Rhymix](https://cloud.githubusercontent.com/assets/8565457/12881857/7c3e69d6-ce90-11e5-94dc-8a592cf9ab7d.png)](https://www.rhymix.org)
Rhymix(라이믹스)는 누구든지 쉽고 자유롭게 독립적인 홈페이지를 만들어
자신을 표현하고 커뮤니티를 키워나갈 수 있도록 돕기 위한 CMS(content management system)입니다.
[XpressEngine](https://www.xpressengine.com) 1.8 버전을 fork(가지치기)하여 진행하는 프로젝트로,
[XpressEngine](https://xe1.xpressengine.com) 1.8 버전을 fork(가지치기)하여 진행하는 프로젝트로,
누구나 무료로 사용할 수 있고 개발에 참여할 수도 있는 자유 소프트웨어(free software)입니다.
Rhymix는 "시를 짓다, 운을 맞추다"라는 의미의 "rhyme"과
@ -22,7 +25,7 @@ Rhymix는 개발자와 사용자가 서로의 권리와 책임을 존중하는
개발자 위주, 서비스 제공자 위주로 나아가는 현대의 IT 동향을 무차별적으로 받아들이기보다는
사용자의 주권과 열린 인터넷 환경을 보호하는 기술을 집중적으로 발굴하며,
우리나라 인터넷 커뮤니티의 성장을 이끌었던 90년대 제로보드와 2000년대 XE의 정신을 이어받아
2010년대 후반 현재 위기에 처한 오픈 웹을 지키고 회복시키는 일에 앞장서고자 합니다.
2020년대 현재 위기에 처한 오픈 웹을 지키고 회복시키는 일에 앞장서고자 합니다.
그러기 위해서는 다른 어떤 CMS보다도 일반 사용자를 위한 편리성이 가장 뛰어나야 합니다.
@ -33,37 +36,26 @@ Rhymix는 개발자와 사용자가 서로의 권리와 책임을 존중하는
### 설치 환경
Rhymix를 사용하려면 아래의 조건을 충족하는 웹호스팅이나 서버를 마련하셔야 합니다.
- PHP 5.5.9 이상 (PHP 7 권장)
- MySQL 5.0.7 이상 (MariaDB 권장)
- 필수 PHP 모듈
- curl
- gd
- iconv 또는 mbstring
- json
- mcrypt 또는 openssl
- simplexml
- php.ini에서 session.auto_start = Off로 설정되어 있어야 합니다.
- 설치 폴더 또는 files 폴더에 쓰기 권한이 주어져야 합니다.
Rhymix를 사용하려면 PHP 7.4 이상, MySQL 또는 MariaDB가 필요합니다.
자세한 설치 환경은 [매뉴얼](https://rhymix.org/manual/introduction/requirements)을 참고하십시오.
### 개발 참여
Rhymix는 개발자, 디자이너, 번역가 등의 도움과 일반 사용자들의 버그 신고를 환영합니다.
참여를 원하시는 분은 질서있고 효율적인 프로젝트 운영을 위해
[CONTRIBUTING.md](./CONTRIBUTING.md)를 먼저 읽어 주시기 바랍니다.
[이슈 및 PR 작성 방법](https://rhymix.org/manual/contrib/github)과
[코딩 규칙](https://rhymix.org/manual/contrib/coding-standards)을 먼저 읽어 주시기 바랍니다.
보안 취약점을 발견하셨다면 해커들에게 알려지기 전에 먼저 패치를 작성할 수 있도록
devops@rhymix.org로 알려 주시면 감사하겠습니다.
### 공식 홈페이지
- Rhymix : https://www.rhymix.org
- Rhymix : https://rhymix.org
### 커뮤니티
- XETOWN : https://www.xetown.com
- XETOWN : https://xetown.com
### 저작권 및 라이선스
@ -74,7 +66,7 @@ Rhymix는 [GNU GPL v2](http://korea.gnu.org/documents/copyleft/gpl.ko.html)
누구나 무료로 사용할 수 있고 개발에 참여할 수도 있습니다.
Rhymix는 [NAVER](https://www.navercorp.com/)가 일부 저작권을 가진
[XpressEngine](https://www.xpressengine.com)의 소스코드에 바탕을 두고 있습니다.
[XpressEngine](https://xe1.xpressengine.com)의 소스코드에 바탕을 두고 있습니다.
Rhymix 개발자들이 추가 및 변경한 부분의 저작권은 해당 개발자들에게 있습니다.
XpressEngine은 초창기에 GPL을 사용하다가 버전 1.4.0부터 LGPL로 전환했지만,
@ -90,11 +82,10 @@ Rhymix의 소스코드를 수정하거나 확장 기능을 직접 개발하여
이러한 소스코드는 모두 GPL 라이선스의 적용을 받습니다.
# English
[![Rhymix](https://cloud.githubusercontent.com/assets/8565457/12881857/7c3e69d6-ce90-11e5-94dc-8a592cf9ab7d.png)](https://www.rhymix.org)
Rhymix is a content management system (CMS) for anyone who wants to create independent homepages to express themselves and grow their communities easily and freely.
Rhymix is a content management system (CMS) for everyone who wants to create independent homepages to express themselves and build their communities easily and freely.
Rhymix is a project to fork [XpressEngine](https://www.xpressengine.com) version 1.8 and is free software that anyone can use for free and participate in.
Rhymix is a fork of [XpressEngine](https://xe1.xpressengine.com) version 1.8 and is free software that anyone can use for free and participate.
Rhymix is a combination of "rhyme" in the sense of "making a poem, adjusting the sound", and "remix" in the sense of "combining, changing".
Rhymix cheers everyone who freely creates and/or assembles new things in the Internet space by combining various software and contents.
@ -102,63 +93,53 @@ Rhymix cheers everyone who freely creates and/or assembles new things in the Int
### Development Direction
Rhymix developers want an Internet ecosystem where developers and users respect each other's rights and responsibilities,
a world where everyone can voice their voice without relying on a centralized SNS platform,
a world where everyone can speak their voice without relying on a centralized SNS platform,
a future where ordinary bloggers, students, the disabled and others as well as developers of startups can build a home in cyberspace and communicate with each other.
Rather than indiscriminately accepting modern IT trends that are centered on developers and service providers,
we focused on technologies that protect users' sovereignty and open Internet environment. Taking the spirit of ZeroBoard and XpressEngine, which led the growth of the Korean Internet communities in the 1990s and 2000s respectively, Rhymix wants to take the lead in recovering and restoring the open web in the crisis of late 2010s.
we focused on technologies that protect users' sovereignty and open Internet environment. Taking the spirit of ZeroBoard and XpressEngine, which led the growth of the Korean Internet communities in the 1990s and 2000s respectively, Rhymix wants to take the lead in recovering and restoring the open web in the crisis of the 2020s.
This requires the most convenience for the average user over any other CMS.
- CMS that is convenient enough for beginners to easily create the website with a few clicks
- CMS that is convenient enough to create the website easily, even for beginners, with a few clicks
- CMS that is actively using the latest technology, fast and secure
- CMS to help users and developers communicate well through community
- We try to ensure maximum compatibility with existing XpressEngine third-party materials such as add-ons, modules and widgets.
### Installation Environment
To use Rhymix, you must have a web hosting or server that meets the following requirements.
- PHP 5.5.9 or higher (PHP 7 recommended)
- MySQL 5.0.7 or higher (MariaDB recommended)
- Required PHP module
- curl
- gd
- iconv or mbstring
- json
- mcrypt or openssl
- simplexml
- In php.ini, session.auto_start = Off should be set.
- The installation folder or the files folder must have write permission.
Rhymix requires PHP 7.4 or higher, and MySQL or MariaDB.
Please see the [online manual](https://rhymix.org/manual/introduction/requirements) for more information on server requirements.
### Participation in Development
Rhymix welcomes developers, designers, translators, and bugs to the public.
If you would like to participate, please read [CONTRIBUTING.md](./CONTRIBUTING.md) first to ensure efficient and orderly project management.
If you would like to participate, please read [Issue and PR Submission Guide](https://rhymix.org/manual/contrib/github)
and [Coding Standards](https://rhymix.org/manual/contrib/coding-standards) first to ensure efficient and orderly project management.
If you have found a security vulnerability, please let us know at devops@rhymix.org so that we can create a patch before it is exploited.
If you have found a security vulnerability, please let us know at devops@rhymix.org so that we can make a patch before it is exploited.
### Official Website
- Rhymix : https://www.rhymix.org
- Rhymix : https://rhymix.org
### Community
- XETOWN (Korean) : https://www.xetown.com
- XETOWN (Korean) : https://xetown.com
### Copyright and License
Rhymix is a free software licensed under the [GNU GPL v2](http://korea.gnu.org/documents/copyleft/gpl.ko.html) or later.
Free software, also known as "open source" or "open", is a program that emphasizes the freedom and rights of developers and users, their participation and responsibilities, and is free to use and participate in development.
Rhymix is a free software licensed under the [GNU GPL v2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html) or later.
Free software is a program that emphasizes the rights and responsibilities of developers and users to participate or use in freedom.
Rhymix is based on the source code of [XpressEngine](https://www.xpressengine.com), which [NAVER](https://www.navercorp.com/) is partly copyrighted free software.
Rhymix is based on the source code of [XpressEngine](https://xe1.xpressengine.com) ([Github](https://github.com/xpressengine/xe-core/)), which is free software partly owned by [NAVER](https://www.navercorp.com/).
Rhymix developers have copyrights on the added and modified code.
XpressEngine had used the GPL in its early days and switched from version 1.4.0 to LGPL, but Rhymix has reverted its licenses to the GPL to further protect its rights and adhere to the spirit of free software.
XpressEngine has been licensed under the GPL in its early days and switched to LGPL from version 1.4.0, but Rhymix has reverted its licenses to the GPL for further protection of the rights and spirit of free software.
(License conversion is allowed in [LGPL v2.1 Section 3](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html).)
GPL is a license that is commonly adopted by global CMSs such as WordPress, Drupal, and Joomla, so the rights and obligations of users and developers are the same as those of CMS.
The GPL is commonly adopted by global CMSes such as WordPress, Drupal, and Joomla. The rights and obligations of users and developers of Rhymix are the same as those CMSes.
The use of Rhymix on homepage does not impose a duty on you to release the source code, even if you modify the source code or develop the extension yourself.
However, distributing and/or selling the source code or extension according to the GPL license, you have to provide the source code.
The use of Rhymix on the homepage does not oblige you to release the source code, even if you modify the Rhymix source code or develop the extension yourself.
However, if you distribute or sell your own extensions to a third party, you must provide the source code, which is subject to the GPL license.

17
SECURITY.md Normal file
View file

@ -0,0 +1,17 @@
Security Policy
---------------
### Supported Versions
Only the latest version is actively supported.
## Reporting a Vulnerability
Please report possible vulnerabilities by email to devops@rhymix.org.
Please DO NOT use GitHub issues or pull requests for this purpose.
We do not consider it a vulnerability if the superuser (is_admin=Y) account
can insert scripts or delete information. That's what the superuser account is for!
It will, however, be considered a serious vulnerability if someone else can
trick a superuser to perform such actions inadvertently,
for example through a CSRF attack.

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon version="0.2">
<title xml:lang="ko">어드민 메뉴 접근 로깅</title>
<title xml:lang="en">admin menu access logging</title>
<title xml:lang="en">Logging Access to the Administrator Menu</title>
<title xml:lang="zh-CN">后台访问日志</title>
<title xml:lang="zh-TW">管理選單訪問日誌</title>
<description xml:lang="ko">
@ -13,8 +13,11 @@
<description xml:lang="zh-TW">
管理選單訪問紀錄及登入日誌。
</description>
<version>1.7</version>
<date>2013-11-27</date>
<description xml:lang="en">
This addon will record Rhymix administrators' access to the menu.
</description>
<version>RX_VERSION</version>
<date>RX_CORE</date>
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
<name xml:lang="ko">NAVER</name>

View file

@ -24,7 +24,7 @@
var thisPlugin = this;
// extract target text nodes
this.extractTargets($('.xe_content'));
this.extractTargets($('.rhymix_content, .xe_content'));
$(this.targets).each(function(){
thisPlugin.cast('AUTOLINK', [this]);
@ -40,6 +40,7 @@
content = content.replace(url_regex, function(match, p1, offset, string) {
var match;
var suffix = '';
var attribute = '';
if (p1.indexOf('(') < 0 && p1.match(/\)$/)) {
p1 = p1.replace(/\)$/, '');
suffix = ')';
@ -53,7 +54,10 @@
p1 = match[1];
suffix = match[2];
}
return '<a href="' + p1 + '" target="_blank">' + p1 + '</a>' + suffix;
if(!isSameOrigin(location.href, p1)) {
attribute = ' target="_blank"';
}
return '<a href="' + p1 + '"' + attribute + '>' + p1 + '</a>' + suffix;
});
$(textNode).before(dummy);
@ -63,7 +67,7 @@
},
extractTargets : function(obj) {
var thisPlugin = this;
var wrap = $('.xe_content', obj);
var wrap = $('.rhymix_content, .xe_content', obj);
if(wrap.length) {
this.extractTargets(wrap);
return;
@ -92,10 +96,15 @@
});
xe.registerPlugin(new AutoLink());
$(document).on('click', '.xe_content a', function() {
if (!$(this).attr("target")) {
$(this).attr("target", "_blank");
$(document).on('click', '.rhymix_content a, .xe_content a', function() {
var $this = $(this);
var href = $this.attr('href');
if(!href || /^(?:javascript|mailto):|#/.test(href)) {
return;
}
if (!$this.attr("target") && !isSameOrigin(location.href, href)) {
$this.attr("target", "_blank");
}
});

View file

@ -36,8 +36,8 @@
<description xml:lang="zh-TW">
是種可將文章及回覆內容中的 URL 網址字串自動轉換成連結的附加元件。
</description>
<version>1.7</version>
<date>2013-11-27</date>
<version>RX_VERSION</version>
<date>RX_CORE</date>
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
<name xml:lang="ko">NAVER</name>

View file

@ -1,602 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
if(!defined('__XE__'))
exit();
/**
* @file blogapicounter.addon.php
* @author NAVER (developers@xpressengine.com)
* @brief Add blogAPI
*
* It enables to write a post by using an external tool such as ms live writer, firefox performancing, zoundry and so on.
* It should be called before executing the module(before_module_proc). If not, it is forced to shut down.
* */
// Insert a rsd tag when called_position is after_module_proc
if($called_position == 'after_module_proc')
{
// Create rsd address of the current module
$site_module_info = Context::get('site_module_info');
$rsd_url = getFullSiteUrl($site_module_info->domain, '', 'mid', $this->module_info->mid, 'act', 'api');
// Insert rsd tag into the header
Context::addHtmlHeader(" " . '<link rel="EditURI" type="application/rsd+xml" title="RSD" href="' . $rsd_url . '" />');
}
// If act isnot api, just return
if($_REQUEST['act'] != 'api')
{
return;
}
// Read func file
require_once(_XE_PATH_ . 'addons/blogapi/blogapi.func.php');
$xml = $GLOBALS['HTTP_RAW_POST_DATA'];
// If HTTP_RAW_POST_DATA is NULL, Print error message
if(!$xml)
{
$content = getXmlRpcFailure(1, 'Invalid Method Call');
printContent($content);
}
// xmlprc parsing
// Parse the requested xmlrpc
if(Security::detectingXEE($xml))
{
header("HTTP/1.0 400 Bad Request");
exit;
}
if(version_compare(PHP_VERSION, '5.2.11', '<=')) libxml_disable_entity_loader(true);
$xml = new SimpleXMLElement($xml, LIBXML_NONET | LIBXML_NOENT);
$method_name = (string)$xml->methodName;
$params = $xml->params->param;
// Compatible with some of methodname
if(in_array($method_name, array('metaWeblog.deletePost', 'metaWeblog.getUsersBlogs', 'metaWeblog.getUserInfo')))
{
$method_name = str_replace('metaWeblog.', 'blogger.', $method_name);
}
// Get user_id, password and attempt log-in
$user_id = trim((string)$params[1]->value->string);
$password = trim((string)$params[2]->value->string);
// Before executing the module, authentication is processed.
if($called_position == 'before_module_init')
{
// Attempt log-in by using member controller
if($user_id && $password)
{
$oMemberController = getController('member');
$output = $oMemberController->doLogin($user_id, $password);
// If login fails, an error message appears
if(!$output->toBool())
{
$content = getXmlRpcFailure(1, $output->getMessage());
printContent($content);
}
}
else
{
$content = getXmlRpcFailure(1, 'not logged');
printContent($content);
}
}
// Before module processing, handle requests from blogapi tool and then terminate.
if($called_position == 'before_module_proc')
{
// Check writing permission
if(!$this->grant->write_document)
{
printContent(getXmlRpcFailure(1, 'no permission'));
}
// Get information of the categories
$oDocumentModel = getModel('document');
$category_list = $oDocumentModel->getCategoryList($this->module_srl);
// Specifies a temporary file storage
$logged_info = Context::get('logged_info');
$mediaPath = sprintf('files/cache/blogapi/%s/%s/', $this->mid, $logged_info->member_srl);
$mediaAbsPath = _XE_PATH_ . $mediaPath;
$mediaUrlPath = Context::getRequestUri() . $mediaPath;
switch($method_name)
{
// Blog information
case 'blogger.getUsersBlogs' :
$obj = new stdClass();
$obj->url = getFullSiteUrl('');
$obj->blogid = $this->mid;
$obj->blogName = $this->module_info->browser_title;
$blog_list = array($obj);
$content = getXmlRpcResponse($blog_list);
printContent($content);
break;
// Return a list of categories
case 'metaWeblog.getCategories' :
$category_obj_list = array();
if($category_list)
{
foreach($category_list as $category_srl => $category_info)
{
$obj = new stdClass();
$obj->description = $category_info->title;
//$obj->htmlUrl = Context::getRequestUri().$this->mid.'/1';
//$obj->rssUrl= Context::getRequestUri().'rss/'.$this->mid.'/1';
$obj->title = $category_info->title;
$obj->categoryid = $category_srl;
$category_obj_list[] = $obj;
}
}
$content = getXmlRpcResponse($category_obj_list);
printContent($content);
break;
// Upload file
case 'metaWeblog.newMediaObject' :
// Check a file upload permission
$oFileModel = getModel('file');
$file_module_config = $oFileModel->getFileModuleConfig($this->module_srl);
if(is_array($file_module_config->download_grant) && count($file_module_config->download_grant) > 0)
{
$logged_info = Context::get('logged_info');
if($logged_info->is_admin != 'Y')
{
$is_permitted = false;
for($i = 0; $i < count($file_module_config->download_grant); $i++)
{
$group_srl = $file_module_config->download_grant[$i];
if($logged_info->group_list[$group_srl])
{
$is_permitted = true;
break;
}
}
if(!$is_permitted){
printContent(getXmlRpcFailure(1, 'no permission'));
}
}
}
$fileinfo = $params[3]->value->struct->member;
foreach($fileinfo as $key => $val)
{
$nodename = (string)$val->name;
if($nodename === 'bits')
{
$filedata = base64_decode((string)$val->value->base64);
}
else if($nodename === 'name')
{
$filename = pathinfo((string)$val->value->string, PATHINFO_BASENAME);
}
}
if($logged_info->is_admin != 'Y')
{
// check file type
if(isset($file_module_config->allowed_filetypes) && $file_module_config->allowed_filetypes !== '*.*')
{
$filetypes = explode(';', $file_module_config->allowed_filetypes);
$ext = array();
foreach($filetypes as $item)
{
$item = explode('.', $item);
$ext[] = strtolower(array_pop($item));
}
$uploaded_ext = explode('.', $filename);
$uploaded_ext = strtolower(array_pop($uploaded_ext));
if(!in_array($uploaded_ext, $ext))
{
printContent(getXmlRpcFailure(1, 'Not allowed file type'));
break;
}
}
$allowed_filesize = $file_module_config->allowed_filesize * 1024 * 1024;
if($allowed_filesize < strlen($filedata))
{
printContent(getXmlRpcFailure(1, 'This file exceeds the attachment limit'));
break;
}
}
$temp_filename = Password::createSecureSalt(12, 'alnum');
$target_filename = sprintf('%s%s', $mediaAbsPath, $temp_filename);
FileHandler::makeDir($mediaAbsPath);
FileHandler::writeFile($target_filename, $filedata);
FileHandler::writeFile($target_filename . '_source_filename', $filename);
$obj = new stdClass();
$obj->url = Context::getRequestUri() . $mediaPath . $temp_filename;
$content = getXmlRpcResponse($obj);
printContent($content);
break;
// Get posts
case 'metaWeblog.getPost' :
$document_srl = (string)$params[0]->value->string;
if(!$document_srl)
{
printContent(getXmlRpcFailure(1, 'no permission'));
}
else
{
$oDocumentModel = getModel('document');
$oDocument = $oDocumentModel->getDocument($document_srl);
if(!$oDocument->isExists() || !$oDocument->isGranted())
{
printContent(getXmlRpcFailure(1, 'no permission'));
}
else
{
// Get a list of categories and set Context
$category = "";
if($oDocument->get('category_srl'))
{
$oDocumentModel = getModel('document');
$category_list = $oDocumentModel->getCategoryList($oDocument->get('module_srl'));
if($category_list[$oDocument->get('category_srl')])
{
$category = $category_list[$oDocument->get('category_srl')]->title;
}
}
$content = sprintf(
'<?xml version="1.0" encoding="utf-8"?>' .
'<methodResponse>' .
'<params>' .
'<param>' .
'<value>' .
'<struct>' .
'<member><name>categories</name><value><array><data><value><![CDATA[%s]]></value></data></array></value></member>' .
'<member><name>dateCreated</name><value><dateTime.iso8601>%s</dateTime.iso8601></value></member>' .
'<member><name>description</name><value><![CDATA[%s]]></value></member>' .
'<member><name>link</name><value>%s</value></member>' .
'<member><name>postid</name><value><string>%s</string></value></member>' .
'<member><name>title</name><value><![CDATA[%s]]></value></member>' .
'<member><name>publish</name><value><boolean>1</boolean></value></member>' .
'</struct>' .
'</value>' .
'</param>' .
'</params>' .
'</methodResponse>',
$category,
date("Ymd", $oDocument->getRegdateTime()) . 'T' . date("H:i:s", $oDocument->getRegdateTime()),
$oDocument->getContent(false, false, true, false),
getFullUrl('', 'document_srl', $oDocument->document_srl),
$oDocument->document_srl,
$oDocument->getTitleText()
);
printContent($content);
}
}
break;
// Write a new post
case 'metaWeblog.newPost' :
$obj = new stdClass();
$info = $params[3];
// Get information of post, title, and category
foreach($info->value->struct->member as $val)
{
switch((string)$val->name)
{
case 'title' :
$obj->title = (string)$val->value->string;
break;
case 'description' :
$obj->content = (string)$val->value->string;
break;
case 'categories' :
$categories = $val->value->array->data->value;
$category = (string)$categories[0]->string;
if($category && $category_list)
{
foreach($category_list as $category_srl => $category_info)
{
if($category_info->title == $category)
$obj->category_srl = $category_srl;
}
}
break;
case 'tagwords' :
$tags = $val->value->array->data->value;
foreach($tags as $tag)
{
$tag_list[] = (string)$tag->string;
}
if(count($tag_list))
$obj->tags = implode(',', $tag_list);
break;
}
}
// Set document srl
$document_srl = getNextSequence();
$obj->document_srl = $document_srl;
$obj->module_srl = $this->module_srl;
// Attachment
if(is_dir($mediaAbsPath))
{
$file_list = FileHandler::readDir($mediaAbsPath, '/(_source_filename)$/is');
$file_count = count($file_list);
if($file_count)
{
$oFileController = getController('file');
$oFileModel = getModel('file');
foreach($file_list as $file)
{
$filename = FileHandler::readFile($mediaAbsPath . $file);
$temp_filename = str_replace('_source_filename', '', $file);
$file_info = array();
$file_info['tmp_name'] = sprintf('%s%s', $mediaAbsPath, $temp_filename);
$file_info['name'] = $filename;
$fileOutput = $oFileController->insertFile($file_info, $this->module_srl, $document_srl, 0, true);
if($fileOutput->get('direct_download') === 'N')
{
$replace_url = Context::getRequestUri() . $oFileModel->getDownloadUrl($fileOutput->file_srl, $fileOutput->sid, $this->module_srl);
}
else
{
$replace_url = Context::getRequestUri() . $fileOutput->get('uploaded_filename');
}
$obj->content = str_replace($mediaUrlPath . $temp_filename, $replace_url, $obj->content);
}
$obj->uploaded_count = $file_count;
}
}
$oDocumentController = getController('document');
$obj->commentStatus = 'ALLOW';
$obj->allow_trackback = 'Y';
$logged_info = Context::get('logged_info');
$obj->member_srl = $logged_info->member_srl;
$obj->user_id = $logged_info->user_id;
$obj->user_name = $logged_info->user_name;
$obj->nick_name = $logged_info->nick_name;
$obj->email_address = $logged_info->email_address;
$obj->homepage = $logged_info->homepage;
$output = $oDocumentController->insertDocument($obj, TRUE);
if(!$output->toBool())
{
$content = getXmlRpcFailure(1, $output->getMessage());
}
else
{
$content = getXmlRpcResponse(strval($document_srl));
}
FileHandler::removeDir($mediaAbsPath);
printContent($content);
break;
// Edit post
case 'metaWeblog.editPost' :
$tmp_val = (string)$params[0]->value->string;
if(!$tmp_val)
$tmp_val = (string)$params[0]->value->i4;
if(!$tmp_val)
{
$content = getXmlRpcFailure(1, 'no permission');
break;
}
$tmp_arr = explode('/', $tmp_val);
$document_srl = array_pop($tmp_arr);
if(!$document_srl)
{
$content = getXmlRpcFailure(1, 'no permission');
break;
}
$oDocumentModel = getModel('document');
$oDocument = $oDocumentModel->getDocument($document_srl);
// Check if a permission to modify a document is granted
if(!$oDocument->isGranted())
{
$content = getXmlRpcFailure(1, 'no permission');
break;
}
$obj = $oDocument->getObjectVars();
$info = $params[3];
// Get information of post, title, and category
foreach($info->value->struct->member as $val)
{
switch((string)$val->name)
{
case 'title' :
$obj->title = (string)$val->value->string;
break;
case 'description' :
$obj->content = (string)$val->value->string;
break;
case 'categories' :
$categories = $val->value->array->data->value;
$category = (string)$categories[0]->string;
if($category && $category_list)
{
foreach($category_list as $category_srl => $category_info)
{
if($category_info->title == $category)
$obj->category_srl = $category_srl;
}
}
break;
case 'tagwords' :
$tags = $val->value->array->data->value;
foreach($tags as $tag)
{
$tag_list[] = (string)$tag->string;
}
if(count($tag_list))
$obj->tags = implode(',', $tag_list);
break;
}
}
// Document srl
$obj->document_srl = $document_srl;
$obj->module_srl = $this->module_srl;
// Attachment
if(is_dir($mediaAbsPath))
{
$file_list = FileHandler::readDir($mediaAbsPath, '/(_source_filename)$/is');
$file_count = count($file_list);
if($file_count)
{
$oFileController = getController('file');
$oFileModel = getModel('file');
foreach($file_list as $file)
{
$filename = FileHandler::readFile($mediaAbsPath . $file);
$temp_filename = str_replace('_source_filename', '', $file);
$file_info = array();
$file_info['tmp_name'] = sprintf('%s%s', $mediaAbsPath, $temp_filename);
$file_info['name'] = $filename;
$fileOutput = $oFileController->insertFile($file_info, $this->module_srl, $document_srl, 0, true);
if($fileOutput->get('direct_download') === 'N')
{
$replace_url = Context::getRequestUri() . $oFileModel->getDownloadUrl($fileOutput->file_srl, $fileOutput->sid, $this->module_srl);
}
else
{
$replace_url = Context::getRequestUri() . $fileOutput->get('uploaded_filename');
}
$obj->content = str_replace($mediaUrlPath . $temp_filename, $replace_url, $obj->content);
}
$obj->uploaded_count += $file_count;
}
}
$oDocumentController = getController('document');
$output = $oDocumentController->updateDocument($oDocument, $obj, TRUE);
if(!$output->toBool())
{
$content = getXmlRpcFailure(1, $output->getMessage());
}
else
{
$content = getXmlRpcResponse(true);
FileHandler::removeDir($mediaAbsPath);
}
printContent($content);
break;
// Delete the post
case 'blogger.deletePost' :
$tmp_val = (string)$params[1]->value->string;
$tmp_arr = explode('/', $tmp_val);
$document_srl = array_pop($tmp_arr);
// Get a document
$oDocumentModel = getModel('document');
$oDocument = $oDocumentModel->getDocument($document_srl);
// If the document exists
if(!$oDocument->isExists())
{
$content = getXmlRpcFailure(1, 'not exists');
// Check if a permission to delete a document is granted
}
elseif(!$oDocument->isGranted())
{
$content = getXmlRpcFailure(1, 'no permission');
break;
// Delete
}
else
{
$oDocumentController = getController('document');
$output = $oDocumentController->deleteDocument($document_srl);
if(!$output->toBool())
$content = getXmlRpcFailure(1, $output->getMessage());
else
$content = getXmlRpcResponse(true);
}
printContent($content);
break;
// Get recent posts
case 'metaWeblog.getRecentPosts' :
// Options to get a list
$args = new stdClass();
$args->module_srl = $this->module_srl; // /< module_srl of the current module
$args->page = 1;
$args->list_count = 20;
$args->sort_index = 'list_order'; // /< Sorting values
$logged_info = Context::get('logged_info');
$args->search_target = 'member_srl';
$args->search_keyword = $logged_info->member_srl;
$output = $oDocumentModel->getDocumentList($args);
if(!$output->toBool() || !$output->data)
{
$content = getXmlRpcFailure(1, 'post not founded');
}
else
{
$oEditorController = getController('editor');
$posts = array();
foreach($output->data as $key => $oDocument)
{
$post = new stdClass();
$post->categories = array();
$post->dateCreated = date("Ymd", $oDocument->getRegdateTime()) . 'T' . date("H:i:s", $oDocument->getRegdateTime());
$post->description = sprintf('<![CDATA[%s]]>',$oEditorController->transComponent($oDocument->getContent(false, false, true, false)));
$post->link = $post->permaLink = getFullUrl('', 'document_srl', $oDocument->document_srl);
$post->postid = $oDocument->document_srl;
$post->title = htmlspecialchars($oDocument->get('title'), ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
$post->publish = 1;
$post->userid = $oDocument->get('user_id');
$post->mt_allow_pings = 0;
$post->mt_allow_comments = $oDocument->allowComment() ? 1 : 0;
$posts[] = $post;
}
$content = getXmlRpcResponse($posts);
printContent($content);
}
break;
// Display RSD if there is no request
default :
$homepagelink = getUrl('', 'mid', $this->mid);
$site_module_info = Context::get('site_module_info');
$api_url = getFullSiteUrl($site_module_info->domain, '', 'mid', $site_module_info->mid, 'act', 'api');
$content = <<<RSDContent
<?xml version="1.0" ?>
<rsd version="1.0" xmlns="http://archipelago.phrasewise.com/rsd" >
<service>
<engineName>Rhymix</engineName>
<engineLink>https://www.rhymix.org/ </engineLink>
<homePageLink>{$homepagelink}</homePageLink>
<apis>
<api name="MetaWeblog" preferred="true" apiLink="{$api_url}" blogID="" />
</apis>
</service>
</rsd>
RSDContent;
printContent($content);
break;
}
}
/* End of file blogapi.addon.php */
/* Location: ./addons/blogapi/blogapi.addon.php */

View file

@ -1,101 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
if(!defined('__XE__'))
exit();
/**
* @file ./addons/blogapi/blogapi.func.php
* @author NAVER (developers@xpressengine.com)
* @brief Function collections for the implementation of blogapi
* */
// Error messages
function getXmlRpcFailure($error, $message)
{
return
sprintf(
"<methodResponse>\n<fault><value><struct>\n<member>\n<name>faultCode</name>\n<value><int>%d</int></value>\n</member>\n<member>\n<name>faultString</name>\n<value><string>%s</string></value>\n</member>\n</struct></value></fault>\n</methodResponse>\n", $error, htmlspecialchars($message, ENT_COMPAT | ENT_HTML401, 'UTF-8', false)
);
}
// Display results
function getXmlRpcResponse($params)
{
$buff = '<?xml version="1.0" encoding="utf-8"?>' . "\n<methodResponse><params>";
$buff .= _getEncodedVal($params);
$buff .= "</params>\n</methodResponse>\n";
return $buff;
}
// Encoding
function _getEncodedVal($val, $is_sub_set = false)
{
if(preg_match('/^\<\!\[CDATA\[/',$val))
{
$buff = sprintf("<value>%s</value>", $val);
}
elseif(is_int($val))
{
$buff = sprintf("<value><i4>%d</i4></value>", $val);
}
elseif(is_string($val) && preg_match('/^([0-9]+)T([0-9\:]+)$/', $val))
{
$buff = sprintf("<value><dateTime.iso8601>%s</dateTime.iso8601></value>\n", $val);
}
elseif(is_double($val))
{
$buff = sprintf("<value><double>%f</double></value>", $val);
}
elseif(is_bool($val))
{
$buff = sprintf("<value><boolean>%d</boolean></value>", $val ? 1 : 0);
}
elseif(is_object($val))
{
$values = get_object_vars($val);
$val_count = count($values);
$buff = "<value><struct>";
foreach($values as $k => $v)
{
$buff .= sprintf("<member>\n<name>%s</name>\n%s</member>\n", htmlspecialchars($k, ENT_COMPAT | ENT_HTML401, 'UTF-8', false), _getEncodedVal($v, true));
}
$buff .= "</struct></value>\n";
}
elseif(is_array($val))
{
$val_count = count($val);
$buff = "<value><array>\n<data>";
for($i = 0; $i < $val_count; $i++)
{
$buff .= _getEncodedVal($val[$i], true);
}
$buff .= "</data>\n</array></value>";
}
else
{
$buff = sprintf("<value><string>%s</string></value>\n", $val);
}
if(!$is_sub_set)
{
return sprintf("<param>\n%s</param>", $buff);
}
return $buff;
}
// Display the result
function printContent($content)
{
header("Content-Type: text/xml; charset=UTF-8");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
print $content;
Context::close();
exit();
}
/* End of file blogapi.func.php */
/* Location: ./addons/blogapi/blogapi.func.php */

View file

@ -1,80 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon version="0.2">
<title xml:lang="ko">BlogAPI 애드온</title>
<title xml:lang="jp">BlogAPIアドオン</title>
<title xml:lang="zh-CN">BlogAPI</title>
<title xml:lang="en">Addon for BlogAPI</title>
<title xml:lang="vi">BlogAPI Addon</title>
<title xml:lang="ge">Addon für BlogAPI</title>
<title xml:lang="es">Addon para BlogAPI</title>
<title xml:lang="ru">Аддон для BlogAPI</title>
<title xml:lang="zh-TW">部落格 API</title>
<description xml:lang="ko">
metaWeblog를 지원하는 blogApi애드온입니다.
사용으로 설정하면 각 모듈마다 RSD 태그를 노출합니다.
api의 주소는 http://설치주소/모듈명/api 입니다.
사용으로 해야 RSD태그 및 api가 동작을 합니다.
</description>
<description xml:lang="jp">
MetaWeblogをサポートするBlog APIアドオンです。
「使用する」にチェックすると各モジュールごとにRSDのアドレスを表示します。
APIのアドレスは「http://インストールURL/モジュール名/api」です。
「使用する」に設定してから、RSDタグ、およびAPIが作動します。
</description>
<description xml:lang="zh-CN">
支持metaWeblog的 blogApi插件。
设置为"启用"时,会使每个模块都会显示RSD标签。
api地址为http://安装地址/模块名/api。
把状态设置为"使用"时才会激活RSD标签及api。
</description>
<description xml:lang="en">
This blogAPI addon supports metaWeblog.
By using this option, it lets the RSD tag to be exposed to each module.
URL to the API is http://setup_path/module_name/api.
RSD tag and the api will work only if you use this addon.
</description>
<description xml:lang="vi">
Addon BlogAPI này hỗ trợ metaWeblog..
Bằng việc sử dụng tùy chọn này, Tag RSD sẽ được hiển thị đến mỗi Module.
URL cho API có dạng http://setup_path/module_name/api.
RSD Tag và API chỉ làm việc khi Addon này được kích hoạt.
</description>
<description xml:lang="ge">
Diese blogApi addon metaWeblog unterstützt.
Durch die Verwendung dieser Option, die es ermöglicht RSD Tag ausgesetzt werden jedes Modul.
URL der api ist http://setup_path/module_name/api.
RSD-Tag und dem API arbeiten und nur dann, wenn Sie über dieses Addon.
</description>
<description xml:lang="es">
Este blogApi addon soporta el metaWeblog.
Si seleccionas la optión usar, cada módulo entregará la etiqueta RSD.
La dirección de api es http://dirección de la instalación/nombre de módulo/api.
Sólo si seleccionas la opción usar, funcionará la etiqueta RSD y api.
</description>
<description xml:lang="ru">
Этот blogApi аддон поддерживает metaWeblog.
Используя этот аддон, RSD тег становится доступным для каждого модуля.
URL для api - http://setup_path/module_name/api.
тег RSD и api работают только при включенном аддоне.
</description>
<description xml:lang="zh-TW">
支援 MetaWeblog 的部落格 API 附加元件。
設置成"啟用"時,會使每個模組都顯示 RSD 圖示。
API網址是 http://安裝位置/模組名稱/api。
將狀態設置成"啟用"時,才可使用 RSD 和 API
</description>
<version>1.7</version>
<date>2013-11-27</date>
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
<name xml:lang="ko">NAVER</name>
<name xml:lang="vi">NAVER</name>
<name xml:lang="jp">NAVER</name>
<name xml:lang="zh-CN">NAVER</name>
<name xml:lang="en">NAVER</name>
<name xml:lang="ge">NAVER</name>
<name xml:lang="es">NAVER</name>
<name xml:lang="ru">NAVER</name>
<name xml:lang="zh-TW">NAVER</name>
</author>
</addon>

View file

@ -45,8 +45,8 @@
使用XE的網站訪問統計模組記錄網站訪問資料。
將狀態設置成"使用"時,才會紀錄網站訪問資料。
</description>
<version>1.7</version>
<date>2013-11-27</date>
<version>RX_VERSION</version>
<date>RX_CORE</date>
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
<name xml:lang="ko">NAVER</name>

View file

@ -10,7 +10,7 @@ if(!defined('__XE__'))
* @brief Counter add-on
*/
// Execute if called_position is before_display_content
if($called_position == 'before_module_init' && Context::get('module') != 'admin' && Context::getResponseMethod() == 'HTML' && Context::isInstalled() && !isCrawler())
if($called_position == 'before_display_content' && Context::get('module') != 'admin' && Context::getResponseMethod() == 'HTML' && Context::isInstalled() && !isCrawler())
{
$oCounterController = getController('counter');
$oCounterController->counterExecute();

View file

@ -36,8 +36,8 @@
<description xml:lang="zh-TW">
可將用戶資料中的暱稱圖片、用戶圖示、簽名檔等資料顯示到頁面當中。
</description>
<version>1.7</version>
<date>2013-11-27</date>
<version>RX_VERSION</version>
<date>RX_CORE</date>
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
<name xml:lang="ko">NAVER</name>

View file

@ -22,7 +22,8 @@ if($called_position != "before_display_content" || Context::get('act') == 'dispP
return;
}
// Include a file having functions to replace member image name/mark
require_once('./addons/member_extra_info/member_extra_info.lib.php');
require_once __DIR__ . '/member_extra_info.lib.php';
// 1. Find a part <div class="member_MemberSerialNumber"> content </div> in the output document, change it to image name/mark by using MemberController::transImageName()
$temp_output = preg_replace_callback('!<(div|span|a)([^\>]*)member_([0-9]+)([^\>]*)>(.*?)\<\/(div|span|a)\>!is', 'memberTransImageName', $output);
if($temp_output)

View file

@ -29,29 +29,31 @@ function memberTransImageName($matches)
$_tmp = &$GLOBALS['_transImageNameList'][$member_srl];
// If pre-defined data in the global variables, return it
if(!$_tmp->cached)
if(!isset($_tmp->cached) || !$_tmp->cached)
{
$_tmp->cached = true;
$image_name_file = sprintf('files/member_extra_info/image_name/%s%d.gif', getNumberingPath($member_srl), $member_srl);
$image_mark_file = sprintf('files/member_extra_info/image_mark/%s%d.gif', getNumberingPath($member_srl), $member_srl);
if(file_exists(_XE_PATH_ . $image_name_file))
if(file_exists(RX_BASEDIR . $image_name_file))
{
$_tmp->image_name_file = $image_name_file . '?' . date('YmdHis', filemtime(_XE_PATH_ . $image_name_file));
$_tmp->image_name_file = $image_name_file . '?' . date('YmdHis', filemtime(RX_BASEDIR . $image_name_file));
$image_name_file = $_tmp->image_name_file;
}
else
{
$_tmp->image_name_file = '';
$image_name_file = '';
}
if(file_exists(_XE_PATH_ . $image_mark_file))
if(file_exists(RX_BASEDIR . $image_mark_file))
{
$_tmp->image_mark_file = $image_mark_file . '?' . date('YmdHis', filemtime(_XE_PATH_ . $image_mark_file));
$_tmp->image_mark_file = $image_mark_file . '?' . date('YmdHis', filemtime(RX_BASEDIR . $image_mark_file));
$image_mark_file = $_tmp->image_mark_file;
}
else
{
$_tmp->image_mark_file = '';
$image_mark_file = '';
}

View file

@ -1,124 +0,0 @@
<?php
/**
* HDML Library ver 0.1
* @author NAVER (developers@xpressengine.com)
*/
class wap extends mobileXE {
/**
* @brief constructor
**/
function __construct()
{
parent::__construct();
}
/**
* @brief hdml header output
**/
function printHeader()
{
header("Content-Type:text/x-hdml; charset=".$this->charset);
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
print '<hdml version=3.0 ttl=0 markable=true>';
print "\n";
print $this->hasChilds()?'<choice name=main>':'<display>';
print "\n";
if($this->upperUrl)
{
$url = $this->upperUrl;
printf('<action type=soft1 task=go dest="%s" label="%s">%s', $url->url, $url->text, "\n");
}
}
/**
* @brief Output title
**/
function printTitle()
{
if($this->totalPage > $this->mobilePage) $titlePageStr = sprintf("(%d/%d)",$this->mobilePage, $this->totalPage);
printf('<b>&lt;%s%s&gt;%s', $this->title,$titlePageStr,"\n");
}
/**
* @brief Output information
* hasChilds() if there is a list of content types, otherwise output
**/
function printContent()
{
if($this->hasChilds())
{
foreach($this->getChilds() as $key => $val)
{
if(!$val['link']) continue;
printf('<ce task=go label="%s" dest="%s">%s%s',lang('cmd_select'), $val['href'], $val['text'], "\n");
}
}
else
{
printf('<wrap>%s<br>%s', $this->getContent(),"\n");
}
}
/**
* @brief Button to output
**/
function printBtn()
{
// Menu Types
if($this->hasChilds())
{
if($this->nextUrl)
{
$url = $this->nextUrl;
printf('<ce task=go label="%s" dest="%s">%s%s', $url->text, $url->url, $url->text, "\n");
}
if($this->prevUrl)
{
$url = $this->prevUrl;
printf('<ce task=go label="%s" dest="%s">%s%s', $url->text, $url->url, $url->text, "\n");
}
if($this->homeUrl)
{
$url = $this->homeUrl;
printf('<ce task=go label="%s" dest="%s">%s%s', $url->text, $url->url, $url->text, "\n");
}
// Content Types
}
else
{
if($this->nextUrl)
{
$url = $this->nextUrl;
printf('<a task=gosub label="%s" dest="%s">%s</a>', $url->text, $url->url, $url->text);
}
if($this->prevUrl)
{
$url = $this->prevUrl;
printf('<a task=gosub label="%s" dest="%s">%s</a>', $url->text, $url->url, $url->text);
}
if($this->homeUrl)
{
$url = $this->homeUrl;
printf('<a task=gosub label="%s" dest="%s">%s</a>', $url->text, $url->url, $url->text);
}
}
}
/**
* @brief Footer information output
**/
function printFooter()
{
print $this->hasChilds()?'</choice>':'</display>';
print "\n";
print("</hdml>");
}
}
/* End of file hdml.class.php */
/* Location: ./addons/mobile/classes/hdml.class.php */

View file

@ -1,98 +0,0 @@
<?php
include './mobile.class.php';
/**
* mhtml Library ver 0.1
* @author NAVER (developers@xpressengine.com) / lang_select : misol
*/
class wap extends mobileXE
{
/**
* @brief constructor
**/
function __construct()
{
parent::__construct();
}
/**
* @brief hdml header output
**/
function printHeader()
{
print("<html><head>\n");
if($this->totalPage > $this->mobilePage) $titlePageStr = sprintf("(%d/%d)",$this->mobilePage, $this->totalPage);
printf("<title>%s%s</title></head><body>\n", htmlspecialchars($this->title, ENT_COMPAT | ENT_HTML401, 'UTF-8', false),htmlspecialchars($titlePageStr, ENT_COMPAT | ENT_HTML401, 'UTF-8', false));
}
// Output title
function printTitle()
{
if($this->totalPage > $this->mobilePage) $titlePageStr = sprintf("(%d/%d)",$this->mobilePage, $this->totalPage);
printf('&lt;%s%s&gt;<br>%s', htmlspecialchars($this->title, ENT_COMPAT | ENT_HTML401, 'UTF-8', false),htmlspecialchars($titlePageStr, ENT_COMPAT | ENT_HTML401, 'UTF-8', false),"\n");
}
/**
* @brief Output information
* hasChilds() if there is a list of content types, otherwise output
**/
function printContent()
{
if($this->hasChilds())
{
foreach($this->getChilds() as $key => $val)
{
if(!$val['link']) continue;
printf('<a href="%s" accesskey="%s">%s</a><br>%s', $val['href'], $this->getNo(), $val['text'], "\n");
if($val['extra']) printf("<br>%s\n",str_replace('<br/>','<br>',$val['extra']));
}
}
else
{
print(str_replace('<br/>','<br>',$this->getContent())."\n");
}
print "<hr><br>";
}
/**
* @brief Button to output
**/
function printBtn()
{
if($this->nextUrl)
{
$url = $this->nextUrl;
printf('<a href="%s">%s</a><br>%s', $url->url, $url->text, "\n");
}
if($this->prevUrl)
{
$url = $this->prevUrl;
printf('<a href="%s">%s</a><br>%s', $url->url, $url->text, "\n");
}
// Select Language
if(!parent::isLangChange())
{
$url = getUrl('','lcm','1','sel_lang',Context::getLangType(),'return_uri',Context::get('current_url'));
printf('<a href="%s">%s</a><br>%s', $url, 'Language : '.lang('select_lang'), "\n");
}
else
{
printf('<a href="%s">%s</a><br>%s', Context::get('return_uri'), lang('lang_return'), "\n");
}
if($this->upperUrl)
{
$url = $this->upperUrl;
printf('<btn href="%s" name="%s">%s', $url->url, $url->text, "\n");
}
if($this->homeUrl)
{
$url = $this->homeUrl;
printf('<a btn="%s" href="%s">%s</a><br>%s', $url->text, $url->url, $url->text, "\n");
}
}
// Footer information output
function printFooter()
{
print("</body></html>\n");
}
}
/* End of file mhtml.class.php */
/* Location: ./addons/mobile/classes/mhtml.class.php */

View file

@ -1,632 +0,0 @@
<?php
/**
* Mobile XE Library Class ver 0.1
* @author NAVER (developers@xpressengine.com) / lang_select : misol
* @brief XE library for WAP tag output
*/
class mobileXE
{
// Base url
var $homeUrl = NULL;
var $upperUrl = NULL;
var $nextUrl = NULL;
var $prevUrl = NULL;
var $etcBtn = NULL;
// Variable for menu navigation
var $childs = null;
// Basic variable
var $title = NULL;
var $content = NULL;
var $mobilePage = 0;
var $totalPage = 1;
var $charset = 'UTF-8';
var $no = 0;
// Navigation-related variables
var $menu = null;
var $listed_items = null;
var $node_list = null;
var $index_mid = null;
// Navigation On/Off status value
var $navigationMode = 0;
// XE module information currently requested
var $module_info = null;
// Currently running instance of the module
var $oModule = null;
// Deck size
var $deckSize = 1024;
// Changing the language setting
var $languageMode = 0;
var $lang = null;
/**
* @brief getInstance
*/
function &getInstance()
{
static $instance = null;
if(!$instance)
{
$browserType = mobileXE::getBrowserType();
if(!$browserType) return;
$class_file = sprintf('%saddons/mobile/classes/%s.class.php', _XE_PATH_, $browserType);
require_once($class_file);
// Download mobile language settings (cookies, not willing to come up when you click create cache file ...- is initialized ..)
$this->lang = FileHandler::readFile('./files/cache/addons/mobile/setLangType/personal_settings/'.md5(trim($_SERVER['HTTP_USER_AGENT']).trim($_SERVER['HTTP_PHONE_NUMBER']).trim($_SERVER['HTTP_HTTP_PHONE_NUMBER'])).'.php');
if($this->lang)
{
$lang_supported = Context::get('lang_supported');
$this->lang = str_replace(array('<?php /**','**/ ?>'),array('',''),$this->lang);
if(isset($lang_supported[$this->lang])) Context::setLangType($this->lang);
}
Context::loadLang(_XE_PATH_.'addons/mobile/lang');
$instance = new wap();
$mobilePage = (int)Context::get('mpage');
if(!$mobilePage) $mobilePage = 1;
$instance->setMobilePage($mobilePage);
}
return $instance;
}
/**
* @brief constructor
*/
function __construct()
{
// Check navigation mode
if(Context::get('nm'))
{
$this->navigationMode = 1;
$this->cmid = (int)Context::get('cmid');
}
if(Context::get('lcm'))
{
$this->languageMode = 1;
$this->lang = Context::get('sel_lang');
}
}
/**
* @brief Check navigation mode
* navigationMode settings and modules of information must be menu_srl return to navigation mode = true
*/
function isNavigationMode()
{
return ($this->navigationMode && $this->module_info->menu_srl)?true:false;
}
/**
* @brief Check langchange mode
* true return should be set languageMode
*/
function isLangChange()
{
if($this->languageMode) return true;
else return false;
}
/**
* @brief Language settings
* Cookies Since you set your phone to store language-specific file, file creation
*/
function setLangType()
{
$lang_supported = Context::get('lang_supported');
// Make sure that the language variables and parameters are valid
if($this->lang && isset($lang_supported[$this->lang]))
{
$langbuff = FileHandler::readFile('./files/cache/addons/mobile/setLangType/personal_settings/'.md5(trim($_SERVER['HTTP_USER_AGENT']).trim($_SERVER['HTTP_PHONE_NUMBER']).trim($_SERVER['HTTP_HTTP_PHONE_NUMBER'])).'.php');
if($langbuff) FileHandler::removeFile('./files/cache/addons/mobile/setLangType/personal_settings/'.md5(trim($_SERVER['HTTP_USER_AGENT']).trim($_SERVER['HTTP_PHONE_NUMBER']).trim($_SERVER['HTTP_HTTP_PHONE_NUMBER'])).'.php');
$langbuff = '<?php /**'.$this->lang.'**/ ?>';
FileHandler::writeFile('./files/cache/addons/mobile/setLangType/personal_settings/'.md5(trim($_SERVER['HTTP_USER_AGENT']).trim($_SERVER['HTTP_PHONE_NUMBER']).trim($_SERVER['HTTP_HTTP_PHONE_NUMBER'])).'.php',$langbuff);
}
}
/**
* @brief Information currently requested module settings
*/
function setModuleInfo(&$module_info)
{
if($this->module_info) return;
$this->module_info = $module_info;
}
/**
* @brief Set the module instance is currently running
*/
function setModuleInstance(&$oModule)
{
if($this->oModule) return;
// Save instance
$this->oModule = $oModule;
// Of the current module if there is a menu by menu
$menu_cache_file = sprintf(_XE_PATH_.'files/cache/menu/%d.php', $this->module_info->menu_srl);
if(!file_exists($menu_cache_file)) return;
include $menu_cache_file;
// One-dimensional arrangement of menu changes
$this->getListedItems($menu->list, $listed_items, $node_list);
$this->listed_items = $listed_items;
$this->node_list = $node_list;
$this->menu = $menu->list;
$k = array_keys($node_list);
$v = array_values($node_list);
$this->index_mid = $k[0];
// The depth of the current menu, the top button to specify if one or more
$cur_menu_item = $listed_items[$node_list[$this->module_info->mid]];
if($cur_menu_item['parent_srl'])
{
$parent_srl = $cur_menu_item['parent_srl'];
if($parent_srl && $listed_items[$parent_srl])
{
$parent_item = $listed_items[$parent_srl];
if($parent_item) $this->setUpperUrl(getUrl('','mid',$parent_item['mid']), lang('cmd_go_upper'));
}
}
elseif (!$this->isNavigationMode())
{
$this->setUpperUrl(getUrl('','mid',$this->index_mid,'nm','1','cmid',0), lang('cmd_view_sitemap'));
}
}
/**
* @brief Access the browser's header to determine the return type of the browser
* Mobile browser, if not null return
*/
function getBrowserType()
{
if(Context::get('smartphone')) return null;
// Determine the type of browser
$browserAccept = $_SERVER['HTTP_ACCEPT'];
$userAgent = $_SERVER['HTTP_USER_AGENT'];
$wap_sid = $_SERVER['HTTP_X_UP_SUBNO'];
if(stripos($userAgent, "SKT11") !== FALSE || stripos($browserAccept, "skt") !== FALSE)
{
Context::set('mobile_skt',1);
return "wml";
}
elseif(stripos($browserAccept, "hdml") !== FALSE) return "hdml";
elseif(stripos($userAgent, "cellphone") !== FALSE) return "mhtml";
return null;
}
/**
* @brief Specify charset
*/
function setCharSet($charset = 'UTF-8')
{
if(!$charset) $charset = 'UTF-8';
// SKT supports the euc-kr
if(Context::get('mobile_skt')==1) $charset = 'euc-kr';
$this->charset = $charset;
}
/**
* @brief Limited capacity of mobile devices, specifying a different virtual page
*/
function setMobilePage($page=1)
{
if(!$page) $page = 1;
$this->mobilePage = $page;
}
/**
* @brief Mokrokhyeong child menu for specifying the data set
*/
function setChilds($childs)
{
// If more than nine the number of menu paging processing itself
$menu_count = count($childs);
if($menu_count>9)
{
$startNum = ($this->mobilePage-1)*9;
$idx = 0;
$new_childs = array();
foreach($childs as $k => $v)
{
if($idx >= $startNum && $idx < $startNum+9)
{
$new_childs[$k] = $v;
}
$idx ++;
}
$childs = $new_childs;
$this->totalPage = (int)(($menu_count-1)/9)+1;
// next/prevUrl specify
if($this->mobilePage>1)
{
$url = getUrl('mid',$_GET['mid'],'mpage',$this->mobilePage-1);
$text = sprintf('%s (%d/%d)', lang('cmd_prev'), $this->mobilePage-1, $this->totalPage);
$this->setPrevUrl($url, $text);
}
if($this->mobilePage<$this->totalPage)
{
$url = getUrl('mid',$_GET['mid'],'mpage',$this->mobilePage+1);
$text = sprintf('%s (%d/%d)', lang('cmd_next'), $this->mobilePage+1, $this->totalPage);
$this->setNextUrl($url, $text);
}
}
$this->childs = $childs;
}
/**
* @brief Check the menu to be output
*/
function hasChilds()
{
return count($this->childs)?true:0;
}
/**
* @brief Returns the child menu
*/
function getChilds()
{
return $this->childs;
}
/**
* @brief Specify title
*/
function setTitle($title)
{
$oModuleController = getController('module');
$this->title = $title;
$oModuleController->replaceDefinedLangCode($this->title);
}
/**
* @brief return title
*/
function getTitle()
{
return $this->title;
}
/**
* @brief Content Cleanup
* In HTML content, the ability to extract text and links
*/
function setContent($content)
{
$oModuleController = getController('module');
$allow_tag_array = array('<a>','<br>','<p>','<b>','<i>','<u>','<em>','<small>','<strong>','<big>','<table>','<tr>','<td>');
// Links/wrap, remove all tags except gangjoman
$content = strip_tags($content, implode($allow_tag_array));
// Margins tab removed
$content = str_replace("\t", "", $content);
// Repeat two more times the space and remove julnanumeul
$content = preg_replace('/( ){2,}/s', '', $content);
$content = preg_replace("/([\r\n]+)/s", "\r\n", $content);
$content = preg_replace(array("/<a/i","/<\/a/i","/<b/i","/<\/b/i","/<br/i"),array('<a','</a','<b','</b','<br'),$content);
$content = str_replace(array("<br>","<br />"), array("<br/>","<br/>"), $content);
while(strpos($content, '<br/><br/>'))
{
$content = str_replace('<br/><br/>','<br/>',$content);
}
// If the required size of a deck of mobile content to write down all the dividing pages
$contents = array();
while($content)
{
$tmp = $this->cutStr($content, $this->deckSize, '');
$contents[] = $tmp;
$content = substr($content, strlen($tmp));
//$content = str_replace(array('&','<','>','"','&amp;nbsp;'), array('&amp;','&lt;','&gt;','&quot;',' '), $content);
foreach($allow_tag_array as $tag)
{
if($tag == '<br>') continue;
$tag_open_pos = strpos($content, str_replace('>','',$tag));
$tag_close_pos = strpos($content, str_replace('<','</',$tag));
if($tag_open_pos!==false && $tag_close_pos || $tag_close_pos < $tag_open_pos)
{
$contents[count($contents)-1] .= substr($content, 0, $tag_close_pos + strlen($tag) + 1);
$content = substr($content, $tag_close_pos + strlen($tag) + 1);
}
}
$tag_open_pos = strpos($content, '&');
$tag_close_pos = strpos($content, ';');
if($tag_open_pos!==false && $tag_close_pos || $tag_close_pos < $tag_open_pos)
{
$contents[count($contents)-1] .= substr($content, 0, $tag_close_pos + 1);
$content = substr($content, $tag_close_pos + 1);
}
}
$this->totalPage = count($contents);
// next/prevUrl specify
if($this->mobilePage>1)
{
$url = getUrl('mid',$_GET['mid'],'mpage',$this->mobilePage-1);
$text = sprintf('%s (%d/%d)', lang('cmd_prev'), $this->mobilePage-1, $this->totalPage);
$this->setPrevUrl($url, $text);
}
if($this->mobilePage<$this->totalPage)
{
$url = getUrl('mid',$_GET['mid'],'mpage',$this->mobilePage+1);
$text = sprintf('%s (%d/%d)', lang('cmd_next'), $this->mobilePage+1, $this->totalPage);
$this->setNextUrl($url, $text);
}
$this->content = $contents[$this->mobilePage-1];
$oModuleController->replaceDefinedLangCode($this->content);
$content = str_replace(array('$','\''), array('$$','&apos;'), $content);
}
/**
* @brief cutting the number of byte functions
*/
function cutStr($string, $cut_size)
{
return preg_match('/.{'.$cut_size.'}/su', $string, $arr) ? $arr[0] : $string;
}
/**
* @brief Return content
*/
function getContent()
{
return $this->content;
}
/**
* @brief Specifies the home url
*/
function setHomeUrl($url, $text)
{
if(!$url) $url = '#';
$this->homeUrl->url = $url;
$this->homeUrl->text = $text;
}
/**
* @brief Specify upper url
*/
function setUpperUrl($url, $text)
{
if(!$url) $url = '#';
$this->upperUrl->url = $url;
$this->upperUrl->text = $text;
}
/**
* @brief Specify prev url
*/
function setPrevUrl($url, $text)
{
if(!$url) $url = '#';
$this->prevUrl->url = $url;
$this->prevUrl->text = $text;
}
/**
* @brief Specify next url
*/
function setNextUrl($url, $text)
{
if(!$url) $url = '#';
$this->nextUrl->url = $url;
$this->nextUrl->text = $text;
}
/**
* @brief Next, Previous, Top button assignments other than
*/
function setEtcBtn($url, $text)
{
if(!$url) $url = '#';
$etc['url'] = $url;
$etc['text'] = htmlspecialchars($text);
$this->etcBtn[] = $etc;
}
/**
* @brief display
*/
function display()
{
// Home button assignments
$this->setHomeUrl(getUrl(), lang('cmd_go_home'));
// Specify the title
if(!$this->title) $this->setTitle(Context::getBrowserTitle());
ob_start();
// Output header
$this->printHeader();
// Output title
$this->printTitle();
// Information output
$this->printContent();
// Button output
$this->printBtn();
// Footer output
$this->printFooter();
$content = ob_get_clean();
// After conversion output
if(strtolower($this->charset) == 'utf-8') print $content;
else print iconv('UTF-8',$this->charset."//TRANSLIT//IGNORE", $content);
exit();
}
/**
* @brief Move page
*/
function movepage($url)
{
header("location:$url");
exit();
}
/**
* @brief And returns a list of serial numbers in
*/
function getNo()
{
$this->no++;
$str = $this->no;
return $str;
}
/**
* @brief XE is easy to use Menu module is relieved during the function, value
*/
function getListedItems($menu, &$listed_items, &$node_list)
{
if(!count($menu)) return;
foreach($menu as $node_srl => $item)
{
if(preg_match('/^([a-zA-Z0-9\_\-]+)$/', $item['url']))
{
$mid = $item['mid'] = $item['url'];
$node_list[$mid] = $node_srl;
}
else
{
$mid = $item['mid'] = null;
}
$listed_items[$node_srl] = $item;
$this->getListedItems($item['list'], $listed_items, $node_list);
}
}
/**
* @brief XE navigation output
*/
function displayNavigationContent()
{
$childs = array();
if($this->cmid)
{
$cur_item = $this->listed_items[$this->cmid];
$upper_srl = $cur_item['parent_srl'];;
$list = $cur_item['list'];;
$this->setUpperUrl(getUrl('cmid',$upper_srl), lang('cmd_go_upper'));
if(preg_match('/^([a-zA-Z0-9\_\-]+)$/', $cur_item['url']))
{
$obj = array();
$obj['href'] = getUrl('','mid',$cur_item['url']);
$obj['link'] = $obj['text'] = '['.$cur_item['text'].']';
$childs[] = $obj;
}
}
else
{
$list = $this->menu;
$upper_srl = 0;
}
if(count($list))
{
foreach($list as $key => $val)
{
if(!$val['text']) continue;
$obj = array();
if(!count($val['list']))
{
$obj['href'] = getUrl('','mid',$val['url']);
}
else
{
$obj['href'] = getUrl('cmid',$val['node_srl']);
}
$obj['link'] = $obj['text'] = $val['text'];
$childs[] = $obj;
}
$this->setChilds($childs);
}
// Output
$this->display();
}
/**
* @brief Language Settings menu, the output
*/
function displayLangSelect()
{
$childs = array();
$this->lang = FileHandler::readFile('./files/cache/addons/mobile/setLangType/personal_settings/'.md5(trim($_SERVER['HTTP_USER_AGENT']).trim($_SERVER['HTTP_PHONE_NUMBER']).trim($_SERVER['HTTP_HTTP_PHONE_NUMBER'])).'.php');
if($this->lang)
{
$this->lang = str_replace(array('<?php /**','**/ ?>'),array('',''),$this->lang);
Context::setLangType($this->lang);
}
$lang_supported = Context::get('lang_supported');
$lang_type = Context::getLangType();
$obj = array();
$obj['link'] = $obj['text'] = lang('president_lang').' : '.$lang_supported[$lang_type];
$obj['href'] = getUrl('sel_lang',$lang_type);
$childs[] = $obj;
if(is_array($lang_supported))
{
foreach($lang_supported as $key => $val)
{
$obj = array();
$obj['link'] = $obj['text'] = $val;
$obj['href'] = getUrl('sel_lang',$key);
$childs[] = $obj;
}
}
$this->setChilds($childs);
$this->display();
}
/**
* @brief Module to create a class object of the WAP WAP ready
*/
function displayModuleContent()
{
// Create WAP class objects of the selected module
$oModule = &getWap($this->module_info->module);
if(!$oModule || !method_exists($oModule, 'procWAP') ) return;
$vars = get_object_vars($this->oModule);
if(count($vars)) foreach($vars as $key => $val) $oModule->{$key} = $val;
// Run
$oModule->procWAP($this);
// Output
$this->display();
}
/**
* @brief WAP content is available as a separate output if the final results
*/
function displayContent()
{
Context::set('layout','none');
// Compile a template
$oTemplate = new TemplateHandler();
$oContext = &Context::getInstance();
$content = $oTemplate->compile($this->oModule->getTemplatePath(), $this->oModule->getTemplateFile());
$this->setContent($content);
// Output
$this->display();
}
}
/* End of file mobile.class.php */
/* Location: ./addons/mobile/classes/mobile.class.php */

View file

@ -1,127 +0,0 @@
<?php
/**
* WML Library ver 0.1
* @author NAVER (developers@xpressengine.com) / lang_select : misol
*/
class wap extends mobileXE
{
/**
* @brief constructor
*/
function __construct()
{
parent::__construct();
}
/**
* @brief wml header output
*/
function printHeader()
{
header("Content-Type: text/vnd.wap.wml");
header("charset: ".$this->charset);
if($this->totalPage > $this->mobilePage) $titlePageStr = sprintf("(%d/%d)",$this->mobilePage, $this->totalPage);
print("<?xml version=\"1.0\" encoding=\"".$this->charset."\"?><!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">\n");
// Card Title
printf("<wml>\n<card title=\"%s%s\">\n<p>\n",htmlspecialchars($this->title, ENT_COMPAT | ENT_HTML401, 'UTF-8', false),htmlspecialchars($titlePageStr, ENT_COMPAT | ENT_HTML401, 'UTF-8', false));
}
/**
* @brief Output title
*/
function printTitle()
{
if($this->totalPage > $this->mobilePage) $titlePageStr = sprintf("(%d/%d)",$this->mobilePage, $this->totalPage);
printf('&lt;%s%s&gt;<br/>%s', htmlspecialchars($this->title, ENT_COMPAT | ENT_HTML401, 'UTF-8', false),htmlspecialchars($titlePageStr, ENT_COMPAT | ENT_HTML401, 'UTF-8', false),"\n");
}
/**
* @brief Output information
* hasChilds() if there is a list of content types, otherwise output
*/
function printContent()
{
if($this->hasChilds())
{
foreach($this->getChilds() as $key => $val)
{
if(!$val['link']) continue;
printf('<do type="%s" label="%s"><go href="%s" /></do>%s', $this->getNo(), htmlspecialchars($val['text'], ENT_COMPAT | ENT_HTML401, 'UTF-8', false), $val['href'], "\n");
if($val['extra']) printf("%s\n",$val['extra']);
}
}
else
{
printf('%s<br/>%s', str_replace("<br>","<br/>",$this->getContent()),"\n");
}
print('<br/>');
}
/**
* @brief Button to output
*/
function printBtn()
{
if($this->nextUrl)
{
$url = $this->nextUrl;
printf('<do type="vnd.next" label="%s"><go href="%s"/></do>%s', $url->text, $url->url, "\n");
}
if($this->prevUrl)
{
$url = $this->prevUrl;
printf('<do type="vnd.prev" label="%s"><go href="%s"/></do>%s', $url->text, $url->url, "\n");
}
// Others are not applicable in charge of the button output (array passed) type??
if($this->etcBtn)
{
if(is_array($this->etcBtn))
{
foreach($this->etcBtn as $key=>$val)
{
printf('<do type="vnd.btn%s" label="%s"><go href="%s"/></do>%s', $key, $val['text'], $val['url'], "\n");
}
}
}
// Select Language
if(!parent::isLangChange())
{
$url = getUrl('','lcm','1','sel_lang',Context::getLangType(),'return_uri',Context::get('current_url'));
printf('<do type="vnd.lang" label="%s"><go href="%s"/></do>%s', 'Language : '.lang('select_lang'), $url, "\n");
}
else
{
printf('<do type="vnd.lang" label="%s"><go href="%s"/></do>%s', lang('lang_return'), Context::get('return_uri'), "\n");
}
if($this->homeUrl)
{
$url = $this->homeUrl;
printf('<do type="access" label="%s"><go href="%s"/></do>%s', $url->text, $url->url, "\n");
}
if($this->upperUrl)
{
$url = $this->upperUrl;
printf('<do type="vnd.up" label="%s"><go href="%s"/></do>%s', $url->text, $url->url, "\n");
}
}
// Footer information output
function printFooter()
{
print("</p>\n</card>\n</wml>");
}
// And returns a list of serial numbers in
function getNo()
{
if(Context::get('mobile_skt')==1)
{
return "vnd.skmn".parent::getNo();
}
else
{
return parent::getNo();
}
return $str;
}
}
/* End of file wml.class.php */
/* Location: ./addons/mobile/classes/wml.class.php */

View file

@ -1,84 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon version="0.2">
<title xml:lang="ko">모바일XE 애드온</title>
<title xml:lang="jp">モバイルXEアドオン</title>
<title xml:lang="zh-CN">手机XE插件</title>
<title xml:lang="en">Mobile XE</title>
<title xml:lang="vi">Mobile XE</title>
<title xml:lang="ru">Mobile XE</title>
<title xml:lang="zh-TW">XE行動上網</title>
<description xml:lang="ko">
모바일에서 접속시 헤더 정보를 분석하여 WAP 태그로 출력하는 애드온입니다.
wml, hdml, mhtml를 지원하고 그 이외의 경우에는 동작하지 않습니다.
</description>
<description xml:lang="jp">
モバイル端末機からアクセス時、ヘッダーheader情報を分析して「メニュー」と「モジュール」の関係を利用してWAPタグに変換表示するアドオンです。
wml, hdml, mhtmlをサポートし、その以外は対応していません。
</description>
<description xml:lang="zh-CN">
通过手机访问网站时将网页输出为WAP标签的插件。
支持语言wml, hdml, mhtml
</description>
<description xml:lang="en">
This addon displays WAP tag by analyzing header information on mobile connection.
Only wml, hdml, mhtml formats are provided.
</description>
<description xml:lang="vi">
Addon này hiển thị WAP Tag bởi việc phân tích thông tin khi kết nối bằng di động.
Chỉ hỗ trợ cho các định dạng wml, hdml, mhtml.
</description>
<description xml:lang="ru">
Данный аддон показывает WAP теги, анализирую информацию мобильного соединения.
Поддерживаются только wml, hdml, mhtml форматы.
</description>
<description xml:lang="zh-TW">
透過行動工具上網時會將網頁轉換為WAP標籤顯示。
只限於 wml, hdml, mhtml格式。
</description>
<version>1.7</version>
<date>2013-11-27</date>
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
<name xml:lang="ko">NAVER</name>
<name xml:lang="jp">NAVER</name>
<name xml:lang="zh-CN">NAVER</name>
<name xml:lang="en">NAVER</name>
<name xml:lang="vi">NAVER</name>
<name xml:lang="ru">NAVER</name>
<name xml:lang="zh-TW">NAVER</name>
</author>
<history version="0.1.1" date="2009-05-23">
<author email_address="misol221@paran.com" link="http://www.imsoo.net">
<name xml:lang="ko">misol</name>
<name xml:lang="jp">misol</name>
<name xml:lang="zh-CN">misol</name>
<name xml:lang="en">misol</name>
<name xml:lang="vi">misol</name>
<name xml:lang="ru">misol</name>
<name xml:lang="zh-TW">misol</name>
</author>
<log>언어선택 추가(WML, mHTML)</log>
<log>인코딩 설정 개선</log>
<log>그 외 소소한 개선들</log>
</history>
<extra_vars>
<var name="charset">
<title xml:lang="ko">문자셋</title>
<title xml:lang="jp">文字コード</title>
<title xml:lang="zh-CN">编码</title>
<title xml:lang="en">Charset</title>
<title xml:lang="vi">Charset</title>
<title xml:lang="ru">Charset</title>
<title xml:lang="zh-TW">編碼</title>
<description xml:lang="ko">모바일 기기의 경우 UTF-8 문자셋을 인식하지 못할 수 있습니다. 문자셋에 원하는 문자셋을 입력하면 자동으로 변환하여 출력하여 모바일에서 이상없이 출력하도록 합니다. 기본값은 UTF-8입니다. (*SK Telecom 휴대전화의 경우 euc-kr인코딩만 지원하므로, 강제로 euc-kr인코딩만 지원합니다.)</description>
<description xml:lang="jp">ある特定のモバイル機器ではutf-8文字コードの認識が出来ない場合があります。文字コードを設定すると、日本語だけの場合該当文字コードに自動変換して正常に表示出来るようになります。本アドオンのデフォルト値はUTF-8で、日本の携帯はshift-jisが一般的です。</description>
<description xml:lang="zh-CN">手机有时无法识别utf-8编码这时输入相应的编码值即可自动转换。默认编码为UTF-8。</description>
<description xml:lang="en">utf-8 may be read with mobile tools. Mobile tools will display correct charset when you input charset you want. Default charset is UTF-8.</description>
<description xml:lang="vi">UTF-8 không thể đọc được cho các công cụ di động. Những công cụ di động sẽ trình bày Charset đúng khi bạn nhập vào Charset bạn muốn. Charset mặc định là UTF-8.</description>
<description xml:lang="ru">utf-8 may be read with mobile tools. Mobile tools will display correct charset when you input charset you want. Default charset is UTF-8.</description>
<description xml:lang="zh-TW">行動工具無法讀取utf-8編碼。當您輸入所想要的編碼時行動工具將會正確的顯示。預設編碼是UTF-8.</description>
</var>
</extra_vars>
</addon>

View file

@ -1,7 +0,0 @@
<?php
$lang->president_lang = 'Selected Language';
$lang->select_lang = 'Select Language';
$lang->lang_return = 'Go Back';
$lang->cmd_go_upper = 'Upper';
$lang->cmd_go_home = 'Go Home';
$lang->cmd_view_sitemap = 'View site map';

View file

@ -1,7 +0,0 @@
<?php
$lang->president_lang = '現在言語';
$lang->select_lang = '言語選択';
$lang->lang_return = '戻る';
$lang->cmd_go_upper = '上位メニュー';
$lang->cmd_go_home = 'トップへ';
$lang->cmd_view_sitemap = 'サイトマップ';

View file

@ -1,7 +0,0 @@
<?php
$lang->president_lang = '현재 언어';
$lang->select_lang = '언어 선택';
$lang->lang_return = '돌아가기';
$lang->cmd_go_upper = '상위';
$lang->cmd_go_home = '홈으로';
$lang->cmd_view_sitemap = '사이트맵 보기';

View file

@ -1,7 +0,0 @@
<?php
$lang->president_lang = 'Дейсвующй язык';
$lang->select_lang = 'Выбор языка';
$lang->lang_return = 'Вернуться';
$lang->cmd_go_upper = 'Вверх';
$lang->cmd_go_home = 'На главную страницу';
$lang->cmd_view_sitemap = 'Посмотреть карту сайта';

View file

@ -1,7 +0,0 @@
<?php
$lang->president_lang = 'Chọn ngôn ngữ';
$lang->select_lang = 'Chọn ngôn ngữ';
$lang->lang_return = 'Trở lại';
$lang->cmd_go_upper = 'Lên trên';
$lang->cmd_go_home = 'Về trang chủ';
$lang->cmd_view_sitemap = 'Xem sơ đồ Web';

View file

@ -1,7 +0,0 @@
<?php
$lang->president_lang = '已选择语言';
$lang->select_lang = '选择语言';
$lang->lang_return = '返回';
$lang->cmd_go_upper = '上一级';
$lang->cmd_go_home = '首页';
$lang->cmd_view_sitemap = '网站地图';

View file

@ -1,7 +0,0 @@
<?php
$lang->president_lang = '已選擇語言';
$lang->select_lang = '選擇語言';
$lang->lang_return = '返回';
$lang->cmd_go_upper = '回上頁';
$lang->cmd_go_home = '回首頁';
$lang->cmd_view_sitemap = '網站地圖';

View file

@ -1,77 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
if(!defined('__XE__'))
exit();
/**
* @file mobile.addon.php
* @author NAVER (developers@xpressengine.com)
* @brief Mobile XE add-on
*
* If a mobile connection is made (see the header information), display contents with WAP tags
*
* Time to call
*
* before_module_proc > call when changing general settings for mobile
*
* after_module_proc > display mobile content
* Condition
* */
// Ignore admin page
if(Context::get('module') == 'admin')
{
return;
}
// Manage when to call it
if($called_position != 'before_module_proc' && $called_position != 'after_module_proc')
{
return;
}
// Ignore if not mobile browser
require_once(_XE_PATH_ . 'addons/mobile/classes/mobile.class.php');
if(!mobileXE::getBrowserType())
{
return;
}
// Generate mobile instance
$oMobile = &mobileXE::getInstance();
if(!$oMobile)
{
return;
}
// Specify charset on the add-on settings
$oMobile->setCharSet($addon_info->charset);
// Set module information
$oMobile->setModuleInfo($this->module_info);
// Register the current module object
$oMobile->setModuleInstance($this);
// Extract content and display/exit if navigate mode is or if WAP class exists
if($called_position == 'before_module_proc')
{
if($oMobile->isLangChange())
{
$oMobile->setLangType();
$oMobile->displayLangSelect();
}
// On navigation mode, display navigation content
if($oMobile->isNavigationMode())
{
$oMobile->displayNavigationContent();
}
// If you have a WAP class content output via WAP class
else
{
$oMobile->displayModuleContent();
}
// If neither navigation mode nor WAP class is, display the module's result
}
else if($called_position == 'after_module_proc')
{
// Display
$oMobile->displayContent();
}
/* End of file mobile.addon.php */
/* Location: ./addons/mobile/mobile.addon.php */

View file

@ -1,26 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon version="0.2">
<title xml:lang="ko">자동 embed 삽입 애드온(oEmbed)</title>
<title xml:lang="jp">자동 embed 삽입 애드온(oEmbed)</title>
<title xml:lang="en">자동 embed 삽입 애드온(oEmbed)</title>
<title xml:lang="vi">자동 embed 삽입 애드온(oEmbed)</title>
<title xml:lang="zh-CN">자동 embed 삽입 애드온(oEmbed)</title>
<title xml:lang="es">자동 embed 삽입 애드온(oEmbed)</title>
<title xml:lang="ru">자동 embed 삽입 애드온(oEmbed)</title>
<title xml:lang="ge">자동 embed 삽입 애드온(oEmbed)</title>
<title xml:lang="zh-TW">자동 embed 삽입 애드온(oEmbed)</title>
<version>1.0</version>
<date>2014-01-15</date>
<author email_address="developers@xpressengine.com" link="http://www.xpressengine.com/">
<name xml:lang="ko">NAVER</name>
<name xml:lang="jp">NAVER</name>
<name xml:lang="en">NAVER</name>
<name xml:lang="vi">NAVER</name>
<name xml:lang="zh-CN">NAVER</name>
<name xml:lang="es">NAVER</name>
<name xml:lang="ru">NAVER</name>
<name xml:lang="ge">NAVER</name>
<name xml:lang="zh-TW">NAVER</name>
</author>
</addon>

View file

@ -1,423 +0,0 @@
div.oembedall-githubrepos {
border: 1px solid #DDD;
border-radius: 4px 4px 4px 4px;
list-style-type: none;
margin: 0 0 10px;
padding: 8px 10px 0;
font: 13.34px/1.4 helvetica,arial,freesans,clean,sans-serif;
/*background: url("http://github.com/images/icons/public.png") no-repeat scroll 6px 9px transparent;*/
width : 452px;
background-color:#fff;
}
div.oembedall-githubrepos .oembedall-body {
background: -moz-linear-gradient(center top , #FAFAFA, #EFEFEF) repeat scroll 0 0 transparent;
background: -webkit-gradient(linear,left top,left bottom,from(#FAFAFA),to(#EFEFEF));;
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
border-top: 1px solid #EEE;
margin-left: -10px;
margin-top: 8px;
padding: 5px 10px;
width: 100%;
}
div.oembedall-githubrepos h3 {
font-size: 14px;
margin: 0;
padding-left: 18px;
white-space: nowrap;
}
div.oembedall-githubrepos p.oembedall-description {
color: #444;
font-size: 12px;
margin: 0 0 3px;
}
div.oembedall-githubrepos p.oembedall-updated-at {
color: #888;
font-size: 11px;
margin: 0;
}
div.oembedall-githubrepos ul.oembedall-repo-stats {
/*background: url("http://github.com/images/modules/pagehead/actions_fade.png") no-repeat scroll 0 0 transparent;*/
border: medium none;
float: right;
font-size: 11px;
font-weight: bold;
padding-left: 15px;
position: relative;
z-index: 5;
margin:0;
}
div.oembedall-githubrepos ul.oembedall-repo-stats li {
border: medium none;
color: #666;
display: inline-block;
list-style-type: none;
margin: 0 !important;
}
div.oembedall-githubrepos ul.oembedall-repo-stats li a {
background-color: transparent;
background-position: 5px -2px;
border: medium none;
color: #666 !important;
background-position: 5px -2px;
background-repeat: no-repeat;
border-left: 1px solid #DDD;
display: inline-block;
height: 21px;
line-height: 21px;
padding: 0 5px 0 23px;
}
div.oembedall-githubrepos ul.oembedall-repo-stats li:first-child a {
border-left: medium none;
margin-right: -3px;
}
div.oembedall-githubrepos ul.oembedall-repo-stats li a:hover {
background: none no-repeat scroll 5px -27px #4183C4;
color: #FFFFFF !important;
text-decoration: none;
}
div.oembedall-githubrepos ul.oembedall-repo-stats li:first-child a:hover {
border-bottom-left-radius: 3px;
border-top-left-radius: 3px;
}
ul.oembedall-repo-stats li:last-child a:hover {
border-bottom-right-radius: 3px;
border-top-right-radius: 3px;
}
div.oembedall-githubrepos ul.oembedall-repo-stats li.oembedall-watchers a {
/*background-image: url("http://github.com/images/modules/pagehead/repostat_watchers.png");*/
}
div.oembedall-githubrepos ul.oembedall-repo-stats li.oembedall-forks a {
/*background-image: url("http://github.com/images/modules/pagehead/repostat_forks.png");*/
}
span.oembedall-closehide{
background-color: #EEE;
border-radius: 2px;
cursor: pointer;
margin-right: 3px;
padding: 0 3px;
}
div.oembedall-container {
margin-top : 5px;
text-align: left;
}
.oembedall-ljuser {
font-weight: bold;
}
.oembedall-ljuser img {
vertical-align: bottom;
border: 0;
padding-right: 1px;
}
.oembedall-stoqembed {
border-bottom: 1px dotted #999999;
float: left;
overflow: hidden;
padding: 11px 0;
width: 730px;
line-height: 1;
background: none repeat scroll 0 0 #FFFFFF;
color: #000000;
font-family: Arial,Liberation Sans,DejaVu Sans,sans-serif;
font-size: 80%;
text-align: left;
margin: 0;
padding: 0;
}
.oembedall-stoqembed a {
color: #0077CC;
text-decoration: none;
margin: 0;
padding: 0;
}
.oembedall-stoqembed a:hover {
text-decoration: underline;
}
.oembedall-stoqembed a:visited {
color: #4A6B82;
}
.oembedall-stoqembed h3 {
font-family: Trebuchet MS,Liberation Sans,DejaVu Sans,sans-serif;
font-size: 130%;
font-weight: bold;
margin: 0;
padding: 0;
}
.oembedall-stoqembed .oembedall-reputation-score {
color: #444444;
font-size: 120%;
font-weight: bold;
margin-right: 2px;
}
.oembedall-stoqembed .oembedall-user-info {
height: 35px;
width: 185px;
}
.oembedall-stoqembed .oembedall-user-info .oembedall-user-gravatar32 {
float: left;
height: 32px;
width: 32px;
}
.oembedall-stoqembed .oembedall-user-info .oembedall-user-details {
float: left;
margin-left: 5px;
overflow: hidden;
white-space: nowrap;
width: 145px;
}
.oembedall-stoqembed .oembedall-question-hyperlink {
font-weight: bold;
}
.oembedall-stoqembed .oembedall-stats {
background: none repeat scroll 0 0 #EEEEEE;
margin: 0 0 0 7px;
padding: 4px 7px 6px;
width: 58px;
}
.oembedall-stoqembed .oembedall-statscontainer {
float: left;
margin-right: 8px;
width: 86px;
}
.oembedall-stoqembed .oembedall-votes {
color: #555555;
padding: 0 0 7px;
text-align: center;
}
.oembedall-stoqembed .oembedall-vote-count-post {
display: block;
font-size: 240%;
color: #808185;
display: block;
font-weight: bold;
}
.oembedall-stoqembed .oembedall-views {
color: #999999;
padding-top: 4px;
text-align: center;
}
.oembedall-stoqembed .oembedall-status {
margin-top: -3px;
padding: 4px 0;
text-align: center;
background: none repeat scroll 0 0 #75845C;
color: #FFFFFF;
}
.oembedall-stoqembed .oembedall-status strong {
color: #FFFFFF;
display: block;
font-size: 140%;
}
.oembedall-stoqembed .oembedall-summary {
float: left;
width: 635px;
}
.oembedall-stoqembed .oembedall-excerpt {
line-height: 1.2;
margin: 0;
padding: 0 0 5px;
}
.oembedall-stoqembed .oembedall-tags {
float: left;
line-height: 18px;
}
.oembedall-stoqembed .oembedall-tags a:hover {
text-decoration: none;
}
.oembedall-stoqembed .oembedall-post-tag {
background-color: #E0EAF1;
border-bottom: 1px solid #3E6D8E;
border-right: 1px solid #7F9FB6;
color: #3E6D8E;
font-size: 90%;
line-height: 2.4;
margin: 2px 2px 2px 0;
padding: 3px 4px;
text-decoration: none;
white-space: nowrap;
}
.oembedall-stoqembed .oembedall-post-tag:hover {
background-color: #3E6D8E;
border-bottom: 1px solid #37607D;
border-right: 1px solid #37607D;
color: #E0EAF1;
}
.oembedall-stoqembed .oembedall-fr {
float: right;
}
.oembedall-stoqembed .oembedall-statsarrow {
background-image: url("http://cdn.sstatic.net/stackoverflow/img/sprites.png?v=3");
background-repeat: no-repeat;
overflow: hidden;
background-position: 0 -435px;
float: right;
height: 13px;
margin-top: 12px;
width: 7px;
}
.oembedall-facebook1 {
border: #1A3C6C solid 1px;
padding:0px;
font: 13.34px/1.4 verdana;
width : 500px;
}
.oembedall-facebook2 {
background-color: #627add;
}
.oembedall-facebook2 a {
color: #e8e8e8;
text-decoration:none;
}
.oembedall-facebookBody {
background-color: #fff;
vertical-align: top;
padding: 5px;
}
.oembedall-facebookBody .contents {
display: inline-block;
width: 100%;
}
.oembedall-facebookBody div img {
float: left;
margin-right: 5px;
}
div.oembedall-lanyard{
-webkit-box-shadow: none;
-webkit-transition-delay: 0s;
-webkit-transition-duration: 0.4000000059604645s;
-webkit-transition-property: width;
-webkit-transition-timing-function: cubic-bezier(0.42, 0, 0.58, 1);
background-attachment: scroll;
background-clip: border-box;
background-color: transparent;
background-image: none;
background-origin: padding-box;
border-bottom-width: 0px;
border-left-width: 0px;
border-right-width: 0px;
border-top-width: 0px;
box-shadow: none;
color: #112644;
display: block;
float: left;
font-family: 'Trebuchet MS', Trebuchet, sans-serif;
font-size: 16px;
height: 253px;
line-height: 19px;
margin-bottom: 0px;
margin-left: 0px;
margin-right: 0px;
margin-top: 0px;
max-width: none;
min-height: 0px;
outline-color: #112644;
outline-style: none;
outline-width: 0px;
overflow-x: visible;
overflow-y: visible;
padding-bottom: 0px;
padding-left: 0px;
padding-right: 0px;
padding-top: 0px;
position: relative;
text-align: left;
vertical-align: baseline;
width: 804px;
}
div.oembedall-lanyard .tagline{
font-size: 1.5em;
}
div.oembedall-lanyard .wrapper{
overflow: hidden;
clear: both;
}
div.oembedall-lanyard .split{
float: left;
display: inline;
}
div.oembedall-lanyard .prominent-place .flag:link, div.oembedall-lanyard .prominent-place .flag:visited,div.oembedall-lanyard .prominent-place .flag:hover
,div.oembedall-lanyard .prominent-place .flag:focus,div.oembedall-lanyard .prominent-place .flag:active {
float: left;
display: block;
width: 48px;
height: 48px;
position: relative;
top: -5px;
margin-right: 10px;
}
div.oembedall-lanyard .place-context {
font-size: 0.889em;
}
div.oembedall-lanyard .prominent-place .sub-place {
display: block;
}
div.oembedall-lanyard .prominent-place{
font-size: 1.125em;
line-height: 1.1em;
font-weight: normal;
}
div.oembedall-lanyard .main-date{
color: #8CB4E0;
font-weight: bold;
line-height: 1.1;
}
div.oembedall-lanyard .first{
margin-left: 0;
width: 48.57%;
margin: 0 0 0 2.857%;
}

View file

@ -1,956 +0,0 @@
/*!
* jquery oembed plugin
*
* Copyright (c) 2009 Richard Chamorro
* Licensed under the MIT license
*
* Orignal Author: Richard Chamorro
* Forked by Andrew Mee to Provide a slightly diffent kind of embedding experience
*/
(function ($) {
$.fn.oembed = function (url, options, embedAction) {
settings = $.extend(true, $.fn.oembed.defaults, options);
var shortURLList = ["0rz.tw", "1link.in", "1url.com", "2.gp", "2big.at", "2tu.us", "3.ly", "307.to", "4ms.me", "4sq.com", "4url.cc", "6url.com", "7.ly", "a.gg", "a.nf", "aa.cx", "abcurl.net",
"ad.vu", "adf.ly", "adjix.com", "afx.cc", "all.fuseurl.com", "alturl.com", "amzn.to", "ar.gy", "arst.ch", "atu.ca", "azc.cc", "b23.ru", "b2l.me", "bacn.me", "bcool.bz", "binged.it",
"bit.ly", "bizj.us", "bloat.me", "bravo.ly", "bsa.ly", "budurl.com", "canurl.com", "chilp.it", "chzb.gr", "cl.lk", "cl.ly", "clck.ru", "cli.gs", "cliccami.info",
"clickthru.ca", "clop.in", "conta.cc", "cort.as", "cot.ag", "crks.me", "ctvr.us", "cutt.us", "dai.ly", "decenturl.com", "dfl8.me", "digbig.com",
"http:\/\/digg\.com\/[^\/]+$", "disq.us", "dld.bz", "dlvr.it", "do.my", "doiop.com", "dopen.us", "easyuri.com", "easyurl.net", "eepurl.com", "eweri.com",
"fa.by", "fav.me", "fb.me", "fbshare.me", "ff.im", "fff.to", "fire.to", "firsturl.de", "firsturl.net", "flic.kr", "flq.us", "fly2.ws", "fon.gs", "freak.to",
"fuseurl.com", "fuzzy.to", "fwd4.me", "fwib.net", "g.ro.lt", "gizmo.do", "gl.am", "go.9nl.com", "go.ign.com", "go.usa.gov", "goo.gl", "goshrink.com", "gurl.es",
"hex.io", "hiderefer.com", "hmm.ph", "href.in", "hsblinks.com", "htxt.it", "huff.to", "hulu.com", "hurl.me", "hurl.ws", "icanhaz.com", "idek.net", "ilix.in", "is.gd",
"its.my", "ix.lt", "j.mp", "jijr.com", "kl.am", "klck.me", "korta.nu", "krunchd.com", "l9k.net", "lat.ms", "liip.to", "liltext.com", "linkbee.com", "linkbun.ch",
"liurl.cn", "ln-s.net", "ln-s.ru", "lnk.gd", "lnk.ms", "lnkd.in", "lnkurl.com", "lru.jp", "lt.tl", "lurl.no", "macte.ch", "mash.to", "merky.de", "migre.me", "miniurl.com",
"minurl.fr", "mke.me", "moby.to", "moourl.com", "mrte.ch", "myloc.me", "myurl.in", "n.pr", "nbc.co", "nblo.gs", "nn.nf", "not.my", "notlong.com", "nsfw.in",
"nutshellurl.com", "nxy.in", "nyti.ms", "o-x.fr", "oc1.us", "om.ly", "omf.gd", "omoikane.net", "on.cnn.com", "on.mktw.net", "onforb.es", "orz.se", "ow.ly", "ping.fm",
"pli.gs", "pnt.me", "politi.co", "post.ly", "pp.gg", "profile.to", "ptiturl.com", "pub.vitrue.com", "qlnk.net", "qte.me", "qu.tc", "qy.fi", "r.ebay.com", "r.im", "rb6.me", "read.bi",
"readthis.ca", "reallytinyurl.com", "redir.ec", "redirects.ca", "redirx.com", "retwt.me", "ri.ms", "rickroll.it", "riz.gd", "rt.nu", "ru.ly", "rubyurl.com", "rurl.org",
"rww.tw", "s4c.in", "s7y.us", "safe.mn", "sameurl.com", "sdut.us", "shar.es", "shink.de", "shorl.com", "short.ie", "short.to", "shortlinks.co.uk", "shorturl.com",
"shout.to", "show.my", "shrinkify.com", "shrinkr.com", "shrt.fr", "shrt.st", "shrten.com", "shrunkin.com", "simurl.com", "slate.me", "smallr.com", "smsh.me", "smurl.name",
"sn.im", "snipr.com", "snipurl.com", "snurl.com", "sp2.ro", "spedr.com", "srnk.net", "srs.li", "starturl.com", "stks.co", "su.pr", "surl.co.uk", "surl.hu", "t.cn", "t.co", "t.lh.com",
"ta.gd", "tbd.ly", "tcrn.ch", "tgr.me", "tgr.ph", "tighturl.com", "tiniuri.com", "tiny.cc", "tiny.ly", "tiny.pl", "tinylink.in", "tinyuri.ca", "tinyurl.com", "tk.", "tl.gd",
"tmi.me", "tnij.org", "tnw.to", "tny.com", "to.ly", "togoto.us", "totc.us", "toysr.us", "tpm.ly", "tr.im", "tra.kz", "trunc.it", "twhub.com", "twirl.at",
"twitclicks.com", "twitterurl.net", "twitterurl.org", "twiturl.de", "twurl.cc", "twurl.nl", "u.mavrev.com", "u.nu", "u76.org", "ub0.cc", "ulu.lu", "updating.me", "ur1.ca",
"url.az", "url.co.uk", "url.ie", "url360.me", "url4.eu", "urlborg.com", "urlbrief.com", "urlcover.com", "urlcut.com", "urlenco.de", "urli.nl", "urls.im",
"urlshorteningservicefortwitter.com", "urlx.ie", "urlzen.com", "usat.ly", "use.my", "vb.ly", "vevo.ly", "vgn.am", "vl.am", "vm.lc", "w55.de", "wapo.st", "wapurl.co.uk", "wipi.es",
"wp.me", "x.vu", "xr.com", "xrl.in", "xrl.us", "xurl.es", "xurl.jp", "y.ahoo.it", "yatuc.com", "ye.pe", "yep.it", "yfrog.com", "yhoo.it", "yiyd.com", "youtu.be", "yuarel.com",
"z0p.de", "zi.ma", "zi.mu", "zipmyurl.com", "zud.me", "zurl.ws", "zz.gd", "zzang.kr", ".ws", "✩.ws", "✿.ws", "❥.ws", "➔.ws", "➞.ws", "➡.ws", "➨.ws", "➯.ws", "➹.ws", "➽.ws"];
if ($('#jqoembeddata').length === 0) $('<span id="jqoembeddata"></span>').appendTo('body');
return this.each(function () {
var container = $(this),
resourceURL = (url && (!url.indexOf('http://') || !url.indexOf('https://'))) ? url : container.attr("href"),
provider;
if (embedAction) {
settings.onEmbed = embedAction;
}
else if (!settings.onEmbed) {
settings.onEmbed = function (oembedData) {
$.fn.oembed.insertCode(this, settings.embedMethod, oembedData);
};
}
if (resourceURL !== null && resourceURL !== undefined) {
//Check if shorten URL
for (var j = 0, l = shortURLList.length; j < l; j++) {
var regExp = new RegExp('://' + shortURLList[j] + '/', "i");
provider = $.fn.oembed.getOEmbedProvider(resourceURL);
if (!provider && window.location.protocol !== "https:" && resourceURL.match(regExp) !== null) {
//AJAX to http://api.longurl.org/v2/expand?url=http://bit.ly/JATvIs&format=json&callback=hhh
var ajaxopts = $.extend({
url: "http://api.longurl.org/v2/expand",
dataType: 'jsonp',
data: {
url: resourceURL,
format: "json"
//callback: "?"
},
success: function (data) {
//this = $.fn.oembed;
resourceURL = data['long-url'];
provider = $.fn.oembed.getOEmbedProvider(data['long-url']);
//remove fallback
if (!!settings.fallback === false) {
provider = provider.name.toLowerCase() === 'opengraph' ? null : provider;
}
if (provider !== null) {
provider.params = getNormalizedParams(settings[provider.name]) || {};
provider.maxWidth = settings.maxWidth;
provider.maxHeight = settings.maxHeight;
embedCode(container, resourceURL, provider);
} else {
settings.onProviderNotFound.call(container, resourceURL);
}
},
error: function () {
settings.onError.call(container, resourceURL)
}
}, settings.longUrlAjaxOptions || settings.ajaxOptions || {});
$.ajax(ajaxopts);
return container;
}
}
//remove fallback
if (!!settings.fallback === false) {
provider = provider.name.toLowerCase() === 'opengraph' ? null : provider;
}
if (provider !== null) {
provider.params = getNormalizedParams(settings[provider.name]) || {};
provider.maxWidth = settings.maxWidth;
provider.maxHeight = settings.maxHeight;
embedCode(container, resourceURL, provider);
} else {
settings.onProviderNotFound.call(container, resourceURL);
}
}
return container;
});
};
var settings;
// Plugin defaults
$.fn.oembed.defaults = {
fallback: true,
maxWidth: null,
maxHeight: null,
includeHandle: true,
embedMethod: 'auto',
// "auto", "append", "fill"
onProviderNotFound: function () {
},
beforeEmbed: function () {
},
afterEmbed: function () {
},
onEmbed: false,
onError: function (a, b, c, d) {
console.log('err:', a, b, c, d)
},
ajaxOptions: {},
longUrlAjaxOptions: {}
};
/* Private functions */
function rand(length, current) { //Found on http://stackoverflow.com/questions/1349404/generate-a-string-of-5-random-characters-in-javascript
current = current ? current : '';
return length ? rand(--length, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz".charAt(Math.floor(Math.random() * 60)) + current) : current;
}
function getRequestUrl(provider, externalUrl) {
var url = provider.apiendpoint,
qs = "",
i;
url += (url.indexOf("?") <= 0) ? "?" : "&";
url = url.replace('#', '%23');
if (provider.maxWidth !== null && (typeof provider.params.maxwidth === 'undefined' || provider.params.maxwidth === null)) {
provider.params.maxwidth = provider.maxWidth;
}
if (provider.maxHeight !== null && (typeof provider.params.maxheight === 'undefined' || provider.params.maxheight === null)) {
provider.params.maxheight = provider.maxHeight;
}
for (i in provider.params) {
// We don't want them to jack everything up by changing the callback parameter
if (i == provider.callbackparameter)
continue;
// allows the options to be set to null, don't send null values to the server as parameters
if (provider.params[i] !== null)
qs += "&" + escape(i) + "=" + provider.params[i];
}
url += "format=" + provider.format + "&url=" + escape(externalUrl) + qs;
if (provider.dataType != 'json')
url += "&" + provider.callbackparameter + "=?";
return url;
}
function success(oembedData, externalUrl, container) {
$('#jqoembeddata').data(externalUrl, oembedData.code);
settings.beforeEmbed.call(container, oembedData);
settings.onEmbed.call(container, oembedData);
settings.afterEmbed.call(container, oembedData);
}
function embedCode(container, externalUrl, embedProvider) {
if ($('#jqoembeddata').data(externalUrl) != undefined && embedProvider.embedtag.tag != 'iframe') {
var oembedData = {code: $('#jqoembeddata').data(externalUrl)};
success(oembedData, externalUrl, container);
} else if (embedProvider.yql) {
var from = embedProvider.yql.from || 'htmlstring';
var url = embedProvider.yql.url ? embedProvider.yql.url(externalUrl) : externalUrl;
var query = 'SELECT * FROM ' + from
+ ' WHERE url="' + (url) + '"'
+ " and " + (/html/.test(from) ? 'xpath' : 'itemPath') + "='" + (embedProvider.yql.xpath || '/') + "'";
if (from == 'html')
query += " and compat='html5'";
var ajaxopts = $.extend({
url: "//query.yahooapis.com/v1/public/yql",
dataType: 'jsonp',
data: {
q: query,
format: "json",
env: 'store://datatables.org/alltableswithkeys',
callback: "?"
},
success: function (data) {
var result;
if (embedProvider.yql.xpath && embedProvider.yql.xpath == '//meta|//title|//link') {
var meta = {};
if (data.query == null) {
data.query = {};
}
if (data.query.results == null) {
data.query.results = {"meta": []};
}
for (var i = 0, l = data.query.results.meta.length; i < l; i++) {
var name = data.query.results.meta[i].name || data.query.results.meta[i].property || null;
if (name == null)continue;
meta[name.toLowerCase()] = data.query.results.meta[i].content;
}
if (!meta.hasOwnProperty("title") || !meta.hasOwnProperty("og:title")) {
if (data.query.results.title != null) {
meta.title = data.query.results.title;
}
}
if (!meta.hasOwnProperty("og:image") && data.query.results.hasOwnProperty("link")) {
for (var i = 0, l = data.query.results.link.length; i < l; i++) {
if (data.query.results.link[i].hasOwnProperty("rel")) {
if (data.query.results.link[i].rel == "apple-touch-icon") {
if (data.query.results.link[i].href.charAt(0) == "/") {
meta["og:image"] = url.match(/^(([a-z]+:)?(\/\/)?[^\/]+\/).*$/)[1] + data.query.results.link[i].href;
} else {
meta["og:image"] = data.query.results.link[i].href;
}
}
}
}
}
result = embedProvider.yql.datareturn(meta);
} else {
result = embedProvider.yql.datareturn ? embedProvider.yql.datareturn(data.query.results) : data.query.results.result;
}
if (result === false)return;
var oembedData = $.extend({}, result);
oembedData.code = result;
success(oembedData, externalUrl, container);
},
error: settings.onError.call(container, externalUrl, embedProvider)
}, settings.ajaxOptions || {});
$.ajax(ajaxopts);
} else if (embedProvider.templateRegex) {
if (embedProvider.embedtag.tag !== '') {
var flashvars = embedProvider.embedtag.flashvars || '';
var tag = embedProvider.embedtag.tag || 'embed';
var width = embedProvider.embedtag.width || 'auto';
var height = embedProvider.embedtag.height || 'auto';
var src = externalUrl.replace(embedProvider.templateRegex, embedProvider.apiendpoint);
if (!embedProvider.nocache) {
src += '&jqoemcache=' + rand(5);
}
if (embedProvider.apikey) {
src = src.replace('_APIKEY_', settings.apikeys[embedProvider.name]);
}
var code = $('<' + tag + '/>').attr('src', src).attr('width', width)
.attr('height', height)
.attr('allowfullscreen', embedProvider.embedtag.allowfullscreen || 'true')
.attr('allowscriptaccess', embedProvider.embedtag.allowfullscreen || 'always')
.css('max-height', settings.maxHeight || 'auto')
.css('max-width', settings.maxWidth || 'auto');
if (tag == 'embed') {
code.attr('type', embedProvider.embedtag.type || "application/x-shockwave-flash")
.attr('flashvars', externalUrl.replace(embedProvider.templateRegex, flashvars));
}
if (tag == 'iframe') {
code.attr('scrolling', embedProvider.embedtag.scrolling || "no")
.attr('frameborder', embedProvider.embedtag.frameborder || "0");
}
success({code: code}, externalUrl, container);
} else if (embedProvider.apiendpoint) {
//Add APIkey if true
if (embedProvider.apikey)
embedProvider.apiendpoint = embedProvider.apiendpoint.replace('_APIKEY_', settings.apikeys[embedProvider.name]);
ajaxopts = $.extend({
url: externalUrl.replace(embedProvider.templateRegex, embedProvider.apiendpoint),
dataType: 'jsonp',
success: function (data) {
var oembedData = $.extend({}, data);
oembedData.code = embedProvider.templateData(data);
success(oembedData, externalUrl, container);
},
error: settings.onError.call(container, externalUrl, embedProvider)
}, settings.ajaxOptions || {});
$.ajax(ajaxopts);
} else {
success({code: externalUrl.replace(embedProvider.templateRegex, embedProvider.template)}, externalUrl, container);
}
} else {
var requestUrl = getRequestUrl(embedProvider, externalUrl);
ajaxopts = $.extend({
url: requestUrl,
dataType: embedProvider.dataType || 'jsonp',
success: function (data) {
var oembedData = $.extend({}, data);
switch (oembedData.type) {
case "file": //Deviant Art has this
case "photo":
oembedData.code = $.fn.oembed.getPhotoCode(externalUrl, oembedData);
break;
case "video":
case "rich":
oembedData.code = $.fn.oembed.getRichCode(externalUrl, oembedData);
break;
default:
oembedData.code = $.fn.oembed.getGenericCode(externalUrl, oembedData);
break;
}
success(oembedData, externalUrl, container);
},
error: settings.onError.call(container, externalUrl, embedProvider)
}, settings.ajaxOptions || {});
$.ajax(ajaxopts);
}
}
function getNormalizedParams(params) {
if (params === null) return null;
var key, normalizedParams = {};
for (key in params) {
if (key !== null) normalizedParams[key.toLowerCase()] = params[key];
}
return normalizedParams;
}
/* Public functions */
$.fn.oembed.insertCode = function (container, embedMethod, oembedData) {
if (oembedData === null)
return;
if (embedMethod === 'auto' && container.attr('href') !== null) {
embedMethod = 'append';
} else if (embedMethod == 'auto') {
embedMethod = 'replace';
}
switch (embedMethod) {
case "replace":
container.replaceWith(oembedData.code);
break;
case "fill":
container.html(oembedData.code);
break;
case "append":
container.wrap('<div class="oembedall-container"></div>');
var oembedContainer = container.parent();
if (settings.includeHandle) {
$('<span class="oembedall-closehide">&darr;</span>').insertBefore(container).click(function () {
var encodedString = encodeURIComponent($(this).text());
$(this).html((encodedString == '%E2%86%91') ? '&darr;' : '&uarr;');
$(this).parent().children().last().toggle();
});
}
oembedContainer.append('<br/>');
try {
oembedData.code.clone().appendTo(oembedContainer);
} catch (e) {
oembedContainer.append(oembedData.code);
}
/* Make videos semi-responsive
* If parent div width less than embeded iframe video then iframe gets shrunk to fit smaller width
* If parent div width greater thans embed iframe use the max widht
* - works on youtubes and vimeo
*/
if (settings.maxWidth) {
var post_width = oembedContainer.parent().width();
if (post_width < settings.maxWidth) {
var iframe_width_orig = $('iframe', oembedContainer).width();
var iframe_height_orig = $('iframe', oembedContainer).height();
var ratio = iframe_width_orig / post_width;
$('iframe', oembedContainer).width(iframe_width_orig / ratio);
$('iframe', oembedContainer).height(iframe_height_orig / ratio);
} else {
if (settings.maxWidth) {
$('iframe', oembedContainer).width(settings.maxWidth);
}
if (settings.maxHeight) {
$('iframe', oembedContainer).height(settings.maxHeight);
}
}
}
break;
}
};
$.fn.oembed.getPhotoCode = function (url, oembedData) {
var code;
var alt = oembedData.title ? oembedData.title : '';
alt += oembedData.author_name ? ' - ' + oembedData.author_name : '';
alt += oembedData.provider_name ? ' - ' + oembedData.provider_name : '';
if (oembedData.url) {
code = '<div><a href="' + url + '" target=\'_blank\'><img src="' + oembedData.url + '" alt="' + alt + '"/></a></div>';
} else if (oembedData.thumbnail_url) {
var newURL = oembedData.thumbnail_url.replace('_s', '_b');
code = '<div><a href="' + url + '" target=\'_blank\'><img src="' + newURL + '" alt="' + alt + '"/></a></div>';
} else {
code = '<div>Error loading this picture</div>';
}
if (oembedData.html) {
code += "<div>" + oembedData.html + "</div>";
}
return code;
};
$.fn.oembed.getRichCode = function (url, oembedData) {
return oembedData.html;
};
$.fn.oembed.getGenericCode = function (url, oembedData) {
var title = ((oembedData.title) && (oembedData.title !== null)) ? oembedData.title : url;
var code = '<a href="' + url + '">' + title + '</a>';
if (oembedData.html) {
code += "<div>" + oembedData.html + "</div>";
}
return code;
};
$.fn.oembed.getOEmbedProvider = function (url) {
for (var i = 0; i < $.fn.oembed.providers.length; i++) {
for (var j = 0, l = $.fn.oembed.providers[i].urlschemes.length; j < l; j++) {
var regExp = new RegExp($.fn.oembed.providers[i].urlschemes[j], "i");
if (url.match(regExp) !== null)
return $.fn.oembed.providers[i];
}
}
return null;
};
// Constructor Function for OEmbedProvider Class.
$.fn.oembed.OEmbedProvider = function (name, type, urlschemesarray, apiendpoint, extraSettings) {
this.name = name;
this.type = type; // "photo", "video", "link", "rich", null
this.urlschemes = urlschemesarray;
this.apiendpoint = apiendpoint;
this.maxWidth = 500;
this.maxHeight = 400;
extraSettings = extraSettings || {};
if (extraSettings.useYQL) {
if (extraSettings.useYQL == 'xml') {
extraSettings.yql = {
xpath: "//oembed/html",
from: 'xml',
apiendpoint: this.apiendpoint,
url: function (externalurl) {
return this.apiendpoint + '?format=xml&url=' + externalurl
},
datareturn: function (results) {
return results.html.replace(/.*\[CDATA\[(.*)\]\]>$/, '$1') || ''
}
};
} else {
extraSettings.yql = {
from: 'json',
apiendpoint: this.apiendpoint,
url: function (externalurl) {
return this.apiendpoint + '?format=json&url=' + externalurl
},
datareturn: function (results) {
if (results.json.type != 'video' && (results.json.url || results.json.thumbnail_url)) {
return '<img src="' + (results.json.url || results.json.thumbnail_url) + '" />';
}
return results.json.html || ''
}
};
}
this.apiendpoint = null;
}
for (var property in extraSettings) {
this[property] = extraSettings[property];
}
this.format = this.format || 'json';
this.callbackparameter = this.callbackparameter || "callback";
this.embedtag = this.embedtag || {tag: ""};
};
/*
* Function to update existing providers
*
* @param {String} name The name of the provider
* @param {String} type The type of the provider can be "file", "photo", "video", "rich"
* @param {String} urlshemesarray Array of url of the provider
* @param {String} apiendpoint The endpoint of the provider
* @param {String} extraSettings Extra settings of the provider
*/
$.fn.updateOEmbedProvider = function (name, type, urlschemesarray, apiendpoint, extraSettings) {
for (var i = 0; i < $.fn.oembed.providers.length; i++) {
if ($.fn.oembed.providers[i].name === name) {
if (type !== null) {
$.fn.oembed.providers[i].type = type;
}
if (urlschemesarray !== null) {
$.fn.oembed.providers[i].urlschemes = urlschemesarray;
}
if (apiendpoint !== null) {
$.fn.oembed.providers[i].apiendpoint = apiendpoint;
}
if (extraSettings !== null) {
$.fn.oembed.providers[i].extraSettings = extraSettings;
for (var property in extraSettings) {
if (property !== null && extraSettings[property] !== null) {
$.fn.oembed.providers[i][property] = extraSettings[property];
}
}
}
}
}
};
/* Native & common providers */
$.fn.oembed.providers = [
//Video
new $.fn.oembed.OEmbedProvider("youtube", "video", ["youtube\\.com/watch.+v=[\\w-]+&?", "youtu\\.be/[\\w-]+", "youtube.com/embed"], '//www.youtube.com/embed/$1?wmode=transparent', {
templateRegex: /.*(?:v\=|be\/|embed\/)([\w\-]+)&?.*/, embedtag: {tag: 'iframe', width: '425', height: '349'}
}),
//new $.fn.oembed.OEmbedProvider("youtube", "video", ["youtube\\.com/watch.+v=[\\w-]+&?", "youtu\\.be/[\\w-]+"], 'http://www.youtube.com/oembed', {useYQL:'json'}),
//new $.fn.oembed.OEmbedProvider("youtubeiframe", "video", ["youtube.com/embed"], "$1?wmode=transparent",
// {templateRegex:/(.*)/,embedtag : {tag: 'iframe', width:'425',height: '349'}}),
new $.fn.oembed.OEmbedProvider("wistia", "video", ["wistia.com/medias/.+", "wistia.com/m/.+", "wistia.com/embed/.+", "wi.st/m/.+", "wi.st/embed/.+"], 'http://fast.wistia.com/oembed', {useYQL: 'json'}),
new $.fn.oembed.OEmbedProvider("xtranormal", "video", ["xtranormal\\.com/watch/.+"], "http://www.xtranormal.com/xtraplayr/$1/$2", {
templateRegex: /.*com\/watch\/([\w\-]+)\/([\w\-]+).*/, embedtag: {tag: 'iframe', width: '320', height: '269'}}),
new $.fn.oembed.OEmbedProvider("scivee", "video", ["scivee.tv/node/.+"], "http://www.scivee.tv/flash/embedCast.swf?", {
templateRegex: /.*tv\/node\/(.+)/, embedtag: {width: '480', height: '400', flashvars: "id=$1&type=3"}}),
new $.fn.oembed.OEmbedProvider("veoh", "video", ["veoh.com/watch/.+"], "http://www.veoh.com/swf/webplayer/WebPlayer.swf?version=AFrontend.5.7.0.1337&permalinkId=$1&player=videodetailsembedded&videoAutoPlay=0&id=anonymous", {
templateRegex: /.*watch\/([^\?]+).*/, embedtag: {width: '410', height: '341'}}),
new $.fn.oembed.OEmbedProvider("gametrailers", "video", ["gametrailers\\.com/video/.+"], "http://media.mtvnservices.com/mgid:moses:video:gametrailers.com:$2", {
templateRegex: /.*com\/video\/([\w\-]+)\/([\w\-]+).*/, embedtag: {width: '512', height: '288' }}),
new $.fn.oembed.OEmbedProvider("funnyordie", "video", ["funnyordie\\.com/videos/.+"], "http://player.ordienetworks.com/flash/fodplayer.swf?", {
templateRegex: /.*videos\/([^\/]+)\/([^\/]+)?/, embedtag: {width: 512, height: 328, flashvars: "key=$1"}}),
new $.fn.oembed.OEmbedProvider("colledgehumour", "video", ["collegehumor\\.com/video/.+"], "http://www.collegehumor.com/moogaloop/moogaloop.swf?clip_id=$1&use_node_id=true&fullscreen=1",
{templateRegex: /.*video\/([^\/]+).*/, embedtag: {width: 600, height: 338}}),
new $.fn.oembed.OEmbedProvider("metacafe", "video", ["metacafe\\.com/watch/.+"], "http://www.metacafe.com/fplayer/$1/$2.swf",
{templateRegex: /.*watch\/(\d+)\/(\w+)\/.*/, embedtag: {width: 400, height: 345}}),
new $.fn.oembed.OEmbedProvider("bambuser", "video", ["bambuser\\.com\/channel\/.*\/broadcast\/.*"], "http://static.bambuser.com/r/player.swf?vid=$1",
{templateRegex: /.*bambuser\.com\/channel\/.*\/broadcast\/(\w+).*/, embedtag: {width: 512, height: 339 }}),
new $.fn.oembed.OEmbedProvider("twitvid", "video", ["twitvid\\.com/.+"], "http://www.twitvid.com/embed.php?guid=$1&autoplay=0",
{templateRegex: /.*twitvid\.com\/(\w+).*/, embedtag: {tag: 'iframe', width: 480, height: 360 }}),
new $.fn.oembed.OEmbedProvider("aniboom", "video", ["aniboom\\.com/animation-video/.+"], "http://api.aniboom.com/e/$1",
{templateRegex: /.*animation-video\/(\d+).*/, embedtag: {width: 594, height: 334}}),
new $.fn.oembed.OEmbedProvider("vzaar", "video", ["vzaar\\.com/videos/.+", "vzaar.tv/.+"], "http://view.vzaar.com/$1/player?",
{templateRegex: /.*\/(\d+).*/, embedtag: {tag: 'iframe', width: 576, height: 324 }}),
new $.fn.oembed.OEmbedProvider("snotr", "video", ["snotr\\.com/video/.+"], "http://www.snotr.com/embed/$1",
{templateRegex: /.*\/(\d+).*/, embedtag: {tag: 'iframe', width: 400, height: 330}, nocache: 1 }),
new $.fn.oembed.OEmbedProvider("youku", "video", ["v.youku.com/v_show/id_.+"], "http://player.youku.com/player.php/sid/$1/v.swf",
{templateRegex: /.*id_(.+)\.html.*/, embedtag: {width: 480, height: 400}, nocache: 1 }),
new $.fn.oembed.OEmbedProvider("tudou", "video", ["tudou.com/programs/view/.+\/"], "http://www.tudou.com/v/$1/v.swf",
{templateRegex: /.*view\/(.+)\//, embedtag: {width: 480, height: 400}, nocache: 1 }),
new $.fn.oembed.OEmbedProvider("embedr", "video", ["embedr\\.com/playlist/.+"], "http://embedr.com/swf/slider/$1/425/520/default/false/std?",
{templateRegex: /.*playlist\/([^\/]+).*/, embedtag: {width: 425, height: 520}}),
new $.fn.oembed.OEmbedProvider("blip", "video", ["blip\\.tv/.+"], "//blip.tv/oembed/"),
new $.fn.oembed.OEmbedProvider("minoto-video", "video", ["http://api.minoto-video.com/publishers/.+/videos/.+", "http://dashboard.minoto-video.com/main/video/details/.+", "http://embed.minoto-video.com/.+"], "http://api.minoto-video.com/services/oembed.json", {useYQL: 'json'}),
new $.fn.oembed.OEmbedProvider("animoto", "video", ["animoto.com/play/.+"], "http://animoto.com/services/oembed"),
new $.fn.oembed.OEmbedProvider("hulu", "video", ["hulu\\.com/watch/.*"], "//www.hulu.com/api/oembed.json"),
new $.fn.oembed.OEmbedProvider("ustream", "video", ["ustream\\.tv/recorded/.*"], "http://www.ustream.tv/oembed", {useYQL: 'json'}),
new $.fn.oembed.OEmbedProvider("videojug", "video", ["videojug\\.com/(film|payer|interview).*"], "http://www.videojug.com/oembed.json", {useYQL: 'json'}),
new $.fn.oembed.OEmbedProvider("sapo", "video", ["videos\\.sapo\\.pt/.*"], "http://videos.sapo.pt/oembed", {useYQL: 'json'}),
new $.fn.oembed.OEmbedProvider("vodpod", "video", ["vodpod.com/watch/.*"], "http://vodpod.com/oembed.js", {useYQL: 'json'}),
new $.fn.oembed.OEmbedProvider("vimeo", "video", ["www\.vimeo\.com\/groups\/.*\/videos\/.*", "www\.vimeo\.com\/.*", "vimeo\.com\/groups\/.*\/videos\/.*", "vimeo\.com\/.*"], "//vimeo.com/api/oembed.json"),
new $.fn.oembed.OEmbedProvider("dailymotion", "video", ["dailymotion\\.com/.+"], '//www.dailymotion.com/services/oembed'),
new $.fn.oembed.OEmbedProvider("5min", "video", ["www\\.5min\\.com/.+"], 'http://api.5min.com/oembed.xml', {useYQL: 'xml'}),
new $.fn.oembed.OEmbedProvider("National Film Board of Canada", "video", ["nfb\\.ca/film/.+"], 'http://www.nfb.ca/remote/services/oembed/', {useYQL: 'json'}),
new $.fn.oembed.OEmbedProvider("qik", "video", ["qik\\.com/\\w+"], 'http://qik.com/api/oembed.json', {useYQL: 'json'}),
new $.fn.oembed.OEmbedProvider("revision3", "video", ["revision3\\.com"], "http://revision3.com/api/oembed/"),
new $.fn.oembed.OEmbedProvider("dotsub", "video", ["dotsub\\.com/view/.+"], "http://dotsub.com/services/oembed", {useYQL: 'json'}),
new $.fn.oembed.OEmbedProvider("clikthrough", "video", ["clikthrough\\.com/theater/video/\\d+"], "http://clikthrough.com/services/oembed"),
new $.fn.oembed.OEmbedProvider("Kinomap", "video", ["kinomap\\.com/.+"], "http://www.kinomap.com/oembed"),
new $.fn.oembed.OEmbedProvider("VHX", "video", ["vhx.tv/.+"], "http://vhx.tv/services/oembed.json"),
new $.fn.oembed.OEmbedProvider("bambuser", "video", ["bambuser.com/.+"], "http://api.bambuser.com/oembed/iframe.json"),
new $.fn.oembed.OEmbedProvider("justin.tv", "video", ["justin.tv/.+"], 'http://api.justin.tv/api/embed/from_url.json', {useYQL: 'json'}),
new $.fn.oembed.OEmbedProvider("vine", "video", ["vine.co/v/.*"], null,
{
templateRegex: /https?:\/\/w?w?w?.?vine\.co\/v\/([a-zA-Z0-9]*).*/,
template: '<iframe src="https://vine.co/v/$1/embed/postcard" width="600" height="600" allowfullscreen="true" allowscriptaccess="always" scrolling="no" frameborder="0"></iframe>' +
'<script async src="//platform.vine.co/static/scripts/embed.js" charset="utf-8"></script>',
nocache: 1
}),
new $.fn.oembed.OEmbedProvider("boxofficebuz", "video", ["boxofficebuz\\.com\\/embed/.+"], "http://boxofficebuz.com/embed/$1/$2", {templateRegex: [/.*boxofficebuz\.com\/embed\/(\w+)\/([\w*\-*]+)/], embedtag: {tag: 'iframe', width: 480, height: 360 }}),
new $.fn.oembed.OEmbedProvider("clipsyndicate", "video", ["clipsyndicate\\.com/video/play/.+", "clipsyndicate\\.com/embed/iframe\?.+"], "http://eplayer.clipsyndicate.com/embed/iframe?pf_id=1&show_title=0&va_id=$1&windows=1", {templateRegex: [/.*www\.clipsyndicate\.com\/video\/play\/(\w+)\/.*/, /.*eplayer\.clipsyndicate\.com\/embed\/iframe\?.*va_id=(\w+).*.*/], embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}),
new $.fn.oembed.OEmbedProvider("coub", "video", ["coub\\.com/.+"], "http://www.coub.com/embed/$1?muted=false&autostart=false&originalSize=false&hideTopBar=false&noSiteButtons=false&startWithHD=false", {templateRegex: [/.*coub\.com\/embed\/(\w+)\?*.*/, /.*coub\.com\/view\/(\w+).*/], embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}),
new $.fn.oembed.OEmbedProvider("discoverychannel", "video", ["snagplayer\\.video\\.dp\\.discovery\\.com/.+"], "http://snagplayer.video.dp.discovery.com/$1/snag-it-player.htm?auto=no", {templateRegex: [/.*snagplayer\.video\.dp\.discovery\/(\w+).*/], embedtag: {tag: 'iframe', width: 480, height: 360 }}),
new $.fn.oembed.OEmbedProvider("telly", "video", ["telly\\.com/.+"], "http://www.telly.com/embed.php?guid=$1&autoplay=0", {templateRegex: [/.*telly\.com\/embed\.php\?guid=(\w+).*/, /.*telly\.com\/(\w+).*/], embedtag: {tag: 'iframe', width: 480, height: 360 }}),
new $.fn.oembed.OEmbedProvider("minilogs", "video", ["minilogs\\.com/.+"], "http://www.minilogs.com/e/$1", {templateRegex: [/.*minilogs\.com\/e\/(\w+).*/, /.*minilogs\.com\/(\w+).*/], embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}),
new $.fn.oembed.OEmbedProvider("viddy", "video", ["viddy\\.com/.+"], "http://www.viddy.com/embed/video/$1", {templateRegex: [/.*viddy\.com\/embed\/video\/(\.*)/, /.*viddy\.com\/video\/(\.*)/], embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}),
new $.fn.oembed.OEmbedProvider("worldstarhiphop", "video", ["worldstarhiphop\\.com\/embed/.+"], "http://www.worldstarhiphop.com/embed/$1", {templateRegex: /.*worldstarhiphop\.com\/embed\/(\w+).*/, embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}),
new $.fn.oembed.OEmbedProvider("zapiks", "video", ["zapiks\\.fr\/.+"], "http://www.zapiks.fr/index.php?action=playerIframe&media_id=$1&autoStart=fals", {templateRegex: /.*zapiks\.fr\/index.php\?[\w\=\&]*media_id=(\w+).*/, embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}),
//Audio
new $.fn.oembed.OEmbedProvider("official.fm", "rich", ["official.fm/.+"], 'http://official.fm/services/oembed', {useYQL: 'json'}),
new $.fn.oembed.OEmbedProvider("chirbit", "rich", ["chirb.it/.+"], 'http://chirb.it/oembed.json', {useYQL: 'json'}),
new $.fn.oembed.OEmbedProvider("chirbit", "audio", ["chirb\\.it/.+"], "http://chirb.it/wp/$1", {templateRegex: [/.*chirb\.it\/wp\/(\w+).*/, /.*chirb\.it\/(\w+).*/], embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}),
new $.fn.oembed.OEmbedProvider("Huffduffer", "rich", ["huffduffer.com/[-.\\w@]+/\\d+"], "http://huffduffer.com/oembed"),
new $.fn.oembed.OEmbedProvider("Spotify", "rich", ["open.spotify.com/(track|album|user)/"], "https://embed.spotify.com/oembed/"),
new $.fn.oembed.OEmbedProvider("shoudio", "rich", ["shoudio.com/.+", "shoud.io/.+"], "http://shoudio.com/api/oembed"),
new $.fn.oembed.OEmbedProvider("mixcloud", "rich", ["mixcloud.com/.+"], 'http://www.mixcloud.com/oembed/', {useYQL: 'json'}),
new $.fn.oembed.OEmbedProvider("rdio.com", "rich", ["rd.io/.+", "rdio.com"], "http://www.rdio.com/api/oembed/"),
new $.fn.oembed.OEmbedProvider("Soundcloud", "rich", ["soundcloud.com/.+", "snd.sc/.+"], "//soundcloud.com/oembed", {format: 'js'}),
new $.fn.oembed.OEmbedProvider("bandcamp", "rich", ["bandcamp\\.com/album/.+"], null,
{
yql: {
xpath: "//meta[contains(@content, \\'EmbeddedPlayer\\')]",
from: 'html',
datareturn: function (results) {
return results.meta ? '<iframe width="400" height="100" src="' + results.meta.content + '" allowtransparency="true" frameborder="0"></iframe>' : false;
}
}
}),
//Photo
new $.fn.oembed.OEmbedProvider("deviantart", "photo", ["deviantart.com/.+", "fav.me/.+", "deviantart.com/.+"], "//backend.deviantart.com/oembed", {format: 'jsonp'}),
new $.fn.oembed.OEmbedProvider("skitch", "photo", ["skitch.com/.+"], null,
{
yql: {
xpath: "json",
from: 'json',
url: function (externalurl) {
return 'http://skitch.com/oembed/?format=json&url=' + externalurl
},
datareturn: function (data) {
return $.fn.oembed.getPhotoCode(data.json.url, data.json);
}
}
}),
new $.fn.oembed.OEmbedProvider("mobypicture", "photo", ["mobypicture.com/user/.+/view/.+", "moby.to/.+"], "http://api.mobypicture.com/oEmbed"),
new $.fn.oembed.OEmbedProvider("flickr", "photo", ["flickr\\.com/photos/.+"], "//flickr.com/services/oembed", {callbackparameter: 'jsoncallback'}),
new $.fn.oembed.OEmbedProvider("photobucket", "photo", ["photobucket\\.com/(albums|groups)/.+"], "http://photobucket.com/oembed/"),
new $.fn.oembed.OEmbedProvider("instagram", "photo", ["instagr\\.?am(\\.com)?/.+"], "//api.instagram.com/oembed"),
//new $.fn.oembed.OEmbedProvider("yfrog", "photo", ["yfrog\\.(com|ru|com\\.tr|it|fr|co\\.il|co\\.uk|com\\.pl|pl|eu|us)/.+"], "http://www.yfrog.com/api/oembed",{useYQL:"json"}),
new $.fn.oembed.OEmbedProvider("SmugMug", "photo", ["smugmug.com/[-.\\w@]+/.+"], "http://api.smugmug.com/services/oembed/"),
new $.fn.oembed.OEmbedProvider("dribbble", "photo", ["dribbble.com/shots/.+"], "http://api.dribbble.com/shots/$1?callback=?",
{
templateRegex: /.*shots\/([\d]+).*/,
templateData: function (data) {
if (!data.image_teaser_url) {
return false;
}
return '<img src="' + data.image_teaser_url + '"/>';
}
}),
new $.fn.oembed.OEmbedProvider("chart.ly", "photo", ["chart\\.ly/[a-z0-9]{6,8}"], "http://chart.ly/uploads/large_$1.png",
{templateRegex: /.*ly\/([^\/]+).*/, embedtag: {tag: 'img'}, nocache: 1}),
//new $.fn.oembed.OEmbedProvider("stocktwits.com", "photo", ["stocktwits\\.com/message/.+"], "http://charts.stocktwits.com/production/original_$1.png?",
// { templateRegex: /.*message\/([^\/]+).*/, embedtag: { tag: 'img'},nocache:1 }),
new $.fn.oembed.OEmbedProvider("circuitlab", "photo", ["circuitlab.com/circuit/.+"], "https://www.circuitlab.com/circuit/$1/screenshot/540x405/",
{templateRegex: /.*circuit\/([^\/]+).*/, embedtag: {tag: 'img'}, nocache: 1}),
new $.fn.oembed.OEmbedProvider("23hq", "photo", ["23hq.com/[-.\\w@]+/photo/.+"], "http://www.23hq.com/23/oembed", {useYQL: "json"}),
new $.fn.oembed.OEmbedProvider("img.ly", "photo", ["img\\.ly/.+"], "//img.ly/show/thumb/$1",
{templateRegex: /.*ly\/([^\/]+).*/, embedtag: {tag: 'img'}, nocache: 1}),
new $.fn.oembed.OEmbedProvider("twitgoo.com", "photo", ["twitgoo\\.com/.+"], "http://twitgoo.com/show/thumb/$1",
{templateRegex: /.*com\/([^\/]+).*/, embedtag: {tag: 'img'}, nocache: 1}),
new $.fn.oembed.OEmbedProvider("imgur.com", "photo", ["imgur\\.com/gallery/.+"], "http://imgur.com/$1l.jpg",
{templateRegex: /.*gallery\/([^\/]+).*/, embedtag: {tag: 'img'}, nocache: 1}),
new $.fn.oembed.OEmbedProvider("visual.ly", "rich", ["visual\\.ly/.+"], null,
{
yql: {
xpath: "//a[@id=\\'gc_article_graphic_image\\']/img",
from: 'htmlstring'
}
}),
new $.fn.oembed.OEmbedProvider("achewood", "photo", ["achewood\\.com\\/index.php\\?date=.+"], "http://www.achewood.com/comic.php?date=$1", {templateRegex: /.*achewood\.com\/index.php\?date=(\w+).*/, embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}),
new $.fn.oembed.OEmbedProvider("fotokritik", "photo", ["fotokritik\\.com/.+"], "http://www.fotokritik.com/embed/$1", {templateRegex: [/.*fotokritik\.com\/embed\/(\w+).*/, /.*fotokritik\.com\/(\w+).*/], embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}),
new $.fn.oembed.OEmbedProvider("giflike", "photo", ["giflike\\.com/.+"], "http://www.giflike.com/embed/$1", {templateRegex: [/.*giflike\.com\/embed\/(\w+).*/, /.*giflike\.com\/a\/(\w+).*/], embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}),
//Rich
new $.fn.oembed.OEmbedProvider("twitter", "rich", ["twitter.com/.+"], "https://api.twitter.com/1/statuses/oembed.json"),
new $.fn.oembed.OEmbedProvider("gmep", "rich", ["gmep.imeducate.com/.*", "gmep.org/.*"], "http://gmep.org/oembed.json"),
new $.fn.oembed.OEmbedProvider("urtak", "rich", ["urtak.com/(u|clr)/.+"], "http://oembed.urtak.com/1/oembed"),
new $.fn.oembed.OEmbedProvider("cacoo", "rich", ["cacoo.com/.+"], "http://cacoo.com/oembed.json"),
new $.fn.oembed.OEmbedProvider("dailymile", "rich", ["dailymile.com/people/.*/entries/.*"], "http://api.dailymile.com/oembed"),
new $.fn.oembed.OEmbedProvider("documentcloud", "rich", ["documentcloud.org/documents/.+"], "https://www.documentcloud.org/api/oembed.json"),
new $.fn.oembed.OEmbedProvider("dipity", "rich", ["dipity.com/timeline/.+"], 'http://www.dipity.com/oembed/timeline/', {useYQL: 'json'}),
new $.fn.oembed.OEmbedProvider("sketchfab", "rich", ["sketchfab.com/show/.+"], 'http://sketchfab.com/oembed', {useYQL: 'json'}),
new $.fn.oembed.OEmbedProvider("speakerdeck", "rich", ["speakerdeck.com/.+"], 'http://speakerdeck.com/oembed.json', {useYQL: 'json'}),
new $.fn.oembed.OEmbedProvider("popplet", "rich", ["popplet.com/app/.*"], "http://popplet.com/app/Popplet_Alpha.swf?page_id=$1&em=1",
{
templateRegex: /.*#\/([^\/]+).*/,
embedtag: {
width: 460,
height: 460
}
}),
new $.fn.oembed.OEmbedProvider("pearltrees", "rich", ["pearltrees.com/.*"], "http://cdn.pearltrees.com/s/embed/getApp?",
{
templateRegex: /.*N-f=1_(\d+).*N-p=(\d+).*/,
embedtag: {
width: 460,
height: 460,
flashvars: "lang=en_US&amp;embedId=pt-embed-$1-693&amp;treeId=$1&amp;pearlId=$2&amp;treeTitle=Diagrams%2FVisualization&amp;site=www.pearltrees.com%2FF"
}
}),
new $.fn.oembed.OEmbedProvider("prezi", "rich", ["prezi.com/.*"], "//prezi.com/bin/preziloader.swf?",
{
templateRegex: /.*com\/([^\/]+)\/.*/,
embedtag: {
width: 550,
height: 400,
flashvars: "prezi_id=$1&amp;lock_to_path=0&amp;color=ffffff&amp;autoplay=no&amp;autohide_ctrls=0"
}
}),
new $.fn.oembed.OEmbedProvider("tourwrist", "rich", ["tourwrist.com/tours/.+"], null,
{
templateRegex: /.*tours.([\d]+).*/,
template: function (wm, tourid) {
setTimeout(function () {
if (loadEmbeds)loadEmbeds();
}, 2000);
return "<div id='" + tourid + "' class='tourwrist-tour-embed direct'></div> <script type='text/javascript' src='http://tourwrist.com/tour_embed.js'></script>";
}
}),
new $.fn.oembed.OEmbedProvider("meetup", "rich", ["meetup\\.(com|ps)/.+"], "http://api.meetup.com/oembed"),
new $.fn.oembed.OEmbedProvider("ebay", "rich", ["ebay\\.*"], "http://togo.ebay.com/togo/togo.swf?2008013100",
{
templateRegex: /.*\/([^\/]+)\/(\d{10,13}).*/,
embedtag: {
width: 355,
height: 300,
flashvars: "base=http://togo.ebay.com/togo/&lang=en-us&mode=normal&itemid=$2&query=$1"
}
}),
new $.fn.oembed.OEmbedProvider("wikipedia", "rich", ["wikipedia.org/wiki/.+"], "http://$1.wikipedia.org/w/api.php?action=parse&page=$2&format=json&section=0&callback=?", {
templateRegex: /.*\/\/([\w]+).*\/wiki\/([^\/]+).*/,
templateData: function (data) {
if (!data.parse)
return false;
var text = data.parse['text']['*'].replace(/href="\/wiki/g, 'href="http://en.wikipedia.org/wiki');
return '<div id="content"><h3><a class="nav-link" href="http://en.wikipedia.org/wiki/' + data.parse['displaytitle'] + '">' + data.parse['displaytitle'] + '</a></h3>' + text + '</div>';
}
}),
new $.fn.oembed.OEmbedProvider("imdb", "rich", ["imdb.com/title/.+"], "http://www.imdbapi.com/?i=$1&callback=?",
{
templateRegex: /.*\/title\/([^\/]+).*/,
templateData: function (data) {
if (!data.Title)
return false;
return '<div id="content"><h3><a class="nav-link" href="http://imdb.com/title/' + data.imdbID + '/">' + data.Title + '</a> (' + data.Year + ')</h3><p>Rating: ' + data.imdbRating + '<br/>Genre: ' + data.Genre + '<br/>Starring: ' + data.Actors + '</p></div> <div id="view-photo-caption">' + data.Plot + '</div></div>';
}
}),
new $.fn.oembed.OEmbedProvider("livejournal", "rich", ["livejournal.com/"], "http://ljpic.seacrow.com/json/$2$4?jsonp=?"
, {
templateRegex: /(http:\/\/(((?!users).)+)\.livejournal\.com|.*users\.livejournal\.com\/([^\/]+)).*/,
templateData: function (data) {
if (!data.username)
return false;
return '<div><img src="' + data.image + '" align="left" style="margin-right: 1em;" /><span class="oembedall-ljuser"><a href="http://' + data.username + '.livejournal.com/profile"><img src="http://www.livejournal.com/img/userinfo.gif" alt="[info]" width="17" height="17" /></a><a href="http://' + data.username + '.livejournal.com/">' + data.username + '</a></span><br />' + data.name + '</div>';
}
}),
new $.fn.oembed.OEmbedProvider("circuitbee", "rich", ["circuitbee\\.com/circuit/view/.+"], "http://c.circuitbee.com/build/r/schematic-embed.html?id=$1",
{
templateRegex: /.*circuit\/view\/(\d+).*/,
embedtag: {
tag: 'iframe',
width: '500',
height: '350'
}
}),
new $.fn.oembed.OEmbedProvider("googlecalendar", "rich", ["www.google.com/calendar/embed?.+"], "$1",
{templateRegex: /(.*)/, embedtag: {tag: 'iframe', width: '800', height: '600' }}),
new $.fn.oembed.OEmbedProvider("jsfiddle", "rich", ["jsfiddle.net/[^/]+/?"], "http://jsfiddle.net/$1/embedded/result,js,resources,html,css/?",
{templateRegex: /.*net\/([^\/]+).*/, embedtag: {tag: 'iframe', width: '100%', height: '300' }}),
new $.fn.oembed.OEmbedProvider("jsbin", "rich", ["jsbin.com/.+"], "http://jsbin.com/$1/?",
{templateRegex: /.*com\/([^\/]+).*/, embedtag: {tag: 'iframe', width: '100%', height: '300' }}),
new $.fn.oembed.OEmbedProvider("jotform", "rich", ["form.jotform.co/form/.+"], "$1?",
{templateRegex: /(.*)/, embedtag: {tag: 'iframe', width: '100%', height: '507' }}),
new $.fn.oembed.OEmbedProvider("reelapp", "rich", ["reelapp\\.com/.+"], "http://www.reelapp.com/$1/embed",
{templateRegex: /.*com\/(\S{6}).*/, embedtag: {tag: 'iframe', width: '400', height: '338'}}),
new $.fn.oembed.OEmbedProvider("linkedin", "rich", ["linkedin.com/pub/.+"], "https://www.linkedin.com/cws/member/public_profile?public_profile_url=$1&format=inline&isFramed=true",
{templateRegex: /(.*)/, embedtag: {tag: 'iframe', width: '368px', height: 'auto'}}),
new $.fn.oembed.OEmbedProvider("timetoast", "rich", ["timetoast.com/timelines/[0-9]+"], "http://www.timetoast.com/flash/TimelineViewer.swf?passedTimelines=$1",
{templateRegex: /.*timelines\/([0-9]*)/, embedtag: { width: 550, height: 400}, nocache: 1}),
new $.fn.oembed.OEmbedProvider("pastebin", "rich", ["pastebin\\.com/[\\S]{8}"], "http://pastebin.com/embed_iframe.php?i=$1",
{templateRegex: /.*\/(\S{8}).*/, embedtag: {tag: 'iframe', width: '100%', height: 'auto'}}),
new $.fn.oembed.OEmbedProvider("mixlr", "rich", ["mixlr.com/.+"], "http://mixlr.com/embed/$1?autoplay=ae",
{templateRegex: /.*com\/([^\/]+).*/, embedtag: {tag: 'iframe', width: '100%', height: 'auto' }}),
new $.fn.oembed.OEmbedProvider("pastie", "rich", ["pastie\\.org/pastes/.+"], null, {yql: {xpath: '//pre[@class="textmate-source"]'}}),
new $.fn.oembed.OEmbedProvider("github", "rich", ["gist.github.com/.+"], "https://github.com/api/oembed"),
new $.fn.oembed.OEmbedProvider("github", "rich", ["github.com/[-.\\w@]+/[-.\\w@]+"], "https://api.github.com/repos/$1/$2?callback=?"
, {templateRegex: /.*\/([^\/]+)\/([^\/]+).*/,
templateData: function (data) {
if (!data.data.html_url)return false;
return '<div class="oembedall-githubrepos"><ul class="oembedall-repo-stats"><li>' + data.data.language + '</li><li class="oembedall-watchers"><a title="Watchers" href="' + data.data.html_url + '/watchers">&#x25c9; ' + data.data.watchers + '</a></li>'
+ '<li class="oembedall-forks"><a title="Forks" href="' + data.data.html_url + '/network">&#x0265; ' + data.data.forks + '</a></li></ul><h3><a href="' + data.data.html_url + '">' + data.data.name + '</a></h3><div class="oembedall-body"><p class="oembedall-description">' + data.data.description + '</p>'
+ '<p class="oembedall-updated-at">Last updated: ' + data.data.pushed_at + '</p></div></div>';
}
}),
new $.fn.oembed.OEmbedProvider("facebook", "rich", ["facebook.com"], null
, {templateRegex: /.*\/([^\/]+)\/([^\/]+).*/,
template: function (url) {
// adding script directly to DOM to make sure that it is loaded correctly.
if (!$.fn.oembed.facebokScriptHasBeenAdded) {
$('<div id="fb-root"></div>').appendTo('body');
var script = document.createElement('script');
script.type = 'text/javascript';
script.text = '(function(d, s, id) {var js, fjs = d.getElementsByTagName(s)[0];if (d.getElementById(id)) return;js = d.createElement(s); js.id = id;js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.0";fjs.parentNode.insertBefore(js, fjs);}(document, "script", "facebook-jssdk"));';
document.body.appendChild(script);
$.fn.oembed.facebokScriptHasBeenAdded = true;
}
// returning template with url of facebook post.
return '<div class="fb-post" data-href="' + url + '" data-width="520"><div class="fb-xfbml-parse-ignore"><a href="' + url + '"></div></div>';
}
}),
/*
// Saving old implementation of Facebook in case we will need it as example in the future.
new $.fn.oembed.OEmbedProvider("facebook", "rich", ["facebook.com/(people/[^\\/]+/\\d+|[^\\/]+$)"], "https://graph.facebook.com/$2$3/?callback=?"
,{templateRegex:/.*facebook.com\/(people\/[^\/]+\/(\d+).*|([^\/]+$))/,
templateData : function(data){ if(!data.id)return false;
var out = '<div class="oembedall-facebook1"><div class="oembedall-facebook2"><a href="http://www.facebook.com/">facebook</a> ';
if(data.from) out += '<a href="http://www.facebook.com/'+data.from.id+'">'+data.from.name+'</a>';
else if(data.link) out += '<a href="'+data.link+'">'+data.name+'</a>';
else if(data.username) out += '<a href="http://www.facebook.com/'+data.username+'">'+data.name+'</a>';
else out += '<a href="http://www.facebook.com/'+data.id+'">'+data.name+'</a>';
out += '</div><div class="oembedall-facebookBody"><div class="contents">';
if(data.picture) out += '<a href="'+data.link+'"><img src="'+data.picture+'"></a>';
else out += '<img src="https://graph.facebook.com/'+data.id+'/picture">';
if(data.from) out += '<a href="'+data.link+'">'+data.name+'</a>';
if(data.founded) out += 'Founded: <strong>'+data.founded+'</strong><br>';
if(data.category) out += 'Category: <strong>'+data.category+'</strong><br>';
if(data.website) out += 'Website: <strong><a href="'+data.website+'">'+data.website+'</a></strong><br>';
if(data.gender) out += 'Gender: <strong>'+data.gender+'</strong><br>';
if(data.description) out += data.description + '<br>';
out += '</div></div>';
return out;
}
}),
*/
new $.fn.oembed.OEmbedProvider("stackoverflow", "rich", ["stackoverflow.com/questions/[\\d]+"], "http://api.stackoverflow.com/1.1/questions/$1?body=true&jsonp=?"
, {templateRegex: /.*questions\/([\d]+).*/,
templateData: function (data) {
if (!data.questions)
return false;
var q = data.questions[0];
var body = $(q.body).text();
var out = '<div class="oembedall-stoqembed"><div class="oembedall-statscontainer"><div class="oembedall-statsarrow"></div><div class="oembedall-stats"><div class="oembedall-vote"><div class="oembedall-votes">'
+ '<span class="oembedall-vote-count-post"><strong>' + (q.up_vote_count - q.down_vote_count) + '</strong></span><div class="oembedall-viewcount">vote(s)</div></div>'
+ '</div><div class="oembedall-status"><strong>' + q.answer_count + '</strong>answer</div></div><div class="oembedall-views">' + q.view_count + ' view(s)</div></div>'
+ '<div class="oembedall-summary"><h3><a class="oembedall-question-hyperlink" href="http://stackoverflow.com/questions/' + q.question_id + '/">' + q.title + '</a></h3>'
+ '<div class="oembedall-excerpt">' + body.substring(0, 100) + '...</div><div class="oembedall-tags">';
for (i in q.tags) {
out += '<a title="" class="oembedall-post-tag" href="http://stackoverflow.com/questions/tagged/' + q.tags[i] + '">' + q.tags[i] + '</a>';
}
out += '</div><div class="oembedall-fr"><div class="oembedall-user-info"><div class="oembedall-user-gravatar32"><a href="http://stackoverflow.com/users/' + q.owner.user_id + '/' + q.owner.display_name + '">'
+ '<img width="32" height="32" alt="" src="http://www.gravatar.com/avatar/' + q.owner.email_hash + '?s=32&amp;d=identicon&amp;r=PG"></a></div><div class="oembedall-user-details">'
+ '<a href="http://stackoverflow.com/users/' + q.owner.user_id + '/' + q.owner.display_name + '">' + q.owner.display_name + '</a><br><span title="reputation score" class="oembedall-reputation-score">'
+ q.owner.reputation + '</span></div></div></div></div></div>';
return out;
}
}),
new $.fn.oembed.OEmbedProvider("wordpress", "rich", ["wordpress\\.com/.+", "blogs\\.cnn\\.com/.+", "techcrunch\\.com/.+", "wp\\.me/.+"], "http://public-api.wordpress.com/oembed/1.0/?for=jquery-oembed-all"),
new $.fn.oembed.OEmbedProvider("screenr", "rich", ["screenr\.com"], "http://www.screenr.com/embed/$1",
{templateRegex: /.*\/([^\/]+).*/, embedtag: {tag: 'iframe', width: '650', height: 396}}) ,
new $.fn.oembed.OEmbedProvider("gigpans", "rich", ["gigapan\\.org/[-.\\w@]+/\\d+"], "http://gigapan.org/gigapans/$1/options/nosnapshots/iframe/flash.html",
{templateRegex: /.*\/(\d+)\/?.*/, embedtag: {tag: 'iframe', width: '100%', height: 400 }}),
new $.fn.oembed.OEmbedProvider("scribd", "rich", ["scribd\\.com/.+"], "http://www.scribd.com/embeds/$1/content?start_page=1&view_mode=list",
{templateRegex: /.*doc\/([^\/]+).*/, embedtag: {tag: 'iframe', width: '100%', height: 600}}),
new $.fn.oembed.OEmbedProvider("kickstarter", "rich", ["kickstarter\\.com/projects/.+"], "$1/widget/card.html",
{templateRegex: /([^\?]+).*/, embedtag: {tag: 'iframe', width: '220', height: 380}}),
new $.fn.oembed.OEmbedProvider("amazon", "rich", ["amzn.com/B+", "amazon.com.*/(B\\S+)($|\\/.*)"], "http://rcm.amazon.com/e/cm?t=_APIKEY_&o=1&p=8&l=as1&asins=$1&ref=qf_br_asin_til&fc1=000000&IS2=1&lt1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr",
{
apikey: true,
templateRegex: /.*\/(B[0-9A-Z]+)($|\/.*)/,
embedtag: {
tag: 'iframe',
width: '120px',
height: '240px'}
}),
new $.fn.oembed.OEmbedProvider("slideshare", "rich", ["slideshare\.net"], "//www.slideshare.net/api/oembed/2", {format: 'jsonp'}),
new $.fn.oembed.OEmbedProvider("roomsharejp", "rich", ["roomshare\\.jp/(en/)?post/.*"], "http://roomshare.jp/oembed.json"),
new $.fn.oembed.OEmbedProvider("lanyard", "rich", ["lanyrd.com/\\d+/.+"], null,
{
yql: {
xpath: '(//div[@class="primary"])[1]',
from: 'htmlstring',
datareturn: function (results) {
if (!results.result)
return false;
return '<div class="oembedall-lanyard">' + results.result + '</div>';
}
}
}),
new $.fn.oembed.OEmbedProvider("asciiartfarts", "rich", ["asciiartfarts.com/\\d+.html"], null,
{
yql: {
xpath: '//pre/font',
from: 'htmlstring',
datareturn: function (results) {
if (!results.result)
return false;
return '<pre style="background-color:#000;">' + results.result + '</div>';
}
}
}),
new $.fn.oembed.OEmbedProvider("coveritlive", "rich", ["coveritlive.com/"], null, {
templateRegex: /(.*)/,
template: '<iframe src="$1" allowtransparency="true" scrolling="no" width="615px" frameborder="0" height="625px"></iframe>'}),
new $.fn.oembed.OEmbedProvider("polldaddy", "rich", ["polldaddy.com/"], null, {
templateRegex: /(?:https?:\/\/w?w?w?.?polldaddy.com\/poll\/)([0-9]*)\//,
template: '<script async type="text/javascript" charset="utf-8" src="http://static.polldaddy.com/p/$1.js"></script>',
nocache: 1
}),
new $.fn.oembed.OEmbedProvider("360io", "rich", ["360\\.io/.+"], "http://360.io/$1", {templateRegex: /.*360\.io\/(\w+).*/, embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}),
new $.fn.oembed.OEmbedProvider("bubbli", "rich", ["on\\.bubb\\.li/.+"], "http://on.bubb.li/$1", {templateRegex: /.*on\.bubb\.li\/(\w+).*/, embedtag: {tag: 'iframe', width: 480, height: 360}, nocache: 1 }),
new $.fn.oembed.OEmbedProvider("cloudup", "rich", ["cloudup\\.com/.+"], "http://cloudup.com/$1?chromeless", {templateRegex: [/.*cloudup\.com\/(\w+).*/], embedtag: {tag: 'iframe', width: 480, height: 360 }}),
new $.fn.oembed.OEmbedProvider("codepen", "rich", ["codepen.io/.+"], "http://codepen.io/$1/embed/$2", {templateRegex: [/.*io\/(\w+)\/pen\/(\w+).*/, /.*io\/(\w+)\/full\/(\w+).*/], embedtag: {tag: 'iframe', width: '100%', height: '300'}, nocache: 1 }),
new $.fn.oembed.OEmbedProvider("googleviews", "rich", ["(.*maps\\.google\\.com\\/maps\\?).+(output=svembed).+(cbp=(.*)).*"], "https://maps.google.com/maps?layer=c&panoid=$3&ie=UTF8&source=embed&output=svembed&cbp=$5", {templateRegex: /(.*maps\.google\.com\/maps\?).+(panoid=(\w+)&).*(cbp=(.*)).*/, embedtag: {tag: 'iframe', width: 480, height: 360}, nocache: 1 }),
new $.fn.oembed.OEmbedProvider("googlemaps", "rich", ["google\\.com\/maps\/place/.+"], "http://maps.google.com/maps?t=m&q=$1&output=embed", {templateRegex: /.*google\.com\/maps\/place\/([\w\+]*)\/.*/, embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}),
new $.fn.oembed.OEmbedProvider("imajize", "rich", ["embed\\.imajize\\.com/.+"], "http://embed.imajize.com/$1", {templateRegex: /.*embed\.imajize\.com\/(.*)/, embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}),
new $.fn.oembed.OEmbedProvider("mapjam", "rich", ["mapjam\\.com/.+"], "http://www.mapjam.com/$1", {templateRegex: /.*mapjam\.com\/(.*)/, embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}),
new $.fn.oembed.OEmbedProvider("polar", "rich", ["polarb\\.com/.+"], "http://assets-polarb-com.a.ssl.fastly.net/api/v4/publishers/unknown/embedded_polls/iframe?poll_id=$1", {templateRegex: /.*polarb\.com\/polls\/(\w+).*/, embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}),
new $.fn.oembed.OEmbedProvider("ponga", "rich", ["ponga\\.com/.+"], "https://www.ponga.com/embedded?id=$1", {templateRegex: [/.*ponga\.com\/embedded\?id=(\w+).*/, /.*ponga\.com\/(\w+).*/], embedtag: {tag: 'iframe', width: 480, height: 360 }, nocache: 1}),
];
})(jQuery);
//This is needed for gravatar :(
String.prototype.md5=function(){var a=function(a,b){var c=(a&65535)+(b&65535);var d=(a>>16)+(b>>16)+(c>>16);return d<<16|c&65535};var b=function(a,b){return a<<b|a>>>32-b};var c=function(c,d,e,f,g,h){return a(b(a(a(d,c),a(f,h)),g),e)};var d=function(a,b,d,e,f,g,h){return c(b&d|~b&e,a,b,f,g,h)};var e=function(a,b,d,e,f,g,h){return c(b&e|d&~e,a,b,f,g,h)};var f=function(a,b,d,e,f,g,h){return c(b^d^e,a,b,f,g,h)};var g=function(a,b,d,e,f,g,h){return c(d^(b|~e),a,b,f,g,h)};var h=function(b){var c,h,i,j,k,l=b.length;var m=1732584193;var n=-271733879;var o=-1732584194;var p=271733878;for(k=0;k<l;k+=16){c=m;h=n;i=o;j=p;m=d(m,n,o,p,b[k+0],7,-680876936);p=d(p,m,n,o,b[k+1],12,-389564586);o=d(o,p,m,n,b[k+2],17,606105819);n=d(n,o,p,m,b[k+3],22,-1044525330);m=d(m,n,o,p,b[k+4],7,-176418897);p=d(p,m,n,o,b[k+5],12,1200080426);o=d(o,p,m,n,b[k+6],17,-1473231341);n=d(n,o,p,m,b[k+7],22,-45705983);m=d(m,n,o,p,b[k+8],7,1770035416);p=d(p,m,n,o,b[k+9],12,-1958414417);o=d(o,p,m,n,b[k+10],17,-42063);n=d(n,o,p,m,b[k+11],22,-1990404162);m=d(m,n,o,p,b[k+12],7,1804603682);p=d(p,m,n,o,b[k+13],12,-40341101);o=d(o,p,m,n,b[k+14],17,-1502002290);n=d(n,o,p,m,b[k+15],22,1236535329);m=e(m,n,o,p,b[k+1],5,-165796510);p=e(p,m,n,o,b[k+6],9,-1069501632);o=e(o,p,m,n,b[k+11],14,643717713);n=e(n,o,p,m,b[k+0],20,-373897302);m=e(m,n,o,p,b[k+5],5,-701558691);p=e(p,m,n,o,b[k+10],9,38016083);o=e(o,p,m,n,b[k+15],14,-660478335);n=e(n,o,p,m,b[k+4],20,-405537848);m=e(m,n,o,p,b[k+9],5,568446438);p=e(p,m,n,o,b[k+14],9,-1019803690);o=e(o,p,m,n,b[k+3],14,-187363961);n=e(n,o,p,m,b[k+8],20,1163531501);m=e(m,n,o,p,b[k+13],5,-1444681467);p=e(p,m,n,o,b[k+2],9,-51403784);o=e(o,p,m,n,b[k+7],14,1735328473);n=e(n,o,p,m,b[k+12],20,-1926607734);m=f(m,n,o,p,b[k+5],4,-378558);p=f(p,m,n,o,b[k+8],11,-2022574463);o=f(o,p,m,n,b[k+11],16,1839030562);n=f(n,o,p,m,b[k+14],23,-35309556);m=f(m,n,o,p,b[k+1],4,-1530992060);p=f(p,m,n,o,b[k+4],11,1272893353);o=f(o,p,m,n,b[k+7],16,-155497632);n=f(n,o,p,m,b[k+10],23,-1094730640);m=f(m,n,o,p,b[k+13],4,681279174);p=f(p,m,n,o,b[k+0],11,-358537222);o=f(o,p,m,n,b[k+3],16,-722521979);n=f(n,o,p,m,b[k+6],23,76029189);m=f(m,n,o,p,b[k+9],4,-640364487);p=f(p,m,n,o,b[k+12],11,-421815835);o=f(o,p,m,n,b[k+15],16,530742520);n=f(n,o,p,m,b[k+2],23,-995338651);m=g(m,n,o,p,b[k+0],6,-198630844);p=g(p,m,n,o,b[k+7],10,1126891415);o=g(o,p,m,n,b[k+14],15,-1416354905);n=g(n,o,p,m,b[k+5],21,-57434055);m=g(m,n,o,p,b[k+12],6,1700485571);p=g(p,m,n,o,b[k+3],10,-1894986606);o=g(o,p,m,n,b[k+10],15,-1051523);n=g(n,o,p,m,b[k+1],21,-2054922799);m=g(m,n,o,p,b[k+8],6,1873313359);p=g(p,m,n,o,b[k+15],10,-30611744);o=g(o,p,m,n,b[k+6],15,-1560198380);n=g(n,o,p,m,b[k+13],21,1309151649);m=g(m,n,o,p,b[k+4],6,-145523070);p=g(p,m,n,o,b[k+11],10,-1120210379);o=g(o,p,m,n,b[k+2],15,718787259);n=g(n,o,p,m,b[k+9],21,-343485551);m=a(m,c);n=a(n,h);o=a(o,i);p=a(p,j)}return[m,n,o,p]};var i=function(a){var b="0123456789abcdef",c="",d,e=a.length*4;for(d=0;d<e;d++){c+=b.charAt(a[d>>2]>>d%4*8+4&15)+b.charAt(a[d>>2]>>d%4*8&15)}return c};var j=function(a){var b=(a.length+8>>6)+1;var c=[],d,e=b*16,f,g=a.length;for(d=0;d<e;d++){c.push(0)}for(f=0;f<g;f++){c[f>>2]|=(a.charCodeAt(f)&255)<<f%4*8}c[f>>2]|=128<<f%4*8;c[b*16-2]=g*8;return c};return i(h(j(this)))};

View file

@ -1,16 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
if(!defined('__XE__'))
{
exit();
}
if($called_position == 'after_module_proc' && Context::getResponseMethod() == 'HTML')
{
Context::loadFile('./addons/oembed/jquery.oembed.css');
Context::loadFile(array('./addons/oembed/jquery.oembed.js', 'body', '', null), true);
Context::loadFile(array('./addons/oembed/oembed.js', 'body', '', null), true);
}
/* End of file */

View file

@ -1,132 +0,0 @@
/**
* @file oembed.js
* @brief javascript code for oembed addon
* @author NAVER (developers@xpressengine.com)
*/
(function($){
var protocol_re = '(https?|ftp|news|telnet|irc|mms)://';
var domain_re = '(?:[\\w\\-]+\\.)+(?:[a-z]+)';
var max_255_re = '(?:1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9]?[0-9])';
var ip_re = '(?:'+max_255_re+'\\.){3}'+max_255_re;
var port_re = '(?::([0-9]+))?';
var user_re = '(?:/~[\\w-]+)?';
var path_re = '((?:/[\\w!"$-/:-@]+)*)';
var hash_re = '(?:#([\\w!-@]+))?';
var url_regex = new RegExp('('+protocol_re+'('+domain_re+'|'+ip_re+'|localhost'+')'+port_re+user_re+path_re+hash_re+')', 'ig');
var OEmbed = xe.createPlugin("OEmbed", {
targets : [],
init : function() {
this.targets = [];
this.enableAutoLink = false;
this.castedOembedA = false;
this.embedSetting = [];
// this.embedSetting.embedMethod = 'replace';
},
API_ONREADY : function() {
var thisPlugin = this;
// extract target text nodes
this.extractTargets($('.xe_content'));
if(this.oApp.getPlugin('autolink').length)
{
this.enableAutoLink = true;
}
thisPlugin.cast('OEMBEDA');
if(!this.enableAutoLink)
{
$(this.targets).each(function(){
thisPlugin.cast('OEMBED', [this]);
});
}
},
API_BEFORE_AUTOLINK : function(oSender, params) {
var thisPlugin = this;
thisPlugin.cast('OEMBEDA');
},
API_AFTER_AUTOLINK : function(oSender, params) {
this.oembed(params[0]);
},
API_OEMBED : function(oSender, params) {
if(this.enableAutoLink) return;
var thisPlugin = this;
var textNode = params[0];
if(!$(textNode).parent().length || $(textNode).parent().get(0).nodeName.toLowerCase() == 'a')
{
this.oembed($(textNode));
return;
}
var content = textNode.nodeValue;
var dummy = $('<span>');
content = content.replace(/</g, '&lt;').replace(/>/g, '&gt;');
content = content.replace(url_regex, '<a href="$1" target="_blank">$1</a>');
$(textNode).before(dummy);
$(textNode).replaceWith(content);
params[0] = dummy.next('a');
dummy.remove();
this.oembed(params[0]);
},
API_OEMBEDA : function(oSender, params) {
if(this.castedOembedA) return;
var thisPlugin = this;
this.castedOembedA = true;
$('.read_body a').not('_oembed').each(function(){
thisPlugin.oembed($(this));
});
},
oembed : function(target) {
var thisPlugin = this;
if(!this.embedSetting.maxWidth)
{
this.embedSetting.maxWidth = $('.xe_content').width();
}
if(!target) return;
if(target && target.nodeType == 3) target = $(target);
target.oembed(null, thisPlugin.embedSetting).addClass('_oembed');
},
extractTargets : function(obj) {
var thisPlugin = this;
var wrap = $('.xe_content', obj);
if(wrap.length) {
this.extractTargets(wrap);
return;
}
$(obj)
.contents()
.each(function(){
var node_name = this.nodeName.toLowerCase();
if($.inArray(node_name, ['a', 'pre', 'xml', 'textarea', 'input', 'select', 'option', 'code', 'script', 'style', 'iframe', 'button', 'img', 'embed', 'object', 'ins']) != -1) return;
// FIX ME : When this meanless code wasn't executed, url_regex do not run correctly. why?
url_regex.exec('');
if(this.nodeType == 3) { // text node
var content = this.nodeValue;
if(content.length < 5) return;
if(!/(http|https|ftp|news|telnet|irc|mms):\/\//i.test(content)) return;
thisPlugin.targets.push(this);
} else {
thisPlugin.extractTargets(this);
}
});
}
});
xe.registerPlugin(new OEmbed());
})(jQuery);

View file

@ -1,125 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon version="0.2">
<title xml:lang="ko">OpenID delegation ID</title>
<title xml:lang="zh-CN">OpenID</title>
<title xml:lang="en">OpenID Delegation ID</title>
<title xml:lang="vi">OpenID Delegation ID</title>
<title xml:lang="ge">OpenID Delegation ID</title>
<title xml:lang="es">Delegación ID para OpenID</title>
<title xml:lang="jp">OpenIDアドオン</title>
<title xml:lang="ru">Открытый ID(OpenID)</title>
<title xml:lang="zh-TW">OpenID</title>
<description xml:lang="ko">
본인의 도메인을 사용하여 오픈아이디로 활용할 수 있도록 합니다.
꼭 설정을 통해서 openid provider관련 값을 입력후 사용해주세요.
</description>
<description xml:lang="zh-CN">
可以把本人的域名当分散式身份验证系统(OpenID)来使用。
必须在设置中输入openid provider相关值后再使用。
</description>
<description xml:lang="en">
This addon enables you to use your own domain name as an OpenID.
Just be sure to set the values related with openid provider before using.
</description>
<description xml:lang="vi">
Addon này cho phép bạn sử dụng tên miền của mình như một OpenID.
Hãy kiểm tra để đặt giá trị liên quan với OpenID trước khi sử dụng.
</description>
<description xml:lang="ge">
Dieses Addon ermöglicht es Ihnen, mit Ihrem eigenen Domain-Namen als OpenID.
Einfach sicher sein, dass die Werte im Zusammenhang mit OpenID-Provider, bevor Sie.
</description>
<description xml:lang="es">
Utlizando su propio dominio puede usar como OpenID.
Debe utilizar luego de ingresar los valores relacionado con openid provider a través de la configuracion.
</description>
<description xml:lang="jp">
保有しているオリジナルドメインをオープンIDとして活用することが出来ます。
必ず設定にて、OpenIDプロバイダーの関連情報を入力してから使用して下さい。
</description>
<description xml:lang="ru">
Этот аддон позволяет Вам использовать Ваше доменное имя как OpenID.
Прежде, чем использовать, установите значения, имеющие отношение к openid-провайдеру .
</description>
<description xml:lang="zh-TW">
可將原本的域名當做OpenID來使用。
必須在設置中輸入openid provider相關資料後再使用。
</description>
<version>1.7</version>
<date>2013-11-27</date>
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
<name xml:lang="ko">NAVER</name>
<name xml:lang="zh-CN">NAVER</name>
<name xml:lang="en">NAVER</name>
<name xml:lang="vi">NAVER</name>
<name xml:lang="ge">NAVER</name>
<name xml:lang="es">NAVER</name>
<name xml:lang="jp">NAVER</name>
<name xml:lang="ru">NAVER</name>
<name xml:lang="zh-TW">NAVER</name>
</author>
<extra_vars>
<var name="server">
<title xml:lang="ko">server</title>
<title xml:lang="zh-CN">server</title>
<title xml:lang="en">server</title>
<title xml:lang="vi">Server</title>
<title xml:lang="ge">server</title>
<title xml:lang="es">Servidor</title>
<title xml:lang="jp">server</title>
<title xml:lang="ru">server</title>
<title xml:lang="zh-TW">server</title>
<description xml:lang="ko">openid.server 값을 입력해 주세요.</description>
<description xml:lang="zh-CN">请输入 openid.server 值。</description>
<description xml:lang="vi">Hãy nhập OpenID Server của bạn.</description>
<description xml:lang="en">Please input your openid.server value.</description>
<description xml:lang="ge">Bitte geben Sie Ihre openid.server Wert.</description>
<description xml:lang="es">Ingrese el valor del openid.server.</description>
<description xml:lang="jp">openid.server値を入力して下さい。</description>
<description xml:lang="ru">Пожалуйста, введите Ваше значение openid.server</description>
<description xml:lang="zh-TW">請輸入 openid.server 值。</description>
</var>
<var name="delegate">
<title xml:lang="ko">delegate</title>
<title xml:lang="en">delegate</title>
<title xml:lang="vi">Delegate</title>
<title xml:lang="ge">delegate</title>
<title xml:lang="zh-CN">delegate</title>
<title xml:lang="es">delegado</title>
<title xml:lang="jp">delegate</title>
<title xml:lang="ru">delegate</title>
<title xml:lang="zh-TW">delegate</title>
<description xml:lang="ko">openid.delegate값을 입력해주세요.</description>
<description xml:lang="zh-CN">请输入 openid.delegate 值。</description>
<description xml:lang="vi">Hãy nhập OpenID Delegate của bạn.</description>
<description xml:lang="en">Please input your openid.delegate value.</description>
<description xml:lang="ge">Bitte geben Sie Ihre openid.delegate Wert.</description>
<description xml:lang="es">Ingresar el valor del openid.delegate</description>
<description xml:lang="jp">openid.delegate値を入力して下さい。</description>
<description xml:lang="ru">Пожалуйста, введите Ваше значение openid.delegate</description>
<description xml:lang="zh-TW">請輸入 openid.delegate 值。</description>
</var>
<var name="xrds">
<title xml:lang="ko">xrds</title>
<title xml:lang="zh-CN">xrds</title>
<title xml:lang="en">xrds</title>
<title xml:lang="vi">xrds</title>
<title xml:lang="ge">xrds</title>
<title xml:lang="es">xrds</title>
<title xml:lang="jp">xrds</title>
<title xml:lang="ru">xrds</title>
<title xml:lang="zh-TW">xrds</title>
<description xml:lang="ko">X-XRDS-Location값을 입력해주세요.</description>
<description xml:lang="zh-CN">请输入 X-XRDS-Location 值。</description>
<description xml:lang="en">Please input your X-XRDS-Location value.</description>
<description xml:lang="vi">Hãy nhập X-XRDS-Location của bạn.</description>
<description xml:lang="ge">Bitte geben Sie Ihre X-XRDS-Standort Wert.</description>
<description xml:lang="es">Ingresar el valor de X-XRDS-Location</description>
<description xml:lang="jp">X-XRDS-Location値を入力して下さい。</description>
<description xml:lang="ru">Пожалуйста, введите Ваше значение X-XRDS-Локации.</description>
<description xml:lang="zh-TW">請輸入 X-XRDS-Location 值。</description>
</var>
</extra_vars>
</addon>

View file

@ -1,38 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
if(!defined('__XE__'))
exit();
/**
* @file openid_delegation_id.addon.php
* @author NAVER (developers@xpressengine.com)
* @brief OpenID Delegation ID Add-on
*
* This enables to use openID as user's homepage or blog url.
* Enter your open ID service information on the configuration.
* */
// Execute only wen called_position is before_module_init
if($called_position != 'before_module_init')
{
return;
}
// Get add-on settings(openid_delegation_id)
if(!$addon_info->server || !$addon_info->delegate || !$addon_info->xrds)
{
return;
}
$header_script = sprintf(
'<link rel="openid.server" href="%s" />' . "\n" .
'<link rel="openid.delegate" href="%s" />' . "\n" .
'<meta http-equiv="X-XRDS-Location" content="%s" />',
$addon_info->server,
$addon_info->delegate,
$addon_info->xrds
);
Context::addHtmlHeader($header_script);
/* End of file openid_delegation_id.addon.php */
/* Location: ./addons/openid_delegation_id/openid_delegation_id.addon.php */

View file

@ -6,11 +6,11 @@
본문 이미지를 하나의 갤러리 처럼 볼 수 있도록 하는 애드온입니다.
</description>
<description xml:lang="en">
Swipe your images of an document on your screens.
Swipe your images of a post on your screen.
</description>
<license>MIT License (codes from http://photoswipe.com/), GPLv2 (other codes by Rhymix contributors)</license>
<version>1.0.1</version>
<date>2016-04-27</date>
<version>RX_VERSION</version>
<date>RX_CORE</date>
<author email_address="misol.kr@gmail.com" link="https://github.com/misol">
<name xml:lang="ko">misol</name>
@ -20,4 +20,20 @@
<name xml:lang="ko">Rhymix contributors</name>
<name xml:lang="en">Rhymix contributors</name>
</author>
</addon>
<extra_vars>
<var name="display_name" type="select">
<title xml:lang="ko">파일이름 출력 설정</title>
<title xml:lang="en">Display Filenames</title>
<description xml:lang="ko">넘겨보기 실행시 하단에 파일이름을 출력할 것인지 여부를 선택합니다. 기본값은 사용하도록 되어있습니다.</description>
<description xml:lang="en">Whether the PhotoSwipe displays the filenames or not. The default is to display.</description>
<options value="block">
<title xml:lang="ko">사용</title>
<title xml:lang="en">Display</title>
</options>
<options value="none">
<title xml:lang="ko">사용 안함</title>
<title xml:lang="en">Hide</title>
</options>
</var>
</extra_vars>
</addon>

View file

@ -21,7 +21,10 @@ if($called_position == 'after_module_proc' && Context::getResponseMethod() == "H
Context::loadFile(array('./addons/photoswipe/rx_photoswipe.js', 'body', '', null), true);
$footer = FileHandler::readFile('./addons/photoswipe/PhotoSwipe/pswp.html');
Context::addHtmlFooter($footer);
$style_display = isset($addon_info->display_name) ? "<style>.pswp__caption__center { display:{$addon_info->display_name} }</style>" : '<style>.pswp__caption__center { display:block }</style>';
Context::addHtmlFooter($style_display . $footer);
}
/* End of file photoswipe.addon.php */

View file

@ -1,12 +1,14 @@
/* Modified version of a http://photoswipe.com/documentation/getting-started.html example. Modified by misol for rhymix */
var getPSImageSize = function(src) {
var testImg = new Image();
testImg.src = src;
var getPSImageSize = function(el) {
var size = new Array();
size[0] = testImg.width;
size[1] = testImg.height;
size[0] = el.naturalWidth ? el.naturalWidth : (el.width ? el.width : 0);
size[1] = el.naturalHeight ? el.naturalHeight : (el.height ? el.height : 0);
if (!size[0] || !size[1]) {
var test = new Image();
test.src = el.src;
size[0] = test.naturalWidth ? test.naturalWidth : (test.width ? test.width : 1000);
size[1] = test.naturalHeight ? test.naturalHeight : (test.height ? test.height : 1000);
}
return size;
}
@ -23,7 +25,7 @@ var initPhotoSwipeFromDOM = function(gallerySelector) {
// CSS selector for photoswipe items.
var ps_find_selector = 'img:not(' + ps_skip_elements + ps_skip_class + '), img' + ps_enroll_class;
// parse slide data (url, title, size ...) from DOM elements
// parse slide data (url, title, size ...) from DOM elements
// (children of gallerySelector)
var parseThumbnailElements = function(el) {
var imgElements = $(el).find(ps_find_selector),
@ -37,12 +39,12 @@ var initPhotoSwipeFromDOM = function(gallerySelector) {
imgEl = imgElements.get(i); // <img> element
// include only element nodes
if(imgEl.nodeType !== 1 || !$(imgEl).attr('data-pswp-pid')) {
// include only element nodes
if (imgEl.nodeType !== 1 || !imgEl.src || !$(imgEl).attr('data-pswp-pid')) {
continue;
}
size = getPSImageSize($(imgEl).attr('src'));
size = getPSImageSize(imgEl);
// create slide object
item = {
@ -54,11 +56,11 @@ var initPhotoSwipeFromDOM = function(gallerySelector) {
var ps_skip_alt_class = '.photoswipe-no-caption';
if(imgEl.alt && !$(imgEl).is(ps_skip_alt_class)) {
item.title = imgEl.alt;
item.title = imgEl.alt;
}
if(imgEl.title && !$(imgEl).is(ps_skip_alt_class)) {
item.title = imgEl.title;
item.title = imgEl.title;
}
item.el = imgEl; // save link to element for getThumbBoundsFn
@ -85,7 +87,7 @@ var initPhotoSwipeFromDOM = function(gallerySelector) {
if(!clickedListItem) {
return;
}
e = e || window.event;
e.preventDefault ? e.preventDefault() : e.returnValue = false;
@ -106,8 +108,8 @@ var initPhotoSwipeFromDOM = function(gallerySelector) {
}*/
for (var i = 0; i < numChildNodes; i++) {
if(childNodes[i].nodeType !== 1 || !$(childNodes[i]).attr('data-pswp-pid')) {
continue;
if(childNodes[i].nodeType !== 1 || !$(childNodes[i]).attr('data-pswp-pid')) {
continue;
}
if(childNodes[i] === clickedListItem) {
@ -138,7 +140,7 @@ var initPhotoSwipeFromDOM = function(gallerySelector) {
if(!vars[i]) {
continue;
}
var pair = vars[i].split('=');
var pair = vars[i].split('=');
if(pair.length < 2) {
continue;
}
@ -170,7 +172,7 @@ var initPhotoSwipeFromDOM = function(gallerySelector) {
// See Options -> getThumbBoundsFn section of documentation for more info
var thumbnail = items[index].el,
pageYScroll = window.pageYOffset || document.documentElement.scrollTop,
rect = thumbnail.getBoundingClientRect();
rect = thumbnail.getBoundingClientRect();
return {x:rect.left, y:rect.top + pageYScroll, w:rect.width};
},
@ -189,7 +191,7 @@ var initPhotoSwipeFromDOM = function(gallerySelector) {
// PhotoSwipe opened from URL
if(fromURL) {
if(options.galleryPIDs) {
// parse real index when custom PIDs are used
// parse real index when custom PIDs are used
// http://photoswipe.com/documentation/faq.html#custom-pid-in-url
for(var j = 0; j < items.length; j++) {
if(items[j].pid == index) {
@ -230,6 +232,7 @@ var initPhotoSwipeFromDOM = function(gallerySelector) {
var regx_skip = /(?:(modules|addons|classes|common|layouts|libs|widgets|widgetstyles)\/)/i;
var regx_allow_i6pngfix = /(?:common\/tpl\/images\/blank\.gif$)/i;
var isMobile = String(navigator.userAgent).match(/mobile/i);
var galleryImgEls = $(galleryElements[i]).find(ps_find_selector);
for(var j = 0, jl = galleryImgEls.length; j < jl; j++) {
// skip components
@ -238,6 +241,11 @@ var initPhotoSwipeFromDOM = function(gallerySelector) {
//$(galleryImgEls[j]).attr('data-pswp-uid', i+1);
$(galleryImgEls[j]).attr('data-pswp-pid', j+1);
// Fix stretching of image on mobile
if (isMobile) {
galleryImgEls[j].style.height = 'auto';
galleryImgEls[j].height = null;
}
}
}
@ -256,4 +264,4 @@ var initPhotoSwipeFromDOM = function(gallerySelector) {
// execute above function
initPhotoSwipeFromDOM('.xe_content');
initPhotoSwipeFromDOM('.rhymix_content, .xe_content');

View file

@ -45,8 +45,8 @@
使用點數系統時,可以在用戶名前顯示等級圖案。
等級圖案可以在模組 &gt; 點數系統中進行選擇。
</description>
<version>1.7</version>
<date>2013-11-27</date>
<version>RX_VERSION</version>
<date>RX_CORE</date>
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
<name xml:lang="ko">NAVER</name>

View file

@ -17,7 +17,7 @@ if($called_position != "before_display_content" || Context::get('act') == 'dispP
return;
}
require_once(_XE_PATH_ . 'addons/point_level_icon/point_level_icon.lib.php');
require_once __DIR__ . '/point_level_icon.lib.php';
$temp_output = preg_replace_callback('!<(div|span|a)([^\>]*)member_([0-9\-]+)([^\>]*)>(.*?)\<\/(div|span|a)\>!is', function($matches) use($addon_info) {
return pointLevelIconTrans($matches, $addon_info);

View file

@ -13,7 +13,7 @@ function pointLevelIconTrans($matches, $addon_info)
return $matches[0];
}
if($addon_info->icon_duplication != 'N')
if(!isset($addon_info->icon_duplication) || $addon_info->icon_duplication !== 'N')
{
// Check Group Image Mark
$oMemberModel = getModel('member');
@ -28,41 +28,41 @@ function pointLevelIconTrans($matches, $addon_info)
if(!isset($GLOBALS['_pointLevelIcon'][$member_srl]))
{
// Get point configuration
if(!$GLOBALS['_pointConfig'])
if(!isset($GLOBALS['_pointConfig']))
{
$oModuleModel = getModel('module');
$GLOBALS['_pointConfig'] = $oModuleModel->getModuleConfig('point');
$GLOBALS['_pointConfig'] = getModel('module')->getModuleConfig('point') ?? new stdClass;
}
$config = $GLOBALS['_pointConfig'];
// Get point model
if(!$GLOBALS['_pointModel'])
if(!isset($GLOBALS['_pointModel']))
{
$GLOBALS['_pointModel'] = getModel('point');
}
$oPointModel = &$GLOBALS['_pointModel'];
$oPointModel = $GLOBALS['_pointModel'];
// Get points
if(!$oPointModel->isExistsPoint($member_srl))
$exists = false;
$point = $oPointModel->getPoint($member_srl, false, $exists);
if(!$exists)
{
return $matches[0];
}
$point = $oPointModel->getPoint($member_srl);
// Get level
$level = $oPointModel->getLevel($point, $config->level_step);
$text = $matches[5];
// Get a path where level icon is
$level_icon = sprintf('%smodules/point/icons/%s/%d.gif', Context::getRequestUri(), $config->level_icon, $level);
$level_icon_type = $config->level_icon_type ?? 'gif';
$level_icon = sprintf('%smodules/point/icons/%s/%d.%s', Context::getRequestUri(), $config->level_icon, $level, $level_icon_type);
// Get per to go to the next level if not a top level
$per = NULL;
if($level < $config->max_level)
{
$next_point = $config->level_step[$level + 1];
$present_point = $config->level_step[$level];
$present_point = $config->level_step[$level] ?? 0;
if($next_point > 0)
{
$per = (int) (($point - $present_point) / ($next_point - $present_point) * 100);

View file

@ -1,119 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon version="0.2">
<title xml:lang="ko">reCAPTCHA</title>
<title xml:lang="en">reCAPTCHA</title>
<description xml:lang="ko">구글 reCAPTCHA 서비스를 사용하여 자동 가입 스팸을 방지합니다.</description>
<description xml:lang="en">Prevent automated signups and spam with Google's reCAPTCHA service.</description>
<version>1.0.0</version>
<date>2016-05-27</date>
<author email_address="kijin@kijinsung.com" link="https://github.com/kijin">
<name xml:lang="ko">Kijin Sung</name>
<name xml:lang="en">Kijin Sung</name>
</author>
<extra_vars>
<var name="site_key" type="text">
<title xml:lang="ko">Site Key</title>
<title xml:lang="en">Site Key</title>
</var>
<var name="secret_key" type="text">
<title xml:lang="ko">Secret Key</title>
<title xml:lang="en">Secret Key</title>
</var>
<var name="use_signup" type="select">
<title xml:lang="ko">회원가입에 사용</title>
<title xml:lang="en">Use on Signup Form</title>
<options value="Y">
<title xml:lang="ko"></title>
<title xml:lang="en">Yes</title>
</options>
<options value="N">
<title xml:lang="ko">아니오</title>
<title xml:lang="en">No</title>
</options>
</var>
<var name="use_recovery" type="select">
<title xml:lang="ko">ID/PW찾기에 사용</title>
<title xml:lang="en">Use on Account Recovery Form</title>
<options value="Y">
<title xml:lang="ko"></title>
<title xml:lang="en">Yes</title>
</options>
<options value="N">
<title xml:lang="ko">아니오</title>
<title xml:lang="en">No</title>
</options>
</var>
<var name="use_document" type="select">
<title xml:lang="ko">글쓰기에 사용</title>
<title xml:lang="en">Use on New Document</title>
<options value="N">
<title xml:lang="ko">아니오</title>
<title xml:lang="en">No</title>
</options>
<options value="Y">
<title xml:lang="ko"></title>
<title xml:lang="en">Yes</title>
</options>
</var>
<var name="use_comment" type="select">
<title xml:lang="ko">댓글쓰기에 사용</title>
<title xml:lang="en">Use on New Comment</title>
<options value="N">
<title xml:lang="ko">아니오</title>
<title xml:lang="en">No</title>
</options>
<options value="Y">
<title xml:lang="ko"></title>
<title xml:lang="en">Yes</title>
</options>
</var>
<var name="target_users" type="select">
<title xml:lang="ko">사용 대상</title>
<title xml:lang="en">Target Users</title>
<options value="non_members">
<title xml:lang="ko">비회원만 사용</title>
<title xml:lang="en">Non-members Only</title>
</options>
<options value="everyone">
<title xml:lang="ko">모든 방문자에게 사용</title>
<title xml:lang="en">Everyone</title>
</options>
</var>
<var name="target_frequency" type="select">
<title xml:lang="ko">사용 빈도</title>
<title xml:lang="en">Target Frequency</title>
<options value="every_time">
<title xml:lang="ko">매번 사용</title>
<title xml:lang="en">Every Time</title>
</options>
<options value="first_time_only">
<title xml:lang="ko">방문자당 최초 1회만 사용</title>
<title xml:lang="en">First Time Only</title>
</options>
</var>
<var name="theme" type="select">
<title xml:lang="ko">테마</title>
<title xml:lang="en">Theme</title>
<options value="light">
<title xml:lang="ko">밝은 테마</title>
<title xml:lang="en">Light</title>
</options>
<options value="dark">
<title xml:lang="ko">어두운 테마</title>
<title xml:lang="en">Dark</title>
</options>
</var>
<var name="size" type="select">
<title xml:lang="ko">크기</title>
<title xml:lang="en">Size</title>
<options value="normal">
<title xml:lang="ko">보통</title>
<title xml:lang="en">Normal</title>
</options>
<options value="compact">
<title xml:lang="ko">작게</title>
<title xml:lang="en">Compact</title>
</options>
</var>
</extra_vars>
</addon>

View file

@ -1,3 +0,0 @@
<?php
$lang->msg_recaptcha_server_error = 'An error occurred while verifying your reCAPTCHA response.';
$lang->msg_recaptcha_invalid_response = 'Please check reCAPTCHA.';

View file

@ -1,3 +0,0 @@
<?php
$lang->msg_recaptcha_server_error = 'reCAPTCHA 스팸방지 서버와 통신하는 도중 오류가 발생했습니다.';
$lang->msg_recaptcha_invalid_response = 'reCAPTCHA 스팸방지 기능을 체크해 주십시오.';

View file

@ -1,57 +0,0 @@
<?php
if (!defined('RX_BASEDIR') || !$addon_info->site_key || !$addon_info->secret_key || $called_position !== 'before_module_init')
{
return;
}
$current_action = Context::get('act');
$current_member = Context::get('logged_info');
if ($current_member->is_admin === 'Y')
{
$enable_captcha = false;
}
elseif ($addon_info->target_users !== 'everyone' && $current_member->member_srl)
{
$enable_captcha = false;
}
elseif ($addon_info->target_frequency !== 'every_time' && isset($_SESSION['recaptcha_authenticated']) && $_SESSION['recaptcha_authenticated'])
{
$enable_captcha = false;
}
elseif ($addon_info->use_signup === 'Y' && preg_match('/^(?:disp|proc)Member(?:SignUp|Insert)/i', $current_action))
{
$enable_captcha = true;
}
elseif ($addon_info->use_recovery === 'Y' && preg_match('/^(?:disp|proc)Member(?:FindAccount|ResendAuthMail)/i', $current_action))
{
$enable_captcha = true;
}
elseif ($addon_info->use_document === 'Y' && preg_match('/^(?:disp|proc)Board(Write|InsertDocument)/i', $current_action))
{
$enable_captcha = true;
}
elseif ($addon_info->use_comment === 'Y' && (preg_match('/^(?:disp|proc)Board(Content|InsertComment)/i', $current_action) || (!$current_action && Context::get('document_srl'))))
{
$enable_captcha = true;
}
else
{
$enable_captcha = false;
}
if ($enable_captcha)
{
include_once __DIR__ . '/recaptcha.class.php';
reCAPTCHA::init($addon_info);
if (strncasecmp('proc', $current_action, 4) === 0)
{
getController('module')->addTriggerFunction('moduleObject.proc', 'before', 'reCAPTCHA::check');
}
else
{
Context::set('captcha', new reCAPTCHA());
}
}

View file

@ -1,63 +0,0 @@
<?php
class reCAPTCHA
{
protected static $verify = 'https://www.google.com/recaptcha/api/siteverify';
protected static $config = null;
protected static $scripts_added = false;
protected static $instances_inserted = 0;
protected static $sequence = 1;
public static function init($config)
{
self::$config = $config;
}
public static function check()
{
$response = Context::get('g-recaptcha-response');
if (!$response)
{
return new Object(-1, lang('recaptcha.msg_recaptcha_invalid_response'));
}
$verify_request = \Requests::post(self::$verify, array(), array(
'secret' => self::$config->secret_key,
'response' => $response,
'remoteip' => \RX_CLIENT_IP,
));
$verify = @json_decode($verify_request->body, true);
if ($verify && isset($verify['error-codes']) && in_array('invalid-input-response', $verify['error-codes']))
{
return new Object(-1, lang('recaptcha.msg_recaptcha_invalid_response'));
}
elseif (!$verify || !$verify['success'] || (isset($verify['error-codes']) && $verify['error-codes']))
{
return new Object(-1, lang('recaptcha.msg_recaptcha_server_error'));
}
else
{
$_SESSION['recaptcha_authenticated'] = true;
return true;
}
}
public function __construct()
{
if (!self::$scripts_added)
{
self::$scripts_added = true;
Context::loadFile(array('./addons/recaptcha/recaptcha.js', 'body'));
Context::addHtmlFooter('<script src="https://www.google.com/recaptcha/api.js?render=explicit&amp;onload=reCaptchaCallback" async defer></script>');
$html = '<div id="recaptcha-config" data-sitekey="%s" data-theme="%s" data-size="%s"></div>';
$html = sprintf($html, escape(self::$config->site_key), self::$config->theme ?: 'light', self::$config->size ?: 'normal');
Context::addHtmlFooter($html);
}
}
public function __toString()
{
return sprintf('<div id="recaptcha-instance-%d" class="g-recaptcha"></div>', self::$instances_inserted++);
}
}

View file

@ -1,40 +0,0 @@
function reCaptchaCallback() {
var recaptcha_config = $("#recaptcha-config");
var recaptcha_instances = $(".g-recaptcha");
var recaptcha_instance_id = 1;
if (recaptcha_instances.size() === 0) {
var autoinsert_candidates = $("form").filter(function() {
var actinput = $("input[name='act']", this);
if (actinput.size() && actinput.val() && actinput.val().match(/^proc.+(Insert(Document|Comment|)|FindAccount|ResendAuthMail)/i)) {
return true;
}
var procfilter = $(this).attr("onsubmit");
if (procfilter && procfilter.match(/procFilter\b.+\binsert/i)) {
return true;
}
return false;
});
autoinsert_candidates.each(function() {
var new_instance = $('<div class="g-recaptcha"></div>');
new_instance.attr("id", "recaptcha-instance-" + recaptcha_instance_id++);
var autoinsert_point = $(this).find("button[type='submit'],input[type='submit']").parent();
if (autoinsert_point.size()) {
new_instance.insertBefore(autoinsert_point);
} else {
new_instance.appendTo($(this));
}
});
var recaptcha_instances = $(".g-recaptcha");
}
recaptcha_instances.each(function() {
var instance = $(this);
grecaptcha.render(instance.attr("id"), {
sitekey: recaptcha_config.data("sitekey"),
size: recaptcha_config.data("size"),
theme: recaptcha_config.data("theme")
});
});
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -1,53 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon version="0.2">
<title xml:lang="ko">본문내 이미지 조절 애드온</title>
<title xml:lang="jp">本文内イメージリーサイズアドオン</title>
<title xml:lang="zh-CN">内容区图片缩放插件</title>
<title xml:lang="en">Image Resizer</title>
<title xml:lang="vi">Thay đổi cỡ hình ảnh</title>
<title xml:lang="es">Imagen de control add-on bonmunnae</title>
<title xml:lang="ru">Аддон редактирования размера картинки в тексте</title>
<title xml:lang="ge">Image-Add-on bonmunnae</title>
<title xml:lang="zh-TW">圖片縮放</title>
<description xml:lang="ko">
본문내에 삽입된 이미지의 크기를 본문크기에 맞게 하고 클릭시 원본을 보여주는 애드온입니다.
</description>
<description xml:lang="jp">
本文内に挿入されたイメージのサイズを本文の幅サイズに合わせてリーサイズし、クリックした時、オリジナルサイズのイメージを表示します。
</description>
<description xml:lang="zh-CN">
自动调整主题内容区内的图片大小,点击将显示原始大小的插件。
</description>
<description xml:lang="vi">
Addon này sẽ lấy lại kích thước nguyên bản của hình ảnh trong bài viết hoặc bình luận khi bạn bấm vào hình.
</description>
<description xml:lang="en">
This addon resizes images inserted in the article. When clicked, the original images are shown.
</description>
<description xml:lang="es">
La imagen corporal se inserta dentro del cuerpo para que se adapte al tamaño de la muestra original cuando hago clic en los add-ons.
</description>
<description xml:lang="ru">
Аддон, изменяющий размер картинки к размеру текста, при клике на картинку, появляется полное изображение.
</description>
<description xml:lang="ge">
Body Bild eingefügt im Inneren des Körpers zu passen die Größe des Originals zeigen, wenn ich darauf klicke auf das Add-ons.
</description>
<description xml:lang="zh-TW">
自動調整文章内的圖片大小,點擊圖片後會顯示原始大小。
</description>
<version>1.7</version>
<date>2013-11-27</date>
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
<name xml:lang="ko">NAVER</name>
<name xml:lang="vi">NAVER</name>
<name xml:lang="jp">NAVER</name>
<name xml:lang="zh-CN">NAVER</name>
<name xml:lang="es">NAVER</name>
<name xml:lang="ge">NAVER</name>
<name xml:lang="ru">NAVER</name>
<name xml:lang="en">NAVER</name>
<name xml:lang="zh-TW">NAVER</name>
</author>
</addon>

View file

@ -1 +0,0 @@
.xe_content img{max-width:100%;height:auto !important}

View file

@ -1,268 +0,0 @@
/**
* @brief 화면내에서 상위 영역보다 이미지가 크면 리사이즈를 하고 클릭시 원본을 보여줄수 있도록 변경
**/
(function($){
var xScreen = null;
// 슬라이드를 위한 블랙 스크린을 만들거나 반환하는 함수
function getScreen() {
var body = $(document.body);
var controls, imgframe, closebtn, prevbtn, nextbtn;
// 스크린이 없으면 스크린을 만든다.
if (!xScreen) {
// 검은 스크린
xScreen = $("<div>")
.attr("id","xe_gallery_screen")
.css({
position:"fixed",
display:"none",
backgroundColor:"black",
zIndex:500,
opacity:0.7
});
// 이미지를 보여주고 컨트롤 버튼을 다룰 레이어
controls = $("<div>")
.attr("id","xe_gallery_controls")
.css({
position:"fixed",
display:"none",
overflow:"hidden",
zIndex:510
});
// 이전 버튼
prevbtn = $('<button type="button" id="xe_gallery_prevbtn" />')
.css({
left: "10px",
backgroundPosition: "0 -64px"
})
.click(function(){xScreen.xePrev()})
.appendTo(controls);
// 닫기 버튼
closebtn = $('<button type="button" id="xe_gallery_closebtn" />')
.css({
top: "10px",
backgroundPosition: "0 0"
})
.click(function(){xScreen.xeHide()})
.appendTo(controls);
// 다음 버튼
nextbtn = $('<button type="button" id="xe_gallery_nextbtn" />')
.attr("id", "xe_gallery_nextbtn")
.css({
right: "10px",
backgroundPosition: "0 -128px"
})
.click(function(){xScreen.xeNext()})
.appendTo(controls);
// 버튼 공통 속성
controls.find(">button")
.css({
position : "absolute",
width : "64px",
height : "64px",
zIndex : 530,
cursor : "pointer",
border : 0,
margin : 0,
padding : 0,
backgroundColor: "transparent",
backgroundImage: "url(" + request_uri + "addons/resize_image/btn.png)",
backgroundRepeat: "no-repeat",
opacity: ".5",
filter: "alpha(opacity=50)"
})
.mouseover(function(){
$(this).css({
opacity: "1",
filter: "alpha(opacity=100)"
});
})
.mouseout(function(){
$(this).css({
opacity: ".5",
filter: "alpha(opacity=50)"
});
})
.focus(function(){
$(this).trigger('mouseover');
})
.blur(function(){
$(this).trigger('mouseout');
})
;
// 이미지 홀더
imgframe = $(new Image());
imgframe
.attr("id", "xe_gallery_holder")
.css({
border: '5px solid white',
zindex: 520,
maxWidth: 'none',
borderRadius: '5px',
boxShadow: '0 0 10px #000'
})
.appendTo(controls).draggable();
body.append(xScreen).append(controls);
imgframe.bind('load', function(){
var clientWidth = $(window).width();
var clientHeight = $(window).height();
imgframe.css({
left : clientWidth/2 - imgframe.width()/2 + "px",
top : clientHeight/2 - imgframe.height()/2 + "px"
});
});
// xScreen 객체를 확장한다.
xScreen.xeShow = function() {
var clientWidth = $(window).width();
var clientHeight = $(window).height();
$("#xe_gallery_controls,#xe_gallery_screen").show().css({
top : 0,
right : 0,
bottom : 0,
left : 0
});
$("#xe_gallery_prevbtn,#xe_gallery_nextbtn").css("top", Math.round(clientHeight/2 - 32) + "px");
this.xeMove(0);
};
xScreen.xeHide = function(event) {
xScreen.hide();
controls.hide();
};
xScreen.xePrev = function() {
this.xeMove(-1);
};
xScreen.xeNext = function() {
this.xeMove(1);
};
xScreen.xeMove = function(val) {
var clientWidth = $(window).width();
var clientHeight = $(window).height();
this.index += val;
prevbtn.css("visibility", (this.index>0)?"visible":"hidden");
nextbtn.css("visibility", (this.index<this.list.size()-1)?"visible":"hidden");
//textyle 이미지 리사이즈 처리
var src = this.list.eq(this.index).attr("rawsrc");
if(!src) src = this.list.eq(this.index).attr("src");
imgframe.attr("src", src).removeAttr('width').removeAttr('height');
if(imgframe.width() > 0) {
imgframe.css({
left : clientWidth/2 - imgframe.width()/2 + "px",
top : clientHeight/2 - imgframe.height()/2 + "px"
});
}
closebtn.css({
left : clientWidth/2 - 32 + "px",
top : "10px"
}).focus();
};
// 스크린을 닫는 상황
$(document).keydown(function(e){
if(e.which == 27){
xScreen.xeHide();
return false;
} else {
return true;
}
});
} else {
controls = $("#xe_gallery_controls");
imgframe = $("#xe_gallery_holder");
closebtn = $("#xe_gallery_closebtn");
prevbtn = $("#xe_gallery_prevbtn");
nextbtn = $("#xe_gallery_nextbtn");
}
return xScreen;
}
// 이미지 슬라이드를 보는 함수
function slideshow(event) {
var container = $(this).closest('.xe_content');
var imglist = container.find("img[rel=xe_gallery]");
var currentIdx = $.inArray($(this).get(0), imglist.get());
var xScreen = getScreen();
// 스크린을 보여주고
xScreen.list = imglist;
xScreen.index = currentIdx;
xScreen.xeShow();
}
/* Window Load */
$(window).load(function(){
var regx_skip = /(?:(modules|addons|classes|common|layouts|libs|widgets|widgetstyles)\/)/i;
var regx_allow_i6pngfix = /(?:common\/tpl\/images\/blank\.gif$)/i;
/**
* 본문 구하기 위한 개체
* IE6에서 본문폭을 넘는 이미지가 있으면 크기로 구해지는 문제 우회용
**/
var dummy = $('<div style="height:1px;overflow:hidden;opacity:0;display:block;clear:both"></div>');
/**
* 리사이즈 실행 함수
**/
function doResize(contentWidth, count) {
// 재시도 회수 제한
if(!count) count = 0;
if(count >= 10) return;
var $img = this;
var beforSize = {'width':$img.width(), 'height':$img.height()};
// 이미지 사이즈를 구하지 못했을 때 재시도
if(!beforSize.width || !beforSize.height) {
setTimeout(function() {
doResize.call($img, contentWidth, ++count)
}, 200);
return;
}
// 리사이즈 필요 없으면 리턴
if(beforSize.width <= contentWidth) return;
var resize_ratio = contentWidth / beforSize.width;
$img
.removeAttr('width').removeAttr('height')
.css({
'width':contentWidth,
'height':parseInt(beforSize.height * resize_ratio, 10)
});
}
$('.xe_content').each(function() {
var contentWidth = dummy.appendTo(this).width();
dummy.remove();
if(!contentWidth) return;
$('img', this).each(function() {
var $img = $(this);
var imgSrc = $img.attr('src');
if(regx_skip.test(imgSrc) && !regx_allow_i6pngfix.test(imgSrc)) return;
$img.attr('rel', 'xe_gallery');
doResize.call($img, contentWidth);
});
/* live 이벤트로 적용 (image_gallery 컴포넌트와의 호환 위함) */
$(this).on('mouseover', 'img[rel=xe_gallery]', function() {
var $img = $(this);
if(!$img.parent('a').length && !$img.attr('onclick')) {
$img.css('cursor', 'pointer').click(slideshow);
}
});
});
});
})(jQuery);

View file

@ -1,28 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
if(!defined('__XE__'))
{
exit();
}
/**
* @file resize_image.addon.php
* @author NAVER (developers@xpressengine.com)
* @brief Add-on to resize images in the body
*/
if($called_position == 'after_module_proc' && Context::getResponseMethod() == "HTML" && !isCrawler())
{
if(Mobile::isFromMobilePhone())
{
Context::loadFile('./addons/resize_image/css/resize_image.mobile.css', true);
}
else
{
Context::loadJavascriptPlugin('ui');
Context::loadFile(array('./addons/resize_image/js/resize_image.js', 'body', '', null), true);
}
}
/* End of file resize_image.addon.php */
/* Location: ./addons/resize_image/resize_image.addon.php */

View file

@ -1,5 +1,4 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* CacheHandler
@ -12,7 +11,7 @@ class CacheHandler extends Handler
* Force file cache.
*/
protected $_always_use_file = false;
/**
* Get a instance of CacheHandler(for singleton)
*
@ -73,7 +72,7 @@ class CacheHandler extends Handler
*/
public function get($key, $modified_time = 0)
{
$value = Rhymix\Framework\Cache::get($key);
$value = Rhymix\Framework\Cache::get(strval($key));
return $value === null ? false : $value;
}
@ -89,7 +88,7 @@ class CacheHandler extends Handler
*/
public function put($key, $obj, $valid_time = 0)
{
return Rhymix\Framework\Cache::set($key, $obj, $valid_time, $this->_always_use_file);
return Rhymix\Framework\Cache::set(strval($key), $obj, intval($valid_time), $this->_always_use_file);
}
/**
@ -100,7 +99,7 @@ class CacheHandler extends Handler
*/
public function delete($key)
{
return Rhymix\Framework\Cache::delete($key);
return Rhymix\Framework\Cache::delete(strval($key));
}
/**
@ -113,7 +112,7 @@ class CacheHandler extends Handler
*/
public function isValid($key, $modified_time = 0)
{
return Rhymix\Framework\Cache::exists($key);
return Rhymix\Framework\Cache::exists(strval($key));
}
/**
@ -151,13 +150,10 @@ class CacheHandler extends Handler
* Make invalid group key (like delete group key)
*
* @param string $keyGroupName Group name
* @return void
* @return bool
*/
public function invalidateGroupKey($keyGroupName)
{
return Rhymix\Framework\Cache::clearGroup($keyGroupName);
return Rhymix\Framework\Cache::clearGroup(strval($keyGroupName));
}
}
/* End of file CacheHandler.class.php */
/* Location: ./classes/cache/CacheHandler.class.php */

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,76 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
require_once('DBMysql.class.php');
/**
* Class to use MySQL innoDB DBMS
* mysql innodb handling class
*
* Does not use prepared statements, since mysql driver does not support them
*
* @author NAVER (developers@xpressengine.com)
* @package /classes/db
* @version 0.1
*/
class DBMysql_innodb extends DBMysql
{
/**
* DB transaction start
* this method is private
* @return boolean
*/
function _begin($transactionLevel = 0)
{
$connection = $this->_getConnection('master');
if(!$transactionLevel)
{
$this->_query("START TRANSACTION", $connection);
}
else
{
$this->_query("SAVEPOINT SP" . $transactionLevel, $connection);
}
return true;
}
/**
* DB transaction rollback
* this method is private
* @return boolean
*/
function _rollback($transactionLevel = 0)
{
$connection = $this->_getConnection('master');
$point = $transactionLevel - 1;
if($point)
{
$this->_query("ROLLBACK TO SP" . $point, $connection);
}
else
{
$this->_query("ROLLBACK", $connection);
}
return true;
}
/**
* DB transaction commit
* this method is private
* @return boolean
*/
function _commit()
{
$connection = $this->_getConnection('master');
$this->_query("COMMIT", $connection);
return true;
}
}
DBMysql_innodb::$isSupported = function_exists('mysql_connect');
/* End of file DBMysql_innodb.class.php */
/* Location: ./classes/db/DBMysql_innodb.class.php */

View file

@ -1,413 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
require_once('DBMysql.class.php');
/**
* Class to use MySQLi DBMS as mysqli_*
* mysql handling class
*
* Does not use prepared statements, since mysql driver does not support them
*
* @author NAVER (developers@xpressengine.com)
* @package /classes/db
* @version 0.1
*/
class DBMysqli extends DBMysql
{
/**
* DB Connect
* this method is private
* @param array $connection connection's value is db_hostname, db_port, db_database, db_userid, db_password
* @return resource
*/
function __connect($connection)
{
// Attempt to connect
if($connection['port'])
{
$result = @mysqli_connect($connection['host'], $connection['user'], $connection['pass'], $connection['database'], $connection['port']);
}
else
{
$result = @mysqli_connect($connection['host'], $connection['user'], $connection['pass'], $connection['database']);
}
$error = mysqli_connect_errno();
if($error)
{
$this->setError($error, mysqli_connect_error());
return;
}
$this->charset = isset($connection['charset']) ? $connection['charset'] : 'utf8';
$this->db_version = $result->server_info;
mysqli_set_charset($result, $this->charset);
return $result;
}
/**
* DB disconnection
* this method is private
* @param resource $connection
* @return void
*/
function _close($connection)
{
mysqli_close($connection);
}
/**
* Handles quatation of the string variables from the query
* @param string $string
* @return string
*/
function addQuotes($string)
{
if(!is_numeric($string))
{
$connection = $this->_getConnection('master');
$string = mysqli_escape_string($connection, $string);
}
return $string;
}
/**
* Execute the query
* this method is private
* @param string $query
* @param resource $connection
* @return resource
*/
function __query($query, $connection)
{
if ($connection === null)
{
$this->setError(-1, 'Unable to connect to DB.');
return false;
}
if($this->use_prepared_statements == 'Y')
{
// 1. Prepare query
$stmt = mysqli_prepare($connection, $query);
if($stmt)
{
$types = '';
$params = array();
$this->_prepareQueryParameters($types, $params);
if(!empty($params))
{
$args[0] = $stmt;
$args[1] = $types;
$i = 2;
foreach($params as $key => $param)
{
$copy[$key] = $param;
$args[$i++] = &$copy[$key];
}
// 2. Bind parameters
$status = call_user_func_array('mysqli_stmt_bind_param', $args);
if(!$status)
{
$this->setError(-1, "Invalid arguments: $query" . mysqli_error($connection) . PHP_EOL . print_r($args, true));
}
}
// 3. Execute query
$status = mysqli_stmt_execute($stmt);
if(!$status)
{
$this->setError(-1, "Prepared statement failed: $query" . mysqli_error($connection) . PHP_EOL . print_r($args, true));
}
// Return stmt for other processing - like retrieving resultset (_fetch)
return $stmt;
// mysqli_stmt_close($stmt);
}
}
// Run the query statement
$result = mysqli_query($connection, $query);
// Error Check
$error = mysqli_error($connection);
if($error)
{
$this->setError(mysqli_errno($connection), $error);
}
// Return result
return $result;
}
/**
* Before execute query, prepare statement
* this method is private
* @param string $types
* @param array $params
* @return void
*/
function _prepareQueryParameters(&$types, &$params)
{
$types = '';
$params = array();
if(!$this->param)
{
return;
}
foreach($this->param as $k => $o)
{
$value = $o->getUnescapedValue();
$type = $o->getType();
// Skip column names -> this should be concatenated to query string
if($o->isColumnName())
{
continue;
}
switch($type)
{
case 'number' :
$type = 'i';
break;
case 'varchar' :
$type = 's';
break;
default:
$type = 's';
}
if(is_array($value))
{
foreach($value as $v)
{
$params[] = $v;
$types .= $type;
}
}
else
{
$params[] = $value;
$types .= $type;
}
}
}
/**
* Fetch the result
* @param resource $result
* @param int|NULL $arrayIndexEndValue
* @return array
*/
function _fetch($result, $arrayIndexEndValue = NULL)
{
if($this->use_prepared_statements != 'Y')
{
return parent::_fetch($result, $arrayIndexEndValue);
}
$output = array();
if(!$this->isConnected() || $this->isError() || !$result)
{
return $output;
}
// Prepared stements: bind result variable and fetch data
$stmt = $result;
$meta = mysqli_stmt_result_metadata($stmt);
$fields = mysqli_fetch_fields($meta);
/**
* Mysqli has a bug that causes LONGTEXT columns not to get loaded
* Unless store_result is called before
* MYSQLI_TYPE for longtext is 252
*/
$longtext_exists = false;
foreach($fields as $field)
{
if(isset($resultArray[$field->name])) // When joined tables are used and the same column name appears twice, we should add it separately, otherwise bind_result fails
{
$field->name = 'repeat_' . $field->name;
}
// Array passed needs to contain references, not values
$row[$field->name] = "";
$resultArray[$field->name] = &$row[$field->name];
if($field->type == 252)
{
$longtext_exists = true;
}
}
$resultArray = array_merge(array($stmt), $resultArray);
if($longtext_exists)
{
mysqli_stmt_store_result($stmt);
}
call_user_func_array('mysqli_stmt_bind_result', $resultArray);
$rows = array();
while(mysqli_stmt_fetch($stmt))
{
$resultObject = new stdClass();
foreach($resultArray as $key => $value)
{
if($key === 0)
{
continue; // Skip stmt object
}
if(strpos($key, 'repeat_'))
{
$key = substr($key, 6);
}
$resultObject->$key = $value;
}
$rows[] = $resultObject;
}
mysqli_stmt_close($stmt);
if($arrayIndexEndValue)
{
foreach($rows as $row)
{
$output[$arrayIndexEndValue--] = $row;
}
}
else
{
$output = $rows;
}
if(count($output) == 1)
{
if(isset($arrayIndexEndValue))
{
return $output;
}
else
{
return $output[0];
}
}
return $output;
}
/**
* Handles insertAct
* @param Object $queryObject
* @param boolean $with_values
* @return resource
*/
function _executeInsertAct($queryObject, $with_values = false)
{
if($this->use_prepared_statements != 'Y')
{
return parent::_executeInsertAct($queryObject);
}
$this->param = $queryObject->getArguments();
$result = parent::_executeInsertAct($queryObject, $with_values);
unset($this->param);
return $result;
}
/**
* Handles updateAct
* @param Object $queryObject
* @param boolean $with_values
* @return resource
*/
function _executeUpdateAct($queryObject, $with_values = false)
{
if($this->use_prepared_statements != 'Y')
{
return parent::_executeUpdateAct($queryObject);
}
$this->param = $queryObject->getArguments();
$result = parent::_executeUpdateAct($queryObject, $with_values);
unset($this->param);
return $result;
}
/**
* Handles deleteAct
* @param Object $queryObject
* @param boolean $with_values
* @return resource
*/
function _executeDeleteAct($queryObject, $with_values = false)
{
if($this->use_prepared_statements != 'Y')
{
return parent::_executeDeleteAct($queryObject);
}
$this->param = $queryObject->getArguments();
$result = parent::_executeDeleteAct($queryObject, $with_values);
unset($this->param);
return $result;
}
/**
* Handle selectAct
* In order to get a list of pages easily when selecting \n
* it supports a method as navigation
* @param Object $queryObject
* @param resource $connection
* @param boolean $with_values
* @return Object
*/
function _executeSelectAct($queryObject, $connection = null, $with_values = false)
{
if($this->use_prepared_statements != 'Y')
{
return parent::_executeSelectAct($queryObject, $connection);
}
$this->param = $queryObject->getArguments();
$result = parent::_executeSelectAct($queryObject, $connection, $with_values);
unset($this->param);
return $result;
}
/**
* Get the ID generated in the last query
* Return next sequence from sequence table
* This method use only mysql
* @return int
*/
function db_insert_id()
{
$connection = $this->_getConnection('master');
return mysqli_insert_id($connection);
}
/**
* Fetch a result row as an object
* @param resource $result
* @return object
*/
function db_fetch_object(&$result)
{
return mysqli_fetch_object($result);
}
/**
* Free result memory
* @param resource $result
* @return boolean Returns TRUE on success or FALSE on failure.
*/
function db_free_result(&$result)
{
return mysqli_free_result($result);
}
}
DBMysqli::$isSupported = function_exists('mysqli_connect');
/* End of file DBMysqli.class.php */
/* Location: ./classes/db/DBMysqli.class.php */

View file

@ -1,86 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
require_once('DBMysql.class.php');
require_once('DBMysqli.class.php');
/**
* Class to use MySQLi innoDB DBMS as mysqli_*
* mysql innodb handling class
*
* Does not use prepared statements, since mysql driver does not support them
*
* @author NAVER (developers@xpressengine.com)
* @package /classes/db
* @version 0.1
*/
class DBMysqli_innodb extends DBMysqli
{
/**
* DB transaction start
* this method is private
* @return boolean
*/
function _begin($transactionLevel = 0)
{
$connection = $this->_getConnection('master');
if(!$transactionLevel)
{
if(function_exists('mysqli_begin_transaction'))
{
mysqli_begin_transaction($connection);
$this->setQueryLog(array('query' => 'START TRANSACTION'));
}
else
{
$this->_query("START TRANSACTION" . $point, $connection);
}
}
else
{
$this->_query("SAVEPOINT SP" . $transactionLevel, $connection);
}
return true;
}
/**
* DB transaction rollback
* this method is private
* @return boolean
*/
function _rollback($transactionLevel = 0)
{
$connection = $this->_getConnection('master');
$point = $transactionLevel - 1;
if($point)
{
$this->_query("ROLLBACK TO SP" . $point, $connection);
}
else
{
mysqli_rollback($connection);
$this->setQueryLog(array('query' => 'ROLLBACK'));
}
return true;
}
/**
* DB transaction commit
* this method is private
* @return boolean
*/
function _commit()
{
$connection = $this->_getConnection('master');
mysqli_commit($connection);
$this->setQueryLog(array('query' => 'COMMIT'));
return true;
}
}
DBMysqli_innodb::$isSupported = function_exists('mysqli_connect');
/* End of file DBMysqli.class.php */
/* Location: ./classes/db/DBMysqli.class.php */

View file

@ -1,677 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* @author NAVER (developers@xpressengine.com)
* @package /classes/db/queryparts
* @version 0.1
*/
class Query extends Object
{
/**
* Query id, defined in query xml file
* @var string
*/
var $queryID;
/**
* DML type, ex) INSERT, DELETE, UPDATE, SELECT
* @var string
*/
var $action;
/**
* priority level ex)LOW_PRIORITY, HIGHT_PRIORITY
* @var string
*/
var $priority;
/**
* column list
* @var string|array
*/
var $columns;
/**
* table list
* @var string|array
*/
var $tables;
/**
* condition list
* @var string|array
*/
var $conditions;
/**
* group list
* @var string|array
*/
var $groups;
/**
* order list
* @var array
*/
var $orderby;
/**
* limit count
* @var int
*/
var $limit;
/**
* argument list
* @var array
*/
var $arguments = NULL;
/**
* column list
* @var array
*/
var $columnList = NULL;
/**
* order by text
* @var string
*/
var $_orderByString;
/**
* constructor
* @param string $queryID
* @param string $action
* @param string|array $columns
* @param string|array $tables
* @param string|array $conditions
* @param string|array $groups
* @param string|array $orderby
* @param int $limit
* @param string $priority
* @return void
*/
function __construct($queryID = NULL
, $action = NULL
, $columns = NULL
, $tables = NULL
, $conditions = NULL
, $groups = NULL
, $orderby = NULL
, $limit = NULL
, $priority = NULL)
{
$this->queryID = $queryID;
$this->action = $action;
$this->priority = $priority;
if(!isset($tables))
{
return;
}
$this->columns = $this->setColumns($columns);
$this->tables = $this->setTables($tables);
$this->conditions = $this->setConditions($conditions);
$this->groups = $this->setGroups($groups);
$this->orderby = $this->setOrder($orderby);
$this->limit = $this->setLimit($limit);
}
function show()
{
return TRUE;
}
function setQueryId($queryID)
{
$this->queryID = $queryID;
}
function setAction($action)
{
$this->action = $action;
}
function setPriority($priority)
{
$this->priority = $priority;
}
function setColumnList($columnList)
{
$this->columnList = $columnList;
if(count($this->columnList) > 0)
{
$selectColumns = array();
$dbParser = DB::getParser();
foreach($this->columnList as $columnName)
{
$columnName = $dbParser->escapeColumn($columnName);
$selectColumns[] = new SelectExpression($columnName);
}
unset($this->columns);
$this->columns = $selectColumns;
}
}
function setColumns($columns)
{
if(!isset($columns) || count($columns) === 0)
{
$this->columns = array(new StarExpression());
return;
}
if(!is_array($columns))
{
$columns = array($columns);
}
$this->columns = $columns;
}
function setTables($tables)
{
if(!isset($tables) || count($tables) === 0)
{
$this->setError(TRUE);
$this->setMessage("You must provide at least one table for the query.");
return;
}
if(!is_array($tables))
{
$tables = array($tables);
}
$this->tables = $tables;
}
function setSubquery($subquery)
{
$this->subquery = $subquery;
}
function setConditions($conditions)
{
$this->conditions = array();
if(!isset($conditions) || count($conditions) === 0)
{
return;
}
if(!is_array($conditions))
{
$conditions = array($conditions);
}
foreach($conditions as $conditionGroup)
{
if($conditionGroup->show())
{
$this->conditions[] = $conditionGroup;
}
}
}
function setGroups($groups)
{
if(!isset($groups) || count($groups) === 0)
{
return;
}
if(!is_array($groups))
{
$groups = array($groups);
}
$this->groups = $groups;
}
function setOrder($order)
{
if(!isset($order) || count($order) === 0)
{
return;
}
if(!is_array($order))
{
$order = array($order);
}
$this->orderby = $order;
}
function getOrder()
{
return $this->orderby;
}
function setLimit($limit = NULL)
{
if(!isset($limit))
{
return;
}
$this->limit = $limit;
}
// START Fluent interface
/**
* seleect set
* @param string|array $columns
* @return Query return Query instance
*/
function select($columns = NULL)
{
$this->action = 'select';
$this->setColumns($columns);
return $this;
}
/**
* from set
* @param string|array $tables
* @return Query return Query instance
*/
function from($tables)
{
$this->setTables($tables);
return $this;
}
/**
* where set
* @param string|array $conditions
* @return Query return Query instance
*/
function where($conditions)
{
$this->setConditions($conditions);
return $this;
}
/**
* groupBy set
* @param string|array $groups
* @return Query return Query instance
*/
function groupBy($groups)
{
$this->setGroups($groups);
return $this;
}
/**
* orderBy set
* @param string|array $order
* @return Query return Query instance
*/
function orderBy($order)
{
$this->setOrder($order);
return $this;
}
/**
* limit set
* @param int $limit
* @return Query return Query instance
*/
function limit($limit)
{
$this->setLimit($limit);
return $this;
}
// END Fluent interface
function getAction()
{
return $this->action;
}
function getPriority()
{
return $this->priority ? 'LOW_PRIORITY' : '';
}
/**
* Check if current query uses the click count attribute
* For CUBRID, this statement uses the click count feature.
* For the other databases, using this attribute causes a query
* to produce both a select and an update
*/
function usesClickCount()
{
return count($this->getClickCountColumns()) > 0;
}
function getClickCountColumns()
{
$click_count_columns = array();
foreach($this->columns as $column)
{
if($column->show() && is_a($column, 'ClickCountExpression'))
{
$click_count_columns[] = $column;
}
}
return $click_count_columns;
}
/**
* Return select sql
* @param boolean $with_values
* @return string
*/
function getSelectString($with_values = TRUE)
{
foreach($this->columns as $column)
{
if($column->show())
{
if($column->isSubquery())
{
$select[] = $column->toString($with_values) . ' as ' . $column->getAlias();
}
else
{
$select[] = $column->getExpression($with_values);
}
}
}
return trim(implode($select, ', '));
}
/**
* Return update sql
* @param boolean $with_values
* @return string
*/
function getUpdateString($with_values = TRUE)
{
foreach($this->columns as $column)
{
if($column->show())
{
$update[] = $column->getExpression($with_values);
}
}
if(!$update) return;
return trim(implode($update, ', '));
}
/**
* Return insert sql
* @param boolean $with_values
* @return string
*/
function getInsertString($with_values = TRUE)
{
$columnsList = '';
// means we have insert-select
if($this->subquery)
{
foreach($this->columns as $column)
{
$columnsList .= $column->getColumnName() . ', ';
}
$columnsList = substr($columnsList, 0, -2);
$selectStatement = $this->subquery->toString($with_values);
$selectStatement = substr($selectStatement, 1, -1);
return "($columnsList) \n $selectStatement";
}
$valuesList = '';
foreach($this->columns as $column)
{
if($column->show())
{
$columnsList .= $column->getColumnName() . ', ';
$valuesList .= $column->getValue($with_values) . ', ';
}
}
$columnsList = substr($columnsList, 0, -2);
$valuesList = substr($valuesList, 0, -2);
return "($columnsList) \n VALUES ($valuesList)";
}
function getTables()
{
return $this->tables;
}
/**
* from table_a
* from table_a inner join table_b on x=y
* from (select * from table a) as x
* from (select * from table t) as x inner join table y on y.x
* @param boolean $with_values
* @return string
*/
function getFromString($with_values = TRUE)
{
$from = '';
$simple_table_count = 0;
foreach($this->tables as $table)
{
if($table->isJoinTable() || !$simple_table_count)
{
$from .= $table->toString($with_values) . ' ';
}
else
{
$from .= ', ' . $table->toString($with_values) . ' ';
}
if(is_a($table, 'Subquery'))
{
$from .= $table->getAlias() ? ' as ' . $table->getAlias() . ' ' : ' ';
}
$simple_table_count++;
}
if(trim($from) == '')
{
return '';
}
return $from;
}
/**
* Return where sql
* @param boolean $with_values
* @param boolean $with_optimization
* @return string
*/
function getWhereString($with_values = TRUE, $with_optimization = TRUE)
{
$where = '';
$condition_count = 0;
foreach($this->conditions as $conditionGroup)
{
if($condition_count === 0)
{
$conditionGroup->setPipe("");
}
$condition_string = $conditionGroup->toString($with_values);
$where .= $condition_string;
$condition_count++;
}
if($with_optimization &&
(strstr($this->getOrderByString(), 'list_order') || strstr($this->getOrderByString(), 'update_order')))
{
if($condition_count !== 0)
{
$where = '(' . $where . ') ';
}
foreach($this->orderby as $order)
{
$colName = $order->getColumnName();
if(strstr($colName, 'list_order') || strstr($colName, 'update_order'))
{
$opt_condition = new ConditionWithoutArgument($colName, 2100000000, 'less', 'and');
if($condition_count === 0)
{
$opt_condition->setPipe("");
}
$where .= $opt_condition->toString($with_values) . ' ';
$condition_count++;
}
}
}
return trim($where);
}
/**
* Return groupby sql
* @return string
*/
function getGroupByString()
{
$groupBy = '';
if($this->groups)
{
if($this->groups[0] !== "")
{
$groupBy = implode(', ', $this->groups);
}
}
return $groupBy;
}
/**
* Return orderby sql
* @return string
*/
function getOrderByString()
{
if(!$this->_orderByString)
{
if(count($this->orderby) === 0)
{
return '';
}
$orderBy = '';
foreach($this->orderby as $order)
{
$orderBy .= $order->toString() . ', ';
}
$orderBy = substr($orderBy, 0, -2);
$this->_orderByString = $orderBy;
}
return $this->_orderByString;
}
function getLimit()
{
return $this->limit;
}
/**
* Return limit sql
* @return string
*/
function getLimitString()
{
$limit = '';
if(count($this->limit) > 0)
{
$limit = '';
$limit .= $this->limit->toString();
}
return $limit;
}
function getFirstTableName()
{
return $this->tables[0]->getName();
}
/**
* Return argument list
* @return array
*/
function getArguments()
{
if(!isset($this->arguments))
{
$this->arguments = array();
// Join table arguments
if(count($this->tables) > 0)
{
foreach($this->tables as $table)
{
if($table->isJoinTable() || is_a($table, 'Subquery'))
{
$args = $table->getArguments();
if($args)
{
$this->arguments = array_merge($this->arguments, $args);
}
}
}
}
// Column arguments
// The if is for delete statements, all others must have columns
if(count($this->columns) > 0)
{
foreach($this->columns as $column)
{
if($column->show())
{
$args = $column->getArguments();
if($args)
{
$this->arguments = array_merge($this->arguments, $args);
}
}
}
}
// Condition arguments
if(count($this->conditions) > 0)
{
foreach($this->conditions as $conditionGroup)
{
$args = $conditionGroup->getArguments();
if(count($args) > 0)
{
$this->arguments = array_merge($this->arguments, $args);
}
}
}
// Navigation arguments
if(count($this->orderby) > 0)
{
foreach($this->orderby as $order)
{
$args = $order->getArguments();
if(count($args) > 0)
{
$this->arguments = array_merge($this->arguments, $args);
}
}
}
}
return $this->arguments;
}
}
/* End of file Query.class.php */
/* Location: ./classes/db/queryparts/Query.class.php */

View file

@ -1,80 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* @author NAVER (developers@xpressengine.com)
* @package /classes/db/queryparts
* @version 0.1
*/
class Subquery extends Query
{
/**
* table alias
* @var string
*/
var $alias;
/**
* join type
* @var string
*/
var $join_type;
/**
* constructor
* @param string $alias
* @param string|array $columns
* @param string|array $tables
* @param string|array $conditions
* @param string|array $groups
* @param string|array $orderby
* @param int $limit
* @param string $join_type
* @return void
*/
function __construct($alias, $columns, $tables, $conditions, $groups, $orderby, $limit, $join_type = null)
{
$this->alias = $alias;
$this->queryID = null;
$this->action = "select";
$this->columns = $columns;
$this->tables = $tables;
$this->conditions = $conditions;
$this->groups = $groups;
$this->orderby = $orderby;
$this->limit = $limit;
$this->join_type = $join_type;
}
function getAlias()
{
return $this->alias;
}
function isJoinTable()
{
if($this->join_type)
{
return true;
}
return false;
}
function toString($with_values = true)
{
$oDB = &DB::getInstance();
return '(' . $oDB->getSelectSql($this, $with_values) . ')';
}
function isSubquery()
{
return true;
}
}
/* End of file Subquery.class.php */
/* Location: ./classes/db/queryparts/Subquery.class.php */

View file

@ -1,258 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* @author NAVER (developers@xpressengine.com)
* @package /classes/db/queryparts/condition
* @version 0.1
*/
class Condition
{
/**
* column name
* @var string
*/
var $column_name;
var $argument;
/**
* operation can use 'equal', 'more', 'excess', 'less', 'below', 'like_tail', 'like_prefix', 'like', 'notlike_tail',
* 'notlike_prefix', 'notlike', 'in', 'notin', 'not_in', 'and', 'or', 'xor', 'not', 'notequal', 'between'
* 'null', 'notnull'
* @var string
*/
var $operation;
/**
* pipe can use 'and', 'or'...
* @var string
*/
var $pipe;
var $_value;
var $_show;
var $_value_to_string;
/**
* constructor
* @param string $column_name
* @param mixed $argument
* @param string $operation
* @param string $pipe
* @return void
*/
function __construct($column_name, $argument, $operation, $pipe)
{
$this->column_name = $column_name;
$this->argument = $argument;
$this->operation = $operation;
$this->pipe = $pipe;
}
function getArgument()
{
return null;
}
/**
* value to string
* @param boolean $withValue
* @return string
*/
function toString($withValue = true)
{
if(!isset($this->_value_to_string))
{
if(!$this->show())
{
$this->_value_to_string = '';
}
else if($withValue)
{
$this->_value_to_string = $this->toStringWithValue();
}
else
{
$this->_value_to_string = $this->toStringWithoutValue();
}
}
return $this->_value_to_string;
}
/**
* change string without value
* @return string
*/
function toStringWithoutValue()
{
return $this->pipe . ' ' . $this->getConditionPart($this->_value);
}
/**
* change string with value
* @return string
*/
function toStringWithValue()
{
return $this->pipe . ' ' . $this->getConditionPart($this->_value);
}
function setPipe($pipe)
{
$this->pipe = $pipe;
}
/**
* @return boolean
*/
function show()
{
if(!isset($this->_show))
{
if(is_array($this->_value) && count($this->_value) === 1 && $this->_value[0] === '')
{
$this->_show = false;
}
else
{
$this->_show = true;
switch($this->operation)
{
case 'equal' :
case 'more' :
case 'excess' :
case 'less' :
case 'below' :
case 'like_tail' :
case 'like_prefix' :
case 'like' :
case 'notlike_tail' :
case 'notlike_prefix' :
case 'notlike' :
case 'in' :
case 'notin' :
case 'not_in' :
case 'and':
case 'or':
case 'xor':
case 'not':
case 'notequal' :
// if variable is not set or is not string or number, return
if(!isset($this->_value))
{
$this->_show = false;
break;
}
if($this->_value === '')
{
$this->_show = false;
break;
}
$tmpArray = array('string' => 1, 'integer' => 1);
if(!isset($tmpArray[gettype($this->_value)]))
{
$this->_show = false;
break;
}
break;
case 'between' :
if(!is_array($this->_value))
{
$this->_show = false;
break;
}
if(count($this->_value) != 2)
{
$this->_show = false;
break;
}
case 'null':
case 'notnull':
break;
default:
// If operation is not one of the above, means the condition is invalid
$this->_show = false;
}
}
}
return $this->_show;
}
/**
* Return condition string
* @param int|string|array $value
* @return string
*/
function getConditionPart($value)
{
$name = $this->column_name;
$operation = $this->operation;
switch($operation)
{
case 'equal' :
return $name . ' = ' . $value;
break;
case 'more' :
return $name . ' >= ' . $value;
break;
case 'excess' :
return $name . ' > ' . $value;
break;
case 'less' :
return $name . ' <= ' . $value;
break;
case 'below' :
return $name . ' < ' . $value;
break;
case 'like_tail' :
case 'like_prefix' :
case 'like' :
if(defined('__CUBRID_VERSION__')
&& __CUBRID_VERSION__ >= '8.4.1')
return $name . ' rlike ' . $value;
else
return $name . ' like ' . $value;
break;
case 'notlike_tail' :
case 'notlike_prefix' :
case 'notlike' :
return $name . ' not like ' . $value;
break;
case 'in' :
return $name . ' in ' . $value;
break;
case 'notin' :
case 'not_in' :
return $name . ' not in ' . $value;
break;
case 'notequal' :
return $name . ' <> ' . $value;
break;
case 'notnull' :
return $name . ' is not null';
break;
case 'null' :
return $name . ' is null';
break;
case 'and' :
return $name . ' & ' . $value;
break;
case 'or' :
return $name . ' | ' . $value;
break;
case 'xor' :
return $name . ' ^ ' . $value;
break;
case 'not' :
return $name . ' ~ ' . $value;
break;
case 'between' :
return $name . ' between ' . $value[0] . ' and ' . $value[1];
break;
}
}
}
/* End of file Condition.class.php */
/* Location: ./classes/db/queryparts/condition/Condition.class.php */

View file

@ -1,120 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* @author NAVER (developers@xpressengine.com)
* @package /classes/db/queryparts/condition
* @version 0.1
*/
class ConditionGroup
{
/**
* condition list
* @var array
*/
var $conditions;
/**
* pipe can use 'and', 'or'...
* @var string
*/
var $pipe;
var $_group;
var $_show;
/**
* constructor
* @param array $conditions
* @param string $pipe
* @return void
*/
function __construct($conditions, $pipe = "")
{
$this->conditions = array();
foreach($conditions as $condition)
{
if($condition->show())
{
$this->conditions[] = $condition;
}
}
if(count($this->conditions) === 0)
{
$this->_show = false;
}
else
{
$this->_show = true;
}
$this->pipe = $pipe;
}
function show()
{
return $this->_show;
}
function setPipe($pipe)
{
if($this->pipe !== $pipe)
{
$this->_group = null;
}
$this->pipe = $pipe;
}
/**
* value to string
* @param boolean $with_value
* @return string
*/
function toString($with_value = true)
{
if(!isset($this->_group))
{
$cond_indx = 0;
$group = '';
foreach($this->conditions as $condition)
{
if($cond_indx === 0)
{
$condition->setPipe("");
}
$group .= $condition->toString($with_value) . ' ';
$cond_indx++;
}
if($this->pipe !== "" && trim($group) !== '')
{
$group = $this->pipe . ' (' . $group . ')';
}
$this->_group = $group;
}
return $this->_group;
}
/**
* return argument list
* @return array
*/
function getArguments()
{
$args = array();
foreach($this->conditions as $condition)
{
$arg = $condition->getArgument();
if($arg)
{
$args[] = $arg;
}
}
return $args;
}
}
/* End of file ConditionGroup.class.php */
/* Location: ./classes/db/queryparts/condition/ConditionGroup.class.php */

View file

@ -1,28 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* @author NAVER (developers@xpressengine.com)
* @package /classes/db/queryparts/condition
* @version 0.1
*/
class ConditionSubquery extends Condition
{
/**
* constructor
* @param string $column_name
* @param mixed $argument
* @param string $operation
* @param string $pipe
* @return void
*/
function __construct($column_name, $argument, $operation, $pipe = "")
{
parent::__construct($column_name, $argument, $operation, $pipe);
$this->_value = $this->argument->toString();
}
}
/* End of file ConditionSubquery.class.php */
/* Location: ./classes/db/queryparts/condition/ConditionSubquery.class.php */

View file

@ -1,99 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* @author NAVER (developers@xpressengine.com)
* @package /classes/db/queryparts/condition
* @version 0.1
*/
class ConditionWithArgument extends Condition
{
/**
* constructor
* @param string $column_name
* @param mixed $argument
* @param string $operation
* @param string $pipe
* @return void
*/
function __construct($column_name, $argument, $operation, $pipe = "")
{
if($argument === null)
{
$this->_show = false;
return;
}
parent::__construct($column_name, $argument, $operation, $pipe);
$this->_value = $argument->getValue();
}
function getArgument()
{
if(!$this->show())
return;
return $this->argument;
}
/**
* change string without value
* @return string
*/
function toStringWithoutValue()
{
$value = $this->argument->getUnescapedValue();
if(is_array($value))
{
$q = '';
foreach($value as $v)
{
$q .= '?,';
}
if($q !== '')
{
$q = substr($q, 0, -1);
}
$q = '(' . $q . ')';
}
else
{
// Prepared statements: column names should not be sent as query arguments, but instead concatenated to query string
if($this->argument->isColumnName())
{
$q = $value;
}
else
{
$q = '?';
}
}
return $this->pipe . ' ' . $this->getConditionPart($q);
}
/**
* @return boolean
*/
function show()
{
if(!isset($this->_show))
{
if(!$this->argument->isValid())
{
$this->_show = false;
}
if($this->_value === '\'\'')
{
$this->_show = false;
}
if(!isset($this->_show))
{
return parent::show();
}
}
return $this->_show;
}
}
/* End of file ConditionWithArgument.class.php */
/* Location: ./classes/db/queryparts/condition/ConditionWithArgument.class.php */

View file

@ -1,40 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* @author NAVER (developers@xpressengine.com)
* @package /classes/db/queryparts/condition
* @version 0.1
*/
class ConditionWithoutArgument extends Condition
{
/**
* constructor
* @param string $column_name
* @param mixed $argument
* @param string $operation
* @param string $pipe
* @return void
*/
function __construct($column_name, $argument, $operation, $pipe = "")
{
parent::__construct($column_name, $argument, $operation, $pipe);
$tmpArray = array('in' => 1, 'notin' => 1, 'not_in' => 1);
if(isset($tmpArray[$operation]))
{
if(is_array($argument))
{
$argument = implode($argument, ',');
}
$this->_value = '(' . $argument . ')';
}
else
{
$this->_value = $argument;
}
}
}
/* End of file ConditionWithoutArgument.class.php */
/* Location: ./classes/db/queryparts/condition/ConditionWithoutArgument.class.php */

View file

@ -1,62 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* ClickCountExpression
* @author Arnia Software
* @package /classes/db/queryparts/expression
* @version 0.1
*/
class ClickCountExpression extends SelectExpression
{
/**
* click count
* @var bool
*/
var $click_count;
/**
* constructor
* @param string $column_name
* @param string $alias
* @param bool $click_count
* @return void
*/
function __construct($column_name, $alias = NULL, $click_count = false)
{
parent::__construct($column_name, $alias);
if(!is_bool($click_count))
{
// error_log("Click_count value for $column_name was not boolean", 0);
$this->click_count = false;
}
$this->click_count = $click_count;
}
function show()
{
return $this->click_count;
}
/**
* Return column expression, ex) column = column + 1
* @return string
*/
function getExpression()
{
$db_type = Context::getDBType();
if($db_type == 'cubrid')
{
return "INCR($this->column_name)";
}
else
{
return "$this->column_name";
}
}
}
/* End of file ClickCountExpression.class.php */
/* Location: ./classes/db/queryparts/expression/ClickCountExpression.class.php */

View file

@ -1,63 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* DeleteExpression
*
* @author Arnia Software
* @package /classes/db/queryparts/expression
* @version 0.1
* @todo Fix this class
*/
class DeleteExpression extends Expression
{
/**
* column value
* @var mixed
*/
var $value;
/**
* constructor
* @param string $column_name
* @param mixed $value
* @return void
*/
function __construct($column_name, $value)
{
parent::__construct($column_name);
$this->value = $value;
}
/**
* Return column expression, ex) column = value
* @return string
*/
function getExpression()
{
return "$this->column_name = $this->value";
}
function getValue()
{
// TODO Escape value according to column type instead of variable type
if(!is_numeric($this->value))
{
return "'" . $this->value . "'";
}
return $this->value;
}
function show()
{
if(!$this->value)
{
return false;
}
return true;
}
}
/* End of file DeleteExpression.class.php */
/* Location: ./classes/db/queryparts/expression/DeleteExpression.class.php */

View file

@ -1,56 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* Expression
* Represents an expression used in select/update/insert/delete statements
*
* Examples (expressions are inside double square brackets):
* select [[columnA]], [[columnB as aliasB]] from tableA
* update tableA set [[columnA = valueA]] where columnB = something
*
* @author Corina
* @package /classes/db/queryparts/expression
* @version 0.1
*/
class Expression
{
/**
* column name
* @var string
*/
var $column_name;
/**
* constructor
* @param string $column_name
* @return void
*/
function __construct($column_name)
{
$this->column_name = $column_name;
}
function getColumnName()
{
return $this->column_name;
}
function show()
{
return false;
}
/**
* Return column expression, ex) column as alias
* @return string
*/
function getExpression()
{
}
}
/* End of file Expression.class.php */
/* Location: ./classes/db/queryparts/expression/Expression.class.php */

View file

@ -1,74 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* InsertExpression
*
* @author Arnia Software
* @package /classes/db/queryparts/expression
* @version 0.1
*/
class InsertExpression extends Expression
{
/**
* argument
* @var object
*/
var $argument;
/**
* constructor
* @param string $column_name
* @param object $argument
* @return void
*/
function __construct($column_name, $argument)
{
parent::__construct($column_name);
$this->argument = $argument;
}
function getValue($with_values = true)
{
if($with_values)
{
return $this->argument->getValue();
}
return '?';
}
function show()
{
if(!$this->argument)
{
return false;
}
$value = $this->argument->getValue();
if(!isset($value))
{
return false;
}
return true;
}
function getArgument()
{
return $this->argument;
}
function getArguments()
{
if($this->argument)
{
return array($this->argument);
}
else
{
return array();
}
}
}
/* End of file InsertExpression.class.php */
/* Location: ./classes/db/queryparts/expression/InsertExpression.class.php */

View file

@ -1,70 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* SelectExpression
* Represents an expresion that appears in the select clause
*
* $column_name can be:
* - a table column name
* - an sql function - like count(*)
* - an sql expression - substr(column_name, 1, 8) or score1 + score2
* $column_name is already escaped
*
* @author Arnia Software
* @package /classes/db/queryparts/expression
* @version 0.1
*/
class SelectExpression extends Expression
{
/**
* column alias name
* @var string
*/
var $column_alias;
/**
* constructor
* @param string $column_name
* @param string $alias
* @return void
*/
function __construct($column_name, $alias = NULL)
{
parent::__construct($column_name);
$this->column_alias = $alias;
}
/**
* Return column expression, ex) column as alias
* @return string
*/
function getExpression()
{
return sprintf("%s%s", $this->column_name, $this->column_alias ? " as " . $this->column_alias : "");
}
function show()
{
return true;
}
function getArgument()
{
return null;
}
function getArguments()
{
return array();
}
function isSubquery()
{
return false;
}
}
/* End of file SelectExpression.class.php */
/* Location: ./classes/db/queryparts/expression/SelectExpression.class.php */

View file

@ -1,37 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* StarExpression
* Represents the * in 'select * from ...' statements
*
* @author Corina
* @package /classes/db/queryparts/expression
* @version 0.1
*/
class StarExpression extends SelectExpression
{
/**
* constructor, set the column to asterisk
* @return void
*/
function __construct()
{
parent::__construct("*");
}
function getArgument()
{
return null;
}
function getArguments()
{
// StarExpression has no arguments
return array();
}
}
/* End of file StarExpression.class.php */
/* Location: ./classes/db/queryparts/expression/StarExpression.class.php */

View file

@ -1,119 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* UpdateExpression
*
* @author Arnia Software
* @package /classes/db/queryparts/expression
* @version 0.1
*/
class UpdateExpression extends Expression
{
/**
* argument
* @var object
*/
var $argument;
/**
* constructor
* @param string $column_name
* @param object $argument
* @return void
*/
function __construct($column_name, $argument)
{
parent::__construct($column_name);
$this->argument = $argument;
}
/**
* Return column expression, ex) column = value
* @return string
*/
function getExpression($with_value = true)
{
if($with_value)
{
return $this->getExpressionWithValue();
}
return $this->getExpressionWithoutValue();
}
/**
* Return column expression, ex) column = value
* @return string
*/
function getExpressionWithValue()
{
$value = $this->argument->getValue();
$operation = $this->argument->getColumnOperation();
if(isset($operation))
{
return "$this->column_name = $this->column_name $operation $value";
}
return "$this->column_name = $value";
}
/**
* Return column expression, ex) column = ?
* Can use prepare statement
* @return string
*/
function getExpressionWithoutValue()
{
$operation = $this->argument->getColumnOperation();
if(isset($operation))
{
return "$this->column_name = $this->column_name $operation ?";
}
return "$this->column_name = ?";
}
function getValue()
{
// TODO Escape value according to column type instead of variable type
$value = $this->argument->getValue();
if(!is_numeric($value))
{
return "'" . $value . "'";
}
return $value;
}
function show()
{
if(!$this->argument)
{
return false;
}
$value = $this->argument->getValue();
if(!isset($value))
{
return false;
}
return true;
}
function getArgument()
{
return $this->argument;
}
function getArguments()
{
if($this->argument)
{
return array($this->argument);
}
else
{
return array();
}
}
}
/* End of file UpdateExpression.class.php */
/* Location: ./classes/db/queryparts/expression/UpdateExpression.class.php */

View file

@ -1,74 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* UpdateExpression
*
* @author Arnia Software
* @package /classes/db/queryparts/expression
* @version 0.1
*/
class UpdateExpressionWithoutArgument extends UpdateExpression
{
/**
* argument
* @var object
*/
var $argument;
/**
* constructor
* @param string $column_name
* @param object $argument
* @return void
*/
function __construct($column_name, $argument)
{
parent::__construct($column_name, $argument);
$this->argument = $argument;
}
function getExpression($with_value = true)
{
return "$this->column_name = $this->argument";
}
function getValue()
{
// TODO Escape value according to column type instead of variable type
$value = $this->argument;
if(!is_numeric($value))
{
return "'" . $value . "'";
}
return $value;
}
function show()
{
if(!$this->argument)
{
return false;
}
$value = $this->argument;
if(!isset($value))
{
return false;
}
return true;
}
function getArgument()
{
return null;
}
function getArguments()
{
return array();
}
}
/* End of file UpdateExpressionWithoutArgument.class.php */
/* Location: ./classes/db/queryparts/expression/UpdateExpressionWithoutArgument.class.php */

View file

@ -1,101 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* @author NAVER (developers@xpressengine.com)
* @package /classes/db/queryparts/limit
* @version 0.1
*/
class Limit
{
/**
* start number
* @var int
*/
var $start;
/**
* list count
* @var int
*/
var $list_count;
/**
* page count
* @var int
*/
var $page_count;
/**
* current page
* @var int
*/
var $page;
/**
* constructor
* @param int $list_count
* @param int $page
* @param int $page_count
* @param int $offset
* @return void
*/
function __construct($list_count, $page = NULL, $page_count = NULL, $offset = NULL)
{
$this->list_count = $list_count;
if($page)
{
$list_count_value = $list_count->getValue();
$page_value = $page->getValue();
$this->start = ($page_value - 1) * $list_count_value;
$this->page_count = $page_count;
$this->page = $page;
}
elseif($offset)
{
$this->start = $offset->getValue();
}
}
/**
* In case you choose to use query limit in other cases than page select
* @return boolean
*/
function isPageHandler()
{
if($this->page)
{
return true;
}
else
{
return false;
}
}
function getOffset()
{
return $this->start;
}
function getLimit()
{
return $this->list_count->getValue();
}
function toString()
{
if($this->page || $this->start)
{
return $this->start . ' , ' . $this->list_count->getValue();
}
else
{
return $this->list_count->getValue();
}
}
}
/* End of file Limit.class.php */
/* Location: ./classes/db/limit/Limit.class.php */

View file

@ -1,74 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* @author NAVER (developers@xpressengine.com)
* @package /classes/db/queryparts/order
* @version 0.1
*/
class OrderByColumn
{
/**
* column name
* @var string
*/
var $column_name;
/**
* sort order
* @var string
*/
var $sort_order;
/**
* constructor
* @param string $column_name
* @param string $sort_order
* @return void
*/
function __construct($column_name, $sort_order)
{
$this->column_name = $column_name;
$this->sort_order = $sort_order;
}
function toString()
{
$result = $this->getColumnName();
$result .= ' ';
$result .= is_a($this->sort_order, 'Argument') ? $this->sort_order->getValue() : $this->sort_order;
return $result;
}
function getColumnName()
{
return is_a($this->column_name, 'Argument') ? $this->column_name->getValue() : $this->column_name;
}
function getPureColumnName()
{
return is_a($this->column_name, 'Argument') ? $this->column_name->getPureValue() : $this->column_name;
}
function getPureSortOrder()
{
return is_a($this->sort_order, 'Argument') ? $this->sort_order->getPureValue() : $this->sort_order;
}
function getArguments()
{
$args = array();
if(is_a($this->column_name, 'Argument'))
{
$args[] = $this->column_name;
}
if(is_a($this->sort_order, 'Argument'))
{
$args[] = $this->sort_order;
}
}
}
/* End of file OrderByColumn.class.php */
/* Location: ./classes/db/order/OrderByColumn.class.php */

View file

@ -1,71 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* @author NAVER (developers@xpressengine.com)
* @package /classes/db/queryparts/table
* @version 0.1
*/
class CubridTableWithHint extends Table
{
/**
* table name
* @var string
*/
var $name;
/**
* table alias
* @var string
*/
var $alias;
/**
* index hint list
* @var array
*/
var $index_hints_list;
/**
* constructor
* @param string $name
* @param string $alias
* @param array $index_hints_list
* @return void
*/
function __construct($name, $alias = NULL, $index_hints_list)
{
parent::__construct($name, $alias);
$this->index_hints_list = $index_hints_list;
}
/**
* Return index hint string
* @return string
*/
function getIndexHintString()
{
$result = '';
// Retrieve table prefix, to add it to index name
$prefix = config('db.master.prefix');
foreach($this->index_hints_list as $index_hint)
{
$index_hint_type = $index_hint->getIndexHintType();
if($index_hint_type !== 'IGNORE')
{
$result .= $this->alias . '.'
. '"' . $prefix . substr($index_hint->getIndexName(), 1)
. ($index_hint_type == 'FORCE' ? '(+)' : '')
. ', ';
}
}
$result = substr($result, 0, -2);
return $result;
}
}
/* End of file CubridTableWithHint.class.php */
/* Location: ./classes/db/queryparts/table/CubridTableWithHint.class.php */

View file

@ -1,48 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* @author NAVER (developers@xpressengine.com)
* @package /classes/db/queryparts/table
* @version 0.1
*/
class IndexHint
{
/**
* index name
* @var string
*/
var $index_name;
/**
* index hint type, ex) IGNORE, FORCE, USE...
* @var string
*/
var $index_hint_type;
/**
* constructor
* @param string $index_name
* @param string $index_hint_type
* @return void
*/
function __construct($index_name, $index_hint_type)
{
$this->index_name = $index_name;
$this->index_hint_type = $index_hint_type;
}
function getIndexName()
{
return $this->index_name;
}
function getIndexHintType()
{
return $this->index_hint_type;
}
}
/* End of file IndexHint.class.php */
/* Location: ./classes/db/queryparts/table/IndexHint.class.php */

View file

@ -1,71 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* class JoinTable
* $conditions in an array of Condition objects
*
* @author Arnia Software
* @package /classes/db/queryparts/table
* @version 0.1
*/
class JoinTable extends Table
{
/**
* join type
* @var string
*/
var $join_type;
/**
* condition list
* @var array
*/
var $conditions;
/**
* constructor
* @param string $name
* @param string $alias
* @param string $join_type
* @param array $conditions
* @return void
*/
function __construct($name, $alias, $join_type, $conditions)
{
parent::__construct($name, $alias);
$this->join_type = $join_type;
$this->conditions = $conditions;
}
function toString($with_value = true)
{
$part = $this->join_type . ' ' . $this->name;
$part .= $this->alias ? ' as ' . $this->alias : '';
$part .= ' on ';
foreach($this->conditions as $conditionGroup)
{
$part .= $conditionGroup->toString($with_value);
}
return $part;
}
function isJoinTable()
{
return true;
}
function getArguments()
{
$args = array();
foreach($this->conditions as $conditionGroup)
{
$args = array_merge($args, $conditionGroup->getArguments());
}
return $args;
}
}
/* End of file JoinTable.class.php */
/* Location: ./classes/db/queryparts/table/JoinTable.class.php */

View file

@ -1,66 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* @author NAVER (developers@xpressengine.com)
* @package /classes/db/queryparts/table
* @version 0.1
*/
class MssqlTableWithHint extends Table
{
/**
* table name
* @var string
*/
var $name;
/**
* table alias
* @var string
*/
var $alias;
/**
* index hint type, ex) IGNORE, FORCE, USE...
* @var array
*/
var $index_hints_list;
/**
* constructor
* @param string $name
* @param string $alias
* @param string $index_hints_list
* @return void
*/
function __construct($name, $alias = NULL, $index_hints_list)
{
parent::__construct($name, $alias);
$this->index_hints_list = $index_hints_list;
}
function toString()
{
$result = parent::toString();
$index_hint_string = '';
$indexTypeList = array('USE' => 1, 'FORCE' => 1);
foreach($this->index_hints_list as $index_hint)
{
$index_hint_type = $index_hint->getIndexHintType();
if(isset($indexTypeList[$index_hint_type]))
{
$index_hint_string .= 'INDEX(' . $index_hint->getIndexName() . '), ';
}
}
if($index_hint_string != '')
{
$result .= ' WITH(' . substr($index_hint_string, 0, -2) . ') ';
}
return $result;
}
}
/* End of file MssqlTableWithHint.class.php */
/* Location: ./classes/db/queryparts/table/MssqlTableWithHint.class.php */

View file

@ -1,83 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* @author NAVER (developers@xpressengine.com)
* @package /classes/db/queryparts/table
* @version 0.1
*/
class MysqlTableWithHint extends Table
{
/**
* table name
* @var string
*/
var $name;
/**
* table alias
* @var string
*/
var $alias;
/**
* index hint type, ex) IGNORE, FORCE, USE...
* @var array
*/
var $index_hints_list;
/**
* constructor
* @param string $name
* @param string $alias
* @param string $index_hints_list
* @return void
*/
function __construct($name, $alias = NULL, $index_hints_list)
{
parent::__construct($name, $alias);
$this->index_hints_list = $index_hints_list;
}
function toString()
{
$result = parent::toString();
$use_index_hint = '';
$force_index_hint = '';
$ignore_index_hint = '';
foreach($this->index_hints_list as $index_hint)
{
$index_hint_type = $index_hint->getIndexHintType();
if($index_hint_type == 'USE')
{
$use_index_hint .= $index_hint->getIndexName() . ', ';
}
else if($index_hint_type == 'FORCE')
{
$force_index_hint .= $index_hint->getIndexName() . ', ';
}
else if($index_hint_type == 'IGNORE')
{
$ignore_index_hint .= $index_hint->getIndexName() . ', ';
}
}
if($use_index_hint != '')
{
$result .= ' USE INDEX (' . substr($use_index_hint, 0, -2) . ') ';
}
if($force_index_hint != '')
{
$result .= ' FORCE INDEX (' . substr($force_index_hint, 0, -2) . ') ';
}
if($ignore_index_hint != '')
{
$result .= ' IGNORE INDEX (' . substr($ignore_index_hint, 0, -2) . ') ';
}
return $result;
}
}
/* End of file MysqlTableWithHint.class.php */
/* Location: ./classes/db/queryparts/table/MysqlTableWithHint.class.php */

View file

@ -1,59 +0,0 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* @author NAVER (developers@xpressengine.com)
* @package /classes/db/queryparts/table
* @version 0.1
*/
class Table
{
/**
* table name
* @var string
*/
var $name;
/**
* table alias
* @var string
*/
var $alias;
/**
* constructor
* @param string $name
* @param string $alias
* @return void
*/
function __construct($name, $alias = NULL)
{
$this->name = $name;
$this->alias = $alias;
}
function toString()
{
//return $this->name;
return sprintf("%s%s", $this->name, $this->alias ? ' as ' . $this->alias : '');
}
function getName()
{
return $this->name;
}
function getAlias()
{
return $this->alias;
}
function isJoinTable()
{
return false;
}
}
/* End of file Table.class.php */
/* Location: ./classes/db/queryparts/table/Table.class.php */

View file

@ -1,21 +1,15 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* @class DisplayHandler
* DisplayHandler
*
* @author NAVER (developers@xpressengine.com)
* DisplayHandler is responsible for displaying the execution result. \n
* Depending on the request type, it can display either HTML or XML content.\n
* Xml content is simple xml presentation of variables in oModule while html content
* is the combination of the variables of oModue and template files/.
*/
class DisplayHandler extends Handler
{
public static $response_size = 0;
public static $debug_printed = 0;
var $content_size = 0; // /< The size of displaying contents
var $gz_enabled = FALSE; // / <a flog variable whether to call contents after compressing by gzip
var $handler = NULL;
public $handler = NULL;
/**
* print either html or xml content given oModule object
@ -25,38 +19,50 @@ class DisplayHandler extends Handler
*/
public function printContent(&$oModule)
{
// Check if the gzip encoding supported
if(config('view.use_gzip') && strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false && extension_loaded('zlib') && $oModule->gzhandler_enable)
{
$this->gz_enabled = TRUE;
}
// Extract contents to display by the request method
// Extract contents to display by the response method
$responseMethod = Context::getResponseMethod();
if(Context::get('xeVirtualRequestMethod') == 'xml')
{
$handler = new VirtualXMLDisplayHandler();
}
elseif(Context::getRequestMethod() == 'JSON' || isset($_POST['_rx_ajax_compat']))
elseif($responseMethod == 'JSON' || isset($_POST['_rx_ajax_compat']))
{
$handler = new JSONDisplayHandler();
}
elseif(Context::getRequestMethod() == 'JS_CALLBACK')
elseif($responseMethod == 'JS_CALLBACK')
{
$handler = new JSCallbackDisplayHandler();
}
elseif(Context::getRequestMethod() == 'XMLRPC')
elseif($responseMethod == 'XMLRPC')
{
$handler = new XMLDisplayHandler();
if(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE)
{
$this->gz_enabled = FALSE;
}
}
elseif($responseMethod == 'RAW')
{
$handler = new RawDisplayHandler();
}
else
{
$handler = new HTMLDisplayHandler();
}
// Handle error location info
if ($location = $oModule->get('rx_error_location'))
{
if (!Rhymix\Framework\Debug::isEnabledForCurrentUser())
{
$oModule->unset('rx_error_location');
}
elseif (starts_with(\RX_BASEDIR, $location))
{
$oModule->add('rx_error_location', $location = substr($location, strlen(\RX_BASEDIR)));
}
}
// call a trigger before layout
ModuleHandler::triggerCall('layout', 'before', $oModule);
// apply layout
$output = $handler->toDoc($oModule);
// call a trigger before display
@ -65,10 +71,10 @@ class DisplayHandler extends Handler
// execute add-on
$called_position = 'before_display_content';
$oAddonController = getController('addon');
$oAddonController = AddonController::getInstance();
$addon_file = $oAddonController->getCacheFilePath(Mobile::isFromMobilePhone() ? "mobile" : "pc");
if(file_exists($addon_file)) include($addon_file);
if($output === false || $output === null || $output instanceof Object)
if($output === false || $output === null || $output instanceof BaseObject)
{
$output = $original_output;
}
@ -83,113 +89,151 @@ class DisplayHandler extends Handler
// header output
$httpStatusCode = $oModule->getHttpStatusCode();
if($httpStatusCode !== 200 && !in_array(Context::getRequestMethod(), array('XMLRPC', 'JSON', 'JS_CALLBACK')))
$responseMethod = Context::getResponseMethod();
if($httpStatusCode !== 200 && !in_array($responseMethod, array('XMLRPC', 'JSON', 'JS_CALLBACK')))
{
self::_printHttpStatusCode($httpStatusCode);
}
else
{
if(Context::getResponseMethod() == 'JSON' || Context::getResponseMethod() == 'JS_CALLBACK' || isset($_POST['_rx_ajax_compat']))
if($responseMethod == 'JSON' || isset($_SERVER['HTTP_X_AJAX_COMPAT']) || isset($_POST['_rx_ajax_compat']))
{
if(strpos($_SERVER['HTTP_ACCEPT'], 'json') !== false)
{
self::_printJSONHeader();
}
self::_printJSONHeader();
}
elseif(Context::getRequestMethod() == 'XMLRPC')
elseif($responseMethod == 'XMLRPC')
{
self::_printXMLHeader();
}
elseif($responseMethod == 'RAW' && $content_type = Context::get('response_content_type'))
{
self::_printCustomContentTypeHeader($content_type);
}
else
{
self::_printHTMLHeader();
}
}
// disable gzip if output already exists
// Print security-related headers.
if($header_value = config('security.x_frame_options'))
{
header('X-Frame-Options: ' . $header_value);
}
if($header_value = config('security.x_content_type_options'))
{
header('X-Content-Type-Options: ' . $header_value);
}
// Print robot headers.
if (isset($oModule->module_info->robots_tag) && $oModule->module_info->robots_tag === 'noindex')
{
header('X-Robots-Tag: noindex');
}
// Flush the output buffer, and remove unnecessary whitespace at the beginning.
$buff = '';
while (ob_get_level())
{
ob_end_flush();
}
if(headers_sent())
{
$this->gz_enabled = FALSE;
}
// enable gzip using zlib extension
if($this->gz_enabled)
{
ini_set('zlib.output_compression', true);
$buff .= ob_get_clean();
}
$buff = ltrim($buff, "\n\r\t\v\x00\x20\u{FEFF}");
// call a trigger after display
self::$response_size = $this->content_size = strlen($output);
ModuleHandler::triggerCall('display', 'after', $output);
// Measure the response size.
self::$response_size = strlen((string)$output);
// Output buffered content only if the current page is HTML.
if ($handler instanceof HTMLDisplayHandler)
{
self::$response_size += strlen($buff);
echo $buff;
}
// Output the page content and debug data.
$debug = $this->getDebugInfo($output);
$debug = self::getDebugInfo($output);
print $output;
print $debug;
}
/**
* Get debug information.
*
*
* @return string
*/
public function getDebugInfo(&$output = null)
public static function getDebugInfo(&$output = null): string
{
// Check if debugging information has already been printed.
if (self::$debug_printed)
{
return;
return '';
}
else
{
self::$debug_printed = 1;
}
// Check if debugging is enabled for this request.
if (!config('debug.enabled') || !Rhymix\Framework\Debug::isEnabledForCurrentUser())
if (!Rhymix\Framework\Debug::isEnabledForCurrentUser())
{
return;
return '';
}
// Do not display debugging information if there is no output.
$display_type = config('debug.display_type');
if ($output === null && $display_type !== 'file')
$display_types = config('debug.display_type') ?: [];
if ($display_types && !is_array($display_types))
{
return;
$display_types = array($display_types);
}
// Print debug information.
switch ($display_type)
if ($output === null && !in_array('file', $display_types))
{
case 'panel':
return '';
}
if ($output === null)
{
$output = '';
}
// Print debug information.
$debug_output = '';
$response_type = Context::getResponseMethod();
foreach ($display_types as $display_type)
{
if ($display_type === 'panel')
{
$data = Rhymix\Framework\Debug::getDebugData();
$display_content = array_fill_keys(config('debug.display_content'), true);
if (count($display_content) && !isset($display_content['entries']))
if (!isset($display_content['request_info']))
{
unset($data->timestamp, $data->url, $data->request, $data->response, $data->memory, $data->timing);
}
if (!isset($display_content['entries']))
{
$data->entries = null;
}
if (count($display_content) && !isset($display_content['queries']))
if (!isset($display_content['errors']))
{
unset($data->errors);
}
if (!isset($display_content['queries']))
{
unset($data->queries);
}
if (count($display_content) && !isset($display_content['slow_queries']))
if (!isset($display_content['slow_queries']))
{
unset($data->slow_queries);
}
if (count($display_content) && !isset($display_content['slow_triggers']))
if (!isset($display_content['slow_triggers']))
{
unset($data->slow_triggers);
}
if (count($display_content) && !isset($display_content['slow_widgets']))
if (!isset($display_content['slow_widgets']))
{
unset($data->slow_widgets);
}
if (count($display_content) && !isset($display_content['slow_remote_requests']))
if (!isset($display_content['slow_remote_requests']))
{
unset($data->slow_remote_requests);
}
@ -207,52 +251,42 @@ class DisplayHandler extends Handler
}
}
}
switch (Context::getResponseMethod())
switch ($response_type)
{
case 'HTML':
$json_options = defined('JSON_PRETTY_PRINT') ? (JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) : 0;
$panel_script = sprintf('<script src="%s%s?%s"></script>', RX_BASEURL, 'common/js/debug.js', filemtime(RX_BASEDIR . 'common/js/debug.js'));
if (isset($_SESSION['_rx_debug_previous']))
{
$panel_script .= "\n<script>\nvar rhymix_debug_previous = " . json_encode($_SESSION['_rx_debug_previous'], $json_options) . ";\n</script>";
unset($_SESSION['_rx_debug_previous']);
}
$panel_script .= "\n<script>\nvar rhymix_debug_content = " . json_encode($data, $json_options) . ";\n</script>";
$panel_script = sprintf('<script src="%s%s?t=%d"></script>', RX_BASEURL, 'common/js/debug.js', filemtime(RX_BASEDIR . 'common/js/debug.js'));
$panel_script .= "\n<script>\nRhymix.currentDebugData = " . json_encode($data, $json_options) . ";\n</script>";
$body_end_position = strrpos($output, '</body>') ?: strlen($output);
$output = substr($output, 0, $body_end_position) . "\n$panel_script\n" . substr($output, $body_end_position);
return;
break;
case 'JSON':
if (RX_POST && preg_match('/^proc/', Context::get('act')))
unset($_SESSION['_rx_debug_previous']);
if (preg_match('/^(.+)\}\n?$/', $output, $matches))
{
$data->ajax_module = Context::get('module');
$data->ajax_act = Context::get('act');
$_SESSION['_rx_debug_previous'] = $data;
$data = json_encode($data);
if (json_last_error() === JSON_ERROR_NONE)
{
$output = $matches[1] . ',"_rx_debug":' . $data . "}\n";
}
}
else
{
unset($_SESSION['_rx_debug_previous']);
}
if (preg_match('/^(.+)\}$/', $output, $matches))
{
$output = $matches[1] . ',"_rx_debug":' . json_encode($data) . '}';
}
return;
break;
default:
return;
break;
}
case 'comment':
case 'file':
default:
if ($display_type === 'comment' && Context::getResponseMethod() !== 'HTML')
}
else
{
if ($display_type === 'comment' && $response_type !== 'HTML')
{
return;
continue;
}
ob_start();
$data = Rhymix\Framework\Debug::getDebugData();
$display_content = array_fill_keys(config('debug.display_content'), true);
include RX_BASEDIR . 'common/tpl/debug_comment.html';
$content = preg_replace('/\n{2,}/', "\n\n", trim(ob_get_clean())) . PHP_EOL;
$content = preg_replace('/\n{2,}/', "\n\n", trim(ob_get_clean())) . "\n";
if ($display_type === 'file')
{
$log_filename = config('debug.log_filename') ?: 'files/debug/YYYYMMDD.php';
@ -271,14 +305,17 @@ class DisplayHandler extends Handler
{
$phpheader = '';
}
FileHandler::writeFile($log_filename, $phpheader . $content . PHP_EOL, 'a');
return '';
FileHandler::writeFile($log_filename, $phpheader . $content . "\n", 'a');
$debug_output .= '';
}
else
{
return '<!--' . PHP_EOL . $content . PHP_EOL . '-->';
$debug_output .= '<!--' . "\n" . $content . "\n" . '-->' . "\n";
}
}
}
return $debug_output;
}
/**
@ -305,7 +342,19 @@ class DisplayHandler extends Handler
*/
public static function _printJSONHeader()
{
header("Content-Type: text/javascript; charset=UTF-8");
header("Content-Type: application/json; charset=UTF-8");
}
/**
* print a custom Content-Type header.
*
* @param string $content_type
* @return void
*/
public static function _printCustomContentTypeHeader($content_type)
{
$charset = (strpos($content_type, 'text/') === 0) ? '; charset=UTF-8' : '';
header('Content-Type: ' . $content_type . $charset);
}
/**
@ -319,5 +368,3 @@ class DisplayHandler extends Handler
}
}
/* End of file DisplayHandler.class.php */
/* Location: ./classes/display/DisplayHandler.class.php */

View file

@ -1,34 +1,60 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
class HTMLDisplayHandler
{
/**
* jQuery versions
*/
public const JQUERY_V2 = '2.2.4';
public const JQUERY_V2_MIGRATE = '1.4.1';
public const JQUERY_V3 = '3.6.3';
public const JQUERY_V3_MIGRATE = '3.4.0';
/**
* Default viewport setting
*/
public const DEFAULT_VIEWPORT = 'width=device-width, initial-scale=1.0, user-scalable=yes';
/**
* Reserved scripts
*/
public static $reservedCSS = '@\bcommon/css/(?:xe|rhymix|mobile)\.(?:min\.)?(?:s?css|less)$@';
public static $reservedJS = '@\bcommon/js/(?:jquery(?:-[123][0-9.x-]+)?|xe?|common|js_app|xml_handler|xml_js_filter)\.(?:min\.)?js$@';
/**
* List of scripts to block loading
*/
public static $blockedScripts = array(
'@(?:^|/)j[Qq]uery(?:-[0-9]+(?:\.[0-9x]+)*|-latest)?(?:\.min)?\.js$@',
);
/**
* Replacement table for XE compatibility
*/
public static $replacements = array(
'@\bcommon/xeicon/@' => 'common/css/xeicon/',
'@\beditor/skins/xpresseditor/js/xe_textarea\.(?:min\.)?js@' => 'editor/skins/ckeditor/js/xe_textarea.js',
'@/lang$@' => '/lang/lang.xml',
);
/**
* Image type information for SEO
*/
protected $_image_type = 'none';
/**
* Produce HTML compliant content given a module object.\n
* @param ModuleObject $oModule the module object
* @return string compiled template string
*/
function toDoc(&$oModule)
public function toDoc(&$oModule)
{
$oTemplate = TemplateHandler::getInstance();
// compile module tpl
// deprecated themes skin
// SECISSUE https://github.com/xpressengine/xe-core/issues/1583
$oSecurity = new Security();
$oSecurity->encodeHTML('is_keyword', 'search_keyword', 'search_target', 'order_target', 'order_type');
$template_path = $oModule->getTemplatePath();
$template_file = $oModule->getTemplateFile();
if(!is_dir($template_path))
{
@ -68,23 +94,30 @@ class HTMLDisplayHandler
}
}
$tpl_file = $oModule->getTemplateFile();
$output = $oTemplate->compile($template_path, $tpl_file);
// SECISSUE https://github.com/xpressengine/xe-core/issues/1583
$oSecurity = new Security();
$oSecurity->encodeHTML('is_keyword', 'search_keyword', 'search_target', 'order_target', 'order_type');
$oTemplate = new Rhymix\Framework\Template($template_path, $template_file);
$output = $oTemplate->compile();
// add .x div for adminitration pages
if(Context::getResponseMethod() == 'HTML')
{
if(Context::get('module') != 'admin' && strpos(Context::get('act'), 'Admin') > 0 && Context::get('act') != 'dispPageAdminContentModify' && Context::get('act') != 'dispPageAdminMobileContentModify')
$x_exclude_actions = array(
'dispPageAdminContentModify' => true,
'dispPageAdminMobileContentModify' => true,
'dispPageAdminMobileContent' => true,
);
$current_act = strval(Context::get('act'));
if(Context::get('module') != 'admin' && strpos($current_act, 'Admin') !== false && !isset($x_exclude_actions[$current_act]))
{
$output = '<div class="x">' . $output . '</div>';
}
if(Context::get('layout') != 'none')
// Wrap content in layout
$use_layout = Context::get('layout') !== 'none';
if (!$use_layout && isset($_REQUEST['layout']) && !self::isPartialPageRendering())
{
$use_layout = true;
}
if ($use_layout)
{
$start = microtime(true);
@ -98,14 +131,13 @@ class HTMLDisplayHandler
// get the layout information currently requested
$oLayoutModel = getModel('layout');
$layout_info = Context::get('layout_info');
$layout_srl = $layout_info->layout_srl;
$layout_srl = $layout_info->layout_srl ?? 0;
// compile if connected to the layout
if($layout_srl > 0)
{
// handle separately if the layout is faceoff
if($layout_info && $layout_info->type == 'faceoff')
if($layout_info && isset($layout_info->type) && $layout_info->type == 'faceoff')
{
$oLayoutModel->doActivateFaceOff($layout_info);
Context::set('layout_info', $layout_info);
@ -119,16 +151,35 @@ class HTMLDisplayHandler
Context::loadFile(array($edited_layout_css, 'all', '', 100));
}
}
if(!$layout_path)
if (!$layout_path)
{
$layout_path = './common/tpl';
}
if(!$layout_file)
if (!$layout_file)
{
$layout_file = 'default_layout';
if ($layout_path === './common/tpl')
{
$layout_file = 'default_layout';
}
else
{
$layout_file = 'layout';
}
}
$oTemplate = new Rhymix\Framework\Template;
$output = $oTemplate->compile($layout_path, $layout_file, $edited_layout_file);
// Add layout header script.
if ($layout_srl > 0)
{
$part_config = ModuleModel::getModulePartConfig('layout', $layout_srl);
if ($part_config && isset($part_config->header_script))
{
Context::addHtmlHeader($part_config->header_script, true);
}
}
// if popup_layout, remove admin bar.
$realLayoutPath = FileHandler::getRealPath($layout_path);
if(substr_compare($realLayoutPath, '/', -1) !== 0)
@ -139,85 +190,18 @@ class HTMLDisplayHandler
$pathInfo = pathinfo($layout_file);
$onlyLayoutFile = $pathInfo['filename'];
$GLOBALS['__layout_compile_elapsed__'] = microtime(true) - $start;
if(stripos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE && (Context::get('_use_ssl') == 'optional' || Context::get('_use_ssl') == 'always'))
{
Context::addHtmlFooter('<iframe id="xeTmpIframe" name="xeTmpIframe" style="width:1px;height:1px;position:absolute;top:-2px;left:-2px;"></iframe>');
}
}
}
return $output;
}
/**
* when display mode is HTML, prepare code before print.
* @param string $output compiled template string
* @return void
*/
function prepareToPrint(&$output)
{
if(Context::getResponseMethod() != 'HTML')
{
return;
}
$start = microtime(true);
// move <style ..></style> in body to the header
$output = preg_replace_callback('!<style(.*?)>(.*?)<\/style>!is', array($this, '_moveStyleToHeader'), $output);
// move <link ..></link> in body to the header
$output = preg_replace_callback('!<link(.*?)/?>!is', array($this, '_moveLinkToHeader'), $output);
// move <meta ../> in body to the header
$output = preg_replace_callback('!<meta(.*?)(?:\/|)>!is', array($this, '_moveMetaToHeader'), $output);
// change a meta fine(widget often put the tag like <!--Meta:path--> to the content because of caching)
$output = preg_replace_callback('/<!--(#)?Meta:([a-z0-9\_\-\/\.\@\:]+)(\?\$\_\_Context\-\>[a-z0-9\_\-\/\.\@\:]+)?-->/is', array($this, '_transMeta'), $output);
// handles a relative path generated by using the rewrite module
if(Context::isAllowRewrite())
{
$url = parse_url(Context::getRequestUri());
$real_path = $url['path'];
$pattern = '/src=("|\'){1}(\.\/)?(files\/attach|files\/cache|files\/faceOff|files\/member_extra_info|modules|common|widgets|widgetstyle|layouts|addons)\/([^"\']+)\.(jpg|jpeg|png|gif)("|\'){1}/s';
$output = preg_replace($pattern, 'src=$1' . $real_path . '$3/$4.$5$6', $output);
$pattern = '/href=("|\'){1}(\?[^"\']+)/s';
$output = preg_replace($pattern, 'href=$1' . $real_path . '$2', $output);
if(Context::get('vid'))
{
$pattern = '/\/' . Context::get('vid') . '\?([^=]+)=/is';
$output = preg_replace($pattern, '/?$1=', $output);
Rhymix\Framework\Debug::addTime('layout', microtime(true) - $start);
}
}
// prevent the 2nd request due to url(none) of the background-image
$output = preg_replace('/url\((["\']?)none(["\']?)\)/is', 'none', $output);
if(is_array(Context::get('INPUT_ERROR')))
{
$INPUT_ERROR = Context::get('INPUT_ERROR');
$keys = array_map(function($str) { return preg_quote($str, '@'); }, array_keys($INPUT_ERROR));
$keys = '(' . implode('|', $keys) . ')';
$output = preg_replace_callback('@(<input)([^>]*?)\sname="' . $keys . '"([^>]*?)/?>@is', array(&$this, '_preserveValue'), $output);
$output = preg_replace_callback('@<select[^>]*\sname="' . $keys . '".+</select>@isU', array(&$this, '_preserveSelectValue'), $output);
$output = preg_replace_callback('@<textarea[^>]*\sname="' . $keys . '".+</textarea>@isU', array(&$this, '_preserveTextAreaValue'), $output);
}
$GLOBALS['__trans_content_elapsed__'] = microtime(true) - $start;
// Remove unnecessary information
$output = preg_replace('/member\_\-([0-9]+)/s', 'member_0', $output);
// Add OpenGraph metadata
// Add OpenGraph and Twitter metadata
if (config('seo.og_enabled') && Context::get('module') !== 'admin')
{
$this->_addOpenGraphMetadata();
if (config('seo.twitter_enabled'))
{
$this->_addTwitterMetadata();
}
}
// set icon
@ -228,11 +212,106 @@ class HTMLDisplayHandler
Context::set('favicon_url', $favicon_url);
Context::set('mobicon_url', $mobicon_url);
// Only print the X-UA-Compatible meta tag if somebody is still using IE
if (preg_match('!Trident/7\.0!', $_SERVER['HTTP_USER_AGENT'] ?? ''))
{
Context::addMetaTag('X-UA-Compatible', 'IE=edge', true);
}
return $output;
}
/**
* Check if partial page rendering (dropping the layout) is enabled.
*
* @return bool
*/
public static function isPartialPageRendering()
{
$ppr = config('view.partial_page_rendering') ?? 'internal_only';
if ($ppr === 'disabled')
{
return false;
}
elseif ($ppr === 'ajax_only' && empty($_SERVER['HTTP_X_REQUESTED_WITH']))
{
return false;
}
elseif ($ppr === 'internal_only' && (!isset($_SERVER['HTTP_REFERER']) || !Rhymix\Framework\URL::isInternalURL($_SERVER['HTTP_REFERER'])))
{
return false;
}
elseif ($ppr === 'except_robots' && isCrawler())
{
return false;
}
else
{
return true;
}
}
/**
* when display mode is HTML, prepare code before print.
* @param string $output compiled template string
* @return void
*/
public function prepareToPrint(&$output)
{
if(Context::getResponseMethod() != 'HTML')
{
return;
}
$start = microtime(true);
// move <style>...</style> in body to the header
$output = preg_replace_callback('!<style(.*?)>(.*?)<\/style>!is', array($this, '_moveStyleToHeader'), $output);
// move <link> and <meta> in body to the header
$output = preg_replace_callback('!<(link|meta)\b(.*?)>!is', array($this, '_moveLinkToHeader'), $output);
// change a meta fine(widget often put the tag like <!--Meta:path--> to the content because of caching)
$output = preg_replace_callback('/<!--(#)?Meta:([a-z0-9\_\-\/\.\@\:]+)(\?\$\_\_Context\-\>[a-z0-9\_\-\/\.\@\:\>]+)?-->/is', array($this, '_transMeta'), $output);
// handles a relative path generated by using the rewrite module
if(Context::isAllowRewrite())
{
$pattern = '/(action)=(["\'])(["\'])/s';
$output = preg_replace($pattern, '$1=$2' . \RX_BASEURL . '$3', $output);
$pattern = '/(action|poster|src|href)=(["\'])\.\/([^"\']*)(["\'])/s';
$output = preg_replace($pattern, '$1=$2' . \RX_BASEURL . '$3$4', $output);
$pattern = '/src=(["\'])((?:files\/(?:attach|cache|faceOff|member_extra_info|thumbnails)|addons|common|(?:m\.)?layouts|modules|widgets|widgetstyle)\/[^"\']+)(["\'])/s';
$output = preg_replace($pattern, 'src=$1' . \RX_BASEURL . '$2$3', $output);
$pattern = '/href=(["\'])(\?[^"\']+)/s';
$output = preg_replace($pattern, 'href=$1' . \RX_BASEURL . '$2', $output);
}
// prevent the 2nd request due to url(none) of the background-image
$output = preg_replace('/url\((["\']?)none(["\']?)\)/is', 'none', $output);
$INPUT_ERROR = Context::get('INPUT_ERROR');
if(is_array($INPUT_ERROR) && count($INPUT_ERROR))
{
$keys = array_map(function($str) { return preg_quote($str, '@'); }, array_keys($INPUT_ERROR));
$keys = '(' . implode('|', $keys) . ')';
$output = preg_replace_callback('@(<input)([^>]*?)\sname="' . $keys . '"([^>]*?)/?>@is', array(&$this, '_preserveValue'), $output);
$output = preg_replace_callback('@<select[^>]*\sname="' . $keys . '".+</select>@isU', array(&$this, '_preserveSelectValue'), $output);
$output = preg_replace_callback('@<textarea[^>]*\sname="' . $keys . '".+</textarea>@isU', array(&$this, '_preserveTextAreaValue'), $output);
}
Rhymix\Framework\Debug::addTime('trans_content', microtime(true) - $start);
// Remove unnecessary information
$output = preg_replace('/member\_\-([0-9]+)/s', 'member_0', $output);
// convert the final layout
Context::set('content', $output);
Context::set('m', $is_mobile = Mobile::isFromMobilePhone() ? 1 : 0);
$oTemplate = TemplateHandler::getInstance();
if($is_mobile)
if(Mobile::isFromMobilePhone())
{
$this->_loadMobileJSCSS();
}
@ -240,11 +319,19 @@ class HTMLDisplayHandler
{
$this->_loadDesktopJSCSS();
}
$output = $oTemplate->compile('./common/tpl', 'common_layout');
$oTemplate = new Rhymix\Framework\Template('./common/tpl', 'common_layout');
$output = $oTemplate->compile();
// replace the user-defined-language
$oModuleController = getController('module');
$oModuleController->replaceDefinedLangCode($output);
$output = Context::replaceUserLang($output);
// remove template path comment tag
/*
if(!Rhymix\Framework\Debug::isEnabledForCurrentUser())
{
$output = preg_replace('/\n<!-- Template (?:start|end) : .*? -->\r?\n/', "\n", $output);
}
*/
}
/**
@ -255,6 +342,10 @@ class HTMLDisplayHandler
function _preserveValue($match)
{
$INPUT_ERROR = Context::get('INPUT_ERROR');
if (!is_scalar($INPUT_ERROR[$match[3]]))
{
return $match[0];
}
$str = $match[1] . $match[2] . ' name="' . $match[3] . '"' . $match[4];
@ -324,8 +415,8 @@ class HTMLDisplayHandler
}
/**
* add html style code extracted from html body to Context, which will be
* printed inside <header></header> later.
* Move <style> in the document body to the <head> section.
*
* @param array $matches
* @return void
*/
@ -339,25 +430,21 @@ class HTMLDisplayHandler
}
/**
* add html link code extracted from html body to Context, which will be
* printed inside <header></header> later.
* Move <link> and <meta> in the document body to the <head> section.
*
* @param array $matches
* @return void
*/
function _moveLinkToHeader($matches)
{
Context::addHtmlHeader($matches[0]);
}
/**
* add meta code extracted from html body to Context, which will be
* printed inside <header></header> later.
* @param array $matches
* @return void
*/
function _moveMetaToHeader($matches)
{
Context::addHtmlHeader($matches[0]);
if ($matches[1] === 'link' && preg_match('/\brel="([^"]+)"/', $matches[2], $rel) && $rel[1] !== 'stylesheet' && preg_match('/\bhref="([^"]+)"/', $matches[2], $href))
{
Context::addLink($href[1], $rel[1]);
}
else
{
Context::addHtmlHeader($matches[0]);
}
}
/**
@ -371,7 +458,7 @@ class HTMLDisplayHandler
{
return '';
}
if($matches[3])
if($matches[3] ?? false)
{
$vars = Context::get(str_replace('?$__Context->', '', $matches[3]));
Context::loadFile(array($matches[2], null, null, null, $vars));
@ -384,8 +471,7 @@ class HTMLDisplayHandler
/**
* Add OpenGraph metadata tags.
*
* @param string $output
*
* @return void
*/
function _addOpenGraphMetadata()
@ -395,50 +481,89 @@ class HTMLDisplayHandler
$current_module_info = Context::get('current_module_info');
$site_module_info = Context::get('site_module_info');
$document_srl = Context::get('document_srl');
if ($document_srl)
$grant = Context::get('grant');
$permitted = isset($grant->access) ? $grant->access : false;
if (isset($grant->view) && !$grant->view)
{
$oDocument = Context::get('oDocument') ?: getModel('document')->getDocument($document_srl, false, false);
if (is_object($oDocument) && $oDocument->document_srl == $document_srl && (!method_exists($oDocument, 'isSecret') || !$oDocument->isSecret()))
$permitted = false;
}
if ($document_srl && $permitted)
{
if (isset($grant->consultation_read) && !$grant->consultation_read && $current_module_info->consultation === 'Y')
{
$page_type = 'article';
$permitted = false;
}
else
{
$oDocument = Context::get('oDocument') ?: DocumentModel::getDocument($document_srl, false, false);
if (is_object($oDocument) && $oDocument->document_srl == $document_srl)
{
$page_type = 'article';
if (method_exists($oDocument, 'isSecret') && $oDocument->isSecret())
{
$permitted = false;
}
}
}
}
// Get existing metadata.
$og_data = array();
foreach (Context::getOpenGraphData() as $val)
{
$og_data[$val['property']] = $val['content'];
}
// Add basic metadata.
Context::addOpenGraphData('og:title', Context::getBrowserTitle());
Context::addOpenGraphData('og:title', $permitted ? Context::getBrowserTitle() : lang('msg_not_permitted'));
Context::addOpenGraphData('og:site_name', Context::getSiteTitle());
if ($page_type === 'article' && config('seo.og_extract_description'))
if (!isset($og_data['og:description']) || !Context::getMetaTag('description'))
{
$description = trim(utf8_normalize_spaces($oDocument->getContentText(200)));
if ($page_type === 'article' && $permitted && config('seo.og_extract_description'))
{
$description = trim(utf8_normalize_spaces($oDocument->getContentText(200)));
}
else
{
$description = Context::getMetaTag('description');
}
Context::addOpenGraphData('og:description', $description);
Context::addMetaTag('description', $description);
}
else
{
$description = Context::getMetaTag('description');
}
Context::addOpenGraphData('og:description', $description);
Context::addMetaTag('description', $description);
// Add metadata about this page.
Context::addOpenGraphData('og:type', $page_type);
if ($page_type === 'article')
if (!isset($og_data['og:type']))
{
$canonical_url = getFullUrl('', 'mid', $current_module_info->mid, 'document_srl', $document_srl);
Context::addOpenGraphData('og:type', $page_type);
}
elseif (($page = Context::get('page')) > 1)
if (!isset($og_data['og:url']) || !Context::getCanonicalURL())
{
$canonical_url = getFullUrl('', 'mid', $current_module_info->mid, 'page', $page);
if ($page_type === 'article')
{
$canonical_url = getNotEncodedFullUrl('', 'mid', $current_module_info->mid, 'document_srl', $document_srl);
}
elseif (($page = Context::get('page')) > 1)
{
$canonical_url = getNotEncodedFullUrl('', 'mid', $current_module_info->mid, 'page', $page);
}
elseif (isset($current_module_info->module_srl) && $current_module_info->module_srl == ($site_module_info->module_srl ?? 0))
{
$canonical_url = getNotEncodedFullUrl('');
}
else
{
if (Rhymix\Framework\Router::getRewriteLevel() === 2 && Context::getCurrentRequest()->url !== '')
{
$canonical_url = Rhymix\Framework\URL::getCurrentDomainURL(\RX_BASEURL . preg_replace('/\?.*$/', '', \RX_REQUEST_URL));
}
else
{
$canonical_url = getNotEncodedFullUrl('', 'mid', $current_module_info->mid);
}
}
Context::setCanonicalURL($canonical_url);
}
elseif ($current_module_info->module_srl == $site_module_info->module_srl)
{
$canonical_url = getFullUrl('');
}
else
{
$canonical_url = getFullUrl('', 'mid', $current_module_info->mid);
}
Context::addOpenGraphData('og:url', $canonical_url);
Context::setCanonicalURL($canonical_url);
// Add metadata about the locale.
$lang_type = Context::getLangType();
$locales = (include \RX_BASEDIR . 'common/defaults/locales.php');
@ -446,42 +571,55 @@ class HTMLDisplayHandler
{
Context::addOpenGraphData('og:locale', $locales[$lang_type]['locale']);
}
if ($page_type === 'article' && $oDocument->getLangCode() !== $lang_type && isset($locales[$oDocument->getLangCode()]))
if ($page_type === 'article' && $permitted && $oDocument->getLangCode() !== $lang_type && isset($locales[$oDocument->getLangCode()]))
{
Context::addOpenGraphData('og:locale:alternate', $locales[$oDocument->getLangCode()]);
}
// Add image.
if ($page_type === 'article' && config('seo.og_extract_images'))
if ($document_images = Context::getMetaImages())
{
// pass
}
elseif ($page_type === 'article' && $permitted && config('seo.og_extract_images'))
{
if (($document_images = Rhymix\Framework\Cache::get("seo:document_images:$document_srl")) === null)
{
$document_images = array();
if ($oDocument->hasUploadedFiles())
{
foreach ($oDocument->getUploadedFiles() as $file)
$document_files = $oDocument->getUploadedFiles();
usort($document_files, function($a, $b) {
return ord($b->cover_image) - ord($a->cover_image);
});
foreach ($document_files as $file)
{
if ($file->isvalid !== 'Y' || !preg_match('/\.(?:bmp|gif|jpe?g|png)$/i', $file->uploaded_filename))
if ($file->isvalid !== 'Y' || !preg_match('/\.(?:bmp|gif|jpe?g|png|webp|mp4)$/i', $file->uploaded_filename))
{
continue;
}
list($width, $height) = @getimagesize($file->uploaded_filename);
if ($width < 100 && $height < 100)
if (str_starts_with($file->mime_type, 'video/'))
{
continue;
}
$image = array('filepath' => $file->uploaded_filename, 'width' => $width, 'height' => $height);
if ($file->cover_image === 'Y')
{
array_unshift($document_images, $image);
if ($file->thumbnail_filename)
{
list($width, $height) = @getimagesize($file->thumbnail_filename);
if ($width >= 100 || $height >= 100)
{
$document_images[] = array('filepath' => $file->thumbnail_filename, 'width' => $width, 'height' => $height);
break;
}
}
}
else
{
$document_images[] = $image;
}
if (count($document_images) >= 1)
{
break;
list($width, $height) = @getimagesize($file->uploaded_filename);
if ($width >= 100 || $height >= 100)
{
$document_images[] = array('filepath' => $file->uploaded_filename, 'width' => $width, 'height' => $height);
break;
}
}
}
}
@ -492,14 +630,15 @@ class HTMLDisplayHandler
{
$document_images = null;
}
if ($document_images)
{
$first_image = reset($document_images);
$first_image = array_first($document_images);
$first_image['filepath'] = preg_replace('/^.\\/files\\//', \RX_BASEURL . 'files/', $first_image['filepath']);
Context::addOpenGraphData('og:image', Rhymix\Framework\URL::getCurrentDomainURL($first_image['filepath']));
Context::addOpenGraphData('og:image:width', $first_image['width']);
Context::addOpenGraphData('og:image:height', $first_image['height']);
$this->_image_type = 'document';
}
elseif ($default_image = getAdminModel('admin')->getSiteDefaultImageUrl($site_module_info->domain_srl, $width, $height))
{
@ -509,13 +648,79 @@ class HTMLDisplayHandler
Context::addOpenGraphData('og:image:width', $width);
Context::addOpenGraphData('og:image:height', $height);
}
$this->_image_type = 'site';
}
// Add datetime for articles.
if ($page_type === 'article' && config('seo.og_use_timestamps'))
else
{
Context::addOpenGraphData('article:published_time', $oDocument->getRegdate('c'));
Context::addOpenGraphData('article:modified_time', $oDocument->getUpdate('c'));
$this->_image_type = 'none';
}
// Add tags and hashtags for articles.
if ($page_type === 'article' && $permitted)
{
$tags = $oDocument->getTags();
foreach ($tags as $tag)
{
if ($tag !== '')
{
Context::addOpenGraphData('og:article:tag', $tag);
}
}
if (config('seo.og_extract_hashtags'))
{
$hashtags = $oDocument->getHashtags();
foreach ($hashtags as $hashtag)
{
if (!in_array($hashtag, $tags))
{
Context::addOpenGraphData('og:article:tag', escape($hashtag, false));
}
}
}
Context::addOpenGraphData('og:article:section', Context::replaceUserLang($current_module_info->browser_title));
}
// Add author name for articles.
if ($page_type === 'article' && $permitted && config('seo.og_use_nick_name'))
{
Context::addMetaTag('author', $oDocument->getNickName());
Context::addOpenGraphData('og:article:author', $oDocument->getNickName());
}
// Add datetime for articles.
if ($page_type === 'article' && $permitted && config('seo.og_use_timestamps'))
{
Context::addOpenGraphData('og:article:published_time', $oDocument->getRegdate('c'));
Context::addOpenGraphData('og:article:modified_time', $oDocument->getUpdate('c'));
}
}
/**
* Add Twitter metadata tags.
*
* @return void
*/
function _addTwitterMetadata()
{
$card_type = $this->_image_type === 'document' ? 'summary_large_image' : 'summary';
Context::addMetaTag('twitter:card', $card_type, false, false);
foreach(Context::getOpenGraphData() as $val)
{
if ($val['property'] === 'og:title')
{
Context::addMetaTag('twitter:title', $val['content'], false, false);
}
if ($val['property'] === 'og:description')
{
Context::addMetaTag('twitter:description', $val['content'], false, false);
}
if ($val['property'] === 'og:image' && $this->_image_type === 'document')
{
Context::addMetaTag('twitter:image', $val['content'], false, false);
}
}
}
@ -523,21 +728,9 @@ class HTMLDisplayHandler
* import basic .js files.
* @return void
*/
function _loadDesktopJSCSS()
public function _loadDesktopJSCSS()
{
$lang_type = Context::getLangType();
$this->_loadCommonJSCSS();
// for admin page, add admin css
if(Context::get('module') == 'admin' || strpos(Context::get('act'), 'Admin') > 0)
{
Context::loadFile(array('./modules/admin/tpl/css/admin.css', '', '', 10), true);
Context::loadFile(array("./modules/admin/tpl/css/admin.iefix.css", '', 'ie', 10), true);
Context::loadFile('./modules/admin/tpl/js/admin.js', true);
Context::loadFile(array('./modules/admin/tpl/css/admin.bootstrap.css', '', '', 1), true);
Context::loadFile(array('./modules/admin/tpl/js/jquery.tmpl.js', '', '', 1), true);
Context::loadFile(array('./modules/admin/tpl/js/jquery.jstree.js', '', '', 1), true);
}
}
/**
@ -546,7 +739,6 @@ class HTMLDisplayHandler
private function _loadMobileJSCSS()
{
$this->_loadCommonJSCSS();
Context::loadFile(array('./common/css/mobile.css', '', '', -1500000), true);
}
/**
@ -554,23 +746,49 @@ class HTMLDisplayHandler
*/
private function _loadCommonJSCSS()
{
Context::loadFile(array('./common/css/rhymix.scss', '', '', -1600000), true);
$original_file_list = array('x', 'common', 'js_app', 'xml_handler', 'xml_js_filter');
$jquery_version = preg_match('/MSIE [5-8]\./', $_SERVER['HTTP_USER_AGENT']) ? '1.11.3' : '2.1.4';
if (config('view.jquery_version') === 3)
{
$jquery_version = self::JQUERY_V3;
$jquery_migrate_version = self::JQUERY_V3_MIGRATE;
}
else
{
$jquery_version = self::JQUERY_V2;
$jquery_migrate_version = self::JQUERY_V2_MIGRATE;
}
Context::loadFile(array('./common/css/rhymix.scss', '', '', -1600000000), true);
$original_file_list = array(
'plugins/jquery.migrate/jquery-migrate-' . $jquery_migrate_version . '.min.js',
'plugins/cookie/js.cookie.min.js',
'plugins/blankshield/blankshield.min.js',
'plugins/uri/URI.min.js',
);
if (str_contains($_SERVER['HTTP_USER_AGENT'] ?? '', 'Trident/'))
{
$original_file_list[] = 'polyfills/formdata.min.js';
$original_file_list[] = 'polyfills/promise.min.js';
}
$original_file_list[] = 'x.js';
$original_file_list[] = 'common.js';
$original_file_list[] = 'js_app.js';
$original_file_list[] = 'xml_handler.js';
$original_file_list[] = 'xml_js_filter.js';
if(config('view.minify_scripts') === 'none')
{
Context::loadFile(array('./common/js/jquery-' . $jquery_version . '.js', 'head', '', -1730000), true);
Context::loadFile(array('./common/js/plugins/jquery.migrate/jquery-migrate-1.2.1.js', 'head', '', -1720000), true);
Context::loadFile(array('./common/js/jquery-' . $jquery_version . '.js', 'head', '', -1800000000), true);
foreach($original_file_list as $filename)
{
Context::loadFile(array('./common/js/' . $filename . '.js', 'head', '', -1700000), true);
Context::loadFile(array('./common/js/' . $filename, 'head', '', -1700000000), true);
}
}
else
{
Context::loadFile(array('./common/js/jquery-' . $jquery_version . '.min.js', 'head', '', -1730000), true);
Context::loadFile(array('./common/js/plugins/jquery.migrate/jquery-migrate-1.2.1.min.js', 'head', '', -1720000), true);
Context::loadFile(array('./common/js/jquery-' . $jquery_version . '.min.js', 'head', '', -1800000000), true);
$concat_target_filename = 'files/cache/assets/minified/rhymix.min.js';
if(file_exists(\RX_BASEDIR . $concat_target_filename))
{
@ -578,20 +796,18 @@ class HTMLDisplayHandler
$original_mtime = 0;
foreach($original_file_list as $filename)
{
$original_mtime = max($original_mtime, filemtime(\RX_BASEDIR . 'common/js/' . $filename . '.js'));
$original_mtime = max($original_mtime, filemtime(\RX_BASEDIR . 'common/js/' . $filename));
}
if($concat_target_mtime > $original_mtime)
{
Context::loadFile(array('./' . $concat_target_filename, 'head', '', -100000), true);
Context::loadFile(array('./' . $concat_target_filename, 'head', '', -1700000000), true);
return;
}
}
Rhymix\Framework\Formatter::minifyJS(array_map(function($str) {
return \RX_BASEDIR . 'common/js/' . $str . '.js';
return \RX_BASEDIR . 'common/js/' . $str;
}, $original_file_list), \RX_BASEDIR . $concat_target_filename);
Context::loadFile(array('./' . $concat_target_filename, 'head', '', -100000), true);
Context::loadFile(array('./' . $concat_target_filename, 'head', '', -1700000000), true);
}
}
}
/* End of file HTMLDisplayHandler.class.php */
/* Location: ./classes/display/HTMLDisplayHandler.class.php */

View file

@ -1,5 +1,4 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
class JSCallbackDisplayHandler
{
@ -21,5 +20,3 @@ class JSCallbackDisplayHandler
</script>', Context::getJSCallbackFunc(), json_encode($variables));
}
}
/* End of file JSCallback.class.php */
/* Location: ./classes/display/JSCallback.class.php */

View file

@ -1,5 +1,4 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
class JSONDisplayHandler
{
@ -14,14 +13,23 @@ class JSONDisplayHandler
$variables = $oModule->getVariables();
$variables['error'] = $oModule->getError();
$variables['message'] = $oModule->getMessage();
self::_convertCompat($variables, Context::getRequestMethod());
return json_encode($variables);
$result = json_encode($variables) . "\n";
if (json_last_error() != \JSON_ERROR_NONE)
{
trigger_error('JSON encoding error: ' . json_last_error_msg(), E_USER_WARNING);
return json_encode([
'error' => -1,
'message' => 'JSON encoding error',
]) . "\n";
}
return $result;
}
/**
* Convert arrays in a format that is compatible with XE.
*
*
* @param array $array
* @param string $compat_type
* @return array
@ -51,10 +59,10 @@ class JSONDisplayHandler
}
}
}
/**
* Check if an array only has numeric keys.
*
*
* @param array $array
* @return bool
*/
@ -74,5 +82,3 @@ class JSONDisplayHandler
return true;
}
}
/* End of file JSONDisplayHandler.class.php */
/* Location: ./classes/display/JSONDisplayHandler.class.php */

View file

@ -0,0 +1,20 @@
<?php
class RawDisplayHandler
{
function toDoc($oModule)
{
$tpl_path = $oModule->getTemplatePath();
$tpl_file = $oModule->getTemplateFile();
if ($tpl_path && $tpl_file)
{
$oTemplate = new Rhymix\Framework\Template($tpl_path, $tpl_file);
$output = $oTemplate->compile();
}
else
{
$output = '';
}
return $output;
}
}

View file

@ -1,5 +1,4 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
class VirtualXMLDisplayHandler
{
@ -57,13 +56,11 @@ class VirtualXMLDisplayHandler
$html[] = ' parent.location.href = ' . json_encode($output->url) . ';';
$html[] = '}';
}
$html[] = '</script>';
$html[] = '</head><body></body></html>';
return join(PHP_EOL, $html);
return join("\n", $html);
}
}
/* End of file VirtualXMLDisplayHandler.class.php */
/* Location: ./classes/display/VirtualXMLDisplayHandler.class.php */

View file

@ -1,5 +1,4 @@
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
class XMLDisplayHandler
{
@ -19,21 +18,21 @@ class XMLDisplayHandler
$xmlDoc .= $this->_makeXmlDoc($variables);
$xmlDoc .= "</response>";
$xmlDoc .= "</response>\n";
return $xmlDoc;
}
/**
* produce XML code given variable object\n
* @param object $obj
* @param object $obj
* @return string
*/
function _makeXmlDoc($obj)
{
if(!count($obj))
if (!countobj($obj))
{
return;
return '';
}
$xmlDoc = '';
@ -63,5 +62,3 @@ class XMLDisplayHandler
}
}
/* End of file XMLDisplayHandler.class.php */
/* Location: ./classes/display/XMLDisplayHandler.class.php */

Some files were not shown because too many files have changed in this diff Show more