This commit is contained in:
shim
2023-04-17 11:06:08 +09:00
parent d0b393aa97
commit 76264e09ad
4686 changed files with 552713 additions and 0 deletions

302
_core/css/article.css Normal file
View File

@@ -0,0 +1,302 @@
@charset "UTF-8";
/* title */
.rb-article h2 {
display: block;
margin: -30px 0 0;
padding: 60px 0 36px;
border: 0;
font-size: 36px;
font-weight: 500;
line-height: 53px;
}
.rb-article h2 ~ h2{
margin-top: 0;
}
.rb-article h3 {
display: block;
margin: 50px 0 11px;
padding-top: 60px;
border-top: 1px solid #e6e6e6;
font-size: 30px;
font-weight: 500;
}
.rb-article h4 {
display: block;
margin: 52px 0 11px;
font-size: 24px;
font-weight: 600;
}
.rb-article p + h4 {
margin-top: 47px;
}
.rb-article h5 {
display: block;
margin: 24px 0 20px;
font-size: 18px;
font-weight: 700;
line-height: 25px;
}
.rb-article p + .tit_depth4 {
margin-top: -9px;
}
.rb-article p.styled_tit {
margin-bottom: 18px;
}
.rb-article h4 {
position: relative;
display: block;
margin: 44px 0 23px;
padding-left: 15px;
font-size: 18px;
font-weight: 600;
line-height: 27px;
}
.rb-article h4 span {
font-weight: 600;
color: #314ffe;
}
.rb-article p + h4 {
margin-top: 38px;
}
.rb-article h4:after {
content: '';
position: absolute;
top: 4px;
left: 0;
width: 4px;
height: 20px;
background-color: #007bff;
}
/* link */
.rb-article a {
font-weight: 300;
color: #007bff;
}
/* desc div */
.rb-article p {
margin: 22px 0;
font-weight: 300;
font-size: 16px;
line-height: 26px;
word-break: keep-all;
}
.rb-article p + p {
margin-top: -4px;
}
.rb-article p strong {
font-weight: 600;
}
.rb-article h3 + p {
margin-top: 11px;
}
.rb-article h4 + p {
margin-top: 14px;
}
.rb-article h5 + p {
margin-top: -6px;
}
.rb-article .tit_info + p {
margin-top: -6px;
}
.rb-article ul + p {
margin-top: 15px;
}
.rb-article pre + p {
margin-top: 16px;
}
/* blockquote */
.rb-article blockquote {
padding-left: 20px;
}
/* list */
.rb-article ul {
margin: 14px 0 0;
}
.rb-article ul li {
position: relative;
margin-bottom: 8px;
padding-left: 20px;
line-height: 26px;
font-weight: 300;
font-size: 16px;
}
.rb-article ul li:after {
content: '';
position: absolute;
top: 12px;
left: 0;
width: 3px;
height: 3px;
background-color: #222;
border-radius: 100%;
}
.rb-article ul li:last-child {
margin-bottom: 40px;
}
.rb-article p + ul {
margin-top: -11px;
}
.rb-article p + .list_step {
margin-top: -5px;
}
/* block */
pre {
overflow-x: auto;
margin: 16px 0;
border: 1px solid #e6e6e6;
border-radius: 4px;
font-family: 'Roboto Mono', 'NotoSans Light', monospace, 'Malgun Gothic',
'맑은 고딕', 'Apple SD Gothic Neo', '돋움', dotum, sans-serif;
font-weight: normal;
color: #222;
font-size: 15px;
line-height: 26px;
background-color: #f8f9f9;
}
pre code {
display: block;
padding: 13px 19px;
font-family: inherit;
}
pre + pre {
margin-top: 26px;
}
p + pre {
margin-top: -3px;
}
pre .hljs {
padding-bottom: 15px;
background-color: #222;
}
/* table */
.rb-article figure.table table {
width: 100%;
margin-top: -3px;
border-top: 1px solid #e6e6e6;
}
.rb-article figure.table table caption {
overflow: hidden;
width: 1px;
font-size: 1px;
line-height: 0;
text-indent: -9999px;
}
.rb-article figure.table table th,
.rb-article figure.table table td {
border: 1px solid #e6e6e6;
border-width: 0 0 1px 1px;
vertical-align: top;
letter-spacing: 0;
}
.rb-article figure.table table tr th:first-child,
.rb-article figure.table table tr td:first-child {
border-left: 0;
}
.rb-article figure.table table th {
padding: 11px 0 13px 19px;
text-align: left;
font-weight: 600;
line-height: 26px;
background-color: #f3f5fe;
}
.rb-article figure.table table td {
padding: 15px 20px 16px;
font-weight: 300;
word-break: keep-all;
}
.rb-article figure.table table td a {
font-size: 14px;
letter-spacing: 0;
}
/* img */
.rb-article figure.image img {
display: block;
margin: 25px auto;
}
.rb-article ol {
display: -webkit-box;
display: -webkit-flex;
display: -moz-box;
display: -ms-flexbox;
display: flex;
list-style: none;
}
.rb-article ol li {
-webkit-box-flex: 1;
-webkit-flex: 1;
-moz-box-flex: 1;
-ms-flex: 1;
flex: 1;
margin-left: 6px;
background-color: #f8f9f9;
list-style: none;
}
.rb-article ol li:first-child {
margin-left: 0;
}
.rb-article ol strong {
display: block;
height: 60px;
font-weight: 400;
font-weight: normal;
text-align: center;
line-height: 58px;
background-color: #f3f5fe;
}
.rb-article ol img {
display: block;
max-width: 100%;
margin: 25px auto;
}
.rb-article ol p {
margin: 21px 0;
padding: 0 30px;
text-align: center;
font-weight: 600;
font-size: 14px;
line-height: 1.5;
letter-spacing: 0;
}
.rb-article ol img + p {
margin-top: -4px;
}
/* blank */
.rb-article .blank {
display: block;
width: 100%;
height: 12px;
}
/* label */
.rb-article p em,
.rb-article p var {
overflow: hidden;
display: inline-block;
height: 23px;
margin: 0 3px;
padding: 0 5px;
border: 1px solid #e6e6e6;
border-radius: 3px;
font-family: 'Roboto Mono', monospace, 'Malgun Gothic',
'맑은 고딕', 'Apple SD Gothic Neo', '돋움', dotum, sans-serif;
font-weight: normal;
font-size: 14px;
color: #555;
line-height: 22px;
vertical-align: middle;
background-color: #f9fafa;
}
.rb-article p em a,
.rb-article p var a {
color: #007bff;
}

View File

@@ -0,0 +1,700 @@
@font-face {
font-family: octicons-link;
src: url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAZwABAAAAAACFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEU0lHAAAGaAAAAAgAAAAIAAAAAUdTVUIAAAZcAAAACgAAAAoAAQAAT1MvMgAAAyQAAABJAAAAYFYEU3RjbWFwAAADcAAAAEUAAACAAJThvmN2dCAAAATkAAAABAAAAAQAAAAAZnBnbQAAA7gAAACyAAABCUM+8IhnYXNwAAAGTAAAABAAAAAQABoAI2dseWYAAAFsAAABPAAAAZwcEq9taGVhZAAAAsgAAAA0AAAANgh4a91oaGVhAAADCAAAABoAAAAkCA8DRGhtdHgAAAL8AAAADAAAAAwGAACfbG9jYQAAAsAAAAAIAAAACABiATBtYXhwAAACqAAAABgAAAAgAA8ASm5hbWUAAAToAAABQgAAAlXu73sOcG9zdAAABiwAAAAeAAAAME3QpOBwcmVwAAAEbAAAAHYAAAB/aFGpk3jaTY6xa8JAGMW/O62BDi0tJLYQincXEypYIiGJjSgHniQ6umTsUEyLm5BV6NDBP8Tpts6F0v+k/0an2i+itHDw3v2+9+DBKTzsJNnWJNTgHEy4BgG3EMI9DCEDOGEXzDADU5hBKMIgNPZqoD3SilVaXZCER3/I7AtxEJLtzzuZfI+VVkprxTlXShWKb3TBecG11rwoNlmmn1P2WYcJczl32etSpKnziC7lQyWe1smVPy/Lt7Kc+0vWY/gAgIIEqAN9we0pwKXreiMasxvabDQMM4riO+qxM2ogwDGOZTXxwxDiycQIcoYFBLj5K3EIaSctAq2kTYiw+ymhce7vwM9jSqO8JyVd5RH9gyTt2+J/yUmYlIR0s04n6+7Vm1ozezUeLEaUjhaDSuXHwVRgvLJn1tQ7xiuVv/ocTRF42mNgZGBgYGbwZOBiAAFGJBIMAAizAFoAAABiAGIAznjaY2BkYGAA4in8zwXi+W2+MjCzMIDApSwvXzC97Z4Ig8N/BxYGZgcgl52BCSQKAA3jCV8CAABfAAAAAAQAAEB42mNgZGBg4f3vACQZQABIMjKgAmYAKEgBXgAAeNpjYGY6wTiBgZWBg2kmUxoDA4MPhGZMYzBi1AHygVLYQUCaawqDA4PChxhmh/8ODDEsvAwHgMKMIDnGL0x7gJQCAwMAJd4MFwAAAHjaY2BgYGaA4DAGRgYQkAHyGMF8NgYrIM3JIAGVYYDT+AEjAwuDFpBmA9KMDEwMCh9i/v8H8sH0/4dQc1iAmAkALaUKLgAAAHjaTY9LDsIgEIbtgqHUPpDi3gPoBVyRTmTddOmqTXThEXqrob2gQ1FjwpDvfwCBdmdXC5AVKFu3e5MfNFJ29KTQT48Ob9/lqYwOGZxeUelN2U2R6+cArgtCJpauW7UQBqnFkUsjAY/kOU1cP+DAgvxwn1chZDwUbd6CFimGXwzwF6tPbFIcjEl+vvmM/byA48e6tWrKArm4ZJlCbdsrxksL1AwWn/yBSJKpYbq8AXaaTb8AAHja28jAwOC00ZrBeQNDQOWO//sdBBgYGRiYWYAEELEwMTE4uzo5Zzo5b2BxdnFOcALxNjA6b2ByTswC8jYwg0VlNuoCTWAMqNzMzsoK1rEhNqByEyerg5PMJlYuVueETKcd/89uBpnpvIEVomeHLoMsAAe1Id4AAAAAAAB42oWQT07CQBTGv0JBhagk7HQzKxca2sJCE1hDt4QF+9JOS0nbaaYDCQfwCJ7Au3AHj+LO13FMmm6cl7785vven0kBjHCBhfpYuNa5Ph1c0e2Xu3jEvWG7UdPDLZ4N92nOm+EBXuAbHmIMSRMs+4aUEd4Nd3CHD8NdvOLTsA2GL8M9PODbcL+hD7C1xoaHeLJSEao0FEW14ckxC+TU8TxvsY6X0eLPmRhry2WVioLpkrbp84LLQPGI7c6sOiUzpWIWS5GzlSgUzzLBSikOPFTOXqly7rqx0Z1Q5BAIoZBSFihQYQOOBEdkCOgXTOHA07HAGjGWiIjaPZNW13/+lm6S9FT7rLHFJ6fQbkATOG1j2OFMucKJJsxIVfQORl+9Jyda6Sl1dUYhSCm1dyClfoeDve4qMYdLEbfqHf3O/AdDumsjAAB42mNgYoAAZQYjBmyAGYQZmdhL8zLdDEydARfoAqIAAAABAAMABwAKABMAB///AA8AAQAAAAAAAAAAAAAAAAABAAAAAA==) format('woff');
}
.markdown-body {
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
line-height: 1.5;
color: #24292e;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-size: 16px;
line-height: 1.5;
word-wrap: break-word;
}
.markdown-body .pl-c {
color: #6a737d;
}
.markdown-body .pl-c1,
.markdown-body .pl-s .pl-v {
color: #005cc5;
}
.markdown-body .pl-e,
.markdown-body .pl-en {
color: #6f42c1;
}
.markdown-body .pl-smi,
.markdown-body .pl-s .pl-s1 {
color: #24292e;
}
.markdown-body .pl-ent {
color: #22863a;
}
.markdown-body .pl-k {
color: #d73a49;
}
.markdown-body .pl-s,
.markdown-body .pl-pds,
.markdown-body .pl-s .pl-pse .pl-s1,
.markdown-body .pl-sr,
.markdown-body .pl-sr .pl-cce,
.markdown-body .pl-sr .pl-sre,
.markdown-body .pl-sr .pl-sra {
color: #032f62;
}
.markdown-body .pl-v,
.markdown-body .pl-smw {
color: #e36209;
}
.markdown-body .pl-bu {
color: #b31d28;
}
.markdown-body .pl-ii {
color: #fafbfc;
background-color: #b31d28;
}
.markdown-body .pl-c2 {
color: #fafbfc;
background-color: #d73a49;
}
.markdown-body .pl-c2::before {
content: "^M";
}
.markdown-body .pl-sr .pl-cce {
font-weight: bold;
color: #22863a;
}
.markdown-body .pl-ml {
color: #735c0f;
}
.markdown-body .pl-mh,
.markdown-body .pl-mh .pl-en,
.markdown-body .pl-ms {
font-weight: bold;
color: #005cc5;
}
.markdown-body .pl-mi {
font-style: italic;
color: #24292e;
}
.markdown-body .pl-mb {
font-weight: bold;
color: #24292e;
}
.markdown-body .pl-md {
color: #b31d28;
background-color: #ffeef0;
}
.markdown-body .pl-mi1 {
color: #22863a;
background-color: #f0fff4;
}
.markdown-body .pl-mc {
color: #e36209;
background-color: #ffebda;
}
.markdown-body .pl-mi2 {
color: #f6f8fa;
background-color: #005cc5;
}
.markdown-body .pl-mdr {
font-weight: bold;
color: #6f42c1;
}
.markdown-body .pl-ba {
color: #586069;
}
.markdown-body .pl-sg {
color: #959da5;
}
.markdown-body .pl-corl {
text-decoration: underline;
color: #032f62;
}
.markdown-body .octicon {
display: inline-block;
vertical-align: text-top;
fill: currentColor;
}
.markdown-body a {
background-color: transparent;
-webkit-text-decoration-skip: objects;
}
.markdown-body a:active,
.markdown-body a:hover {
outline-width: 0;
}
.markdown-body strong {
font-weight: inherit;
}
.markdown-body strong {
font-weight: bolder;
}
.markdown-body h1 {
font-size: 2em;
margin: 0.67em 0;
}
.markdown-body img {
border-style: none;
}
.markdown-body svg:not(:root) {
overflow: hidden;
}
.markdown-body code,
.markdown-body kbd,
.markdown-body pre {
font-family: monospace, monospace;
font-size: 1em;
}
.markdown-body hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}
.markdown-body input {
font: inherit;
margin: 0;
}
.markdown-body input {
overflow: visible;
}
.markdown-body [type="checkbox"] {
box-sizing: border-box;
padding: 0;
}
.markdown-body * {
box-sizing: border-box;
}
.markdown-body input {
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
.markdown-body a {
color: #0366d6;
text-decoration: none;
}
.markdown-body a:hover {
text-decoration: underline;
}
.markdown-body strong {
font-weight: 600;
}
.markdown-body hr {
height: 0;
margin: 15px 0;
overflow: hidden;
background: transparent;
border: 0;
border-bottom: 1px solid #dfe2e5;
}
.markdown-body hr::before {
display: table;
content: "";
}
.markdown-body hr::after {
display: table;
clear: both;
content: "";
}
.markdown-body table {
border-spacing: 0;
border-collapse: collapse;
}
.markdown-body td,
.markdown-body th {
padding: 0;
}
.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
margin-top: 0;
margin-bottom: 0;
}
.markdown-body h1 {
font-size: 32px;
font-weight: 600;
}
.markdown-body h2 {
font-size: 24px;
font-weight: 600;
}
.markdown-body h3 {
font-size: 20px;
font-weight: 600;
}
.markdown-body h4 {
font-size: 16px;
font-weight: 600;
}
.markdown-body h5 {
font-size: 14px;
font-weight: 600;
}
.markdown-body h6 {
font-size: 12px;
font-weight: 600;
}
.markdown-body p {
margin-top: 0;
margin-bottom: 10px;
}
.markdown-body blockquote {
margin: 0;
}
.markdown-body ul,
.markdown-body ol {
padding-left: 0;
margin-top: 0;
margin-bottom: 0;
}
.markdown-body ol ol,
.markdown-body ul ol {
list-style-type: lower-roman;
}
.markdown-body ul ul ol,
.markdown-body ul ol ol,
.markdown-body ol ul ol,
.markdown-body ol ol ol {
list-style-type: lower-alpha;
}
.markdown-body dd {
margin-left: 0;
}
.markdown-body code {
font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
font-size: 12px;
}
.markdown-body pre {
margin-top: 0;
margin-bottom: 0;
font: 12px "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
}
.markdown-body .octicon {
vertical-align: text-bottom;
}
.markdown-body .pl-0 {
padding-left: 0 !important;
}
.markdown-body .pl-1 {
padding-left: 4px !important;
}
.markdown-body .pl-2 {
padding-left: 8px !important;
}
.markdown-body .pl-3 {
padding-left: 16px !important;
}
.markdown-body .pl-4 {
padding-left: 24px !important;
}
.markdown-body .pl-5 {
padding-left: 32px !important;
}
.markdown-body .pl-6 {
padding-left: 40px !important;
}
.markdown-body::before {
display: table;
content: "";
}
.markdown-body::after {
display: table;
clear: both;
content: "";
}
.markdown-body>*:first-child {
margin-top: 0 !important;
}
.markdown-body>*:last-child {
margin-bottom: 0 !important;
}
.markdown-body a:not([href]) {
color: inherit;
text-decoration: none;
}
.markdown-body .anchor {
float: left;
padding-right: 4px;
margin-left: -20px;
line-height: 1;
}
.markdown-body .anchor:focus {
outline: none;
}
.markdown-body p,
.markdown-body blockquote,
.markdown-body ul,
.markdown-body ol,
.markdown-body dl,
.markdown-body table,
.markdown-body pre {
margin-top: 0;
margin-bottom: 16px;
}
.markdown-body hr {
height: 0.25em;
padding: 0;
margin: 24px 0;
background-color: #e1e4e8;
border: 0;
}
.markdown-body blockquote {
padding: 0 1em;
color: #6a737d;
border-left: 0.25em solid #dfe2e5;
}
.markdown-body blockquote>:first-child {
margin-top: 0;
}
.markdown-body blockquote>:last-child {
margin-bottom: 0;
}
.markdown-body kbd {
display: inline-block;
padding: 3px 5px;
font-size: 11px;
line-height: 10px;
color: #444d56;
vertical-align: middle;
background-color: #fafbfc;
border: solid 1px #c6cbd1;
border-bottom-color: #959da5;
border-radius: 3px;
box-shadow: inset 0 -1px 0 #959da5;
}
.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
margin-top: 24px;
margin-bottom: 16px;
font-weight: 600;
line-height: 1.25;
}
.markdown-body h1 .octicon-link,
.markdown-body h2 .octicon-link,
.markdown-body h3 .octicon-link,
.markdown-body h4 .octicon-link,
.markdown-body h5 .octicon-link,
.markdown-body h6 .octicon-link {
color: #1b1f23;
vertical-align: middle;
visibility: hidden;
}
.markdown-body h1:hover .anchor,
.markdown-body h2:hover .anchor,
.markdown-body h3:hover .anchor,
.markdown-body h4:hover .anchor,
.markdown-body h5:hover .anchor,
.markdown-body h6:hover .anchor {
text-decoration: none;
}
.markdown-body h1:hover .anchor .octicon-link,
.markdown-body h2:hover .anchor .octicon-link,
.markdown-body h3:hover .anchor .octicon-link,
.markdown-body h4:hover .anchor .octicon-link,
.markdown-body h5:hover .anchor .octicon-link,
.markdown-body h6:hover .anchor .octicon-link {
visibility: visible;
}
.markdown-body h1 {
padding-bottom: 0.3em;
font-size: 2em;
border-bottom: 1px solid #eaecef;
}
.markdown-body h2 {
padding-bottom: 0.3em;
font-size: 1.5em;
border-bottom: 1px solid #eaecef;
}
.markdown-body h3 {
font-size: 1.25em;
}
.markdown-body h4 {
font-size: 1em;
}
.markdown-body h5 {
font-size: 0.875em;
}
.markdown-body h6 {
font-size: 0.85em;
color: #6a737d;
}
.markdown-body ul,
.markdown-body ol {
padding-left: 2em;
}
.markdown-body ul ul,
.markdown-body ul ol,
.markdown-body ol ol,
.markdown-body ol ul {
margin-top: 0;
margin-bottom: 0;
}
.markdown-body li>p {
margin-top: 16px;
}
.markdown-body li+li {
margin-top: 0.25em;
}
.markdown-body dl {
padding: 0;
}
.markdown-body dl dt {
padding: 0;
margin-top: 16px;
font-size: 1em;
font-style: italic;
font-weight: 600;
}
.markdown-body dl dd {
padding: 0 16px;
margin-bottom: 16px;
}
.markdown-body table {
/* display: block; */
width: 100%;
overflow: auto;
}
.markdown-body table th {
font-weight: 600;
}
.markdown-body table th,
.markdown-body table td {
padding: 6px 13px;
border: 1px solid #dfe2e5;
}
.markdown-body table tr {
background-color: #fff;
border-top: 1px solid #c6cbd1;
}
.markdown-body table tr:nth-child(2n) {
background-color: #f6f8fa;
}
.markdown-body img {
max-width: 100%;
box-sizing: content-box;
background-color: #fff;
}
.markdown-body code {
padding: 0;
padding-top: 0.2em;
padding-bottom: 0.2em;
margin: 0;
font-size: 85%;
background-color: rgba(27,31,35,0.05);
border-radius: 3px;
}
.markdown-body code::before,
.markdown-body code::after {
letter-spacing: -0.2em;
content: "\00a0";
}
.markdown-body pre {
word-wrap: normal;
}
.markdown-body pre>code {
padding: 0;
margin: 0;
font-size: 100%;
word-break: normal;
white-space: pre;
background: transparent;
border: 0;
}
.markdown-body .highlight {
margin-bottom: 16px;
}
.markdown-body .highlight pre {
margin-bottom: 0;
word-break: normal;
}
.markdown-body .highlight pre,
.markdown-body pre {
padding: 16px;
overflow: auto;
font-size: 85%;
line-height: 1.45;
background-color: #f6f8fa;
border-radius: 3px;
}
.markdown-body pre code {
display: inline;
max-width: auto;
padding: 0;
margin: 0;
overflow: visible;
line-height: inherit;
word-wrap: normal;
background-color: transparent;
border: 0;
}
.markdown-body pre code::before,
.markdown-body pre code::after {
content: normal;
}
.markdown-body .full-commit .btn-outline:not(:disabled):hover {
color: #005cc5;
border-color: #005cc5;
}
.markdown-body kbd {
display: inline-block;
padding: 3px 5px;
font: 11px "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
line-height: 10px;
color: #444d56;
vertical-align: middle;
background-color: #fafbfc;
border: solid 1px #d1d5da;
border-bottom-color: #c6cbd1;
border-radius: 3px;
box-shadow: inset 0 -1px 0 #c6cbd1;
}
.markdown-body :checked+.radio-label {
position: relative;
z-index: 1;
border-color: #0366d6;
}
.markdown-body .task-list-item {
list-style-type: none;
}
.markdown-body .task-list-item+.task-list-item {
margin-top: 3px;
}
.markdown-body .task-list-item input {
margin: 0 0.2em 0.25em -1.6em;
vertical-align: middle;
}
.markdown-body hr {
border-bottom-color: #eee;
}

2569
_core/css/sys.css Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,29 @@
<?php
if(!defined('__KIMS__')) exit;
$g['referer'] = $_SERVER['HTTP_REFERER'];
if (!$g['referer'] || !strpos($g['referer'],'&m=admin&'))
{
$_filterSet = array('nic','name','id');
foreach ($_filterSet as $_ft)
{
${$_ft} = preg_replace("(\.|\;|\\\)",'',strip_tags(${$_ft}));
}
}
if (strpos(',join,',$a))
{
if (!$g['referer'] || !strpos($g['referer'],$_SERVER['HTTP_HOST'])) exit;
}
$g['act_module0'] = $g['dir_module'].$a.'.php';
$g['act_module1'] = $g['dir_module'].'action/'.(strpos($a,'/')?str_replace('/','/a.',$a):'a.'.$a).'.php';
$g['act_module2'] = $g['dir_module'].'action/a.'.$a.'.php';
$g['act_module3'] = $g['referer'] && strpos($g['referer'],'&m=admin&') ? ($_HMD['lang']?$_HMD['lang']:$d['admin']['syslang']) : ($_HS['lang']?$_HS['lang']:$d['admin']['syslang']);
include getLangFile($g['dir_module'].'language/',$g['act_module3'],'/lang.action.php');
if (is_file($g['act_module0'])) include $g['act_module0'];
if (is_file($g['act_module1'])) include $g['act_module1'];
if (is_file($g['act_module2'])) include $g['act_module2'];
?>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

View File

@@ -0,0 +1,658 @@
body {
background-color: #343a40
}
/*************** theme ******************/
.form-control,
.input-group-lg>.form-control {
border-radius: 0
}
.btn-light {
color: #24292e;
user-select: none;
background-color: #eff3f6;
background-image: linear-gradient(-180deg, #fafbfc 0%, #eff3f6 90%);
background-repeat: repeat-x;
background-position: -1px -1px;
background-size: 110% 110%;
border: 1px solid rgba(27, 31, 35, 0.2);
border-radius: 0.25em;
white-space: nowrap;
vertical-align: middle;
cursor: pointer;
}
.btn-light:hover {
text-decoration: none;
background-repeat: repeat-x;
}
.btn-light:hover,
.btn-light.hover {
background-color: #e6ebf1;
background-image: linear-gradient(-180deg, #f0f3f6 0%, #e6ebf1 90%);
background-position: 0 -0.5em;
border-color: rgba(27, 31, 35, 0.35);
}
.btn-light:active,
.btn-light.active,
.btn-light.selected {
background-color: #e9ecef !important;
background-image: none !important;
border-color: rgba(27, 31, 35, 0.35) !important;
}
.btn-light:disabled,
.btn-light.disabled {
color: rgba(36, 41, 46, 0.4);
background-color: #eff3f6;
background-image: none;
border: 1px solid rgba(27, 31, 35, 0.2);
border-color: rgba(27, 31, 35, 0.2);
box-shadow: none;
}
.btn:focus {
outline: 0;
}
.btn-light:focus,
.btn-light.focus {
box-shadow: 0 0 0 0.2em rgba(3, 102, 214, 0.3);
}
.rb-system-site .card-header a {
color: #888;
}
.rb-system-site .card-header.bg-primary a {
color: #fff
}
[data-toggle="buttons"].btn-group .btn-light {
color: #777 !important;
font-weight: normal;
}
[data-toggle="buttons"].btn-group .btn-light.active,
[data-toggle="buttons"].btn-group .btn-light:active {
color: #eee !important;
background-color: rgba(0, 0, 0, .09) !important;
border-color: #222 !important;
-webkit-box-shadow: inset 1px 1px 3px #222;
-moz-box-shadow: inset 1px 1px 3px #222;
box-shadow: inset 1px 1px 3px #222;
}
.btn-sm {
padding: 3px 10px;
font-size: 12px;
line-height: 20px;
}
.btn,
[role="button"] {
cursor: pointer !important;
}
.btn-danger {
color: #cb2431;
border: 1px solid rgba(27, 31, 35, 0.2);
background-color: #fafbfc;
background-image: linear-gradient(-180deg, #fafbfc 0%, #eff3f6 90%);
}
.btn-danger:hover {
color: #fff;
background-color: #cb2431;
background-image: linear-gradient(-180deg, #de4450 0%, #cb2431 90%);
border-color: rgba(27, 31, 35, 0.5);
}
.btn-danger:active,
.btn-danger.active {
color: #fff;
background-color: #b5202c;
background-image: none;
border-color: rgba(27, 31, 35, 0.5);
box-shadow: inset 0 0.15em 0.3em rgba(27, 31, 35, 0.15);
}
.btn-danger:disabled,
.btn-danger.disabled {
color: rgba(203, 36, 49, 0.4);
background-color: #eff3f6;
background-image: none;
border-color: rgba(27, 31, 35, 0.2);
box-shadow: none;
}
/*tooltip*/
.tooltip-inner {
background-color: #0366d6;
}
.tooltip.bs-tooltip-top .arrow::before,
.tooltip.bs-tooltip-auto[x-placement^="top"] .arrow::before {
border-top-color: #0366d6
}
/*************** sidebar-inverse ******************/
.rb-system-sidebar.rb-inverse {
display: block;
background-color: #343a40;
min-height: 100%;
border-right: 1px solid #222;
}
.rb-hidden-system-admin .rb-system-sidebar.rb-inverse,
.rb-minified-sidebar .rb-system-sidebar.rb-inverse {
box-shadow: 1px 0 3px rgba(0, 0, 0, 0.5);
}
.rb-system-admin .btn-toolbar .btn {
color: #A8A8A8
}
.rb-system-admin .btn-toolbar .btn:hover {
color: #fff
}
.rb-system-admin .btn-toolbar .btn:active {
color: #428BCA
}
.rb-system-sidebar.rb-inverse .rb-buttons .rb-content-padded {
border-bottom: 1px solid #1A1817;
}
.rb-system-sidebar.rb-inverse .rb-buttons .rb-inner {
border-bottom: 1px solid #1A1817;
}
.rb-system-sidebar.rb-inverse nav ul li a:focus {
color: #c9c9c9
}
.rb-system-sidebar.rb-inverse nav ul li.active a,
.rb-system-sidebar.rb-inverse nav ul li.active a:hover {
color: #fff
}
.rb-system-sidebar.rb-inverse nav ul li.open>a,
.rb-system-sidebar.rb-inverse nav ul li.open>a b {
color: #fff !important;
}
.rb-system-admin nav>ul li.active ul li.active>a {
background-color: #272c32
}
.rb-system-sidebar.rb-inverse nav ul li:hover,
.rb-system-sidebar.rb-inverse nav ul li:hover .menu-item-parent {
color: #428bca;
}
.rb-system-sidebar.rb-inverse nav ul li.active:hover,
.rb-system-sidebar.rb-inverse nav ul li.active:hover .menu-item-parent {
color: #fff;
}
.rb-system-sidebar.rb-inverse nav ul li a {
color: #a8a8a8;
}
#sidebar-modules .list-group-item.active a {
background-color: #272c32;
color: #fff
}
.rb-system-sidebar.rb-inverse nav ul li .menu-item-parent {
color: #ccc;
}
.rb-system-sidebar.rb-inverse nav ul li a:focus {
color: #c9c9c9
}
.rb-system-sidebar.rb-inverse nav ul ul {
/*background: rgba(69, 69, 69, .7);*/
}
.rb-system-sidebar.rb-inverse nav ul .active ul {
/*background: rgba(69, 69, 69, 1);*/
}
.rb-system-sidebar.rb-inverse nav>ul>li>ul::before {
border-left: 1px dotted #7A7A7A;
}
.rb-system-sidebar.rb-inverse nav>ul li.active>a.collapsed:before {
color: #eee;
}
.rb-system-sidebar.rb-inverse nav>ul li.active ul li.active>a:before {
color: #eee;
}
.rb-system-sidebar.rb-inverse nav ul li a:active {
background: #000 !important
}
.rb-system-sidebar.rb-inverse nav>ul ul li::before {
border-top: 1px dotted #7A7A7A;
}
.rb-system-sidebar.rb-inverse nav>ul>li>a>i>em {
background: #ED1C24;
color: #fff;
border: 1px solid rgba(255, 255, 255, .1);
}
/*login-info*/
.rb-system-sidebar.rb-inverse .login-info a.rb-username {
color: #a8a8a8;
}
.rb-system-sidebar.rb-inverse .login-info>a:hover {
color: #fff
}
.rb-minified-sidebar .rb-system-sidebar.rb-inverse .login-info {
border-bottom: 1px solid #181818
}
@media (max-width: 992px) and (min-width: 768px) {
.rb-system-sidebar.rb-inverse .rb-minify-sidebar {
color: #A8A8A8;
}
}
/* minified-sidebar */
.rb-system-sidebar.rb-inverse .rb-minify-sidebar {
background: transparent;
color: #A8A8A8;
}
.rb-system-sidebar.rb-inverse .rb-minify-sidebar:hover {
/*background: #646464;*/
color: #E4E4E4;
}
.rb-minified-sidebar .rb-system-sidebar.rb-inverse .rb-minify-sidebar {
color: #A8A8A8;
}
.rb-minified-sidebar .rb-system-sidebar.rb-inverse .rb-inbox-badge {
background: #ED1C24;
}
.rb-minified-sidebar .rb-system-sidebar.rb-inverse nav>ul>ul {
background: #ed1c24 !important
}
.rb-minified-sidebar .rb-system-sidebar.rb-inverse nav>ul>li>a>.menu-item-parent {
background-color: #f5f5f5;
color: #333 !important;
text-shadow: none;
-webkit-box-shadow: 2px 1px 2px 0 rgba(0, 0, 0, .2);
-moz-box-shadow: 2px 1px 2px 0 rgba(0, 0, 0, .2);
box-shadow: 2px 1px 2px 0 rgba(0, 0, 0, .2);
border-left: 1px solid #bfbfbf;
border-top: 1px solid #D8D4D4;
border-bottom: 1px solid #fff;
}
.rb-minified-sidebar .rb-system-sidebar.rb-inverse nav>ul>li>ul {
border: 1px solid #bfbfbf;
-webkit-box-shadow: 1px 1px 2px 0 rgba(0, 0, 0, .2);
-moz-box-shadow: 1px 1px 2px 0 rgba(0, 0, 0, .2);
box-shadow: 1px 1px 2px 0 rgba(0, 0, 0, .2);
background: #222222;
}
.rb-minified-sidebar .rb-system-sidebar.rb-inverse nav>ul>li>ul>li {
background-color: rgba(69, 69, 69, .9)
}
.rb-minified-sidebar .rb-system-sidebar.rb-inverse nav>ul>li>ul>li>ul>li {
background-color: #484B50
}
.rb-minified-sidebar .rb-system-sidebar.rb-inverse nav>ul>li {
border-bottom: 1px solid #1A1817;
border-top: 1px solid #525151
}
/* hide-sidebar */
.rb-system-sidebar.rb-inverse .rb-hide-sidebar2 {
border-bottom: 1px solid #302F2F;
background: transparent;
color: #A8A8A8;
}
.rb-hidden-sidebar .rb-system-sidebar.rb-inverse {
-moz-box-shadow: 0 0 6px rgba(3, 3, 3, 0.6);
-webkit-box-shadow: 0 0 6px rgba(3, 3, 3, 0.6);
box-shadow: 0 0 6px rgba(3, 3, 3, 0.6);
}
.rb-hidden-sidebar .rb-system-sidebar.rb-inverse .rb-hide-sidebar {
color: #333;
background-color: #e6e6e6;
border-color: #adadad;
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
}
.rb-system-sidebar.rb-system-site {
background-color: #343a40;
border-left: 1px solid #222;
}
.rb-system-site .rb-panel-top {
background-color: #272c32 !important;
border-bottom: 1px solid #222;
color: #eee
}
.rb-system-site .rb-icon-hide {
color: #eee
}
.rb-hidden-system-site .rb-system-site .rb-icon-hide:hover .rb-icon:before,
.rb-system-site .rb-icon-hide:hover .rb-icon:before {
color: #eee;
}
/* tabs-below */
.rb-system-sidebar.rb-inverse .nav-tabs {
border-bottom: 1px solid #c9c9c9;
}
.rb-system-sidebar.rb-inverse .nav-tabs>li>a {
border: 1px solid #c9c9c9;
background: -moz-linear-gradient(top, #999 0%, #444 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #999), color-stop(100%, #444));
background: -webkit-linear-gradient(top, #999 0%, #444 100%);
background: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
background: -ms-linear-gradient(top, #fff 0%, #e0e0e0 100%);
background: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
filter: progid: DXImageTransform.Microsoft.gradient(startColorstr='#99999999', endColorstr='#44444444', GradientType=0);
-webkit-box-shadow: inset 0px 1px 0px 0px rgba(255, 255, 255, 1);
box-shadow: inset 0px 1px 0px 0px rgba(255, 255, 255, 1);
color: #333;
}
.rb-system-sidebar.rb-inverse .nav-tabs>li>a.active {
color: #eee;
background: #ffffff;
border: 1px solid #c9c9c9;
border-right: 1px solid transparent;
border-bottom-color: transparent;
}
.rb-system-sidebar.rb-inverse .nav-tabs>li>a:hover {
color: #62aeef;
}
.rb-system-sidebar.rb-inverse .nav-tabs>li:last-child>a,
.rb-system-sidebar.rb-inverse .nav-tabs>li.last-child>a {
border-right: 1px solid #c9c9c9
}
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs {
border-color: #c5d0dc;
}
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs>li>a,
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs>li>a:hover,
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs>li>a:focus {
margin-left: -1px
}
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs>li>a.active,
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs>li>a.active:hover,
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs>li>a.active:focus {
box-shadow: 0px 2px 3px 0px rgba(0, 0, 0, 0.15);
background-color: transparent;
border-color: transparent;
border: none;
}
.rb-system-main {
background-color: #343a40
}
.rb-system-site {
color: #999;
}
.rb-system-site .list-group-item {
line-height: 1.2
}
.rb-system-site .custom-control-description {
line-height: 1.9
}
.custom-checkbox,
.custom-radio {
line-height: 1.7rem;
}
.custom-control-label::before {
background-color: #1f2227;
border-radius: .15rem;
}
.rb-system-site .rb-content-padded {
padding: 0;
}
.rb-system-site .nav-tabs .nav-link {
border-radius: 0;
background-color: #272c32;
color: #999
}
.rb-system-sidebar .nav-tabs {
border-bottom: 1px solid transparent;
}
.rb-system-sidebar .nav-tabs .nav-item {
width: 25%
}
.rb-system-sidebar .nav-tabs .nav-link {
padding: .5rem;
border-right: 1px solid #222;
border-bottom: 1px solid #222;
}
.rb-system-sidebar .nav-tabs .nav-link:hover {
border-color: #222;
border-top-color: transparent;
border-left-color: transparent
}
.rb-system-sidebar .nav-tabs .nav-link.active {
color: #eee;
background-color: inherit;
border: 1px solid #222;
border-top: 0;
border-bottom: 0
}
.rb-system-sidebar .nav-tabs .nav-link.active:first-child {
border-left: 0
}
.rb-system-site fieldset[disabled] .btn-light,
.rb-system-site fieldset[disabled] .btn-light.active {
background-image: none;
background-color: inherit
}
.rb-system-site .card {
background-color: inherit;
color: #eee
}
.rb-system-site .form-control {
background-color: #1f2227;
color: #abafb5;
border-color: #272c31
}
.rb-system-site .form-control:focus {
color: #abafb5;
background-color: #1f2227;
border-color: #5792ef;
border-width: 1px;
outline: 0;
box-shadow: none;
}
.bg-light {
background-color: rgba(0, 0, 0, .03) !important;
}
.btn.btn-light {
background-color: #343a40;
background-image: none;
color: #ccc !important;
border-color: #181a1e;
font-weight: normal;
}
.btn.btn-block {
border-radius: 4rem;
}
.btn-outline-primary {
color: #ccc;
border-color: #ccc;
}
.rb-hidden-system-site .rb-system-site .rb-opener {
background-color: inherit;
border-bottom-left-radius: 2px;
border-top-left-radius: 2px;
box-shadow: -1px 0 2px rgba(0, 0, 0, 0.5);
color: #9ea6b3;
display: block;
left: -20px;
padding: 0 5px;
}
.rb-system-site .custom-select {
background-color: #272c32;
display: inline-block;
max-width: 100%;
height: calc(2.25rem + 2px);
padding: 0.375rem 1.75rem 0.375rem 0.75rem;
line-height: 1.5;
/*color: #495057;*/
vertical-align: middle;
background: #272c32 url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='#abafb5' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center;
background-size: 8px 10px;
border: 1px solid #222;
border-radius: 0.15rem;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
.rb-system-site .table td,
.rb-system-site .table th {
border-top: 1px solid #222;
}
.rb-system-site .table {
color: #999
}
.table thead th {
border-bottom: 1px solid #222;
}
#emuldevices {
left: 0;
}
#emuldevices .table th:first-child,
#emuldevices .table td:first-child {
padding-left: 15px
}
#emuldevices .table tbody tr.active td,
#emuldevices .table tbody tr.active th {
color: #fff;
background-color: #007bff;
}
/*utility*/
/*color*/
.muted-link {
color: #ccc !important;
}
.muted-link:hover {
color: #eee !important;
text-decoration: none;
}
.text-gray {
color: #586069 !important;
}
.text-gray-light {
color: #959da5 !important;
}
.text-gray-dark {
color: #24292e !important;
}
.link-gray {
color: #586069 !important;
}
.link-gray-dark {
color: #24292e !important;
}
.link-gray-dark:hover {
color: #0366d6 !important;
}
.border-top {
border-top: 1px #e1e4e8 solid !important;
}
.border-gray-light {
border-color: #eaecef !important;
}

View File

@@ -0,0 +1,581 @@
body {
background-color: #F4F4F4;
font-family: 'Noto Sans KR', sans-serif, '돋움', dotum, sans-serif;
}
/*************** theme ******************/
.form-control,
.input-group-lg>.form-control {
border-radius: 0
}
.btn-light {
color: #24292e;
user-select: none;
background-color: #F4F4F4;
border: 1px solid rgba(0, 0, 0, .1);
border-radius: 0.25em;
white-space: nowrap;
vertical-align: middle;
cursor: pointer;
}
.btn-light:hover {
text-decoration: none;
background-repeat: repeat-x;
}
.btn-light:hover,
.btn-light.hover {
background-color: #e6ebf1;
}
.btn-light:active,
.btn-light.active,
.btn-light.selected {
background-color: #e9ecef !important;
background-image: none !important;
border-color: rgba(27, 31, 35, 0.35) !important;
}
.btn-light:disabled,
.btn-light.disabled {
color: rgba(36, 41, 46, 0.4);
background-color: #eff3f6;
background-image: none;
border: 1px solid rgba(27, 31, 35, 0.2);
border-color: rgba(27, 31, 35, 0.2);
box-shadow: none;
}
.btn:focus {
outline: 0;
}
.btn-light:focus,
.btn-light.focus {
box-shadow: 0 0 0 0.2em rgba(3, 102, 214, 0.3);
}
.rb-system-site .card-header a {
color: #888;
}
.rb-system-site .card-header.bg-primary a {
color: #fff
}
[data-toggle="buttons"].btn-group .btn-light {
color: #999;
font-weight: normal;
background-color: #fff;
font-weight: 300
}
[data-toggle="buttons"].btn-group .btn-light.active,
[data-toggle="buttons"].btn-group .btn-light:active {
color: #666 !important;
background-color: rgba(0, 0, 0, .05) !important;
border-color: rgba(0, 0, 0, .1) !important;
-webkit-box-shadow: inset 1px 1px 3px rgba(0, 0, 0, .1);
-moz-box-shadow: inset 1px 1px 3px rgba(0, 0, 0, .1);
box-shadow: inset 1px 1px 3px rgba(0, 0, 0, .1);
}
.btn-sm {
padding: 3px 10px;
font-size: 12px;
line-height: 20px;
}
.btn,
[role="button"] {
cursor: pointer !important;
}
.btn-danger {
color: #cb2431;
border: 1px solid rgba(27, 31, 35, 0.2);
background-color: #fafbfc;
background-image: linear-gradient(-180deg, #fafbfc 0%, #eff3f6 90%);
}
.btn-danger:hover {
color: #fff;
background-color: #cb2431;
background-image: linear-gradient(-180deg, #de4450 0%, #cb2431 90%);
border-color: rgba(27, 31, 35, 0.5);
}
.btn-danger:active,
.btn-danger.active {
color: #fff;
background-color: #b5202c;
background-image: none;
border-color: rgba(27, 31, 35, 0.5);
box-shadow: inset 0 0.15em 0.3em rgba(27, 31, 35, 0.15);
}
.btn-danger:disabled,
.btn-danger.disabled {
color: rgba(203, 36, 49, 0.4);
background-color: #eff3f6;
background-image: none;
border-color: rgba(27, 31, 35, 0.2);
box-shadow: none;
}
/*************** sidebar-inverse ******************/
.rb-system-sidebar.rb-inverse {
display: block;
background-color: #F4F4F4;
min-height: 100%;
border-right: 1px solid rgba(0, 0, 0, .1);
}
.rb-hidden-system-admin .rb-system-sidebar.rb-inverse,
.rb-minified-sidebar .rb-system-sidebar.rb-inverse {
box-shadow: 1px 0 3px rgba(0, 0, 0, 0.5);
}
.rb-system-admin .btn-toolbar .btn {
color: #666
}
.rb-system-admin .btn-toolbar .btn:hover {
color: #333
}
.rb-system-admin .btn-toolbar .btn:active {
color: #428BCA
}
.rb-system-sidebar.rb-inverse .rb-buttons .rb-content-padded {
border-bottom: 1px solid #1A1817;
}
.rb-system-sidebar.rb-inverse .rb-buttons .rb-inner {
border-bottom: 1px solid #1A1817;
}
.rb-system-sidebar.rb-inverse nav ul li a:focus {
color: #c9c9c9
}
.rb-system-admin .rb-icon-minify:hover .rb-icon:before {
color: #999;
}
.rb-system-sidebar.rb-inverse nav ul li.active a,
.rb-system-sidebar.rb-inverse nav ul li.active a:hover {
color: #555
}
.rb-system-sidebar.rb-inverse nav ul li.open>a,
.rb-system-sidebar.rb-inverse nav ul li.open>a b {
color: #fff !important;
}
.rb-system-admin nav>ul li.active ul li.active>a {
background-color: #D5D5D5
}
.rb-system-admin #sidebar-sites nav .list-group-item.active {
background-color: #D5D5D5;
}
.rb-system-sidebar.rb-inverse nav ul li:hover,
.rb-system-sidebar.rb-inverse nav ul li:hover .menu-item-parent {
color: #428bca;
}
.rb-system-sidebar.rb-inverse nav ul li.active:hover,
.rb-system-sidebar.rb-inverse nav ul li.active:hover .menu-item-parent {
color: #333;
}
.rb-system-sidebar.rb-inverse nav ul li a {
color: #444;
}
#sidebar-modules .list-group-item.active a {
background-color: #D5D5D5;
}
.rb-system-sidebar.rb-inverse nav ul li .menu-item-parent {
color: #444;
}
.rb-system-sidebar.rb-inverse nav ul li a:focus {
/* color: #c9c9c9 */
}
.rb-system-sidebar.rb-inverse nav ul ul {
/*background: rgba(69, 69, 69, .7);*/
}
.rb-system-sidebar.rb-inverse nav ul .active ul {
/*background: rgba(69, 69, 69, 1);*/
}
.rb-system-sidebar.rb-inverse nav>ul>li>ul::before {
border-left: 1px dotted #7A7A7A;
}
.rb-system-sidebar.rb-inverse nav>ul li.active>a.collapsed:before {
color: #D5D5D5;
}
.rb-system-sidebar.rb-inverse nav>ul li.active ul li.active>a:before {
color: #D5D5D5;
}
.rb-system-sidebar.rb-inverse nav ul li a:active {
background: rgba(0, 0, 0, .04);
!important
}
.rb-system-sidebar.rb-inverse nav>ul ul li::before {
border-top: 1px dotted #7A7A7A;
}
.rb-system-sidebar.rb-inverse nav>ul>li>a>i>em {
background: #ED1C24;
color: #fff;
border: 1px solid rgba(255, 255, 255, .1);
}
/*login-info*/
.rb-system-sidebar.rb-inverse .login-info a.rb-username {
color: #444;
}
.rb-system-sidebar.rb-inverse .login-info>a:hover {
color: #fff
}
.rb-minified-sidebar .rb-system-sidebar.rb-inverse .login-info {
border-bottom: 1px solid rgba(0, 0, 0, .1)
}
@media (max-width: 992px) and (min-width: 768px) {
.rb-system-sidebar.rb-inverse .rb-minify-sidebar {
color: #A8A8A8;
}
}
/* minified-sidebar */
.rb-system-sidebar.rb-inverse .rb-minify-sidebar {
background: transparent;
color: #A8A8A8;
}
.rb-system-sidebar.rb-inverse .rb-minify-sidebar:hover {
/*background: #646464;*/
color: #E4E4E4;
}
.rb-minified-sidebar .rb-system-sidebar.rb-inverse .rb-minify-sidebar {
color: #A8A8A8;
}
.rb-minified-sidebar .rb-system-sidebar.rb-inverse .rb-inbox-badge {
background: #ED1C24;
}
.rb-minified-sidebar .rb-system-sidebar.rb-inverse nav>ul>ul {
background: #ed1c24 !important
}
.rb-minified-sidebar .rb-system-sidebar.rb-inverse nav>ul>li>a>.menu-item-parent {
background-color: #f5f5f5;
color: #333 !important;
text-shadow: none;
-webkit-box-shadow: 2px 1px 2px 0 rgba(0, 0, 0, .2);
-moz-box-shadow: 2px 1px 2px 0 rgba(0, 0, 0, .2);
box-shadow: 2px 1px 2px 0 rgba(0, 0, 0, .2);
border-left: 1px solid #bfbfbf;
border-top: 1px solid #D8D4D4;
border-bottom: 1px solid #fff;
}
.rb-minified-sidebar .rb-system-sidebar.rb-inverse nav>ul>li>ul {
border: 1px solid rgba(0, 0, 0, .1);
-webkit-box-shadow: 1px 1px 2px 0 rgba(0, 0, 0, .2);
-moz-box-shadow: 1px 1px 2px 0 rgba(0, 0, 0, .2);
box-shadow: 1px 1px 2px 0 rgba(0, 0, 0, .2);
background: #fff;
}
.rb-minified-sidebar .rb-system-sidebar.rb-inverse nav>ul>li>ul>li {
background-color: #ffff
}
.rb-minified-sidebar .rb-system-sidebar.rb-inverse nav>ul>li>ul>li>ul>li {
background-color: #fff
}
.rb-minified-sidebar .rb-system-sidebar.rb-inverse nav>ul>li {
border-bottom: 1px solid rgba(0, 0, 0, .1);
border-top: 1px solid rgba(0, 0, 0, .1)
}
/* hide-sidebar */
.rb-system-sidebar.rb-inverse .rb-hide-sidebar2 {
border-bottom: 1px solid #302F2F;
background: transparent;
color: #A8A8A8;
}
.rb-hidden-sidebar .rb-system-sidebar.rb-inverse {
-moz-box-shadow: 0 0 6px rgba(3, 3, 3, 0.6);
-webkit-box-shadow: 0 0 6px rgba(3, 3, 3, 0.6);
box-shadow: 0 0 6px rgba(3, 3, 3, 0.6);
}
.rb-hidden-sidebar .rb-system-sidebar.rb-inverse .rb-hide-sidebar {
color: #333;
background-color: #e6e6e6;
border-color: #adadad;
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
}
.rb-system-sidebar.rb-system-site {
background-color: #fff;
border-left: 1px solid rgba(0, 0, 0, .1);
}
.rb-system-site .rb-panel-top {
background-color: #F4F4F4 !important;
border-bottom: 1px solid rgba(0, 0, 0, .1);
color: #eee
}
.rb-system-site .rb-icon-hide {
color: #999
}
.rb-hidden-system-site .rb-system-site .rb-icon-hide:hover .rb-icon:before,
.rb-system-site .rb-icon-hide:hover .rb-icon:before {
color: #999;
}
/* tabs-below */
.rb-system-sidebar.rb-inverse .nav-tabs {
border-bottom: 1px solid rgba(0, 0, 0, .1);
}
.rb-system-sidebar.rb-inverse .nav-tabs>li>a {
border: 1px solid rgba(0, 0, 0, .1);
color: #777;
background-color: #fff;
}
.rb-system-sidebar.rb-inverse .nav-tabs>li>a.active {
color: #444;
background: #ffffff;
border: 1px solid #c9c9c9;
border-right: 1px solid transparent;
border-bottom-color: transparent;
}
.rb-system-sidebar.rb-inverse .nav-tabs>li>a:hover {
color: #62aeef;
}
.rb-system-sidebar.rb-inverse .nav-tabs>li:last-child>a,
.rb-system-sidebar.rb-inverse .nav-tabs>li.last-child>a {
border-right: 1px solid #c9c9c9
}
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs {
border-color: #c5d0dc;
}
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs>li>a,
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs>li>a:hover,
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs>li>a:focus {
margin-left: -1px
}
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs>li>a.active,
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs>li>a.active:hover,
.rb-system-sidebar.rb-inverse .tabs-below>.nav-tabs>li>a.active:focus {
background-color: transparent;
border-color: transparent;
border: none;
}
.rb-system-main {
background-color: #fff
}
.rb-system-site .list-group-item {
line-height: 1.2
}
.rb-system-site .custom-control-description {
line-height: 1.9
}
.custom-checkbox,
.custom-radio {
line-height: 1.7rem;
}
.custom-control-label::before {
border-radius: .15rem;
}
.rb-system-site .rb-content-padded {
padding: 0;
}
.rb-system-site .nav-tabs .nav-link {
border-radius: 0;
color: #999
}
.rb-system-sidebar .nav-tabs {
border-bottom: 1px solid transparent;
}
.rb-system-sidebar .nav-tabs .nav-item {
width: 25%
}
.rb-system-sidebar .nav-tabs .nav-link {
padding: .5rem;
border-right: 1px solid rgba(0, 0, 0, .1);
border-bottom: 1px solid rgba(0, 0, 0, .1);
}
.rb-system-sidebar .nav-tabs .nav-link:hover {
border-color: rgba(0, 0, 0, .1);
border-top-color: transparent;
border-left-color: transparent
}
.rb-system-sidebar .nav-tabs .nav-link.active {
color: #444;
background-color: inherit;
border: 1px solid rgba(0, 0, 0, .1);
border-top: 0;
border-bottom: 0
}
.rb-system-sidebar .nav-tabs .nav-link.active:first-child {
border-left: 0
}
.rb-system-site fieldset[disabled] .btn-light,
.rb-system-site fieldset[disabled] .btn-light.active {
background-image: none;
background-color: inherit
}
.rb-system-site .card {
background-color: inherit;
color: #555;
}
.btn.btn-block {
border-radius: 4rem;
}
.btn-outline-primary {
color: #555;
border-color: #ccc;
}
.rb-hidden-system-site .rb-system-site .rb-opener {
background-color: inherit;
border-bottom-left-radius: 2px;
border-top-left-radius: 2px;
box-shadow: -1px 0 2px rgba(0, 0, 0, 0.5);
color: #9ea6b3;
display: block;
left: -20px;
padding: 0 5px;
}
.rb-system-site .table td,
.rb-system-site .table th {
border-top: 1px solid rgba(0, 0, 0, .1);
}
.table thead th {
border-bottom: 1px solid rgba(0, 0, 0, .1);
}
#emuldevices {
left: 0;
}
#emuldevices .table th:first-child,
#emuldevices .table td:first-child {
padding-left: 15px
}
#emuldevices .table tbody tr.active td,
#emuldevices .table tbody tr.active th {}
/*utility*/
/*color*/
.muted-link {
color: #ccc !important;
}
.muted-link:hover {
color: #eee !important;
text-decoration: none;
}
.text-gray {
color: #586069 !important;
}
.text-gray-light {
color: #959da5 !important;
}
.text-gray-dark {
color: #24292e !important;
}
.link-gray {
color: #586069 !important;
}
.link-gray-dark {
color: #24292e !important;
}
.link-gray-dark:hover {
color: #0366d6 !important;
}
.border-top {
border-top: 1px #e1e4e8 solid !important;
}
.border-gray-light {
border-color: #eaecef !important;
}

View File

@@ -0,0 +1,79 @@
<?php
if(!defined('__KIMS__')) exit;
if (is_file($g['main']))
{
if (!$system)
{
if(!$g['mobile'] || $_SESSION['pcmode']=='Y')
{
if (!$g['head']['cod'])
{
$g['codhead'] = $g['path_page'].$r.'-menus/'.$_HM['id'].'.header.php';
if(is_file($g['codhead'])) include $g['codhead'];
}
if ($_HM['imghead'])
{
if (strstr($_HM['imghead'],'swf')) echo '<div><embed id="swf_menu_header" src="'.$g['s'].'/_var/menu/'.$_HM['imghead'].'"></embed></div>';
else echo '<div><img id="img_menu_header" src="'.$g['s'].'/_var/menu/'.$_HM['imghead'].'" alt="" /></div>';
}
}
$d['cachetime'] = file_exists($d['page']['cctime']) ? implode('',file($d['page']['cctime'])) : 0;
if ($d['cachetime'] && substr($d['page']['source'],0,8)=='./pages/')
{
$g['cache'] = str_replace('.php','.cache',$d['page']['source']);
$g['recache'] = true;
if(file_exists($g['cache']))
{
if(mktime() - filemtime($g['cache']) > $d['cachetime'] * 60) unlink($g['cache']);
else
{
readfile($g['cache']);
$g['recache'] = false;
}
}
if ($g['recache'])
{
ob_start();
include $g['main'];
$g['buffer'] = ob_get_contents();
ob_end_clean();
echo $g['buffer'];
$fp = fopen($g['cache'],'w');
fwrite($fp,$g['buffer']);
fclose($fp);
@chmod($g['cache'],0707);
}
}
else {
include $g['main'];
}
if(!$g['mobile'] || $_SESSION['pcmode']=='Y')
{
if ($_HM['imgfoot'])
{
if (strstr($_HM['imgfoot'],'swf')) echo '<div><embed id="swf_menu_footer" src="'.$g['s'].'/_var/menu/'.$_HM['imgfoot'].'"></embed></div>';
else echo '<div><img id="img_menu_footer" src="'.$g['s'].'/_var/menu/'.$_HM['imgfoot'].'" alt="" /></div>';
}
if (!$g['foot']['cod'])
{
$g['codfoot'] = $g['path_page'].$r.'-menus/'.$_HM['id'].'.footer.php';
if(is_file($g['codfoot'])) include $g['codfoot'];
}
}
}
else {
include $g['main'];
}
}
else
{
getLink($g['s'].'/?r='.$r,'','','');
}
?>

View File

@@ -0,0 +1,75 @@
<?php
if(!defined('__KIMS__')) exit;
$g['incdir'] = $g['incdir']?$g['incdir']:$g['path_layout'].$d['layout']['dir'].'/_includes/';
$g['wcache'] = $d['admin']['cache_flag']?'?nFlag='.$date[$d['admin']['cache_flag']]:'';
$g['cssset'] = array
(
$g['dir_module'].'_main'=>$g['url_module'].'/_main',
$g['dir_module_skin'].'_main'=>$g['url_module_skin'].'/_main',
$g['dir_module_comm']=>$g['url_module_comm'],
$g['dir_module_mode']=>$g['url_module_mode'],
$g['dir_module_admin']=>$g['url_module_admin'],
);
$NT_DATA = explode('|',$my['noticeconf']);
$nt_web = $NT_DATA[0];
$nt_email = $NT_DATA[1];
$nt_fcm = $NT_DATA[2];
?>
<script>
var rooturl = '<?php echo $g['url_root']?>';
var rootssl = '<?php echo $g['ssl_root']?>';
var raccount= '<?php echo $r?>';
var moduleid= '<?php echo $m?>';
var memberid= '<?php echo $my['id']?>';
var is_admin= '<?php echo $my['admin']?>';
var num_mynoti = '<?php echo $my['num_notice']==0?'':$my['num_notice']?>';
var connect_naver= '<?php echo getConnectUrl('naver',$d['connect']['key_n'],$d['connect']['secret_n'],$g['url_root'].'/'.$r.'/oauth/naver',false)?>';
var connect_kakao= '<?php echo getConnectUrl('kakao',$d['connect']['key_k'],$d['connect']['secret_k'],$g['url_root'].'/'.$r.'/oauth/kakao',false)?>';
var connect_google= '<?php echo getConnectUrl('google',$d['connect']['key_g'],$d['connect']['secret_g'],$g['url_root'].'/'.$r.'/oauth/google',false)?>';
var connect_facebook= '<?php echo getConnectUrl('facebook',$d['connect']['key_f'],$d['connect']['secret_f'],$g['url_root'].'/'.$r.'/oauth/facebook',false)?>';
var connect_instagram= '<?php echo getConnectUrl('instagram',$d['connect']['key_i'],$d['connect']['secret_i'],$g['url_root'].'/'.$r.'/oauth/instagram',false)?>';
var nt_web = '<?php echo $nt_web ?>';
var nt_email = '<?php echo $nt_email ?>';
var nt_fcm = '<?php echo $nt_fcm ?>';
var broswer = '<?php echo $g['broswer'] ?>';
var deviceKind = '<?php echo $g['mobile'] ?>';
var deviceType = '<?php echo $g['deviceType'] ?>';
var kakao_jskey = '<?php echo $d['connect']['jskey_k'] ?>';
var post_skin_main = '<?php echo $d['post']['skin_main'] ?>';
var post_skin_mobile = '<?php echo $d['post']['skin_mobile'] ?>';
var ios_Token = window.localStorage.getItem('setTokenTolocal');
var is_pwa = navigator.share === undefined?1:'';
</script>
<!-- is-loading : https://github.com/hekigan/is-loading-->
<?php getImport('is-loading','jquery.isloading.min','1.0.6','js')?>
<!-- js-cookie : https://github.com/js-cookie/js-cookie -->
<?php getImport('js-cookie','js.cookie.min','2.2.1','js')?>
<?php if (!$g['mobile'] && $_SESSION['pcmode'] == 'Y'): ?>
<!-- bootstrap-notify : https://github.com/mouse0270/bootstrap-notify -->
<?php getImport('bootstrap-notify','bootstrap-notify.min','3.1.3','js')?>
<?php endif; ?>
<link href="<?php echo $g['s']?>/_core/css/sys.css<?php echo $g['wcache']?>" rel="stylesheet">
<script src="<?php echo $g['s']?>/_core/js/sys.js<?php echo $g['wcache']?>"></script>
<?php if ($g['broswer']!='MSIE 10' && $g['broswer']!='MSIE 11'): ?>
<script src="<?php echo $g['s']?>/_core/js/ckeditor5.js<?php echo $g['wcache']?>"></script>
<?php endif; ?>
<?php foreach ($g['cssset'] as $_key => $_val):?>
<?php if (is_file($_key.'.css')):?>
<link href="<?php echo $_val?>.css<?php echo $g['wcache']?>" rel="stylesheet">
<?php endif?>
<?php if (is_file($_key.'.js')):?>
<script src="<?php echo $_val?>.js<?php echo $g['wcache']?>"></script>
<?php endif?>
<?php endforeach?>
<!-- 헤더 스위치 -->
<?php foreach($g['switch_2'] as $_switch) include $_switch ?>

View File

@@ -0,0 +1,96 @@
<!-- 사이트 풋터 코드 -->
<?php echo $_HS['footercode'] ?>
<!-- 푸터 스위치 -->
<?php foreach($g['switch_3'] as $_switch) include $_switch ?>
<?php if($g['mobile']&&$_SESSION['pcmode']=='Y'&&$iframe!='Y'):?>
<div id="pctomobile" class="bg-faded" style="width:100%">
<a href="<?php echo $g['s']?>/?r=<?php echo $r?>&amp;a=mobilemode" class="btn btn-block btn-secondary" style="font-size: 4rem;padding: 3rem">
<i class="fa fa-mobile fa-lg" aria-hidden="true"></i> 모바일 모드 전환
</a>
</div>
<?php endif?>
<div id="_box_layer_"></div>
<div id="_action_layer_"></div>
<div id="_hidden_layer_"></div>
<div id="_overLayer_"></div>
<iframe hidden name="_action_frame_<?php echo $m?>" width="0" height="0" frameborder="0" scrolling="no" title="iframe"></iframe>
<!-- 알림처리 -->
<iframe hidden name="pushframe" src="" title="iframe"></iframe>
<?php
if ($g['mobile']&&$_SESSION['pcmode']!='Y') {
$g['wdgcod'] = $g['path_tmp'].'widget/c'.$_HM['uid'].'.p'.$_HP['uid'].'.mobile.cache';
} else {
$g['wdgcod'] = $g['path_tmp'].'widget/c'.$_HM['uid'].'.p'.$_HP['uid'].'.desktop.cache';
}
if(is_file($g['wdgcod'])) include $g['wdgcod'];
if($g['widget_cssjs']) include $g['path_core'].'engine/widget.cssjs.php';
if($my['uid']) include $g['path_core'].'engine/notification.engine.php';
?>
<script>
$(function() {
Iframely('oembed[url]') // oembed 미디어 변환
// 회원가입 작동중단 처리
<?php if (!$d['member']['join_enable']): ?>
$('#modal-join').on('show.<?php echo ($g['mobile']&&$_SESSION['pcmode']!='Y')?'rc':'bs' ?>.modal', function (e) {
alert('죄송합니다. 지금은 회원가입을 하실 수 없습니다.')
location.reload();
})
<?php endif; ?>
// 알림 기본 셋팅값 정의
<?php if ($g['mobile'] && $_SESSION['pcmode'] != 'Y'): ?>
$.notifyDefaults({
placement: {
from: "bottom",
align: "center"
},
allow_dismiss: false,
offset: 20,
type: "default",
timer: 100,
delay: 1500,
animate: {
enter: "animated fadeInUp",
exit: "animated fadeOutDown"
}
});
<?php else: ?>
$.notifyDefaults({
placement: {
from: "top",
align: "right"
},
allow_dismiss: false,
offset: 20,
type: "success",
timer: 100,
delay: 1500,
animate: {
enter: "animated fadeInDown",
exit: "animated fadeOutUp"
}
});
<?php endif; ?>
});
<?php if($_HS['dtd']):?>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', '<?php echo $_HS['dtd']?>', 'auto');
ga('send', 'pageview');
<?php endif?>
</script>

View File

@@ -0,0 +1,431 @@
<?php
if(!defined('__KIMS__')) exit;
if ($d['admin']['ssl_type'] == 1)
if($_SERVER['HTTPS'] != 'on') getLink($g['ssl_root'].'/?'.$_SERVER['QUERY_STRING'],'','','');
$DB_CONNECT = isConnectedToDB($DB);
$g['mobile']= isMobileConnect($_SERVER['HTTP_USER_AGENT']);
$g['device']= $g['mobile'] && $_SESSION['pcmode'] != 'Y';
$g['broswer'] = getBrowzer($_SERVER['HTTP_USER_AGENT']);
$g['deviceType']=getDeviceKind($_SERVER['HTTP_USER_AGENT'],$g['mobile']);
$my = array();
$my['level'] = 0;
if ($_SESSION['mbr_uid'])
{
$my = array_merge(getUidData($table['s_mbrid'],$_SESSION['mbr_uid']),getDbData($table['s_mbrdata'],"memberuid='".$_SESSION['mbr_uid']."'",'*'));
if (!$my['uid'] || $my['pw'] != $_SESSION['mbr_pw']) { // 로그인 상태에서 관리자 회원삭제 된 경우
$_SESSION['mbr_uid'] = '';
$_SESSION['mbr_pw'] = '';
$_SESSION['mbr_logout'] = '1';
setAccessToken($my['uid'],'logout');
setrawcookie('site_common_result', rawurlencode('로그아웃 되었습니다.|danger'),time() + (60 * 30), '/');
getLink('reload','','','');
}
}
// 로그인 상태 유지 프로세스 추가
if($_COOKIE[$DB['head'].'_token'])
{
$memberuid=getArrayCookie($_COOKIE[$DB['head'].'_token'],'|',0);
$access_token=getArrayCookie($_COOKIE[$DB['head'].'_token'],'|',1);
$_now=time();
$t_que="memberuid='".$memberuid."' and access_token='".$access_token."' and expire > '".$_now."' ";
$is_token=getDbData($DB['head'].'_s_mbrtoken',$t_que,'*');
if($is_token['uid']){
$my = array_merge(getUidData($table['s_mbrid'],$memberuid),getDbData($table['s_mbrdata'],"memberuid='".$memberuid."'",'*'));
}
}
if ($r)
{
$_HS = getDbData($table['s_site'],"id='".$r."'",'*');
$s = $_HS['uid'];
}
if (!$s)
{
if ($g['mobile'])
{
$_HH = getDbData($table['s_mobile'],'','*');
if ($_HH['usemobile'] == 1) $_HS = getUidData($table['s_site'],$_HH['startsite']);
else if($_HH['usemobile'] == 2) if($g['url_host'] != $_HH['startdomain']) getLink($_HH['startdomain'],'','','');
}
if (!$_HS['uid'])
{
$_HD = getDbData($table['s_domain'],"name='".str_replace('www.','',$_SERVER['HTTP_HOST'])."'",'*');
if ($_HD['site']) $_HS = getUidData($table['s_site'],$_HD['site']);
else $_HS = db_fetch_array(getDbArray($table['s_site'],'','*','gid','asc',1,1));
}
$s = $_HS['uid'];
$r = $_HS['id'];
}
else $_HS = getUidData($table['s_site'],$s);
$_SEO = getDbData($table['s_seo'],'rel=0 and parent='.$_HS['uid'],'*');
include getLangFile($g['path_module'].'admin/language/',($_HS['lang']?$_HS['lang']:$d['admin']['syslang']),'/lang.function.php');
include getLangFile($g['path_module'].'admin/language/',($_HS['lang']?$_HS['lang']:$d['admin']['syslang']),'/lang.engine.php');
$_CA = array();
$date = getVDate($_HS['timecal']);
$g['s'] = str_replace('/index.php','',$_SERVER['SCRIPT_NAME']);
$g['r'] = $_HS['rewrite'] ? $g['s'].($_HS['usescode']?'/'.$r:'') : '.';
$g['img_core'] = $g['s'].'/_core/images';
$g['meta_tit'] = $_SEO['title'];
$g['meta_key'] = $_SEO['keywords'];
$g['meta_des'] = $_SEO['description'];
$g['meta_bot'] = $_SEO['classification'];
$g['meta_img'] = $_SEO['image_src']?getMetaImage($_SEO['image_src']):$g['img_core'].'/noimage_kimsq.png';
$g['sys_module'] = $d['admin']['sysmodule'];
$g['sys_action'] = $a && !$c ? true : false;
$m = $m && !strstr($m,'.') ? $m : $g['sys_module'];
$_m = $m;
$_mod = $mod;
if (!$g['sys_action'] && !$system)
{
if ($c)
{
$c=substr($c,-1)=='/'?str_replace('/','',$c):$c;
$_CA = explode('/',$c);
$_tmp['count'] = count($_CA);
$_tmp['id'] = $_CA[$_tmp['count']-1];
$_HM = getDbData($table['s_menu'],"id='".$_tmp['id']."' and site=".$s,'*');
if ($_tmp['count']>1) $_FHM = getDbData($table['s_menu'],"id='".$_CA[0]."' and site=".$s,'*');
else $_FHM = $_HM;
if ($_HM['reject']&&!$my['admin']) getLink('','',_LANG('em001','admin'),'-1');
if ($_HM['site']!=$_HS['uid']) getLink('','',_LANG('em002','admin'),'-1');
if($_HM['menutype']==1)
{
if ($_HM['redirect']) getLink($_HM['joint'],'','','');
$_tmpexp = explode('?',$_HM['joint']);
if ($_tmpexp[1])
{
$_tmparr = explode('&',$_tmpexp[1]);
foreach($_tmparr as $_tmpval)
{
if(!$_tmpval) continue;
$_tmparr = explode('=',$_tmpval);
${$_tmparr[0]} = $_tmparr[1];
}
}
}
if($_HM['menutype']==3)
{
getLink(RW('c='.$_HM['joint']),'','','');
}
}
if (!$c && $m == $g['sys_module'])
{
if (!$mod) $_HP = getUidData($table['s_page'],$g['mobile']&&$_SESSION['pcmode']!='Y'?($_HS['m_startpage']?$_HS['m_startpage']:$_HS['startpage']):$_HS['startpage']);
else $_HP = getDbData($table['s_page'],"id='".$mod."'",'*');
if($_HP['uid']) $_HM['layout'] = $_HP['layout'];
if ($_HP['pagetype']==1)
{
$_HM['layout'] = $_HP['layout'];
$_tmpexp = explode('?',$_HP['joint']);
if ($_tmpexp[1])
{
$_tmparr = explode('&',$_tmpexp[1]);
foreach($_tmparr as $_tmpval)
{
if(!$_tmpval) continue;
$_tmparr = explode('=',$_tmpval);
${$_tmparr[0]} = $_tmparr[1];
}
if ($_m == $g['sys_module']) $_mod = '';
if ($m != $g['sys_module']) $mod = $_mod;
}
}
}
if ($d['admin']['ssl_type'] == 2)
{
if ($_HP['uid'])
{
if (strpos(',,'.$d['admin']['ssl_page'].',',','.$_HP['id'].','))
{
if($_SERVER['HTTPS'] != 'on') getLink($g['ssl_root'].'/?'.$_SERVER['QUERY_STRING'],'','','');
}
else {
if($_SERVER['HTTPS'] == 'on') getLink(str_replace(':'.$d['admin']['ssl_port'],'',str_replace('https://','http://',$g['url_root'])).'/?'.$_SERVER['QUERY_STRING'],'','','');
}
}
else if ($_HM['uid'])
{
if (strpos(',,'.$d['admin']['ssl_menu'].',',','.$_HM['id'].','))
{
if($_SERVER['HTTPS'] != 'on') getLink($g['ssl_root'].'/?'.$_SERVER['QUERY_STRING'],'','','');
}
else {
if($_SERVER['HTTPS'] == 'on') getLink(str_replace(':'.$d['admin']['ssl_port'],'',str_replace('https://','http://',$g['url_root'])).'/?'.$_SERVER['QUERY_STRING'],'','','');
}
}
else {
if (strpos(',,'.$d['admin']['ssl_module'].',',','.$m.','))
{
if($_SERVER['HTTPS'] != 'on') getLink($g['ssl_root'].'/?'.$_SERVER['QUERY_STRING'],'','','');
}
else {
if($_SERVER['HTTPS'] == 'on') getLink(str_replace(':'.$d['admin']['ssl_port'],'',str_replace('https://','http://',$g['url_root'])).'/?'.$_SERVER['QUERY_STRING'],'','','');
}
}
}
}
$_HMD = getDbData($table['s_module'],"id='".$m."'",'*');
$g['switch_1'] = getSwitchInc('top');
$g['switch_2'] = getSwitchInc('head');
$g['switch_3'] = getSwitchInc('foot');
$g['switch_4'] = getSwitchInc('end');
//사이트별 회원설정 변수
$g['memberVarForSite'] = $g['path_var'].'site/'.$r.'/member.var.php'; // 사이트 회원모듈 변수파일
include_once file_exists($g['memberVarForSite']) ? $g['memberVarForSite'] : $g['path_module'].'member/var/var.php';
//사이트별 포스트설정 변수
$g['postVarForSite'] = $g['path_var'].'site/'.$r.'/post.var.php';
include_once file_exists($g['postVarForSite']) ? $g['postVarForSite'] : $g['path_module'].'post/var/var.php';
$d['post']['writeperm'] = true;
$d['post']['categoryperm'] = true;
$d['post']['goodsperm'] = true;
if (!$my['admin']) {
if ($d['post']['perm_l_write'] > $my['level'] || strpos('_'.$d['post']['perm_g_write'],'['.$my['mygroup'].']') || !$my['uid']) {
$d['post']['writeperm'] = false;
}
if ($d['post']['perm_l_category'] > $my['level'] || strpos('_'.$d['post']['perm_g_category'],'['.$my['mygroup'].']') || !$my['uid']) {
$d['post']['categoryperm'] = false;
}
if ($d['post']['perm_l_goods'] > $my['level'] || strpos('_'.$d['post']['perm_g_goods'],'['.$my['mygroup'].']') || !$my['uid']) {
$d['post']['goodsperm'] = false;
}
}
//사이트별 게시판 공통설정 변수
$g['bbsVarForSite'] = $g['path_var'].'site/'.$r.'/bbs.var.php';
include_once file_exists($g['bbsVarForSite']) ? $g['bbsVarForSite'] : $g['path_module'].'bbs/var/var.php';
//사이트별 댓글설정 변수
$g['commentVarForSite'] = $g['path_var'].'site/'.$r.'/comment.var.php';
include_once file_exists($g['commentVarForSite']) ? $g['commentVarForSite'] : $g['path_module'].'comment/var/var.php';
// 회원가입을 위한 이메일/휴대폰 본인인증 후 관련세션 존재유무
if (isset($_SESSION['JOIN']['email']) || isset($_SESSION['JOIN']['phone'])) {
$call_modal_join_site=1; // 인증후,가입 모달 호출
}
//사이트별 외부연결 설정
if (file_exists($g['path_var'].'site/'.$r.'/connect.var.php')) {
include $g['path_var'].'site/'.$r.'/connect.var.php';
}
// 푸시알림 지원여부
if ( $g['mobile']!='ipad' && $g['mobile']!='iphone') {
if ($g['broswer']!='MSIE 11' && $g['broswer']!='MSIE 10' && $g['broswer']!='MSIE 9' && $g['broswer']!='Safari') {
$g['pwa_supported']=1;
if (file_exists($g['path_var'].'fcm.info.js')) {
$g['push_active']=1;
} else {
$g['push_active']=2;
}
}
}
// 포스트 공개관련
$d['displaySet'] = "||비공개,lock||일부공개,how_to_reg||미등록,insert_link||회원공개,people_alt||전체공개,public";
$g['displaySet']['label'] = [];
$g['displaySet']['icon'] = [];
$displaySet=explode('||',$d['displaySet']);
foreach ($displaySet as $displayLine) {
$dis=explode(',',$displayLine);
array_push($g['displaySet']['label'], $dis[0]);
array_push($g['displaySet']['icon'], $dis[1]);
}
//소셜로그인 세션 존재유무
if(isset($_SESSION['SL']['naver'])||isset($_SESSION['SL']['kakao'])||isset($_SESSION['SL']['facebook'])||isset($_SESSION['SL']['google'])||isset($_SESSION['SL']['instagram'])||isset($_SESSION['SL']['twitter'])){
if (is_array($_SESSION['SL']['naver']) || is_array($_SESSION['SL']['kakao']) || is_array($_SESSION['SL']['facebook']) || is_array($_SESSION['SL']['google']) || is_array($_SESSION['SL']['instagram']) || is_array($_SESSION['SL']['twitter'])){
$is_socialUserinfoSession = 1;
}
}
//소셜로그인을 사용할때
if ($d['member']['login_social'] || $d['member']['join_bySocial']) {
if ($is_socialUserinfoSession) {
if (isset($_SESSION['SL']['naver'])) {
$sns_code = 'n';
$sns_name = 'naver';
$sns_name_ko = '네이버';
$sns_access_token = $_SESSION['SL']['naver']['userinfo']['access_token']; //소셜미디어 접근토큰
$sns_refresh_token = $_SESSION['SL']['naver']['userinfo']['refresh_token']; //소셜미디어 갱신토큰
$sns_expires_in = $_SESSION['SL']['naver']['userinfo']['expires_in']; //소셜미디어 접근 토큰 유효기간(초)
$snsuid = $_SESSION['SL']['naver']['userinfo']['uid']; //소셜미디어 고유번호
$name = $_SESSION['SL']['naver']['userinfo']['name'];
$email = $_SESSION['SL']['naver']['userinfo']['email'];
$_photo = $_SESSION['SL']['naver']['userinfo']['photo'];
}
if (isset($_SESSION['SL']['kakao'])) {
$sns_code = 'k';
$sns_name = 'kakao';
$sns_name_ko = '카카오';
$sns_access_token = $_SESSION['SL']['kakao']['userinfo']['access_token']; //소셜미디어 접근토큰
$sns_refresh_token = $_SESSION['SL']['kakao']['userinfo']['refresh_token']; //소셜미디어 갱신토큰
$sns_expires_in = $_SESSION['SL']['kakao']['userinfo']['expires_in']; //소셜미디어 접근 토큰 유효기간(초)
$snsuid = $_SESSION['SL']['kakao']['userinfo']['uid']; //소셜미디어 고유번호
$name = $_SESSION['SL']['kakao']['userinfo']['name'];
$email = $_SESSION['SL']['kakao']['userinfo']['email'];
$_photo = $_SESSION['SL']['kakao']['userinfo']['photo'];
}
if (isset($_SESSION['SL']['facebook'])) {
$sns_code = 'f';
$sns_name = 'facebook';
$sns_name_ko = '페이스북';
$sns_access_token = $_SESSION['SL']['facebook']['userinfo']['access_token']; //소셜미디어 접근토큰
$sns_refresh_token = $_SESSION['SL']['facebook']['userinfo']['refresh_token']; //소셜미디어 갱신토큰
$sns_expires_in = $_SESSION['SL']['facebook']['userinfo']['expires_in']; //소셜미디어 접근 토큰 유효기간(초)
$snsuid = $_SESSION['SL']['facebook']['userinfo']['uid']; //소셜미디어 고유번호
$name = $_SESSION['SL']['facebook']['userinfo']['name'];
$email = $_SESSION['SL']['facebook']['userinfo']['email'];
$_photo = $_SESSION['SL']['facebook']['userinfo']['photo'];
}
if (isset($_SESSION['SL']['google'])) {
$sns_code = 'g';
$sns_name = 'google';
$sns_name_ko = '구글';
$sns_access_token = $_SESSION['SL']['google']['userinfo']['access_token']; //소셜미디어 접근토큰
$sns_refresh_token = $_SESSION['SL']['google']['userinfo']['refresh_token']; //소셜미디어 갱신토큰
$sns_expires_in = $_SESSION['SL']['google']['userinfo']['expires_in']; //소셜미디어 접근 토큰 유효기간(초)
$snsuid = $_SESSION['SL']['google']['userinfo']['uid']; //소셜미디어 고유번호
$name = $_SESSION['SL']['google']['userinfo']['name'];
$email = $_SESSION['SL']['google']['userinfo']['email'];
$_photo = $_SESSION['SL']['google']['userinfo']['photo'];
}
if (isset($_SESSION['SL']['instagram'])) {
$sns_code = 'i';
$sns_name = 'instagram';
$sns_name_ko = '인스타그램';
$sns_access_token = $_SESSION['SL']['instagram']['userinfo']['access_token']; //소셜미디어 접근토큰
$snsuid = $_SESSION['SL']['instagram']['userinfo']['uid']; //소셜미디어 고유번호
$name = $_SESSION['SL']['instagram']['userinfo']['name'];
$_photo = $_SESSION['SL']['instagram']['userinfo']['photo'];
}
$mbr_sns = getDbData($table['s_mbrsns'],'id='.$snsuid.' and sns="'.$sns_name.'"','mbruid');
$mbr_email = getDbData($table['s_mbremail'],"email='".$email."'",'*');
$d_regis = $date['totime'];
if ($my['uid']) {
// 개인정보관리 > 연결계정 > 추가 연결
if ($mbr_sns['mbruid'] && ($mbr_sns['mbruid'] != $my['uid'])) {
setrawcookie('site_common_result', rawurlencode($sns_name_ko.' 계정이 이미 다른계정에 연결되어 있습니다.|danger'),time() + (60 * 30), '/');
$_SESSION['SL'] = ''; // 세션비우기
getLink('reload','','','');
}
if ($mbr_sns['mbruid']) {
$msg = ' 계정이 재인증 되었습니다.'; //개인정보관리 > 개인정보잠금 > 재인증
} else { //신규연결
$msg = ' 계정이 연결 되었습니다.'; // 개인정보관리 > 연결계정 > 추가 연결
getDbInsert($table['s_mbrsns'],'mbruid,sns,id,access_token,refresh_token,expires_in,d_regis',"'".$my['uid']."','".$sns_name."','$snsuid','$sns_access_token','$sns_refresh_token','$sns_expires_in','$d_regis'");
}
getDbUpdate($table['s_mbrdata'],"last_log='".$date['totime']."'",'memberuid='.$my['uid']);
setrawcookie('site_common_result', rawurlencode($sns_name_ko.$msg.'|default'),time() + (60 * 30), '/'); // 알림레이어 출력를 위한 로그인 상태 cookie 저장
$_SESSION['SL'] = ''; // 세션비우기
getLink('reload','','','');
} else { // 비로그인 상태
//결과값 못 받은 경우
if (!$name) {
$_SESSION['SL'] = '';
setrawcookie('site_common_result',rawurlencode($sns_name_ko.' 에서 정보를 수신하지 못했습니다.|danger'),time() + (60 * 30), '/');
getLink('reload','','','');
}
// 정상 소셜로그인 (이미 연결된 소셜미디어 고유번호가 있을 경우, 해당회원 로그인 처리)
if ($mbr_sns['mbruid']) {
$M = getUidData($table['s_mbrid'],$mbr_sns['mbruid']);
getDbUpdate($table['s_mbrdata'],"tmpcode='',now_log=1,last_log='".$date['totime']."',sns='".$sns_name."'",'memberuid='.$M['uid']);
$_SESSION['mbr_uid'] = $M['uid'];
$_SESSION['mbr_pw'] = $M['pw'];
setAccessToken($mbr_sns['mbruid'],'login'); //로그인 유지 기본적용
setrawcookie('site_common_result',rawurlencode($sns_name_ko.' 계정으로 로그인 되었습니다.|default'),time() + (60 * 30), '/'); // 알림레이어 출력를 위한 로그인 상태 cookie 저장
$_SESSION['SL'] = ''; //세션 비우기
getLink('reload','','','');
}
// 소셜미디어에서 획득한 이메일이 기존 회원의 동일한 이메일에 있을 경우,
if ($mbr_email['mbruid']) {
if ($mbr_email['d_verified']) {
// 본인 인증된 메일일 경우, 자동 로그인 및 연결처리 (동일인 중복가입을 막기위해)
$M = getUidData($table['s_mbrid'],$mbr_email['mbruid']);
$d_regis = $date['totime'];
getDbUpdate($table['s_mbrdata'],"tmpcode='',now_log=1,last_log='".$date['totime']."',sns='".$sns_name."'",'memberuid='.$M['uid']);
getDbInsert($table['s_mbrsns'],'mbruid,sns,id,access_token,refresh_token,expires_in,d_regis',"'".$M['uid']."','".$sns_name."','$snsuid','$sns_access_token','$sns_refresh_token','$sns_expires_in','$d_regis'");
$_SESSION['mbr_uid'] = $M['uid'];
$_SESSION['mbr_pw'] = $M['pw'];
setrawcookie('site_common_result', rawurlencode($sns_name_ko.' 계정으로 로그인 되었습니다.|default'),time() + (60 * 30), '/'); // 알림레이어 출력를 위한 로그인 상태 cookie 저장
$_SESSION['SL'] = ''; //세션 비우기
getLink('reload','','','');
} else {
// 계정연결 모달 호출
$is_sns = getDbData($table['s_mbrsns'],'mbruid="'.$mbr_email['mbruid'].'"','sns');
$has_sns = $is_sns['sns'];
if ($is_sns['sns']=='naver') $has_sns_ko = '네이버';
if ($is_sns['sns']=='kakao') $has_sns_ko = '카카오';
if ($is_sns['sns']=='google') $has_sns_ko = '구글';
if ($is_sns['sns']=='facebook') $has_sns_ko = '페이스북';
if ($is_sns['sns']=='instagram') $has_sns_ko = '인스타그램';
setrawcookie('site_common_result', rawurlencode($sns_name_ko.' 사용자 인증 되었습니다. 계정을 연결해 주세요.|default'),time() + (60 * 30), '/'); // 알림레이어 출력를 위한 로그인 상태 cookie 저장
if ($m!='member' || $front!="login") {
$call_modal_combine=1; // 계정통합 모달 호출
}
}
} else {
if ($d['member']['join_enable']) { // 회원가입 작동 중지
setrawcookie('site_common_result', rawurlencode($sns_name_ko.' 사용자 인증 되었습니다.|default'),time() + (60 * 30), '/'); // 알림레이어 출력를 위한 로그인 상태 cookie 저장
if ($m!='member' || $front!="join") {
$call_modal_join_social=1; // 소셜로그인 인증후,가입 모달 호출
}
} else {
$call_modal_join_social=0;
$_SESSION['SL'] = ''; //세션 비우기
setrawcookie('site_common_result', rawurlencode(' 죄송합니다. 지금은 회원가입을 하실 수 없습니다.|danger'),time() + (60 * 30), '/'); // 알림레이어 출력를 위한 로그인 상태 cookie 저장
}
}
}
} //소셜미디어에서 확득한 사용자 정보배열 세션이 있을때 끝
// 연결계정 정보
$my_naver = getDbData($table['s_mbrsns'],"mbruid='".$my['uid']."' and sns='naver'",'*');
$my_kakao = getDbData($table['s_mbrsns'],"mbruid='".$my['uid']."' and sns='kakao'",'*');
$my_google = getDbData($table['s_mbrsns'],"mbruid='".$my['uid']."' and sns='google'",'*');
$my_facebook = getDbData($table['s_mbrsns'],"mbruid='".$my['uid']."' and sns='facebook'",'*');
$my_instagram = getDbData($table['s_mbrsns'],"mbruid='".$my['uid']."' and sns='instagram'",'*');
}
?>

View File

@@ -0,0 +1,58 @@
<?php
if(!defined('__KIMS__')) exit;
$g['notiVarForSite'] = $g['path_var'].'site/'.$r.'/notification.var.php';
include_once file_exists($g['notiVarForSite']) ? $g['notiVarForSite'] : $g['path_module'].'notification/var/var.php';
$NT_DATA = explode('|',$my['noticeconf']);
?>
<script>
$('.rb-notifications-toggle').on('click', function () {
if(getId('rb-notifications-layer'))
{
getId('rb-notifications-layer').innerHTML = getAjaxData('<?php echo $g['s']?>/?r=<?php echo $r?>&m=notification&a=notice_check&noticedata=Y');
setTimeout("loadNotification();",1000);
}
});
$('.rb-notifications-modal').on('click',function() {
modalSetting('modal_window','<?php echo getModalLink('&amp;system=popup.notification')?>');
});
$('.rb-notifications-modal-view').on('click',function() {
modalSetting('modal_window','<?php echo getModalLink('&amp;system=popup.notification&amp;callMod=view')?>');
});
$('.rb-notifications-modal-config').on('click',function() {
modalSetting('modal_window','<?php echo getModalLink('&amp;system=popup.notification&amp;callMod=config')?>');
});
function pushNotification(num)
{
var _num = (num >= <?php echo $d['ntfc']['num']?> ? '+<?php echo $d['ntfc']['num']?>' : num);
if (parent.getId('rb-notification-name'))
{
parent.getId('rb-notification-name').innerHTML = _num;
parent.getId('rb-notification-name').className = 'badge rb-notification-layer rb-notification-active' + (num == 0 ? ' hidden':'');
parent.getId('rb-notification-badge').innerHTML = num;
}
if (getId('rb-notification-badge'))
{
getId('rb-notification-badge').innerHTML = _num;
getId('rb-notification-badge').className = getId('rb-notification-badge').className.replace(' rb-notification-active','') + (num == 0 ? '':' rb-notification-active');
}
if (getId('rb-notification-badge-other'))
{
getId('rb-notification-badge-other').innerHTML = _num;
getId('rb-notification-badge-other').className = getId('rb-notification-badge').className.replace(' rb-notification-active','') + (num == 0 ? '':' rb-notification-active');
}
<?php if($NT_DATA[1] && !$_SESSION['sh_notify_popup']):?>
<?php endif?>
}
function loadNotification()
{
frames._action_frame_<?php echo $m?>.location.href = '<?php echo $g['s']?>/?r=<?php echo $r?>&m=notification&a=notice_check';
}
setTimeout("loadNotification();",<?php echo $d['ntfc']['sec']?>000);
pushNotification(<?php echo $my['num_notice']?>);
</script>

View File

@@ -0,0 +1,30 @@
<?php
if(!defined('__KIMS__')) exit;
$g['notiVarForSite'] = $g['path_var'].'site/'.$r.'/notification.var.php';
include_once file_exists($g['notiVarForSite']) ? $g['notiVarForSite'] : $g['path_module'].'notification/var/var.php';
$N = explode('|',$my['noticeconf']);
$send_email = $N[1]?1:0;
$send_push = $N[2]?1:0;
?>
<?php if ($my['uid'] && $g['push_active']==1): ?>
<!-- FCM -->
<script src="<?php echo $g['s']?>/_var/fcm.info.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.2.0/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.2.0/firebase-messaging.js"></script>
<script src="<?php echo $g['url_layout']?>/_js/noti.js"></script>
<div class="token" hidden></div>
<?php if (!$send_push): ?>
<script>
console.log('푸시알림이 비활성화 되어 <?php echo $d['ntfc']['sec']?>초 마다 알림사항을 체크합니다.')
setTimeout(function(){
var src = '<?php echo $g['s']?>/?r=<?php echo $r?>&m=notification&a=get_notiNum&browtitle=<?php echo $g['browtitle']?>'
$("iframe[name=pushframe]").attr('src',src)
}, <?php echo $d['ntfc']['sec']?>000);
</script>
<?php endif; ?>
<?php endif; ?>

View File

@@ -0,0 +1,7 @@
<?php
if(!defined('__KIMS__')) exit;
if ($m != 'admin' && (($_HS['open']==2&&!$my['admin'])||$_HS['open']==3)) $iframe = 'Y';
if ($_HS['open'] == 2) if (!$my['admin'] && $m != 'admin' && $system != 'guide.stopsite') getLink($g['s'].'/?r='.$r.'&system=guide.stopsite','','','');
if ($_HS['open'] == 3) if ($m != 'admin' && $system != 'guide.stopsite') getLink($g['s'].'/?r='.$r.'&system=guide.stopsite','','','');
?>

View File

View File

View File

@@ -0,0 +1,104 @@
<?php
function isConnectedToDB($db)
{
return mysqli_connect($db['host'],$db['user'],$db['pass'],$db['name']);
}
function db_query($sql,$con)
{
mysqli_query($con,'set names utf8mb4');
mysqli_query($con,'set sql_mode=\'\'');
return mysqli_query($con,$sql);
}
function db_fetch_array($que)
{
return @mysqli_fetch_array($que);
}
function db_fetch_assoc($que)
{
return mysqli_fetch_assoc($que);
}
function db_num_rows($que)
{
return mysqli_num_rows($que);
}
function db_info()
{
global $DB_CONNECT;
return mysqli_get_server_info($DB_CONNECT);
}
function db_error()
{
return mysqli_error();
}
function db_close($conn)
{
return mysqli_close($conn);
}
function db_insert_id($conn)
{
return mysqli_insert_id($conn);
}
//DB-UID데이터
function getUidData($table,$uid)
{
return getDbData($table,'uid='.(int)$uid,'*');
}
//DB데이터 1ROW
function getDbData($table,$where,$data)
{
$row = db_fetch_array(getDbSelect($table,getSqlFilter($where),$data));
return $row;
}
//DB데이터 ARRAY
function getDbArray($table,$where,$data,$sort,$orderby,$recnum,$p)
{
global $DB_CONNECT;
$rcd = db_query('select '.$data.' from '.$table.($where?' where '.getSqlFilter($where):'').' order by '.$sort.' '.$orderby.($recnum?' limit '.(($p-1)*$recnum).', '.$recnum:''),$DB_CONNECT);
return $rcd;
}
//DB데이터 NUM
function getDbRows($table,$where)
{
global $DB_CONNECT;
$rows = db_fetch_array(db_query('select count(*) from '.$table.($where?' where '.getSqlFilter($where):''),$DB_CONNECT));
return $rows[0] ? $rows[0] : 0;
}
//DB데이터 MAX
function getDbCnt($table,$type,$where)
{
global $DB_CONNECT;
$cnts = db_fetch_array(db_query('select '.$type.' from '.$table.($where?' where '.getSqlFilter($where):''),$DB_CONNECT));
return $cnts[0] ? $cnts[0] : 0;
}
//DB셀렉트
function getDbSelect($table,$where,$data)
{
global $DB_CONNECT;
$r = db_query('select '.$data.' from '.$table.($where?' where '.getSqlFilter($where):''),$DB_CONNECT);
return $r;
}
//DB삽입
function getDbInsert($table,$key,$val)
{
global $DB_CONNECT;
db_query("insert into ".$table." (".$key.")values(".$val.")",$DB_CONNECT);
}
//DB업데이트
function getDbUpdate($table,$set,$where)
{
global $DB_CONNECT;
db_query("update ".$table." set ".$set.($where?' where '.getSqlFilter($where):''),$DB_CONNECT);
}
//DB삭제
function getDbDelete($table,$where)
{
global $DB_CONNECT;
db_query("delete from ".$table.($where?' where '.getSqlFilter($where):''),$DB_CONNECT);
}
//SQL필터링
function getSqlFilter($sql)
{
return preg_replace("( union| update| insert| delete| drop|\/\*|\*\/|\\\|\;)",'',$sql);
}
?>

114
_core/function/dir.func.php Normal file
View File

@@ -0,0 +1,114 @@
<?php
//디렉토리복사
function DirCopy($dir1 , $dir2)
{
$dirh = opendir($dir1);
while(false !== ($filename = readdir($dirh)))
{
if($filename != '.' && $filename != '..')
{
if(!is_file($dir1.'/'.$filename))
{
@mkdir($dir2.'/'.$filename , 0707);
@chmod($dir2.'/'.$filename , 0707);
DirCopy($dir1.'/'.$filename , $dir2.'/'.$filename);
}
else
{
@copy($dir1.'/'.$filename , $dir2.'/'.$filename);
@chmod($dir2.'/'.$filename , 0707);
}
}
}
closedir($dirh);
}
//디렉토리삭제
function DirDelete($t_dir)
{
$dirh = opendir($t_dir);
while(false !== ($filename = readdir($dirh)))
{
if($filename != '.' && $filename != '..')
{
if(!is_file($t_dir.'/'.$filename))
{
DirDelete($t_dir.'/'.$filename);
}
else {
@unlink($t_dir.'/'.$filename);
}
}
}
closedir($dirh);
@rmdir($t_dir);
}
//디렉토리사이즈/파일갯수
function DirSizeNum($t_dir)
{
$dirh = opendir($t_dir);
while(false !== ($filename = readdir($dirh)))
{
if($filename != '.' && $filename != '..')
{
if(!is_file($t_dir.'/'.$filename)) {
$s = DirSizeNum($t_dir.'/'.$filename);
$d['size'] += $s['size'];
$d['num'] += $s['num'];
}
else {
$d['size'] += filesize($t_dir.'/'.$filename);
$d['num']++;
}
}
}
closedir($dirh);
return $d;
}
//퍼미션변경
function DirChmod($t_dir,$mode)
{
$dirh = opendir($t_dir);
while(false !== ($filename = readdir($dirh)))
{
if($filename != '.' && $filename != '..')
{
if(!is_file($t_dir.'/'.$filename))
{
@chmod($t_dir.'/'.$filename,$mode);
DirChmod($t_dir.'/'.$filename,$mode);
}
else {
@chmod($t_dir.'/'.$filename,$mode);
}
}
}
closedir($dirh);
@chmod($t_dir,$mode);
}
//압축
function DirZip($t_dir,$n_dir,$zipfile)
{
$dirh = opendir($t_dir);
while(false !== ($filename = readdir($dirh)))
{
if($filename != '.' && $filename != '..')
{
if(!is_file($t_dir.'/'.$filename))
{
$zipfile -> add_file('',$n_dir.'/'.$filename.'/');
DirZip($t_dir.'/'.$filename,$n_dir.'/'.$filename,$zipfile);
}
else {
$zipfile -> add_file($t_dir.'/'.$filename,$n_dir.'/'.$filename);
}
}
}
closedir($dirh);
}
//디렉토리생성
function DirMake($dir)
{
@mkdir($dir,0707);
@chmod($dir,0707);
}
?>

View File

@@ -0,0 +1,68 @@
<?php
//이메일전송
include_once $g['path_core'].'opensrc/aws-sdk-php/v3/aws-autoloader.php';
use Aws\Ses\SesClient;
use Aws\Exception\AwsException;
function getSendMail($to,$from,$subject,$content,$html) {
global $g,$d;
if ($html == 'TEXT') $content = nl2br(htmlspecialchars($content));
$to_exp = explode('|', $to);
$from_exp = explode('|', $from);
if ($d['admin']['mailer']=='ses') {
define('SES_KEY', $d['admin']['ses_key']); //발급받은 키.
define('SES_SEC', $d['admin']['ses_sec']); //발급받은 비밀번호.
define('SES_REGION', $d['admin']['ses_region']); //SES 버킷의 리전.
$SesClient = new SesClient([
'credentials' => [
'key' => SES_KEY,
'secret' => SES_SEC,
],
'region' => SES_REGION,
'version' => 'latest'
]);
$To = $to_exp[1] ? "\"".utf8_encode($to_exp[1])."\" <$to_exp[0]>" : $to_exp[0];
$Frm = $from_exp[1] ? "\"".utf8_encode($from_exp[1])."\" <$from_exp[0]>" : $from_exp[0];
$char_set = 'UTF-8';
try {
$result = $SesClient->sendEmail([
'Destination' => [
'ToAddresses' => [$To],
],
'ReplyToAddresses' => [$Frm],
'Source' => $Frm,
'Message' => [
'Body' => [
'Html' => [
'Charset' => $char_set,
'Data' => $content,
],
],
'Subject' => [
'Charset' => $char_set,
'Data' => $subject,
],
],
]);
return true;
} catch (AwsException $e) {
return false;
}
}
else {
$To = $to_exp[1] ? "\"".getUTFtoKR($to_exp[1])."\" <$to_exp[0]>" : $to_exp[0];
$Frm = $from_exp[1] ? "\"".getUTFtoKR($from_exp[1])."\" <$from_exp[0]>" : $from_exp[0];
$Header = "From:$Frm\nReply-To:$frm\nX-Mailer:PHP/".phpversion();
$Header.= "\nContent-Type:text/html;charset=EUC-KR\r\n";
return @mail($To,getUTFtoKR($subject),getUTFtoKR($content),$Header);
}
}
?>

View File

@@ -0,0 +1,53 @@
<?php
// FCM 알림전송
function getSendFCM($token,$title,$message,$avatar,$referer,$tag) {
global $g,$d,$r;
$url = 'https://fcm.googleapis.com/fcm/send';
$g['notiIconForSite'] = $g['path_var'].'site/'.$r.'/homescreen.png';
$g['url_notiIcon'] = $g['s'].'/_var/site/'.$r.'/homescreen-192x192.png';
$site_icon = file_exists($g['notiIconForSite']) ? $g['url_notiIcon'] : $g['img_core'].'/touch/homescreen-192x192.png';
$icon = $avatar?$avatar:$site_icon;
$headers = array(
'Authorization:key ='.$d['admin']['fcm_key'],
'Content-Type: application/json'
);
$fields = array (
'data' => array ("title" => $title),
'notification' => array (
"title" => $title,
"body" => $message,
"icon" => $icon,
"click_action" => $referer,
"tag" => $tag
)
);
if(is_array($token)) {
$fields['registration_ids'] = $token;
} else {
$fields['to'] = $token;
}
$fields['priority'] = "high";
$fields = json_encode ($fields);
$ch = curl_init ();
curl_setopt ($ch, CURLOPT_URL, $url );
curl_setopt ($ch, CURLOPT_POST, true );
curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers );
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt ($ch, CURLOPT_POSTFIELDS, $fields );
$result = curl_exec ($ch);
if ($result === FALSE) {
die('FCM Send Error: ' . curl_error($ch));
}
curl_close ($ch);
return $result;
}
?>

View File

@@ -0,0 +1,106 @@
<?php
// php-htmlpurfier-html5 : https://github.com/kennberg/php-htmlpurfier-html5
function load_htmlpurifier($allowed) {
global $g;
$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.Doctype', 'HTML 4.01 Transitional');
$config->set('CSS.AllowTricky', true);
$config->set('Cache.SerializerPath', $g['path_tmp'].'cache/HTMLPurifier');
// Allow iframes from:
// o YouTube.com
// o Vimeo.com
$config->set('HTML.SafeIframe', true);
$config->set('URI.SafeIframeRegexp', '%^(http:|https:)?//(www.youtube(?:-nocookie)?.com/embed/|player.vimeo.com/video/)%');
$config->set('HTML.Allowed', implode(',', $allowed));
// Set some HTML5 properties
$config->set('HTML.DefinitionID', 'html5-definitions'); // unqiue id
$config->set('HTML.DefinitionRev', 1);
if ($def = $config->maybeGetRawHTMLDefinition()) {
// http://developers.whatwg.org/sections.html
$def->addElement('section', 'Block', 'Flow', 'Common');
$def->addElement('nav', 'Block', 'Flow', 'Common');
$def->addElement('article', 'Block', 'Flow', 'Common');
$def->addElement('aside', 'Block', 'Flow', 'Common');
$def->addElement('header', 'Block', 'Flow', 'Common');
$def->addElement('footer', 'Block', 'Flow', 'Common');
$def->addElement('blockquote', 'Block', 'Flow', 'Common');
// Content model actually excludes several tags, not modelled here
$def->addElement('address', 'Block', 'Flow', 'Common');
$def->addElement('hgroup', 'Block', 'Required: h1 | h2 | h3 | h4 | h5 | h6', 'Common');
// http://developers.whatwg.org/grouping-content.html
$def->addElement('figure', 'Block', 'Optional: (figcaption, Flow) | (Flow, figcaption) | Flow', 'Common');
$def->addElement('figcaption', 'Inline', 'Flow', 'Common');
// http://developers.whatwg.org/the-video-element.html#the-video-element
$def->addElement('video', 'Block', 'Optional: (source, Flow) | (Flow, source) | Flow', 'Common', array(
'src' => 'URI',
'type' => 'Text',
'width' => 'Length',
'height' => 'Length',
'poster' => 'URI',
'preload' => 'Enum#auto,metadata,none',
'controls' => 'Bool',
));
$def->addElement('oembed', 'Block', 'Flow', 'Common', array(
'url' => 'URI'
));
$def->addElement('source', 'Block', 'Flow', 'Common', array(
'src' => 'URI',
'type' => 'Text',
));
// http://developers.whatwg.org/text-level-semantics.html
$def->addElement('s', 'Inline', 'Inline', 'Common');
$def->addElement('var', 'Inline', 'Inline', 'Common');
$def->addElement('sub', 'Inline', 'Inline', 'Common');
$def->addElement('sup', 'Inline', 'Inline', 'Common');
$def->addElement('mark', 'Inline', 'Inline', 'Common');
$def->addElement('wbr', 'Inline', 'Empty', 'Core');
// http://developers.whatwg.org/edits.html
$def->addElement('ins', 'Block', 'Flow', 'Common', array('cite' => 'URI', 'datetime' => 'CDATA'));
$def->addElement('del', 'Block', 'Flow', 'Common', array('cite' => 'URI', 'datetime' => 'CDATA'));
// TinyMCE
$def->addAttribute('img', 'data-mce-src', 'Text');
$def->addAttribute('img', 'data-mce-json', 'Text');
// Others
$def->addAttribute('iframe', 'allowfullscreen', 'Bool');
$def->addAttribute('table', 'height', 'Text');
$def->addAttribute('td', 'border', 'Text');
$def->addAttribute('th', 'border', 'Text');
$def->addAttribute('tr', 'width', 'Text');
$def->addAttribute('tr', 'height', 'Text');
$def->addAttribute('tr', 'border', 'Text');
}
return new HTMLPurifier($config);
}
function LIB_getContents($str,$html) {
global $d,$g;
if ($html == 'HTML') {
$_atkParam = $pattern = explode(',',$d['admin']['secu_param']);
foreach($_atkParam as $_prm) $str = str_replace($_prm,'',$str);
// HTMLPurifier
require_once $g['path_core'].'opensrc/HTMLPurifier/4.10.0/HTMLPurifier.safe-includes.php';
$allowed = explode(',',$d['admin']['secu_tags']);
$purifier = load_htmlpurifier($allowed);
$str = $purifier->purify($str);
}
else {
$str = str_replace('<','&lt;',$str);
$str = str_replace('>','&gt;',$str);
$str = str_replace('&nbsp;','&amp;nbsp;',$str);
$str = str_replace("\t",'&nbsp;&nbsp;&nbsp;&nbsp;',$str);
$str = nl2br($str);
}
return $str;
}
function getIframes($str) {
preg_match_all("/<iframe[^>]*?>/si", $str, $mat);
return $mat[0];
}
?>

View File

@@ -0,0 +1,51 @@
<!DOCTYPE html>
<html lang="<?php echo $GLOBALS['lang']['admin']['flag']?>">
<head>
<meta charset="utf-8">
<meta name="robots" content="noindex,nofollow">
<title></title>
<script>
var cHref = <?php if($target) echo $target?>location.href.split('#');
<?php $url = str_replace('&amp;','&',$url)?>
<?php if($alert):?>alert('<?php echo $alert?>');<?php endif?>
<?php if(!strpos($url,'__target')):?>
<?php if($url=='reload'):?>
<?php if($_POST):?>
<?php if($target) echo $target?>location.replace(cHref[0]);
<?php else:?>
<?php if($target) echo $target?>location.reload();
<?php endif?>
<?php endif?>
<?php if($url&&$url!='reload'):?><?php if($target) echo $target?>location.href="<?php echo $url?>";<?php endif?>
<?php endif?>
<?php if($history=='close'):?>window.top.close();<?php endif?>
<?php if($history<0):?>history.go(<?php echo $history?>);<?php endif?>
</script>
</head>
<body>
<?php
if (strpos($url,'__target')) :
$url_exp = explode('?',$url);
$par_exp = explode('&',$url_exp[1]);
?>
<form name="backForm" action="<?php echo $g['s']?>" method="get" target="">
<?php foreach($par_exp as $val):if(trim($val)=='')continue?>
<?php $_prm = explode('=',$val)?>
<?php if($_prm[0]=='__target'){$__target=$_prm[1];continue;}?>
<input type="hidden" name="<?php echo $_prm[0]?>" value="<?php echo $_prm[1]?>" />
<?php endforeach?>
</form>
<script type="text/javascript">
//<![CDATA[
document.backForm.target = '<?php echo $__target?>';
document.backForm.submit();
//]]>
</script>
<?php endif?>
<h1><a href="http://<?php echo $_SERVER['HTTP_HOST'] ?>/"><?php echo $_HS['title'] ?></a></h1>
</body>
</html>
<?php exit?>

View File

@@ -0,0 +1,27 @@
<?php
function LIB_getUploadImage($upfiles,$d,$content,$ext)
{
$imgs = getImgs($content,$ext);
if ($imgs[0])
{
if (!$upfiles) return $imgs[0];
$basename = basename($imgs[0]);
$encname = md5($basename);
$folder = substr($d,0,4).'/'.substr($d,4,2).'/'.substr($d,6,2);
if (is_file($GLOBALS['g']['path_file'].$folder.'/'.$encname)) return str_replace($basename,'',$imgs[0]).$encname;
}
if ($upfiles)
{
$upArray = getArrayString($upfiles);
foreach($upArray['data'] as $_val)
{
$U = getUidData($GLOBALS['table']['s_upload'],$_val);
if (!$U['uid']) continue;
if (strpos('_jpg,gif,png',$U['ext']))
{
return $U['url'].$U['folder'].'/'.$U['thumbname'];
}
}
}
}
?>

View File

@@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="<?php echo $GLOBALS['lang']['admin']['flag']?>">
<head>
<meta charset="utf-8">
<meta name="robots" content="noindex,nofollow">
<title></title>
<script>
<?php $url = str_replace('&amp;','&',$url)?>
<?php if($alert):?>alert('<?php echo $alert?>');<?php endif?>
<?php if($url):?>window.open('<?php echo $url?>','','<?php echo $option?>');<?php endif?>
<?php if($backurl=='reload'):?>
<?php if($_POST):?>
<?php if($target) echo $target?>location.replace(<?php if($target) echo $target?>location.href);
<?php else:?>
<?php if($target) echo $target?>location.reload();
<?php endif?>
<?php endif?>
<?php if($backurl&&$backurl!='reload'):?><?php if($target) echo $target?>location.href="<?php echo $backurl?>";<?php endif?>
</script>
</head>
<body></body>
</html>

View File

@@ -0,0 +1,18 @@
<?php
function LIB_getPageLink($lnum,$p,$tpage,$_N)
{
if (!$_N) $_N = $GLOBALS['g']['pagelink'].'&amp;';
$g_q = $p > 1 ? '<li class="page-item"><a class="page-link" href="'.$_N.'p=1" data-toggle="tooltip" title="첫 페이지"><i class="fa fa-angle-double-left"></i></a></li>' : '<li class="page-item disabled"><a class="page-link" href="#." data-toggle="tooltip" title="First page"><i class="fa fa-angle-double-left"></i></a></li>';
if($p < $lnum+1) { $g_q .= '<li class="page-item disabled"><a class="page-link" href="#." data-toggle="tooltip" title="이전 페이지"><i class="fa fa-angle-left"></i></a></li>'; }
else{ $pp = (int)(($p-1)/$lnum)*$lnum; $g_q .= '<li class="page-item"><a class="page-link" href="'.$_N.'page='.$pp.'" data-toggle="tooltip" title="Previous page"><i class="fa fa-angle-left"></i></a></li>';}
$st1 = (int)(($p-1)/$lnum)*$lnum + 1;
$st2 = $st1 + $lnum;
for($jn = $st1; $jn < $st2; $jn++)
if ( $jn <= $tpage)
($jn == $p)? $g_q .= '<li class="page-item active"><span class="page-link">'.$jn.'</span></li>' : $g_q .= '<li class="page-item"><a class="page-link" href="'.$_N.'p='.$jn.'">'.$jn.'</a></li>';
if($tpage < $lnum || $tpage < $jn) { $g_q .= '<li class="page-item disabled"><a class="page-link" href="#." data-toggle="tooltip" title="Next page"><i class="fa fa-angle-right"></i></a></li>'; }
else{$np = $jn; $g_q .= '<li class="page-item"><a class="page-link" href="'.$_N.'p='.$np.'" data-toggle="tooltip" title="다음 페이지"><i class="fa fa-angle-right"></i></a></li>'; }
$g_q .= $tpage > $p ? '<li class="page-item"><a class="page-link" href="'.$_N.'p='.$tpage.'" data-toggle="tooltip" title="마지막 페이지('.$tpage.')"><i class="fa fa-angle-double-right"></i></a></li>' : '<li class="page-item disabled"><a class="page-link" href="#." data-toggle="tooltip" title="Last page('.$tpage.')"><i class="fa fa-angle-double-right"></i></a></li>';
return $g_q;
}
?>

View File

@@ -0,0 +1,55 @@
<?php
//검색sql
function LIB_getSearchSql($w,$k,$ik,$h)
{
if($k==',' || (!$k&&$h=='not')) return '';
$k = $k ? urldecode($k) : '';
$ik= $ik? urldecode($ik) : '';
$h = $h ? $h : 'or';
$k = str_replace(' ', ',',$k);
$karr = explode(',' , $k);
$knm = count($karr);
$result = ' and (';
if ($h == 'not')
{
$h = 'and';
if (strstr($w,'|'))
{
$warr = explode('|' , $w);
$wnm = count($warr);
for ($j = 0; $j < $knm; $j++)
{
if (!$karr[$j]) continue;
for ($i = 0; $i < $wnm; $i++) if (strlen($karr[$j])>2) $result .= $warr[$i]."<>'".$karr[$j]."' ".$h.' ';
}
}
else {
for ($i = 0; $i < $knm; $i++) if (strlen($karr[$i])>2) $result .= $w."<>'".$karr[$i]."' ".$h.' ';
}
}
else {
if (strstr($w,'|'))
{
$warr = explode('|' , $w);
$wnm = count($warr);
for ($j = 0; $j < $knm; $j++)
{
if (!$karr[$j]) continue;
for ($i = 0; $i < $wnm; $i++) if (strlen($karr[$j])>2) $result .= $warr[$i]." like '%".$karr[$j]."%' ".$h.' ';
}
}
else {
for ($i = 0; $i < $knm; $i++) if (strlen($karr[$i])>2) $result .= $w." like '%".$karr[$i]."%' ".$h.' ';
}
}
$result = substr($result,0,strlen($result)-4).')';
if($ik) $result .= getSearchSql($w,$ik,'',$h);
return $result;
}
?>

View File

@@ -0,0 +1,74 @@
<?php
//메뉴출력
function getMenuShow($site,$table,$j,$parent,$depth,$uid,$CXA,$hidden)
{
global $cat,$g;
global $MenuOpen,$numhidden,$checkbox,$headfoot;
static $j;
$CD=getDbSelect($table,($site?'site='.$site.' and ':'').'depth='.($depth+1).' and parent='.$parent.($hidden ? ' and hidden=0':'').' order by gid asc','*');
while($C=db_fetch_array($CD))
{
$j++;
if(@in_array($C['uid'],$CXA)) $MenuOpen .= 'trees[0].tmB('.$j.');';
$numprintx = !$numhidden && $C['num'] ? '&lt;span class="num"&gt;('.$C['num'].')&lt;/span&gt;' : '';
$C['name'] = $headfoot && ($C['imghead']||$C['imgfoot']||$C['codhead']||$C['codfoot']) ? '&lt;b&gt;'.$C['name'].'&lt;b&gt;' : $C['name'];
$name = $C['uid'] != $cat ? addslashes($C['name']): '&lt;span class="on"&gt;'.addslashes($C['name']).'&lt;/span&gt;';
$name = '&lt;span class="ticon tdepth'.$C['depth'].'"&gt;&lt;/span&gt;&lt;span class="name'.($C['hidden']||$C['reject']?' hidden':'').' ndepth'.$C['depth'].'"&gt;'.$name.'&lt;/span&gt;';
if($checkbox) $icon1 = '&lt;input type="checkbox" name="members[]" value="'.$C['uid'].'" /&gt;';
$icon2 = $C['mobile'] ? ' &lt;img src="'.$g['img_core'].'/_public/ico_mobile.gif" class="mobile" alt="" /&gt;' : '';
$icon3 = $C['reject'] ? ' &lt;img src="'.$g['img_core'].'/_public/ico_hidden.gif" alt="" /&gt;' : '';
if ($C['is_child'])
{
echo "['".$icon1.$name.$icon2.$numprintx."','".$C['uid']."',";
getMenuShow($site,$table,$j,$C['uid'],$C['depth'],$uid,$CXA,$hidden);
echo "],\n";
}
else {
echo "['".$icon1.$name.$icon2.$icon3.$numprintx."','".$C['uid']."',''],\n";
}
}
}
//메뉴코드->경로
function getMenuCodeToPath($table,$cat,$j)
{
global $DB_CONNECT;
static $arr;
$R=getUidData($table,$cat);
if($R['parent'])
{
$arr[$j]['uid'] = $R['uid'];
$arr[$j]['id'] = $R['id'];
$arr[$j]['name']= $R['name'];
getMenuCodeToPath($table,$R['parent'],$j+1);
}
else {
$C=getUidData($table,$cat);
$arr[$j]['uid'] = $C['uid'];
$arr[$j]['id'] = $C['id'];
$arr[$j]['name']= $C['name'];
}
sort($arr);
reset($arr);
return $arr;
}
//메뉴코드->SQL
function getMenuCodeToSql($table,$cat,$f)
{
static $sql;
$R=getUidData($table,$cat);
if ($R['uid']) $sql .= $f.'='.$R['uid'].' or ';
if ($R['is_child'])
{
$RDATA=getDbSelect($table,'parent='.$R['uid'],'uid');
while($C=db_fetch_array($RDATA)) getMenuCodeToSql($table,$C['uid'],$f);
}
return substr($sql,0,strlen($sql)-4);
}
?>

View File

@@ -0,0 +1,38 @@
<?php
//카테고리출력
function getMenuShowSelect($site,$table,$j,$parent,$depth,$uid,$hidden,$id)
{
global $cat,$_isUid;
static $j;
$CD=getDbSelect($table,($site?'site='.$site.' and ':'').'depth='.($depth+1).' and parent='.$parent.($hidden ? ' and hidden=0':'').' order by gid asc','*');
while($C=db_fetch_array($CD))
{
$nId = ($id?$id.'/':'').$C[$_isUid.'id'];
$j++;
echo '<option class="selectcat'.$C['depth'].'" value="'.$nId.'"'.($nId==$cat?' selected':'').'>';
for($i=1;$i<$C['depth'];$i++) echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
if ($C['depth'] > 1) echo 'ㄴ';
echo $C['name'].($C['num']?' ('.$C['num'].')':'').'</option>';
if ($C['is_child']) getMenuShowSelect($site,$table,$j,$C['uid'],$C['depth'],$uid,$hidden,$nId);
}
}
function getMenuShowSelectCode($site,$table,$j,$parent,$depth,$uid,$hidden,$id)
{
global $cat,$_isUid;
static $j;
$CD=getDbSelect($table,($site?'site='.$site.' and ':'').'depth='.($depth+1).' and parent='.$parent.($hidden ? ' and hidden=0':'').' order by gid asc','*');
while($C=db_fetch_array($CD))
{
$nId = $C[$_isUid.'id'];
$j++;
echo '<option class="selectcat'.$C['depth'].'" value="'.$nId.'"'.($nId==$cat?' selected':'').'>';
for($i=1;$i<$C['depth'];$i++) echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
if ($C['depth'] > 1) echo 'ㄴ';
echo $C['name'].($C['num']?' ('.$C['num'].')':'').'</option>';
if ($C['is_child']) getMenuShowSelectCode($site,$table,$j,$C['uid'],$C['depth'],$uid,$hidden,$nId);
}
}
?>

View File

@@ -0,0 +1,82 @@
<?php
function getUrlData($url,$sec)
{
$URL_parsed = parse_url($url);
$host = $URL_parsed['host'];
$port = $URL_parsed['port'];
$path = $URL_parsed['path'];
$query= $URL_parsed['query'];
$scheme= $URL_parsed['scheme'];
if (!$host) $host = $_SERVER['HTTP_HOST'];
$out = "GET ".$path.'?'.$query." HTTP/1.1\r\n";
$out .= "Host: ".$host."\r\n";
$out .= "Connection: Close\r\n\r\n";
if ($scheme == 'https') {
if (!$port) $port = 443;
$fp = fsockopen('ssl://'.$host,$port,$errno,$errstr,$sec);
} else {
if (!$port) $port = 80;
$fp = fsockopen($host,$port,$errno,$errstr,$sec);
}
if (!$fp)
{
return false;
}
else
{
fputs($fp, $out);
$body = false;
while (!feof($fp)) {
$s = fgets($fp, 128);
if ( $body )
$in .= $s;
if ( $s == "\r\n" )
$body = true;
}
fclose($fp);
return $in;
}
}
function getRssArray($url,$tag)
{
return explode('<'.$tag.'>',getUrlData($url,10));
}
function getRssTagValue($str,$tag)
{
$str_exp = explode('<'.$tag.'>' , $str);
$str_exp = explode('</'.$tag.'>' , $str_exp[1]);
$result = getUTFtoUTF($str_exp[0]) == $str_exp[0] ? $str_exp[0] : getKRtoUTF($str_exp[0]);
return trim($result);
}
function getRssPageTitle($str,$tag)
{
return getRssTagValue($str,$tag);
}
function getRssContent($str,$tag)
{
$str = str_replace('&gt;','>',$str);
$str = str_replace('&lt;','<',$str);
$str = str_replace('&quot;','"',$str);
$str = str_replace('&apos;','\'',$str);
$str = getRssTagValue($str,$tag);
$str = str_replace(']]>','',$str);
$str = str_replace('<![CDATA[','',$str);
return $str;
}
function getRssDomain($url)
{
$e = explode('/',str_replace('www.','',str_replace('http://','',$url)));
return $e[0];
}
function getJSONData($data,$f)
{
$arr1 = explode('"'.$f.'":"',str_replace(': "',':"',$data));
$arr2 = explode('"',$arr1[1]);
return $arr2[0];
}
?>

View File

@@ -0,0 +1,41 @@
<?php
function getAgoGrade($SR,$keyword,$d1,$d2)
{
global $date,$table,$DB_CONNECT,$s;
$d_regis1 = date('Ymd',mktime(0,0,0,substr($date['today'],4,2),substr($date['today'],6,2)-$d1,substr($date['today'],0,4)));
$d_regis2 = date('Ymd',mktime(0,0,0,substr($date['today'],4,2),substr($date['today'],6,2)-$d2,substr($date['today'],0,4)));
$WHEREIS = 'where (date between '.$d_regis1.' and '.$d_regis2.") and keyword='".$keyword."' and site=".$s;
$SCOUNT = db_fetch_array(db_query('SELECT sum(hit) FROM '.$table['s_inkey'].' '.$WHEREIS,$DB_CONNECT));
if (!$SCOUNT[0]) return -1;
$len = count($SR);
for($i = 0; $i < $len; $i++)
{
if ($SCOUNT[0] > $SR[$i]) break;
}
return $i;
}
function getGradeArr($d1,$d2)
{
global $date,$table,$DB_CONNECT,$s;
$d_regis1 = date('Ymd',mktime(0,0,0,substr($date['today'],4,2),substr($date['today'],6,2)-$d1,substr($date['today'],0,4)));
$d_regis2 = date('Ymd',mktime(0,0,0,substr($date['today'],4,2),substr($date['today'],6,2)-$d2,substr($date['today'],0,4)));
$WHEREIS = 'where (date between '.$d_regis1.' and '.$d_regis2.') and site='.$s;
$SCOUNT = db_query('SELECT sum(hit) as cnt FROM '.$table['s_inkey'].' '.$WHEREIS.' group by keyword order by cnt desc',$DB_CONNECT);
while($R=db_fetch_array($SCOUNT)) $ARR[] = $R['cnt'];
return $ARR;
}
function getSicon($n1,$n2)
{
if($n1 < 0) return 'new';
if($n1 > $n2) return 'up';
if($n1 < $n2) return 'down';
if($n1 ==$n2) return 'same';
}
function getNumChange($n1,$n2)
{
if($n1 < 0 || $n1 == $n2) return '';
if($n1 > $n2) return $n1 - $n2;
if($n1 < $n2) return $n2 - $n1;
}
?>

View File

@@ -0,0 +1,97 @@
<?php
//SMS 전송
function getSendSMS($to,$from,$subject,$content,$type)
{
global $g,$d;
if ($html == 'TEXT') $content = nl2br(htmlspecialchars($content));
require $g['path_core'].'opensrc/snoopy/Snoopy.class.php';
$snoopy = new Snoopy;
/*======================================================================*\
// MMS일 경우 첨부파일 처리
// 서버&로컬 에 저장된 이미지 파일 읽어올때.
// 웹경로 ,로컬경로 모두 가능 합니다.
\*======================================================================*/
$img_source = 'http://websvc.nesolution.com/sms/MMSAttachFiles/M050085/20180510145947.jpg';
//$img_source = './img/test.jpg';
// $img = file_get_contents($img_source);
// $Base64files = base64_encode($img);
//"," 콤마로 구분 최대 3개.가능합니다.
$files = $Base64files .",".$Base64files .",".$Base64files ;
/*======================================================================*\
// MMS일 경우 첨부파일 처리
// 프론트에서 이미지 파일을 base64로 생성후 post로 받아 올때.
// POST 방식
\*======================================================================*/
/*
$files = $_POST["Base64files"];//MMS 발송시 첨부파일
*/
/*======================================================================*\
// utf-8 인코딩을 사용할 경우
// POST 방식
\*======================================================================*/
$cmd = "SendSms";
$tran_phone = urlencode(iconv('UTF-8', 'EUC-KR', $to)); //받는사람 핸드폰 번호
$tran_callback = urlencode(iconv('UTF-8', 'EUC-KR', $from)); //보내는사람 핸드폰 번호
$tran_date = urlencode(iconv('UTF-8', 'EUC-KR', $date)); //예약전송 일시(생략시 즉시전송)
$tran_msg = urlencode(iconv('UTF-8', 'EUC-KR',$content)); //전송 메시지
$guest_no = urlencode(iconv('UTF-8', 'EUC-KR',$d['admin']['sms_id'])); //SMS 계정 아이디
$guest_key = urlencode(iconv('UTF-8', 'EUC-KR',$d['admin']['sms_key'])); //SMS 계정 인증키
$type = urlencode(iconv('UTF-8', 'EUC-KR',$type)); //발송구분
$subject = urlencode(iconv('UTF-8', 'EUC-KR',$subject)); //LMS / MMS 발송시 제목
$files = $_POST["Base64files"];//MMS 발송시 첨부파일
if($type != "MMS") {
/*======================================================================*\
// GET 으로 호출
이미지 첨부시 에러 발생함니다. post 로 전송하세요.
\*======================================================================*/
$method = "GET";
$url = "http://websvc.nesolution.com/SMS/SMS.aspx?cmd=$cmd&method=$method&";
$url = $url . "guest_no=$guest_no&guest_key=$guest_key&tran_phone=$tran_phone&";
$url = $url . "tran_callback=$tran_callback&tran_date=$tran_date&tran_msg=$tran_msg&";
$url = $url . "type=$type&subject=$subject"; // LMS 또는 MMS 일경우 제목 필수
$snoopy->fetchtext($url);
// 출력 페이지가 euc-kr 일때
//$send_result = $snoopy->results;
// 출력 페이지가 utf-8 일때
$send_result = iconv('EUC-KR', 'UTF-8', $snoopy->results);
}
else
{
/*======================================================================*\
// $snoopy 사용 POST 발송(MMS 파일첨부시)
\*======================================================================*/
$formvars["cmd"] =$cmd;
$formvars["guest_no"] = $guest_no;
$formvars["guest_key"] = $guest_key;
$formvars["tran_phone"] = $tran_phone;
$formvars["tran_callback"] = $tran_callback;
$formvars["tran_date"] = $tran_date;
$formvars["tran_msg"] = $tran_msg;
$formvars["type"] = $type;
$formvars["subject"] = $subject;
$formvars["files"] = $files;
$snoopy->httpmethod = "POST";
$snoopy->submit("http://websvc.nesolution.com/SMS/SMS.aspx",$formvars );
//출력 페이지가 euc-kr 일때
//$send_result = $snoopy->results;
// 출력 페이지가 utf-8 일때
$send_result = iconv('EUC-KR', 'UTF-8', $snoopy->results);
}
return $send_result;
}
?>

View File

@@ -0,0 +1,38 @@
<?php
//문자열형태소추출
function getSiKey($singer)
{
$singer_set1 = "ㄱ,ㄴ,ㄷ,ㄹ,ㅁ,ㅂ,ㅅ,ㅇ,ㅈ,ㅊ,ㅋ,ㅍ,ㅌ,ㅎ";
$singer_set2 = "가,나,다,라,마,바,사,아,자,차,카,타,파,하";
$singer_set3 = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
$singer_arr1 = explode(',' , $singer_set1);
$singer_arr2 = explode(',' , $singer_set2);
$singer_arr3 = explode(',' , $singer_set3);
$singer_sub = substr(strtoupper($singer) , 0 , 2);
$singer_ord = ord($singer_sub);
if ($singer_ord > 64 && $singer_ord < 91)
{ // 영문
for($i = 0; $i < 26; $i++)
{
if($singer_sub >= $singer_arr3[$i])
{
$key = $singer_arr3[$i];
}
}
}
else {
$key = "기타";
for($i = 0; $i < 14; $i++)
{
if ($singer_sub >= $singer_arr2[$i])
{
$key = $singer_arr1[$i];
}
}
}
return $key;
}
?>

View File

@@ -0,0 +1,36 @@
<?php
// 템플릿 파싱 및 데이타 치환
class skin {
var $filename;
public function __construct($filename) {
$this->filename = $filename;
}
public function mk($filename) {
$this->filename = $filename;
return $this->make();
}
public function make() {
global $g,$m,$theme;
$file = sprintf('./modules/'.$m.'/themes/'.$theme.'/_html/%s.html', $this->filename);
$fh_skin = fopen($file, 'r');
$skin = @fread($fh_skin, filesize($file));
fclose($fh_skin);
//return $skin;
return $this->parse($skin);
}
private function parse($skin) {
global $TMPL, $LNG;
$skin = preg_replace_callback('/{\$lng->(.+?)}/i', create_function('$matches', 'global $LNG; return $LNG[$matches[1]];'), $skin);
$skin = preg_replace_callback('/{\$([a-zA-Z0-9_]+)}/', create_function('$matches', 'global $TMPL; return (isset($TMPL[$matches[1]])?$TMPL[$matches[1]]:"");'), $skin);
return $skin;
}
}
?>

1195
_core/function/sys.func.php Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,236 @@
<?php
@ini_set('memory_limit', '128M');
function ResizeWidth($picture,$smallfile,$rewidth)
{
$picsize=getimagesize($picture);
if ($picsize[0] <= $rewidth)
{
copy($picture,$smallfile);
}
else {
$reheight = intval(($rewidth * $picsize[1]) / $picsize[0]);
if($picsize[0]>$rewidth)
{
$width=$picsize[0]-$rewidth;
$aa=$width/$picsize[0];
$picsize[0]=intval($picsize[0]-$picsize[0]*$aa);
$picsize[1]=intval($picsize[1]-$picsize[1]*$aa);
}
if($picsize[1]>$reheight)
{
$height=$picsize[1]-$reheight;
$bb=$heigh/$picsize[1];
$picsize[0]=intval($picsize[0]-$picsize[0]*$bb);
$picsize[1]=intval($picsize[1]-$picsize[1]*$bb);
}
if($picsize[2]==1)
{
//@header("Content-Type: imgage/gif");
$dstimg=ImageCreatetruecolor($rewidth,$reheight);
$srcimg=@ImageCreateFromGIF($picture);
ImageCopyResized($dstimg, $srcimg,0,0,0,0,$rewidth,$reheight,ImageSX($srcimg),ImageSY($srcimg));
Imagegif($dstimg,$smallfile,100);
}
elseif($picsize[2]==2)
{
//@header("Content-Type: images/jpeg");
$dstimg=ImageCreatetruecolor($rewidth,$reheight);
$srcimg=ImageCreateFromJPEG($picture);
imagecopyresampled($dstimg, $srcimg,0,0,0,0,$rewidth,$reheight,ImageSX($srcimg),ImageSY($srcimg));
Imagejpeg($dstimg,$smallfile,100);
}
elseif($picsize[2]==3)
{
//@header("Content-Type: images/png");
$srcimg=ImageCreateFromPNG($picture);
$dstimg = imagecreatetruecolor($rewidth, $reheight);
imagealphablending($dstimg, false);
imagesavealpha($dstimg,true);
$transparent = imagecolorallocatealpha($dstimg, 255, 255, 255, 127);
imagefilledrectangle($dstimg, 0, 0, $rewidth, $reheight, $transparent);
imagecopyresampled($dstimg, $srcimg, 0, 0, 0, 0, $rewidth, $reheight, ImageSX($srcimg),ImageSY($srcimg));
Imagepng($dstimg,$smallfile,0);
}
@ImageDestroy($dstimg);
@ImageDestroy($srcimg);
}
}
function ResizeHeight($picture,$smallfile,$reheight)
{
$picsize=getimagesize($picture);
if ($picsize[1] <= $reheight)
{
copy($picture,$smallfile);
}
else {
$rewidth = intval(($reheight * $picsize[0]) / $picsize[1]);
if($picsize[0]>$rewidth)
{
$width=$picsize[0]-$rewidth;
$aa=$width/$picsize[0];
$picsize[0]=intval($picsize[0]-$picsize[0]*$aa);
$picsize[1]=intval($picsize[1]-$picsize[1]*$aa);
}
if($picsize[1]>$reheight)
{
$height=$picsize[1]-$reheight;
$bb=$heigh/$picsize[1];
$picsize[0]=intval($picsize[0]-$picsize[0]*$bb);
$picsize[1]=intval($picsize[1]-$picsize[1]*$bb);
}
if($picsize[2]==1)
{
//@header("Content-Type: imgage/gif");
$dstimg=ImageCreatetruecolor($rewidth,$reheight);
$srcimg=@ImageCreateFromGIF($picture);
ImageCopyResized($dstimg, $srcimg,0,0,0,0,$rewidth,$reheight,ImageSX($srcimg),ImageSY($srcimg));
Imagegif($dstimg,$smallfile,100);
}
elseif($picsize[2]==2)
{
//@header("Content-Type: images/jpeg");
$dstimg=ImageCreatetruecolor($rewidth,$reheight);
$srcimg=ImageCreateFromJPEG($picture);
imagecopyresampled($dstimg, $srcimg,0,0,0,0,$rewidth,$reheight,ImageSX($srcimg),ImageSY($srcimg));
Imagejpeg($dstimg,$smallfile,100);
}
elseif($picsize[2]==3)
{
//@header("Content-Type: images/png");
$srcimg=ImageCreateFromPNG($picture);
$dstimg=imagecreate($rewidth,$reheight);
$black = imagecolorallocate($dstimg, 0x00, 0x00, 0x00);
$white = imagecolorallocate($dstimg, 0xFF, 0xFF, 0xFF);
$magenta = imagecolorallocate($dstimg, 0xFF, 0x00, 0xFF);
imagecolortransparent($dstimg,$black);
imagecopyresampled($dstimg, $srcimg,0,0,0,0,$rewidth,$reheight,ImageSX($srcimg),ImageSY($srcimg));
Imagepng($dstimg,$smallfile,0);
}
@ImageDestroy($dstimg);
@ImageDestroy($srcimg);
}
}
function ResizeWidthHeight($picture,$smallfile,$rewidth,$reheight)
{
$picsize=getimagesize($picture);
if($picsize[2]==1)
{
//@header("Content-Type: imgage/gif");
$dstimg=ImageCreatetruecolor($rewidth,$reheight);
$srcimg=@ImageCreateFromGIF($picture);
ImageCopyResized($dstimg, $srcimg,0,0,0,0,$rewidth,$reheight,ImageSX($srcimg),ImageSY($srcimg));
Imagegif($dstimg,$smallfile,100);
}
elseif($picsize[2]==2)
{
//@header("Content-Type: images/jpeg");
$dstimg=ImageCreatetruecolor($rewidth,$reheight);
$srcimg=ImageCreateFromJPEG($picture);
imagecopyresampled($dstimg, $srcimg,0,0,0,0,$rewidth,$reheight,ImageSX($srcimg),ImageSY($srcimg));
Imagejpeg($dstimg,$smallfile,100);
}
elseif($picsize[2]==3)
{
//@header("Content-Type: images/png");
$srcimg=ImageCreateFromPNG($picture);
$dstimg=imagecreate($rewidth,$reheight);
$black = imagecolorallocate($dstimg, 0x00, 0x00, 0x00);
$white = imagecolorallocate($dstimg, 0xFF, 0xFF, 0xFF);
$magenta = imagecolorallocate($dstimg, 0xFF, 0x00, 0xFF);
imagecolortransparent($dstimg,$black);
imagecopyresampled($dstimg, $srcimg,0,0,0,0,$rewidth,$reheight,ImageSX($srcimg),ImageSY($srcimg));
Imagepng($dstimg,$smallfile,0);
}
@ImageDestroy($dstimg);
@ImageDestroy($srcimg);
}
function overlay($backpic,$overpic,$x,$y,$w,$h)
{
$backsize=getimagesize($backpic);
$oversize=getimagesize($overpic);
if ($backsize[2] == 1)
{
$dstimg=ImageCreateFromGIF($backpic);
}
elseif ($backsize[2] == 2)
{
$dstimg=ImageCreateFromJPEG($backpic);
}
elseif ($backsize[2] == 3)
{
$dstimg=ImageCreateFromPNG($backpic);
}
if ($oversize[2] == 1)
{
$srcimg=ImageCreateFromGIF($overpic);
}
elseif ($oversize[2] == 2)
{
$srcimg=ImageCreateFromJPEG($overpic);
}
elseif ($oversize[2] == 3)
{
$srcimg=ImageCreateFromPNG($overpic);
}
Imagecopymerge($dstimg, $srcimg, $x, $y, 0, 0, $w, $h, 100);
if ($backsize[2] == 1)
{
Imagegif($dstimg,$backpic,100);
}
elseif ($backsize[2] == 2)
{
Imagejpeg($dstimg,$backpic,100);
}
elseif ($backsize[2] == 3)
{
Imagepng($dstimg,$backpic,0);
}
@ImageDestroy($dstimg);
@ImageDestroy($srcimg);
}
// 이미지 가로/세로 교정
function exifRotate($picture)
{
$exifData = @exif_read_data($picture);
if($exifData['Orientation'] == 6) {
$degree = 270; // 시계방향으로 90도 돌려줘야 정상인데 270도 돌려야 정상적으로 출력됨
}
else if($exifData['Orientation'] == 8) {
$degree = 90; // 반시계방향으로 90도 돌려줘야 정상
}
else if($exifData['Orientation'] == 3) {
$degree = 180;
}
if($degree) {
if($exifData['FileType'] == 1) {
$source = imagecreatefromgif($picture);
$source = imagerotate ($source , $degree, 0);
imagegif($source, $picture);
}
else if($exifData['FileType'] == 2) {
$source = imagecreatefromjpeg($picture);
$source = imagerotate ($source , $degree, 0);
imagejpeg($source, $picture);
}
else if($exifData['FileType'] == 3) {
$source = imagecreatefrompng($picture);
$source = imagerotate ($source , $degree, 0);
imagepng($source, $picture);
}
@ImageDestroy($source);
@ImageDestroy($source);
}
}
?>

View File

@@ -0,0 +1,168 @@
<?php
class ZipFile
{
var $datasec = array();
var $ctrl_dir = array();
var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
var $old_offset = 0;
var $proc_count=0;
var $makeDirCount;
function add_dir($name)
{
$name = str_replace("\\", "/", $name);
$fr = "\x50\x4b\x03\x04";
$fr .= "\x0a\x00";
$fr .= "\x00\x00";
$fr .= "\x00\x00";
$fr .= "\x00\x00\x00\x00";
$fr .= pack("V",0);
$fr .= pack("V",0);
$fr .= pack("V",0);
$fr .= pack("v", strlen($name) );
$fr .= pack("v", 0 );
$fr .= $name;
$fr .= pack("V", 0);
$fr .= pack("V", 0);
$fr .= pack("V", 0);
$this -> datasec[] = $fr;
$new_offset = strlen(implode("", $this->datasec));
$cdrec = "\x50\x4b\x01\x02";
$cdrec .="\x00\x00";
$cdrec .="\x0a\x00";
$cdrec .="\x00\x00";
$cdrec .="\x00\x00";
$cdrec .="\x00\x00\x00\x00";
$cdrec .= pack("V",0);
$cdrec .= pack("V",0);
$cdrec .= pack("V",0);
$cdrec .= pack("v", strlen($name) );
$cdrec .= pack("v", 0 );
$cdrec .= pack("v", 0 );
$cdrec .= pack("v", 0 );
$cdrec .= pack("v", 0 );
$ext = "\x00\x00\x10\x00";
$ext = "\xff\xff\xff\xff";
$cdrec .= pack("V", 16 );
$cdrec .= pack("V", $this -> old_offset );
$cdrec .= $name;
$this -> ctrl_dir[] = $cdrec;
$this -> old_offset = $new_offset;
return;
}
function add_file($data, $name)
{
$fp = fopen($data,"r");
$data = fread($fp,filesize($data));
fclose($fp);
$name = str_replace("\\", "/", $name);
$unc_len = strlen($data);
$crc = crc32($data);
$zdata = gzcompress($data);
$zdata = substr ($zdata, 2, -4);
$c_len = strlen($zdata);
$fr = "\x50\x4b\x03\x04";
$fr .= "\x14\x00";
$fr .= "\x00\x00";
$fr .= "\x08\x00";
$fr .= "\x00\x00\x00\x00";
$fr .= pack("V",$crc);
$fr .= pack("V",$c_len);
$fr .= pack("V",$unc_len);
$fr .= pack("v", strlen($name) );
$fr .= pack("v", 0 );
$fr .= $name;
$fr .= $zdata;
$fr .= pack("V",$crc);
$fr .= pack("V",$c_len);
$fr .= pack("V",$unc_len);
$this -> datasec[] = $fr;
$new_offset = strlen(implode("", $this->datasec));
$cdrec = "\x50\x4b\x01\x02";
$cdrec .="\x00\x00";
$cdrec .="\x14\x00";
$cdrec .="\x00\x00";
$cdrec .="\x08\x00";
$cdrec .="\x00\x00\x00\x00";
$cdrec .= pack("V",$crc);
$cdrec .= pack("V",$c_len);
$cdrec .= pack("V",$unc_len);
$cdrec .= pack("v", strlen($name) );
$cdrec .= pack("v", 0 );
$cdrec .= pack("v", 0 );
$cdrec .= pack("v", 0 );
$cdrec .= pack("v", 0 );
$cdrec .= pack("V", 32 );
$cdrec .= pack("V", $this -> old_offset );
$this -> old_offset = $new_offset;
$cdrec .= $name;
$this -> ctrl_dir[] = $cdrec;
}
function add_files($files)
{
foreach($files as $file)
{
$file = str_replace("//", "/", $file);
if (is_file($file))
{
$this->add_file($file,$file);
}
}
}
function add_dirs($dirs)
{
$files = $this->read_dir($dirs);
$this->add_files($files);
}
function read_dir($dir)
{
$array = array();
$d = dir($dir);
while (false !== ($entry = $d->read()))
{
if($entry!='.' && $entry!='..')
{
$entry = $dir.'/'.$entry;
if(is_dir($entry))
{
$array[] = $entry;
$array = array_merge($array, $this->read_dir($entry));
}
else {
$array[] = $entry;
}
}
}
$d->close();
return $array;
}
function file()
{
$data = implode('', $this -> datasec);
$ctrldir = implode('', $this -> ctrl_dir);
return
$data .
$ctrldir .
$this -> eof_ctrl_dir .
pack("v", sizeof($this -> ctrl_dir)) .
pack("v", sizeof($this -> ctrl_dir)) .
pack("V", strlen($ctrldir)) .
pack("V", strlen($data)) . "\x00\x00";
}
}
?>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
_core/images/blank.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 964 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 943 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1019 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 939 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 971 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 854 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 946 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 941 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 984 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 970 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 999 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 983 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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