Changeset 3460841 for cookieadmin
- Timestamp:
- 02/13/2026 02:27:50 PM (6 weeks ago)
- Location:
- cookieadmin/trunk
- Files:
-
- 7 added
- 2 deleted
- 11 edited
-
assets/cookie/template.json (deleted)
-
assets/cookie/template.php (added)
-
assets/css/consent.css (modified) (9 diffs)
-
assets/css/cookie.css (modified) (15 diffs)
-
assets/images/cookieadmin_icon_20-black.svg (added)
-
assets/js/consent.js (modified) (13 diffs)
-
assets/js/cookie.js (modified) (16 diffs)
-
assets/js/footer.js (modified) (1 diff)
-
cookieadmin.php (modified) (3 diffs)
-
includes/admin (added)
-
includes/admin.php (modified) (7 diffs)
-
includes/admin/consent.php (added)
-
includes/admin/dashboard.php (added)
-
includes/admin/scan.php (added)
-
includes/admin/settings.php (added)
-
includes/cookiecategorizer.php (modified) (5 diffs)
-
includes/enduser.php (modified) (3 diffs)
-
includes/functions.php (modified) (7 diffs)
-
init.php (deleted)
-
readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
cookieadmin/trunk/assets/css/consent.css
r3412297 r3460841 17 17 } 18 18 19 /* Buttons End */20 21 19 /* Consent page css */ 22 23 .cookieadmin-postbox-container {24 max-width: 92vw;25 float: unset;26 margin: 10px;27 }28 20 29 21 .cookieadmin_cookie_modal label, .cookieadmin_cookie_modal input { … … 80 72 /* Modal animations Ends */ 81 73 82 .cookieadmin_consent-header{ 83 display: flex; 84 background: #12625f4d; 85 color: black; 86 padding: 12px; 87 box-sizing: border-box; 88 margin: 4px; 89 align-items: center; 90 justify-content: space-between; 91 } 92 93 .cookieadmin_consent-contents { 94 display: flex; 95 margin: 0px 5px; 96 } 97 98 .cookieadmin_consent_settings { 99 display: flex; 100 width: 100%; 101 flex-direction: column; 102 background: #ffffff; 103 /*margin-left: -3px;*/ 104 } 105 106 107 108 .cookieadmin-contents { 109 width: 100%; 110 } 111 112 .cookieadmin-setting { 113 display: flex; 114 padding: 6px 0px; 115 justify-content: flex-start; 116 } 117 118 .cookieadmin-setting-head { 119 width: 100%; 120 padding: 5px; 121 align-content: center; 122 } 123 124 .cookieadmin-setting-contents { 125 align-items: baseline; 126 padding: 5px; 127 margin: 5px; 128 } 129 130 .cookieadmin-setting-results { 131 align-items: baseline; 132 padding: 5px; 133 margin: 5px; 134 width: 80%; 135 } 136 137 .cookieadmin-button{ 138 padding: 5px; 139 row-gap: 5px; 140 } 74 141 75 /* Consent page css End*/ 142 76 … … 274 208 275 209 .cookieadmin_preference{ 276 overflow: hidden; 277 height: 83px; 210 overflow: auto; 278 211 font-size: 15px; 279 } 280 281 .cookieadmin_showmore{ 282 background: none; 283 border: none; 284 color: #1863dc; 285 padding: 0px; 286 cursor: pointer; 212 height: auto; 213 padding: 10px 0px; 287 214 } 288 215 289 216 .cookieadmin_details_wrapper{ 290 padding: 15px;217 padding: 0px 15px; 291 218 height: calc(100% - 6%); 292 219 overflow: auto; … … 318 245 } 319 246 320 .cookieadmin- nece-cookies{247 .cookieadmin-modal-cookies-list{ 321 248 display:none; 322 249 padding:1px; … … 375 302 bottom: 15px; 376 303 left: 15px; 377 background : linear-gradient(to left, rgb(0, 51, 204) 0%, rgb(102, 102, 255) 100%);304 background-color: #374FD4; 378 305 height: 50px; 379 306 width: 50px; … … 383 310 z-index: 99999; 384 311 padding: 5px !important; 312 box-shadow: -4px 5px 10px rgba(0, 0, 0, 0.4); 313 align-items: center; 314 justify-content: center; 385 315 } 386 316 … … 441 371 /* Checkbox switch Start */ 442 372 443 .cookieadmin_toggle , .cookieadmin_toggle_disabled{373 .cookieadmin_toggle { 444 374 position: relative; 445 375 display: inline-block; … … 449 379 450 380 /* Hide the checkbox input */ 451 .cookieadmin_toggle input , .cookieadmin_toggle_disabled input{381 .cookieadmin_toggle input{ 452 382 display: none; 453 383 } … … 494 424 } 495 425 496 input:disabled+.cookieadmin_slider {497 background-color: #3582c4;498 }499 input:disabled+.cookieadmin_slider:before {500 transform: translateX(13px);501 }502 503 426 /* Checkbox switch End */ 504 427 -
cookieadmin/trunk/assets/css/cookie.css
r3353807 r3460841 53 53 54 54 /* Buttons */ 55 .cookieadmin-btn{ 55 .cookieadmin-btn{ 56 56 display: inline-flex; 57 57 outline: 0; 58 58 text-align: center; 59 59 cursor: pointer; 60 padding: 5px 10px 6px 10px !important;60 padding: 6px 10px; 61 61 border-radius: 3px; 62 62 border: 1px solid transparent; … … 65 65 font-size: 13px !important; 66 66 text-decoration: none; 67 gap: 8px;68 align-items:center;69 justify-content:center;70 67 } 71 68 … … 234 231 } 235 232 236 .cookieadmin_bottom{237 bottom:20px;238 }239 240 .cookieadmin_top{241 top: 20px;242 }243 244 .cookieadmin_right{245 right: 15px;246 }247 248 .cookieadmin_left{249 left:15px;250 }251 252 233 .cookieadmin_hide{ 253 234 display:none; … … 260 241 font-size: 20px; 261 242 margin: 2px; 262 }263 264 /* Modal animations */265 @keyframes cookieadmin_slideUp {266 from {267 transform: translateY(100%);268 opacity: 0;269 }270 to {271 transform: translateY(0);272 opacity: 1;273 }274 }275 276 @keyframes cookieadmin_slideSide {277 from {278 transform: translateX(-100%);279 opacity: 0;280 }281 to {282 transform: translateX(0);283 opacity: 1;284 }285 }286 287 /* Modal animations Ends */288 289 .cookieadmin_consent-header{290 display: flex;291 background: #12625f4d;292 color: black;293 padding: 12px;294 box-sizing: border-box;295 margin: 4px;296 align-items: center;297 justify-content: space-between;298 243 } 299 244 … … 368 313 } 369 314 315 .cookieadmin-desc { 316 font-size:14px; 317 padding: 0 0 0 10px; 318 } 319 370 320 .cookieadmin-color-input{ 371 321 border: 1px solid; … … 393 343 394 344 .cookieadmin-collapsible-notice{ 395 padding: 9px; 396 display: none; 345 padding: 8px; 397 346 background-color: #ffffc6; 398 347 font-size: 14px; … … 414 363 } 415 364 365 .cookieadmin-cookie-scan{ 366 display: flex; 367 flex-direction: row; 368 } 369 416 370 .cookieadmin-setting-colors{ 417 371 justify-content: space-between; … … 440 394 /* Website consent box */ 441 395 442 .cookieadmin_law_container{ 443 position: fixed; 444 width: 25%; 445 box-sizing: border-box; 446 z-index: 99999; 447 display: none; 448 } 449 450 .cookieadmin_consent_btns{ 451 align-content: center; 452 display: flex; 453 justify-content: space-evenly; 454 flex-wrap: wrap; 455 } 456 457 .cookieadmin_box{ 458 /*position: fixed;*/ 459 width: 25%; 460 box-sizing: border-box; 461 display: none; 462 } 463 464 .cookieadmin_notice_group{ 465 display: flex; 466 flex-direction: column; 467 gap: 10px; /* spacing between content and buttons */ 468 align-items: flex-start; 469 } 470 471 .cookieadmin_popup{ 472 position: fixed; 473 width: 330px; 474 box-sizing: border-box; 475 z-index: 9999999; 476 display: none; 477 } 478 479 .cookieadmin_consent_inside{ 480 color: black; 481 background-color: #FFFFFF; 482 border: 1px solid #f4f4f4; 483 padding:15px; 484 border-radius: 4px; 485 box-shadow:1px 3px 10px rgba(0, 0, 0, 0.2); 486 } 487 488 #cookieadmin_notice_title{ 489 font-weight: 601; 490 margin: 0px; 491 padding-left: 5px; 492 } 493 494 .cookieadmin_notice_con{ 495 font-size: initial; 496 padding: 0px 6px; 497 flex: 1; 498 } 499 500 .cookieadmin_cookie_modal{ 501 display: none; 502 flex-direction: column; 503 position: fixed; 504 max-height: 80vh; 505 background-color: #FFFFFF; 506 border: 1px solid #F4F4F4; 507 border-radius: 8px; 508 box-shadow: 0 4px 8px rgba(0,0,0,0.2); 509 z-index: 999999; 510 } 511 512 .cookieadmin_center{ 513 top: 10%; 514 left: 22%; 515 max-width: 60vw; 516 } 517 518 .cookieadmin_side{ 519 flex-direction: column; 520 position: fixed; 521 width: 35vw; 522 bottom: 0px; 523 animation: 0.5s ease-out forwards cookieadmin_slideSide; 524 max-height: 100vh; 525 left: 0px; 526 top: 0px; 527 border-radius: 0px; 528 } 529 530 .cookieadmin_down{ 531 position: fixed; 532 max-width: 100%; 533 max-height: 55vh; 534 bottom: 0px; 535 animation: 0.5s ease-out forwards cookieadmin_slideUp; 536 } 537 538 .cookieadmin_modal_overlay{ 539 display: none; 540 position: fixed; 541 top: 0; 542 left: 0; 543 width: 100%; 544 height: 100%; 545 background-color: rgba(0, 0, 0, 0.5); 546 z-index: 1000; 547 } 548 549 .cookieadmin_mod_head{ 550 display: flex; 551 justify-content: space-between; 552 } 553 554 .cookieadmin_mod_head, .cookieadmin_wrapper{ 555 padding: 15px; 556 border-bottom: 1px solid #CCCCCC; 557 } 558 559 .cookieadmin_close_pref{ 560 background: none; 561 border: none; 562 align-self: baseline; 563 color: gray; 564 cursor: pointer; 565 padding: 0px; 566 } 567 568 .cookieadmin_preference_title{ 569 font-size: 20px; 570 font-weight: 801; 571 margin: 9px; 572 } 573 574 .cookieadmin_preference_details{ 575 padding: 0px 10px; 576 } 577 578 .cookieadmin_preference{ 579 overflow: hidden; 580 height: 83px; 581 font-size: 15px; 582 } 583 584 .cookieadmin_showmore{ 585 background: none; 586 border: none; 587 color: #1863dc; 588 padding: 0px; 589 cursor: pointer; 590 } 591 592 .cookieadmin_details_wrapper{ 593 padding: 15px; 594 height: calc(100% - 6%); 595 overflow: auto; 596 scrollbar-width: thin; 597 } 598 599 .cookieadmin_types{ 600 padding: 10px 10px; 601 border-top: 1px solid #CCCCCC; 602 } 603 604 .cookieadmin_header{ 605 display: flex; 606 justify-content: space-between; 607 } 608 609 .cookieadmin_header > span > label{ 610 cursor:pointer; 611 } 612 613 .cookieadmin_remark{ 614 display:none; 615 justify-self:right; 616 } 617 618 .cookieadmin_act{ 619 display: inline; 620 color: #1863dc; 621 } 622 623 .cookieadmin-nece-cookies{ 624 display:none; 625 padding:1px; 626 border-radius: 10px; 627 margin: 0px 20px; 628 margin-right: 4rem; 629 font-size: smaller; 630 font-size: 1rem; 631 text-align: center; 632 } 633 634 .cookieadmin_desc{ 635 padding:5px 20px; 636 font-size: 15px; 637 padding-right: 4rem; 638 } 639 640 .cookieadmin_footer{ 641 left: 0px; 642 padding: 15px; 643 flex-wrap: wrap; 644 width: 100%; 645 } 646 647 .cookieadmin_modal_footer{ 648 left: 0px; 649 padding: 15px; 650 flex-wrap: wrap; 651 border-top: 1px solid #CCCCCC; 652 } 653 654 .cookieadmin_btn{ 655 background-color: transparent; 656 border: 1px solid gray; 657 color: #1863dc; 658 padding: 0.4rem 0.9rem; 659 border-radius: 4px; 660 margin: 2px 5px; 661 cursor: pointer; 662 } 396 397 398 399 400 401 402 663 403 664 404 .cookieadmin_btn-primary { … … 674 414 } 675 415 676 .cookieadmin_btn:hover{677 opacity: 0.8;678 }679 680 416 .cookieadmin_btn_accept{ 681 417 color: #ffffff; … … 684 420 } 685 421 686 .cookieadmin_show_pref_cookies{687 cursor: pointer;688 font-size: 18px;689 }690 691 422 .cookieadmin_pl0{ 692 423 padding-left:0px; 693 424 } 694 425 695 .cookieadmin_re_consent{696 display: none;697 position: fixed;698 bottom: 15px;699 left: 15px;700 background: linear-gradient(to left, rgb(0, 51, 204) 0%, rgb(102, 102, 255) 100%);701 height: 50px;702 width: 50px;703 border-radius: 50%;704 cursor: pointer;705 border: 0px;706 z-index: 99999;707 padding: 5px;708 }709 426 710 427 .cookieadmin-manager-cookie-scan, .cookieadmin-manager-consent-logs, .cookieadmin-manager-cookie-categorize{ … … 739 456 } 740 457 741 .cookieadmin-cookie-card {742 background: ghostwhite;743 border-radius: 10px;744 padding: 16px;745 font-family: 'Open Sans', 'Segoe UI', sans-serif;746 box-shadow: 0 2px 6px rgba(0,0,0,0.1);747 margin: 10px auto;748 text-align: left;749 }750 751 .cookieadmin-cookie-header {752 display: flex;753 justify-content: space-between;754 font-size: 1rem;755 margin-bottom: 6px;756 }757 758 .cookieadmin-cookie-name {759 font-weight: bold;760 color: #333;761 }762 763 .cookieadmin-cookie-duration {764 font-size: 0.85rem;765 }766 767 .cookieadmin-cookie-duration > b {768 font-weight: bold;769 }770 771 .cookieadmin-cookie-description {772 font-size: 0.9rem;773 margin-bottom: 12px;774 }775 776 .cookieadmin-cookie-tags {777 display: flex;778 gap: 8px;779 }780 781 .cookieadmin-tag {782 background: #e0e0e0;783 padding: 4px 10px;784 border-radius: 12px;785 font-size: 0.75rem;786 color: #333;787 }788 458 789 459 .cookieadmin-tag.active { … … 811 481 812 482 813 814 /* Checkbox switch Start */815 816 .cookieadmin_toggle, .cookieadmin_toggle_disabled {817 position: relative;818 display: inline-block;819 width: 24px;820 height: 11px;821 }822 823 /* Hide the checkbox input */824 .cookieadmin_toggle input, .cookieadmin_toggle_disabled input {825 display: none;826 }827 828 /* Describe slider's look and position. */829 .cookieadmin_slider {830 position: absolute;831 cursor: pointer;832 top: 0;833 left: 0;834 right: 0;835 bottom: 0;836 height: 21px;837 width: 34px;838 background-color: gray;839 transition: .4s;840 border-radius: 34px;841 }842 843 /* Describe the white ball's location844 and appearance in the slider. */845 .cookieadmin_slider:before {846 position: absolute;847 content: "";848 height: 15px;849 width: 15px;850 left: 3.2px;851 bottom: 3.2px;852 background-color: white;853 transition: .2s;854 border-radius: 50%;855 }856 857 /* Modify the slider's background color to858 green once the checkbox has been selected. */859 input:checked+.cookieadmin_slider {860 background-color: #3582c4;861 }862 863 /* When the checkbox is checked, shift the864 white ball towards the right within the slider. */865 input:checked+.cookieadmin_slider:before {866 transform: translateX(13px);867 }868 869 .cookieadmin_toggle_disabled .cookieadmin_slider {870 background-color: #3582c4;871 }872 .cookieadmin_toggle_disabled .cookieadmin_slider:before {873 transform: translateX(13px);874 }875 876 /* Checkbox switch End */877 878 879 483 /* --- Modal Styles Start --- */ 880 484 881 /* The Modal Overlay/Backdrop */485 /* The Admin Edit/Add Cookie Modal Overlay/Backdrop */ 882 486 .cookieadmin_modal-overlay { 883 487 position: fixed; … … 972 576 .cookieadmin_modal-footer { 973 577 display: flex; 974 justify-content: flex- start;578 justify-content: flex-end; 975 579 padding: 16px 24px; 976 580 border-top: 1px solid #e0e0e0; … … 1105 709 } 1106 710 711 /* Dialog success/failure messages */ 712 713 #cookieadmin-message{ 714 margin-right: 10px; 715 font-weight: 500; 716 padding: 5px; 717 } 718 719 .cookieadmin-success-message { 720 color: #22c55e; 721 } 722 723 .cookieadmin-error-message { 724 color: #dc2626; 725 } 726 1107 727 /* --- Auto Categorize Cookies End --- */ 1108 728 … … 1115 735 /* --- Override Dashicons End --- */ 1116 736 1117 .cookieadmin-poweredby{ 1118 margin-top: 10px; 1119 } 1120 1121 .cookieadmin-poweredby a img{ 1122 height: 15px; 1123 } 1124 1125 .cookieadmin-poweredby a{ 1126 color : unset; 1127 cursor: pointer; 1128 display: flex; 1129 justify-content: center; 1130 align-items: center; 1131 font-size: 11px; 1132 gap: 2px; 1133 text-decoration: none; 1134 } 1135 1136 .cookieadmin_modal_footer .cookieadmin-poweredby a{ 1137 justify-content: end; 1138 } 1139 1140 /* CSS for phones only */ 1141 @media (max-width: 767px) { 1142 1143 .cookieadmin_center{ 1144 top: 10%; 1145 left: 5%; 1146 max-width: 90vw; 1147 } 1148 1149 .show_pref_cookies{ 1150 font-size: 14px; 1151 } 1152 1153 .cookieadmin_law_container, .cookieadmin_box{ 1154 width: 90%; 1155 } 1156 1157 .cookieadmin_side{ 1158 width: 100%; 1159 } 1160 } 1161 1162 /* CSS for tablet */ 1163 @media (min-width: 768px) and (max-width: 991px) { 1164 1165 .cookieadmin_box{ 1166 width: 45%; 1167 } 1168 } 1169 1170 /* CSS for small laptop */ 1171 @media (min-width: 992px) and (max-width: 1199px) { 1172 1173 .cookieadmin_box{ 1174 width: 35%; 1175 } 1176 1177 } 1178 /* CSS for HD TV screens */ 1179 @media (min-width: 1200px) and (max-width: 1360px) { 1180 1181 .cookieadmin_box{ 1182 width: 30%; 1183 } 1184 } 1185 1186 /* Desktop Layout */ 1187 @media (min-width: 768px) { 1188 .cookieadmin_notice_group { 1189 flex-direction: row; 1190 justify-content: space-between; 1191 align-items: center; 1192 } 1193 1194 .cookieadmin_notice_con { 1195 flex: 1; /* take remaining space */ 1196 } 1197 1198 .cookieadmin_consent_btns { 1199 flex-shrink: 0; 1200 } 1201 } 1202 1203 @media (max-width:480px){ 1204 .cookieadmin_consent_inside .cookieadmin_btn { 1205 width: 100%; 1206 margin: 5px 0; 1207 } 1208 1209 .cookieadmin_modal_footer{ 1210 padding: 8px; 1211 } 1212 } 737 738 739 /* CookieAdmin Tooltip Start */ 740 741 .cookieadmin-tooltip { 742 position: fixed; 743 background: #5d5d5d; 744 color: #fff; 745 padding: 6px 10px; 746 border-radius: 4px; 747 font-size: 12px; 748 white-space: nowrap; 749 pointer-events: none; 750 z-index: 999999; 751 opacity: 0; 752 transition: opacity 0.12s ease; 753 } 754 755 756 /* CookieAdmin Tooltip End */ 757 758 759 .cookieadmin-buttons-div { 760 display: flex; 761 flex-direction: row; 762 } 763 764 .cookieadmin-add-cookie-div { 765 border-right: 1px solid #e0e0e0; 766 padding-right: 10px; 767 } 768 769 /* Consent Expiry */ 770 #cookieadmin_consent_logs_expiry_days { 771 width: 50px; 772 text-align: center; 773 margin: 0px 10px; 774 padding: 0px; 775 height: 30px; 776 } 777 778 .cookieadmin-purge-consent-btn{ 779 background-color: #dc3545 !important; 780 color: white !important; 781 border-color: unset !important; 782 } 783 784 .cookieadmin-setting-logs{ 785 display: flex; 786 align-items: center; 787 } 788 789 .cookieadmin-save-settings{ 790 border-top: 1px solid #e0e0e0; 791 margin-bottom: 15vh; 792 } -
cookieadmin/trunk/assets/js/consent.js
r3412297 r3460841 1 // This file handle the cookie banner and stuff related to that. 2 1 3 var days = cookieadmin_policy.cookieadmin_days; 2 4 … … 8 10 9 11 function cookieadmin_is_obj(consentObj){ 10 return (Object.keys(consentObj).length !== 0); 12 try{ 13 return ( 14 consentObj !== null && 15 typeof consentObj === 'object' && 16 !Array.isArray(consentObj) && 17 Object.keys(consentObj).length > 0 18 ); 19 }catch(e){ 20 return false; 21 } 11 22 } 12 23 13 24 14 25 // function cookieadmin_cookie_interceptor(){ 15 26 16 27 var originalCookieDescriptor = 17 28 Object.getOwnPropertyDescriptor(Document.prototype, 'cookie') || … … 42 53 return; 43 54 } 44 55 56 // Set cookies which are meant to be deleted 45 57 if(val.includes('expires=Thu, 01 Jan 1970') || cookieValue.startsWith("deleted;")){ 46 58 originalCookieDescriptor.set.call(document, val); … … 50 62 var cookieInfo = cookieadmin_allcookies[cookieName] || {}; 51 63 var category = (cookieInfo.category || 'uncategorized').toLowerCase(); 52 64 65 // Set necessary cookies 53 66 if(category == "necessary"){ 54 67 originalCookieDescriptor.set.call(document, val); … … 56 69 } 57 70 58 if(cookieadmin_is_obj(cookieadmin_is_consent) ){71 if(cookieadmin_is_obj(cookieadmin_is_consent) || (Array.isArray(cookieadmin_policy['preload']) && cookieadmin_policy['preload'].length > 0)){ 59 72 60 73 var consentAction = cookieadmin_is_consent.action; 74 75 if(!consentAction){ 76 consentAction = cookieadmin_policy['preload'].reduce((a, val) => {a[val] = ''; return a;}, {}); 77 } 61 78 62 79 if(consentAction.accept || consentAction[category]){ … … 88 105 if(!document.cookie) return false; 89 106 90 letcoki = document.cookie.split(";") ;107 var coki = document.cookie.split(";") ; 91 108 92 109 if(name == "all"){ 93 110 return coki ? coki : []; 94 111 } 95 letnam = name + "=";96 97 for( leti=0; i < coki.length; i++){112 var nam = name + "="; 113 114 for(var i=0; i < coki.length; i++){ 98 115 if(coki[i].trim().indexOf(nam) == 0){ 99 116 return coki[i].trim(); … … 105 122 106 123 function cookieadmin_check_consent(){ 107 108 if( cookieadmin_cookie = cookieadmin_is_cookie("cookieadmin_consent")){124 var cookieadmin_cookie = cookieadmin_is_cookie("cookieadmin_consent") 125 if(!!cookieadmin_cookie){ 109 126 cookieadmin_cookie = JSON.parse(cookieadmin_cookie.split("=")[1]); 110 127 if(!!cookieadmin_cookie.consent){ … … 182 199 date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000); // default 1 year 183 200 184 letcookieString = `${encodeURIComponent(name)}=${JSON.stringify(value)};`;201 var cookieString = `${encodeURIComponent(name)}=${JSON.stringify(value)};`; 185 202 cookieString += ` expires=${date.toUTCString()};`; 186 203 cookieString += ` path=${cookieadmin_policy.base_path};`; … … 199 216 } 200 217 201 //Populates modal with consent if selected 218 //Populates modal with consent if selected & adds found cookies 202 219 function cookieadmin_populate_preference(){ 203 220 … … 223 240 } 224 241 } 225 } 226 227 cookieadmin_shown = (typeof cookieadmin_shown !== "undefined") ? cookieadmin_shown : []; 242 //Load as per preloaded categories selected by admin 243 }else if(cookieadmin_policy['preload'] && cookieadmin_policy['preload'].length > 0){ 244 245 cookieadmin_policy['preload'].forEach(function(val){ 246 if(btn_ele = document.querySelector("#cookieadmin-" + val)){ 247 btn_ele.checked = true; 248 } 249 }); 250 } 251 252 var cookieadmin_shown = (typeof cookieadmin_shown !== "undefined") ? cookieadmin_shown : []; 228 253 229 254 if(cookieadmin_allcookies){ 230 255 231 cookieadmin_filtrd = Object.keys(cookieadmin_allcookies).filter(e => !cookieadmin_shown.includes(e));256 var cookieadmin_filtrd = Object.keys(cookieadmin_allcookies).filter(e => !cookieadmin_shown.includes(e)); 232 257 233 258 for(c_info of cookieadmin_filtrd){ 234 259 235 if(e = document.querySelector(".cookieadmin-" + cookieadmin_allcookies[c_info].category?.toLowerCase())){ 236 e.innerHTML = (e.innerHTML == 'None') ? '' : e.innerHTML; 260 var category_var = cookieadmin_allcookies[c_info].category; 261 262 if(!category_var){ 263 continue; 264 } 265 var card_container = document.querySelector(".cookieadmin-" + category_var.toLowerCase()); 266 267 if(!card_container){ 268 continue; 269 } 270 card_container.innerHTML = (card_container.innerHTML == 'None') ? '' : card_container.innerHTML; 271 272 var cookieadmin_exp = cookieadmin_policy.lang.session; 237 273 238 exp = cookieadmin_policy.lang.session; 239 240 if(!!cookieadmin_allcookies[c_info].expires){ 241 exp = Math.round((cookieadmin_allcookies[c_info].expires - Date.now())/86400); 242 if(exp < 1 && !!res['Max-Age']){ 243 exp = res['Max-Age']; 244 }else{ 245 exp = cookieadmin_policy.lang.session; 274 if( 275 !!cookieadmin_allcookies[c_info].expires 276 && cookieadmin_allcookies[c_info].expires !== "0000-00-00 00:00:00" 277 ){ 278 279 var expDate = new Date(cookieadmin_allcookies[c_info].expires.replace(' ', 'T')); 280 281 if (!isNaN(expDate.getTime())) { 282 var daysLeft = Math.ceil((expDate.getTime() - Date.now()) / (1000 * 60 * 60 * 24)); 283 284 if (daysLeft > 0) { 285 cookieadmin_exp = daysLeft +' '+ cookieadmin_policy.lang.days; 246 286 } 247 287 } 248 249 e.innerHTML += '<div class="cookieadmin-cookie-card"> <div class="cookieadmin-cookie-header"> <strong class="cookieadmin-cookie-name">'+ c_info.replace(/_+$/, "") +'</strong> <span class="cookieadmin-cookie-duration"><b>'+ cookieadmin_policy.lang.duration +':</b> '+ exp +'</span> </div> <p class="cookieadmin-cookie-description">'+ cookieadmin_allcookies[c_info].description +'</p> <div class="cookieadmin-cookie-tags"> ' + (cookieadmin_allcookies[c_info].platform ? '<span class="cookieadmin-tag">' + cookieadmin_allcookies[c_info].platform + '</span>' : "") + ' </div> </div>';250 }288 } 289 290 card_container.innerHTML += '<div class="cookieadmin-cookie-card"> <div class="cookieadmin-cookie-header"> <strong class="cookieadmin-cookie-name">'+ c_info.replace(/_+$/, "") +'</strong> <span class="cookieadmin-cookie-duration"><b>'+ cookieadmin_policy.lang.duration +':</b> '+ cookieadmin_exp +'</span> </div> <p class="cookieadmin-cookie-description">'+ cookieadmin_allcookies[c_info].description +'</p> <div class="cookieadmin-cookie-tags"> ' + (cookieadmin_allcookies[c_info].platform ? '<span class="cookieadmin-tag">' + cookieadmin_allcookies[c_info].platform + '</span>' : "") + ' </div> </div>'; 251 291 cookieadmin_shown.push(c_info); 252 292 } … … 402 442 403 443 //Add layout as class 404 if(!!cookieadmin_policy.cookieadmin_position ){444 if(!!cookieadmin_policy.cookieadmin_position && cookieadmin_policy.cookieadmin_layout !== "popup"){ 405 445 cookieadmin_policy.cookieadmin_position.split("_").forEach(function(clas){ 406 446 clas = "cookieadmin_" + clas; … … 410 450 411 451 // Change consent layout dynamically 412 document.getElementsByClassName("cookieadmin_law_container")[0].classList.add("cookieadmin_" + cookieadmin_policy.cookieadmin_layout); 452 // TODO: There is a operator called optional chaining operator ?. something like this users?.[0]?.name; wont use it now just for reference 453 var cookieadmin_law_container_var = document.getElementsByClassName("cookieadmin_law_container")[0]; 454 if (!!cookieadmin_law_container_var){ 455 cookieadmin_law_container_var.classList.add("cookieadmin_" + cookieadmin_policy.cookieadmin_layout); 456 } 413 457 414 458 // Change Modal layout dynamically … … 514 558 }); 515 559 516 //showmore modal btn517 document.getElementsByClassName("cookieadmin_showmore")[0]?.addEventListener("click", function(){518 519 var cur_height = document.getElementsByClassName("cookieadmin_preference")[0].style.height;520 521 if(!cur_height){522 document.getElementsByClassName("cookieadmin_preference")[0].style.height = "auto";523 this.innerHTML = cookieadmin_policy.lang.show_less;524 }else{525 document.getElementsByClassName("cookieadmin_preference")[0].style.height = "";526 this.innerHTML = cookieadmin_policy.lang.show_more;527 }528 });529 530 531 560 document.querySelectorAll(".cookieadmin_show_pref_cookies").forEach(function(e){ 532 561 e.addEventListener("click", function(el){ -
cookieadmin/trunk/assets/js/cookie.js
r3412297 r3460841 1 // This file is a part of the admin side of CookieAdmin 2 1 3 jQuery(document).ready(function($){ 2 4 3 5 var law = ''; 4 6 5 $(".cookieadmin_showmore").on("click", function(){ 6 if($(".cookieadmin_showmore").html().includes(cookieadmin_policy.lang.show_more)){ 7 $(".cookieadmin_preference").height("auto"); 8 $(this).html(cookieadmin_policy.lang.show_less); 9 }else{ 10 $(".cookieadmin_preference").height(""); 11 $(this).html(cookieadmin_policy.lang.show_more); 12 } 13 }); 14 15 $("#cookieadmin_layout_footer").on("change", function(){ 7 function cookieadminSelectFooterLayout(){ 16 8 $("input[name=cookieadmin_position]").prop("checked", false); 17 9 $(".consent-position").slideDown(); … … 19 11 $(".cookieadmin_box_layout").hide(); 20 12 $(".consent-modal-layout").show(); 21 }); 22 23 $("#cookieadmin_layout_box").on("change", function(){ 13 } 14 $("#cookieadmin_layout_footer").on("change", cookieadminSelectFooterLayout); 15 16 function cookieadminSelectBoxLayout(){ 24 17 $("input[name=cookieadmin_position]").prop("checked", false); 25 18 $(".consent-position").slideDown(); … … 27 20 $(".cookieadmin_box_layout").fadeIn(800); 28 21 $(".consent-modal-layout").slideDown(); 29 }); 30 31 $("#cookieadmin_layout_popup").on("change", function(){ 22 } 23 $("#cookieadmin_layout_box").on("change", cookieadminSelectBoxLayout); 24 25 function cookieadminSelectPopLayout(){ 32 26 $("input[name=cookieadmin_position]").prop("checked", false); 33 27 $(".consent-position").slideUp(); 34 28 $(".consent-modal-layout").slideUp(); 35 }); 29 } 30 $("#cookieadmin_layout_popup").on("change", cookieadminSelectPopLayout); 36 31 37 32 setTimeout( function(){ … … 39 34 }, 5000); 40 35 41 //==== Notice Section Preview 36 //==== Notice Section Preview Live Change 42 37 43 38 $('#cookieadmin_notice_title_layout').on('input', function () { … … 231 226 $(".cookieadmin_save_btn").css('color', $("#cookieadmin_save_btn_color").val()); 232 227 233 $(".cookieadmin_showmore").css('color', law.cookieadmin_links_color);234 228 $(".act").css('color', law.cookieadmin_links_color); 235 229 236 230 const sliders = $("#cookieadmin_wrapper .cookieadmin_slider"); 237 $(sliders[0]).css('background-color', law.cookieadmin_slider_o n_bg_color);231 $(sliders[0]).css('background-color', law.cookieadmin_slider_off_bg_color); 238 232 $(sliders[1]).css('background-color', law.cookieadmin_slider_off_bg_color); 239 233 $(sliders[2]).css('background-color', law.cookieadmin_slider_off_bg_color); 240 $(sliders[3]).css('background-color', law.cookieadmin_slider_off_bg_color);241 234 242 235 //Also set layout of consents … … 267 260 } 268 261 269 $("#cookieadmin_show_preview").on("click", function(){262 function cookieadminShowPreview(){ 270 263 if($("#cookieadmin_layout_popup").prop("checked")){ 271 264 show_modal(); … … 273 266 $(".cookieadmin_law_container").toggle(); 274 267 } 275 }); 268 } 269 $("#cookieadmin_show_preview").on("click", cookieadminShowPreview); 276 270 277 271 $(".cookieadmin_customize_btn").on("click", function(){ … … 283 277 }); 284 278 285 $("#cookieadmin_consent_type").on("change", function(){279 function cookieadminChangeLaw(){ 286 280 287 281 var law = $("#cookieadmin_consent_type").find(":selected").attr("name"); … … 363 357 364 358 law == 'cookieadmin_gdpr' ? $(".setting-prior").show() : $(".setting-prior").hide(); 365 }); 366 367 $("consent_page").submit(function(){ 359 } 360 $("#cookieadmin_consent_type").on("change", cookieadminChangeLaw); 361 362 function cookieadminSubmitConsent(e){ 368 363 var checked = false; 369 364 370 365 if (!$("input[name=cookieadmin_position]:checked").length && !$("#cookieadmin_layout_popup").prop("checked")) { 371 alert('Please select one of the radio buttons.'); 372 event.preventDefault(); // Prevent form submission 373 } 374 }); 375 376 $("[id$=_preload]").on("click", function(){ 377 378 if(!$(".setting-prior").find("[id$=_preload]:checked").length && $(".cookieadmin-settings").find(".cookieadmin-collapsible-notice").length){ 366 alert('Please select a notice position.'); 367 e.preventDefault(); // Prevent form submission 368 } 369 } 370 $("#consent_submenu").submit(cookieadminSubmitConsent); 371 372 function cookieadminPreloadCookies(){ 373 374 if(!($(".setting-prior").find("[id$=_preload]:checked").length - 1) && $(".cookieadmin-settings").find(".cookieadmin-collapsible-notice").length){ 379 375 $(".cookieadmin-settings").find(".cookieadmin-collapsible-notice").remove(); 380 376 return; … … 386 382 } 387 383 388 }); 389 390 $(".cookieadmin-scan").on("click", function(){ 384 } 385 $("[id$=_preload]").on("click", cookieadminPreloadCookies); 386 387 function cookieadminScanCookies(){ 391 388 392 389 let cookieadmin_btn_val = $(this).prop('value'); 393 $(this).prop("disabled", true).prop('value', 'Scanning...'); 390 var this_btn = $(this); 391 this_btn.prop("disabled", true).prop('value', 'Scanning...'); 394 392 395 393 $.ajax({ … … 403 401 success: function(result){ 404 402 405 if (result.success) { 406 407 $('.cookieadmin-cookie-categorized tbody').find("tr:gt(1)").remove(); 408 $.each(result.data, function(index, res){ 409 410 var row = ''; 411 exp = 'Session'; 412 413 if(!!res.expires){ 414 exp = Math.round((res.expires - Date.now())/86400); 415 if(exp < 1 && !!res['Max-Age']){ 416 exp = res['Max-Age'] + " days"; 417 }else{ 418 exp = 'Session'; 419 } 420 } 421 422 row = '<tr>'; 423 row += '<td>' + res.cookie_name + '</td>'; 424 row += '<td>' + res.description + '</td>'; 425 row += '<td>' + exp + '</td>'; 426 row += '<td> <span class="dashicons dashicons-edit cookieadmin_edit_icon" id="edit_'+res.id+'"></span> <span class="dashicons dashicons-trash cookieadmin_delete_icon" id="delete_'+res.id+'"></span> </td>'; 427 row += '</tr>'; 428 categorized_cookies[res.id] = res; 429 categorized_cookies[res.id]['expires'] = exp; 430 431 if(!!res.category){ 432 type = "#" + res.category.toLowerCase() + "_tbody"; 433 $(type).find('.cookieadmin-empty-row').remove(); 434 $(type).append(row); 435 }else{ 436 $("#unknown_tbody").find('.cookieadmin-empty-row').remove(); 437 $("#unknown_tbody").append(row); 438 } 439 }); 440 441 } else { 442 alert(result.data.message); 403 if(result.success){ 404 if(typeof cookieadmin_pro_policy === 'object'){ 405 alert(cookieadmin_pro_policy.lang.background_scan); 406 }else{ 407 alert(cookieadmin_policy.lang.scan_completed); 408 window.location.reload(); 409 } 410 }else{ 411 alert(result.message); 443 412 } 444 413 445 414 }, 446 415 error: function(xhr, status, error) { 416 console.log('CookieAdmin AJAX Error:', status, error); 417 console.log('CookieAdmin response: ' + xhr.responseText); // Check the error message 447 418 alert("Request failed: " + error); 448 419 }, 449 420 complete: function() { 450 $(".cookieadmin-scan").prop("disabled", false).prop("value", cookieadmin_btn_val);421 this_btn.prop("disabled", false).prop("value", cookieadmin_btn_val); 451 422 } 452 423 }); 453 }); 454 455 $("#cookieadmin_dialog_save_btn").on("click", function(){ 456 424 } 425 $(".cookieadmin-scan").on("click", cookieadminScanCookies); 426 427 function cookieadminSaveCookie(){ 428 429 $('#cookieadmin-message').removeClass().addClass('spinner is-active').text('').css('height','auto'); 457 430 $(this).prop("disabled", true); 431 432 //set 0 to add real id to delete 433 cookie_id = $(this).attr("cookieadmin_cookie_id"); 458 434 459 435 let cookie_info = { 460 436 name: $("#cookieadmin-dialog-cookie-name").val(), 461 id: $(this).attr("cookieadmin_cookie_id"),437 id: cookie_id, 462 438 description: $("#cookieadmin-dialog-cookie-desc").val(), 463 439 duration: $("#cookieadmin-dialog-cookie-duration").val(), 464 440 type: $("#cookieadmin-dialog-cookie-category").val() 465 441 }; 442 443 $.each(cookie_info, function (i, val){ 444 if(!val){ 445 cookie_info = null; 446 return false; 447 } 448 }); 449 450 if(!cookie_info){ 451 $(this).prop("disabled", false); 452 $('#cookieadmin-message').removeClass().addClass('cookieadmin-error-message').text('Please fill all the fields'); 453 return false; 454 } 455 456 // Used to call add cookie, in the Pro file. 457 if(cookie_id == 0 && typeof cookieadminProSaveCookie === 'function'){ 458 cookieadminProSaveCookie(cookie_info); 459 return; 460 } 466 461 467 462 $.ajax({ … … 477 472 478 473 if(result.success){ 479 480 var row = ''; 481 482 row = '<tr>'; 483 row += '<td>' + cookie_info.name + '</td>'; 484 row += '<td>' + cookie_info.description + '</td>'; 485 row += '<td>' + cookie_info.duration + '</td>'; 486 row += '<td> <span class="dashicons dashicons-edit cookieadmin_edit_icon" id="edit_'+cookie_info.id+'"></span> <span class="dashicons dashicons-trash cookieadmin_delete_icon" id="edit_'+cookie_info.id+'"></span> </td>'; 487 row += '</tr>'; 488 489 $("#edit_"+cookie_info.id).parents("tr").remove(); 490 tbody = "#" + cookie_info.type.toLowerCase() + "_tbody"; 491 $(tbody).find('.cookieadmin-empty-row').remove(); 492 $(tbody).append(row); 493 494 categorized_cookies[cookie_info.id]['cookie_name'] = cookie_info.name; 495 categorized_cookies[cookie_info.id]['description'] = cookie_info.description; 496 categorized_cookies[cookie_info.id]['expires'] = cookie_info.duration; 497 categorized_cookies[cookie_info.id]['category'] = cookie_info.type; 498 474 cookieadminAddCookieToTable(cookie_info); 475 $('#cookieadmin-message').removeClass().addClass('cookieadmin-success-message').text(result.message); 499 476 }else{ 500 alert(result. data.message);477 alert(result.message); 501 478 } 479 }, 480 error: function(xhr, status, error) { 481 console.log('CookieAdmin AJAX Error:', status, error); 482 console.log('CookieAdmin response: ' + xhr.responseText); // Check the error message 483 alert("Request failed: " + error); 502 484 } 503 485 }); 504 486 $(this).prop("disabled", false); 505 } );506 507 487 } 488 $("#cookieadmin_dialog_save_btn").on("click", cookieadminSaveCookie); 489 508 490 $("input[type=color]").on("input", function(){ 509 491 elemt = $(this).attr("id").replace("_box", ""); … … 512 494 513 495 514 $(document).on("click", ".cookieadmin_delete_icon", function(){496 function cookieadminDeleteCookie(){ 515 497 516 498 if(confirm("Are you sure you want to delete ?")){ 517 499 518 500 cookie_raw_id = $(this).attr("id").replace("delete_", ""); 501 var row = $(this).parents("tr") 519 502 520 503 $.ajax({ … … 523 506 data : { 524 507 action : 'cookieadmin_ajax_handler', 525 cookieadmin_act : 'cookieadmin- edit-cookie',508 cookieadmin_act : 'cookieadmin-delete-cookie', 526 509 cookie_raw_id : cookie_raw_id, 527 510 cookieadmin_security : cookieadmin_policy.cookieadmin_nonce, 528 511 }, 529 512 success: function(result){ 530 531 513 if (result.success) { 514 row.remove(); 532 515 delete categorized_cookies[cookie_raw_id]; 533 516 }else{ 534 alert(result. data.message);517 alert(result.message); 535 518 } 519 }, 520 error: function(xhr, status, error) { 521 console.log('CookieAdmin AJAX Error:', status, error); 522 console.log('CookieAdmin response: ' + xhr.responseText); // Check the error message 523 alert("Request failed: " + error); 536 524 } 537 525 }); 538 539 $(this).parents("tr").remove(); 540 } 541 }); 542 543 544 $(document).on("click", ".cookieadmin_edit_icon, .cookieadmin_dialog_modal_close_btn", function(){ 526 } 527 } 528 $('.cookieadmin-metabox-holder').on("click", ".cookieadmin_delete_icon", cookieadminDeleteCookie); 529 530 function cookieadminOpenCookieDialog(){ 545 531 546 532 const modal = document.getElementById('edit-cookie-modal'); … … 550 536 }else{ 551 537 modal.classList.add('active'); 552 var cookie_id = $(this).attr("id").replace("edit_", "");553 538 554 $("#cookieadmin_dialog_save_btn").attr("cookieadmin_cookie_id", cookie_id); 555 $("#cookieadmin-dialog-cookie-name").val(categorized_cookies[cookie_id]['cookie_name']); 556 $("#cookieadmin-dialog-cookie-desc").val(categorized_cookies[cookie_id]['description']); 557 $("#cookieadmin-dialog-cookie-duration").val(categorized_cookies[cookie_id]['expires']); 558 if(!!categorized_cookies[cookie_id]['category']){ 559 $("#cookieadmin-dialog-cookie-category").val(categorized_cookies[cookie_id]['category']); 539 if($(this).hasClass('cookieadmin-add-cookie')){ 540 $("#cookieadmin_dialog_save_btn").attr("cookieadmin_cookie_id", 0); 541 $('.cookieadmin_modal-header').children()[0].innerHTML = 'Add Cookie'; 542 $('.cookieadmin_modal-container').find('input,textarea,select').val(''); 560 543 }else{ 561 $("#cookieadmin-dialog-cookie-category").val("unknown"); 544 545 $('.cookieadmin_modal-header').children()[0].innerHTML = 'Edit Cookie'; 546 var cookie_id = $(this).attr("id").replace("edit_", ""); 547 548 $("#cookieadmin_dialog_save_btn").attr("cookieadmin_cookie_id", cookie_id); 549 $("#cookieadmin-dialog-cookie-name").val(categorized_cookies[cookie_id]['cookie_name']); 550 $("#cookieadmin-dialog-cookie-desc").val(categorized_cookies[cookie_id]['description']); 551 $("#cookieadmin-dialog-cookie-duration").val(categorized_cookies[cookie_id]['expires']); 552 if(!!categorized_cookies[cookie_id]['category']){ 553 $("#cookieadmin-dialog-cookie-category").val(categorized_cookies[cookie_id]['category']); 554 }else{ 555 $("#cookieadmin-dialog-cookie-category").val("unknown"); 556 } 562 557 } 558 559 $('.cookieadmin-metabox-holder').on('mousedown.cookieadmin-close-dialog2', function(e){ 560 if ( !$(".cookieadmin_modal-container").is(e.target) && $(".cookieadmin_modal-container").has(e.target).length === 0 && !$(".cookieadmin_modal-container").is(e.target) && $(".cookieadmin_modal-container").has(e.target).length === 0) { 561 modal.classList.remove('active'); 562 $('#cookieadmin-message').removeClass().addClass('cookieadmin-success-message').text(''); 563 $('.cookieadmin-metabox-holder').off('mousedown.cookieadmin-close-dialog2'); 564 } 565 }); 563 566 } 564 }); 565 566 567 $(document).on('click', '.cookieadmin-cookie-categorized tbody > tr:first-child', function() { 568 var $tbody = jQuery(this).closest('tbody'); 567 } 568 $(document).on("click", ".cookieadmin_edit_icon, .cookieadmin_dialog_modal_close_btn, .cookieadmin-add-cookie", cookieadminOpenCookieDialog); 569 570 571 function cookieadminExpandCollapseCookiesList() { 572 var $tbody = $(this).closest('tbody'); 569 573 var $rows = $tbody.find('tr:not(:first-child)'); 570 574 … … 576 580 $tbody.removeClass('collapsed'); 577 581 } 582 } 583 $('.cookieadmin-metabox-holder').on('click', '.cookieadmin-cookie-categorized tbody > tr:first-child', cookieadminExpandCollapseCookiesList); 584 585 // Tooltip 586 let cookieadminToolTip; 587 588 function cookieadminCreateTooltip(){ 589 cookieadminToolTip = $('<div>', { 590 class: 'cookieadmin-tooltip' 591 }).appendTo('body'); 592 } 593 594 $('.cookieadmin-tooltip-box').on('mouseenter', function(e){ 595 596 if(!cookieadminToolTip){ 597 cookieadminCreateTooltip(); 598 } 599 600 var tip = $(this).attr('data-tip') || ''; 601 cookieadminToolTip.text(tip).css('opacity', 1); 602 603 }).on('mousemove', function(e){ 604 605 if(!cookieadminToolTip){ 606 return; 607 } 608 609 var offset = 12; 610 var tooltipRect = cookieadminToolTip[0].getBoundingClientRect(); 611 612 var top = e.clientY - tooltipRect.height - offset; 613 var left = e.clientX + offset; 614 615 // Flip below if not enough space above 616 if(top < 8){ 617 top = e.clientY + offset; 618 } 619 620 // Prevent right overflow 621 if(left + tooltipRect.width > window.innerWidth - 8){ 622 left = e.clientX - tooltipRect.width - offset; 623 } 624 625 cookieadminToolTip.css({ 626 top: top + 'px', 627 left: left + 'px' 628 }); 629 }) 630 .on('mouseleave', function(){ 631 632 if(!cookieadminToolTip){ 633 return; 634 } 635 636 cookieadminToolTip.css('opacity', 0); 578 637 }); 579 638 580 639 581 640 }); 641 642 function cookieadminAddCookieToTable(cookie_info){ 643 644 var row = ''; 645 646 categorized_cookies[cookie_info.id] = !categorized_cookies[cookie_info.id] ? {} : categorized_cookies[cookie_info.id]; 647 648 categorized_cookies[cookie_info.id]['id'] = cookie_info.id; 649 categorized_cookies[cookie_info.id]['cookie_name'] = cookie_info.name; 650 categorized_cookies[cookie_info.id]['description'] = cookie_info.description; 651 categorized_cookies[cookie_info.id]['expires'] = cookie_info.duration; 652 categorized_cookies[cookie_info.id]['category'] = cookie_info.type; 653 654 if(cookie_info.duration > 0){ 655 cookie_info.duration += ' ' + cookieadmin_policy.lang.days; 656 }else{ 657 cookie_info.duration = cookieadmin_policy.lang.session; 658 } 659 660 row = '<tr>'; 661 row += '<td>' + cookie_info.name + '</td>'; 662 row += '<td>' + cookie_info.description + '</td>'; 663 row += '<td>' + cookie_info.duration + '</td>'; 664 row += '<td> <span class="dashicons dashicons-edit cookieadmin_edit_icon" id="edit_'+cookie_info.id+'"></span> <span class="dashicons dashicons-trash cookieadmin_delete_icon" id="edit_'+cookie_info.id+'"></span> </td>'; 665 row += '</tr>'; 666 667 jQuery("#edit_"+cookie_info.id).parents("tr").remove(); 668 tbody = "#" + cookie_info.type.toLowerCase() + "_tbody"; 669 jQuery(tbody).find('.cookieadmin-empty-row').remove(); 670 jQuery(tbody).append(row); 671 672 if(!categorized_cookies[cookie_id]){ 673 jQuery('.cookieadmin_modal-container').find('input,textarea,select').val(''); 674 } 675 } -
cookieadmin/trunk/assets/js/footer.js
r3339680 r3460841 5 5 6 6 document.addEventListener("DOMContentLoaded", function() { 7 if(!cookieadmin_ is_pro){7 if(!cookieadmin_data['is_pro']){ 8 8 jQuery("[cookieadmin-pro-only]").each(function(index) { 9 jQuery(this).find( "input, textarea, select" ).attr("disabled", true); 9 jQuery(this).filter("input, textarea, select").attr("disabled", true).css('cursor', 'not-allowed'); 10 jQuery(this).find( "input, textarea, select, span" ).attr("disabled", true).css('cursor', 'not-allowed'); 10 11 jQuery(this).find( "input.cookieadmin-color-input" ).css("margin-left", "0px"); 12 jQuery(this).find( "label span" ).not('.cookieadmin-tooltip-box').css("background-color", "#e8e8e8").css("color", "#9f9f9f"); 11 13 }); 12 14 } -
cookieadmin/trunk/cookieadmin.php
r3412297 r3460841 4 4 Plugin URI: https://cookieadmin.net 5 5 Description: CookieAdmin provides easy to configure cookie consent banner with GDPR and CCPA law support. 6 Version: 1.1. 46 Version: 1.1.5 7 7 Author: Softaculous 8 8 Author URI: https://www.softaculous.com … … 38 38 define('COOKIEADMIN_BASE', plugin_basename(COOKIEADMIN_FILE)); 39 39 define('COOKIEADMIN_DIR', plugin_dir_path(__FILE__)); 40 define('COOKIEADMIN_VERSION', '1.1. 4');40 define('COOKIEADMIN_VERSION', '1.1.5'); 41 41 define('COOKIEADMIN_URL', plugins_url('', COOKIEADMIN_FILE)); 42 42 define('COOKIEADMIN_PLUGIN_URL', plugin_dir_url(__FILE__)); … … 52 52 add_action( 'plugins_loaded', 'cookieadmin_load_textdomain', 9 ); 53 53 54 include_once(dirname(__FILE__).'/init.php'); 54 //Auto-loader 55 function cookieadmin_autoloader($class){ 56 57 if(!preg_match('/^CookieAdmin\\\(.*)/is', $class, $m)){ 58 return; 59 } 60 61 $m[1] = str_replace('\\', '/', $m[1]); 62 63 if(file_exists(COOKIEADMIN_DIR.'includes/'.strtolower($m[1]).'.php')){ 64 include_once(COOKIEADMIN_DIR.'includes/'.strtolower($m[1]).'.php'); 65 } 66 } 67 68 spl_autoload_register(__NAMESPACE__.'\cookieadmin_autoloader'); 69 70 71 if(!class_exists('CookieAdmin')){ 72 #[\AllowDynamicProperties] 73 class CookieAdmin{ 74 } 75 } 76 77 add_action('plugins_loaded', 'cookieadmin_load_plugin'); 55 78 56 79 // Activation & Deactivation Hooks -
cookieadmin/trunk/includes/admin.php
r3412297 r3460841 40 40 //Consent Page CSS 41 41 wp_enqueue_style('cookieadmin-style', COOKIEADMIN_PLUGIN_URL . 'assets/css/cookie.css', [], COOKIEADMIN_VERSION); 42 wp_enqueue_style('cookieadmin-user-style', COOKIEADMIN_PLUGIN_URL . 'assets/css/consent.css', [], COOKIEADMIN_VERSION); 42 43 43 44 //WP Color picker … … 50 51 51 52 wp_enqueue_script('cookieadmin_js', COOKIEADMIN_PLUGIN_URL . 'assets/js/cookie.js', [], COOKIEADMIN_VERSION); 53 // wp_enqueue_script('cookieadmin_js', COOKIEADMIN_PLUGIN_URL . 'assets/js/consent.js', [], COOKIEADMIN_VERSION); 52 54 53 55 $policy['set'] = $view; … … 58 60 $policy['lang']['show_more'] = __('Show more', 'cookieadmin'); 59 61 $policy['lang']['show_less'] = __('Show less', 'cookieadmin'); 62 $policy['lang']['days'] = __('Day(s)', 'cookieadmin'); 63 $policy['lang']['session'] = __('Session', 'cookieadmin'); 64 $policy['lang']['scan_completed'] = __('Scan completed', 'cookieadmin'); 60 65 61 66 wp_localize_script('cookieadmin_js', 'cookieadmin_policy', $policy); … … 63 68 64 69 wp_enqueue_script('cookieadmin_js_footer', COOKIEADMIN_PLUGIN_URL . 'assets/js/footer.js', [], COOKIEADMIN_VERSION); 65 wp_localize_script('cookieadmin_js_footer', 'cookieadmin_ is_pro', (int) cookieadmin_is_pro());70 wp_localize_script('cookieadmin_js_footer', 'cookieadmin_data', array('is_pro' => cookieadmin_is_pro())); 66 71 } 67 72 … … 69 74 static function cookieadmin_plugin_menu(){ 70 75 76 if(!empty($_REQUEST['cookieadmin_save_settings'])){ 77 78 if(!empty($_REQUEST['cookieadmin_consent_type'])){ 79 \CookieAdmin\Admin\Consent::save_consent_form(); 80 }else{ 81 \CookieAdmin\Admin\Settings::save_settings(); 82 } 83 } 84 71 85 $capability = 'activate_plugins'; 72 73 add_menu_page(__('CookieAdmin', 'cookieadmin'), __('CookieAdmin', 'cookieadmin'), $capability, 'cookieadmin', '\CookieAdmin\Admin::dashboard_page', COOKIEADMIN_PLUGIN_URL .'assets/images/cookieadmin_icon_20.svg'); 74 75 if (isset($_POST['cookieadmin_save_settings'])) { 76 \CookieAdmin\Admin::cookieadmin_save_settings(); 77 } 78 79 add_submenu_page('cookieadmin', __('Dashboard', 'cookieadmin'), __('Dashboard', 'cookieadmin'), $capability, 'cookieadmin', '\CookieAdmin\Admin::dashboard_page'); 80 81 add_submenu_page('cookieadmin', __('Consent Form', 'cookieadmin'), __('Consent Form', 'cookieadmin'), $capability, 'cookieadmin-consent', '\CookieAdmin\Admin::consent_form_page'); 82 83 add_submenu_page('cookieadmin', __('Settings', 'cookieadmin'), __('Settings', 'cookieadmin'), $capability, 'cookieadmin-settings', '\CookieAdmin\Admin::settings_page'); 84 85 add_submenu_page('cookieadmin', __('Scan Cookies', 'cookieadmin'), __('Scan Cookies', 'cookieadmin'), $capability, 'cookieadmin-scan-cookies', '\CookieAdmin\Admin::scan_cookies_page'); 86 $logo = defined('SITEPAD') ? 'cookieadmin_icon_20-black.svg' : 'cookieadmin_icon_20.svg'; 87 88 add_menu_page(__('CookieAdmin', 'cookieadmin'), __('CookieAdmin', 'cookieadmin'), $capability, 'cookieadmin', '\CookieAdmin\Admin\Dashboard::dashboard', COOKIEADMIN_PLUGIN_URL .'assets/images/'.$logo); 89 90 add_submenu_page('cookieadmin', __('Dashboard', 'cookieadmin'), __('Dashboard', 'cookieadmin'), $capability, 'cookieadmin', '\CookieAdmin\Admin\Dashboard::dashboard'); 91 92 add_submenu_page('cookieadmin', __('Consent Form', 'cookieadmin'), __('Consent Form', 'cookieadmin'), $capability, 'cookieadmin-consent', '\CookieAdmin\Admin\Consent::consent_form'); 93 94 add_submenu_page('cookieadmin', __('Settings', 'cookieadmin'), __('Settings', 'cookieadmin'), $capability, 'cookieadmin-settings', '\CookieAdmin\Admin\Settings::settings'); 95 96 add_submenu_page('cookieadmin', __('Scan Cookies', 'cookieadmin'), __('Scan Cookies', 'cookieadmin'), $capability, 'cookieadmin-scan-cookies', '\CookieAdmin\Admin\Scan::show_cookies'); 86 97 87 98 if(defined('COOKIEADMIN_PREMIUM')){ … … 154 165 } 155 166 } 156 157 static function dashboard_page(){ 158 159 global $cookieadmin_lang, $cookieadmin_error, $cookieadmin_msg, $cookieadmin_settings; 160 161 self::header_theme(__('Dashboard', 'cookieadmin')); 162 163 $view = get_option('cookieadmin_law', 'cookieadmin_gdpr'); 164 165 echo ' 166 <div class="cookieadmin_consent-wrap"> 167 <div class="cookieadmin-admin-row"> 168 <div class="cookieadmin-stats-block cookieadmin-is-block-25"> 169 <div class="cookieadmin-stats-name">'.esc_html__('Consent Banner', 'cookieadmin').'</div> 170 <div class="cookieadmin-stats-number cookieadmin-green">'.esc_html__('Enabled', 'cookieadmin').'</div> 171 </div> 167 168 static function cookieadmin_table_exists($table_name) { 169 global $wpdb; 170 171 $query = $wpdb->prepare("SHOW TABLES LIKE %s", $table_name); 172 173 return $wpdb->get_var($query) === $table_name; 174 } 175 176 static function scan_notice(){ 177 178 $cookieadmin_auto_scan = get_option('cookieadmin_scan'); 179 $current_page = isset($_GET['page']) ? sanitize_text_field(wp_unslash($_GET['page'])) : ''; 180 181 if(empty($cookieadmin_auto_scan['status']) || (strpos($current_page, 'cookieadmin') !== 0)){ 182 return false; 183 } 184 185 $msg = ''; 186 187 if($cookieadmin_auto_scan['status'] === 2){ 188 189 $count = !empty($cookieadmin_auto_scan['count']) ? $cookieadmin_auto_scan['count'] : 0; 190 /* translators: %1$s is replaced with a "string" of name of plugins, and %2$s is replaced with "string" which can be "is" or "are" based on the count of the plugin */ 191 $msg = sprintf(__('<br><strong>Cookie Scan is running:</strong> %1$d Cookies found. Please wait for cookies to appear on <a href="%2$s">Scan Cookies Page</a>', 'cookieadmin'), $count, esc_url(admin_url('admin.php?page=cookieadmin-scan-cookies'))); 192 } 193 194 if($cookieadmin_auto_scan['status'] === 3 && isset($cookieadmin_auto_scan['success'])){ 172 195 173 <div class="cookieadmin-stats-block cookieadmin-is-block-25"> 174 <div class="cookieadmin-stats-name">'.esc_html__('Consent Type', 'cookieadmin').' 175 <div class="cookieadmin-block-link"><a href="'.esc_url(admin_url('admin.php?page=cookieadmin-consent')).'">['.esc_html__('Edit', 'cookieadmin').']</a></div> 176 </div> 177 <div class="cookieadmin-stats-number cookieadmin-uppercase">'.(!empty($view) && $view == 'cookieadmin_us' ? esc_html__('US State Laws', 'cookieadmin') : esc_html__('GDPR', 'cookieadmin')).'</div> 178 </div> 196 if($cookieadmin_auto_scan['success'] === true){ 197 /* translators: %1$s is replaced with a "string" of name of plugins, and %2$s is replaced with "string" which can be "is" or "are" based on the count of the plugin */ 198 $msg = sprintf(__('<br><strong>Cookie Scan completed successfully:</strong> Please visit <a href="%1$s">Scan Cookies</a> to review scan results.', 'cookieadmin'), esc_url(admin_url('admin.php?page=cookieadmin-scan-cookies'))); 199 } 200 201 if($cookieadmin_auto_scan['success'] === false){ 202 /* translators: %1$s is replaced with a "string" of name of plugins, and %2$s is replaced with "string" which can be "is" or "are" based on the count of the plugin */ 203 $msg = sprintf(__('<br><strong>Cookie Scan failed:</strong> Please <a href="%1$s">Scan Cookies</a> again for compliance. %2$s', 'cookieadmin'), esc_url(admin_url('admin.php?page=cookieadmin-scan-cookies')), esc_html(!empty($cookieadmin_auto_scan['message']) ? $cookieadmin_auto_scan['message'] : '')); 204 } 205 } 206 207 if(empty($msg)){ 208 return; 209 } 210 211 // cookieadmin_logo_svg fn is Internal static SVG. if allowing user input or filters, escape it. 212 echo ' 213 <div class="notice notice-info is-dismissible" id="cookieadmin-auto-scan-notice"> 214 <p>'.cookieadmin_logo_svg().wp_kses_post($msg). '</p> 215 </div>'; 216 217 wp_register_script('cookieadmin-scan-notice', '', ['jquery'], '', true); 218 wp_enqueue_script('cookieadmin-scan-notice'); 219 wp_add_inline_script('cookieadmin-scan-notice', 'jQuery("#cookieadmin-auto-scan-notice").on("click", 220 function(e){ 221 222 let target = jQuery(e.target); 223 if(!target.hasClass("notice-dismiss")){ 224 return; 225 } 226 227 var data; 228 229 // Hide it 230 jQuery("#cookieadmin-auto-scan-notice").remove(); 231 232 // Save this preference 233 jQuery.post("'.admin_url('admin-ajax.php?action=cookieadmin_ajax_handler&cookieadmin_act=close-notice¬ice=cookieadmin-scan-notice').'&cookieadmin_security='.wp_create_nonce('cookieadmin_admin_js_nonce').'", data, function(response) { 234 }); 235 236 });'); 237 238 } 239 static function consent_log_purge_notice(){ 240 241 $cookieadmin_consent_purge = get_option('cookieadmin_consent_purge', ['status' => 0, 'count' => 0]); 179 242 180 <div class="cookieadmin-stats-block cookieadmin-is-block-25"> 181 <div class="cookieadmin-stats-name">'.esc_html__('Google Consent Mode v2', 'cookieadmin').' 182 <div class="cookieadmin-block-link"><a href="'.esc_url(admin_url('admin.php?page=cookieadmin-settings')).'">['.esc_html__('Edit', 'cookieadmin').']</a></div> 183 </div> 184 '.(!empty($cookieadmin_settings['google_consent_mode_v2']) ? '<div class="cookieadmin-stats-number cookieadmin-green">'.esc_html__('Enabled', 'cookieadmin').'</div>' : '<div class="cookieadmin-stats-number">'.esc_html__('Disabled', 'cookieadmin').'</div>').' 185 </div> 186 187 <div style="width:25%"> 188 189 </div> 190 </div> 191 </div>'; 192 193 self::footer_theme(); 194 } 195 196 static function settings_page(){ 197 198 global $cookieadmin_lang, $cookieadmin_error, $cookieadmin_msg, $cookieadmin_settings; 199 200 self::header_theme(__('Settings', 'cookieadmin')); 201 202 $view = get_option('cookieadmin_law', 'cookieadmin_gdpr'); 203 $policy = cookieadmin_load_policy(); 204 $policy['set'] = $view; 205 $policy['admin_url'] = admin_url('admin-ajax.php'); 206 $policy['cookieadmin_nonce'] = wp_create_nonce('cookieadmin_admin_js_nonce'); 207 208 $cookieadmin_requires_pro = self::is_feature_available(1); 209 210 echo ' 211 <div class="cookieadmin_consent-wrap"> 212 <form action="" method="post" id="setting_submenu"> 213 214 <div class="cookieadmin_consent-contents"> 215 <div class="cookieadmin_consent_settings"> 216 <div class="cookieadmin-contents cookieadmin-settings"> 217 <div class="cookieadmin-setting setting-prior"> 218 <label class="cookieadmin-title">'.esc_html__('Load Cookies prior to consent', 'cookieadmin').'</label> 219 <div class="cookieadmin-setting-contents"> 220 221 <input name="cookieadmin_preload[]" type="checkbox" id="necessary_preload" value="necessary" checked disabled> 222 <label class="cookieadmin-input" for="necessary_preload">'.esc_html__('Necessary', 'cookieadmin').'</label> 223 224 <input name="cookieadmin_preload[]" type="checkbox" id="functional_preload" value="functional" '.(!empty($policy[$view]['preload']) && in_array("functional", $policy[$view]['preload']) ? 'checked' : '').'> 225 <label class="cookieadmin-input" for="functional_preload">'.esc_html__('Functional', 'cookieadmin').'</label> 226 227 <input name="cookieadmin_preload[]" type="checkbox" id="analytics_preload" value="analytics" '.(!empty($policy[$view]['preload']) && in_array("analytics", $policy[$view]['preload']) ? 'checked' : '').'> 228 <label class="cookieadmin-input" for="analytics_preload">'.esc_html__('Analytical', 'cookieadmin').'</label> 229 230 <input name="cookieadmin_preload[]" type="checkbox" id="marketing_preload" value="marketing" '.(!empty($policy[$view]['preload']) && in_array("marketing", $policy[$view]['preload']) ? 'checked' : '').'> 231 <label for="marketing_preload">'.esc_html__('Advertisement', 'cookieadmin').'</label> 232 </div> 233 </div> 234 235 <div class="cookieadmin-setting setting-reload"> 236 <label class="cookieadmin-title" for="cookieadmin_reload_on_consent">'.esc_html__('Reload page on consent', 'cookieadmin').'</label> 237 <div class="cookieadmin-setting-contents"> 238 <label class="cookieadmin_toggle"> 239 <input name="cookieadmin_reload_on_consent" type="checkbox" id="cookieadmin_reload_on_consent" '.(!empty($policy[$view]['reload_on_consent']) ? 'checked' : '').'> 240 <span class="cookieadmin_slider"></span> 241 </label> 242 </div> 243 </div> 244 245 <div class="coookieadmin-contents cookieadmin-settings" cookieadmin-pro-only="1"> 246 <div class="cookieadmin-setting"> 247 <label class="cookieadmin-title" for="cookieadmin_google_consent_mode_v2">'.esc_html__('Google Consent Mode v2', 'cookieadmin').wp_kses_post($cookieadmin_requires_pro).'</label> 248 <div class="cookieadmin-setting-contents"> 249 <label class="cookieadmin_toggle"> 250 <input name="cookieadmin_google_consent_mode_v2" type="checkbox" id="cookieadmin_google_consent_mode_v2" '.(!empty($cookieadmin_settings['google_consent_mode_v2']) && cookieadmin_is_pro() ? 'checked' : '').'> 251 <span class="cookieadmin_slider"></span> 252 </label> 253 </div> 254 </div> 255 256 <div class="cookieadmin-setting setting-poweredby"> 257 <label class="cookieadmin-title" for="cookieadmin_hide_powered_by">'.esc_html__('Hide Powered by Link', 'cookieadmin').wp_kses_post($cookieadmin_requires_pro).'</label> 258 <div class="cookieadmin-setting-contents"> 259 <label class="cookieadmin_toggle"> 260 <input name="cookieadmin_hide_powered_by" type="checkbox" id="cookieadmin_hide_powered_by" '.(!empty($cookieadmin_settings['hide_powered_by']) && cookieadmin_is_pro() ? 'checked' : '').'> 261 <span class="cookieadmin_slider"></span> 262 </label> 263 </div> 264 </div> 265 266 <div class="cookieadmin-setting setting-reconsent"> 267 <label class="cookieadmin-title" for="cookieadmin_hide_reconsent">'.esc_html__('Hide Re-consent Icon', 'cookieadmin').wp_kses_post($cookieadmin_requires_pro).'</label> 268 <div class="cookieadmin-setting-contents"> 269 <label class="cookieadmin_toggle"> 270 <input name="cookieadmin_hide_reconsent" type="checkbox" id="cookieadmin_hide_reconsent" '.(!empty($cookieadmin_settings['hide_reconsent']) && cookieadmin_is_pro() ? 'checked' : '').'> 271 <span class="cookieadmin_slider"></span> 272 </label> 273 </div> 274 </div> 275 </div> 276 277 <div class="cookieadmin-setting"> 278 <div class="cookieadmin-setting-contents"> 279 <span><input type="submit" name="cookieadmin_save_settings" class="cookieadmin-btn cookieadmin-btn-primary action" value="'.esc_html__('Save Settings', 'cookieadmin').'"></span> 280 </div> 281 </div> 282 </div> 283 </div>'; 284 285 wp_nonce_field('cookieadmin_admin_nonce', 'cookieadmin_security'); 286 echo ' 287 <br/> 288 <br/> 289 </div> 290 </form> 291 </div>'; 292 293 self::footer_theme(); 294 } 295 296 static function scan_cookies_page(){ 297 global $cookieadmin_lang, $cookieadmin_error, $cookieadmin_msg, $wpdb; 298 299 self::header_theme(__('Scan Cookies', 'cookieadmin')); 300 301 $table_name = esc_sql($wpdb->prefix . 'cookieadmin_cookies'); 302 $scanned = $wpdb->get_results("SELECT * FROM {$table_name} limit 1"); 303 304 $cookies_scanned = ''; 305 $categorized = []; 306 $categorized_cookies = []; 307 308 if(!empty($scanned)){ 309 310 $is_categorized = $wpdb->get_var("SELECT * FROM {$table_name} WHERE category IS NOT NULL LIMIT 1"); 311 312 $scanned_cookies = $wpdb->get_results("SELECT * FROM {$table_name}"); 313 314 if(empty($is_categorized)){ 315 316 foreach($scanned_cookies as $row => $data){ 317 $exp = 'Session'; 318 $data->expires = strtotime($data->expires); 319 if(!empty($data->expires) && ($data->expires > 0)){ 320 $exp = round(($data->expires - time()) / 86400); 321 if($exp < 1 && !empty($data->max_age)){ 322 $exp = $data->max_age . ' '.__('days', 'cookieadmin'); 323 } 324 } 325 326 $cookies_scanned .= '<tr><td>'.esc_html($data->cookie_name).'</td><td>'.esc_html($exp).'</td><td>'.esc_html($data->path).'</td><td>'.esc_html($data->domain).'</td><td>'.( $data->secure ? 'Yes' : 'No').'</td></tr>'; 327 328 } 329 } 330 else{ 331 332 foreach($scanned_cookies as $row => $data){ 333 334 $exp = 'Session'; 335 if (!empty($data->expires) && is_string($data->expires)) { 336 $timestamp = strtotime($data->expires); 337 if ($timestamp && $timestamp > 0) { 338 $exp = round(($timestamp - time()) / 86400); 339 if ($exp < 1 && !empty($data->max_age)) { 340 $exp = $data->max_age; 341 } 342 $exp .= ' '.__('days', 'cookieadmin'); 343 } 344 } 345 346 if(empty($data->category)){ 347 $data->category = 'Unknown'; 348 } 349 350 if(!isset($categorized[$data->category])){ 351 $categorized[$data->category] = ''; 352 } 353 354 if(empty($data->description)){ 355 $data->description = 'Not Available'; 356 } 357 358 $categorized[$data->category] .= '<tr><td>'.esc_html($data->cookie_name).'</td><td>'.esc_html($data->description).'</td><td>'.esc_html($exp).'</td><td> <span class="dashicons dashicons-edit cookieadmin_edit_icon" id="edit_'.esc_attr($data->id).'"></span> <span class="dashicons dashicons-trash cookieadmin_delete_icon" id="delete_'.esc_attr($data->id).'"></span> </td></tr>'; 359 360 $categorized_cookies[$data->id]['id'] = $data->id; 361 $categorized_cookies[$data->id]['cookie_name'] = $data->cookie_name; 362 $categorized_cookies[$data->id]['description'] = $data->description; 363 $categorized_cookies[$data->id]['category'] = $data->category; 364 $categorized_cookies[$data->id]['expires'] = $exp; 365 243 if(empty($cookieadmin_consent_purge['status'])){ 244 return false; 245 } 246 247 $msg = ''; 248 $count = empty($cookieadmin_consent_purge['count']) ? 0 : $cookieadmin_consent_purge['count']; 249 250 if($cookieadmin_consent_purge['status'] === 2){ 251 /* translators: %1$d: number of consent logs deleted */ 252 $msg = sprintf(__('<br><strong>Consent logs are being deleted :</strong> %1$d logs deleted. Please wait for deletion process to complete.', 'cookieadmin'), $count); 253 } 254 255 if($cookieadmin_consent_purge['status'] === 3){ 256 if(isset($cookieadmin_consent_purge['success'])){ 257 if($cookieadmin_consent_purge['success'] === true){ 258 /* translators: %1$d: number of consent logs deleted */ 259 $msg = sprintf(__('<br><strong>Consent logs deleted successfully:</strong> %1$d logs deleted.', 'cookieadmin'), $count); 366 260 } 367 261 368 $cookies_scanned .= '<tr><td colspan="5">'.esc_html__('No uncategorized cookies yet. Click on Scan Cookies button to scan for new cookies!', 'cookieadmin').'</td></tr>'; 369 } 370 }else{ 371 372 $cookies_scanned .= '<tr><td colspan="5">'.esc_html__('No scanned cookies yet. Click on Scan Cookies button to scan for new cookies!', 'cookieadmin').'</td></tr>'; 373 374 } 375 376 wp_register_script('cookieadmin_categorized_cookies', '', array('jquery'), COOKIEADMIN_VERSION, true); 377 wp_enqueue_script('cookieadmin_categorized_cookies'); 378 wp_localize_script('cookieadmin_categorized_cookies', 'categorized_cookies', $categorized_cookies); 379 380 echo ' 381 <div class="cookieadmin_consent-wrap"> 382 <form action="" method="post"> 383 <div class="cookieadmin_consent-contents"> 384 <div class="cookieadmin_consent_settings"> 385 <div class="cookieadmin-setting cookieadmin-manager-cookie-scan"> 386 <label class="cookieadmin-title">'.esc_html__('Scanned Cookies', 'cookieadmin').'</label> 387 <div class="cookieadmin-setting-contents cookieadmin-cookie-scan"> 388 <input type="button" class="cookieadmin-btn cookieadmin-btn-primary cookieadmin-scan" value="'.esc_html__('Scan Cookies', 'cookieadmin').'"> 389 </div> 390 <div class="cookieadmin-manager-result"> 391 <table class="cookieadmin-table cookieadmin-cookie-categorized"> 392 <thead> 393 <tr> 394 <th width="30%">'.esc_html__('Name', 'cookieadmin').'</th> 395 <th width="50%">'.esc_html__('Description', 'cookieadmin').'</th> 396 <th width="10%">'.esc_html__('Expiry', 'cookieadmin').'</th> 397 <th width="10%">'.esc_html__('Action', 'cookieadmin').'</th> 398 </tr> 399 </thead> 400 <tbody id="necessary_tbody"> 401 <tr><td colspan=4>'.esc_html__('Necessary Cookies', 'cookieadmin').'</td></tr> 402 '.( !empty($categorized['Necessary']) ? wp_kses_post($categorized['Necessary']) : '<tr class="cookieadmin-empty-row"><td colspan=4>'.esc_html__('No Cookies Found!', 'cookieadmin').'</td></tr>' ).' 403 </tbody> 404 <tbody id="functional_tbody"> 405 <tr><td colspan=4>'.esc_html__('Functional Cookies', 'cookieadmin').'</td></tr> 406 '.( !empty($categorized['Functional']) ? wp_kses_post($categorized['Functional']) : '<tr class="cookieadmin-empty-row"><td colspan=4>'.esc_html__('No Cookies Found!', 'cookieadmin').'</td></tr>' ).' 407 </tbody> 408 <tbody id="analytics_tbody"> 409 <tr><td colspan=4>'.esc_html__('Analytical Cookies', 'cookieadmin').'</td></tr> 410 '.( !empty($categorized['Analytics']) ? wp_kses_post($categorized['Analytics']) : '<tr class="cookieadmin-empty-row"><td colspan=4>'.esc_html__('No Cookies Found!', 'cookieadmin').'</td></tr>' ).' 411 </tbody> 412 <tbody id="marketing_tbody"> 413 <tr><td colspan=4>'.esc_html__('Marketing Cookies', 'cookieadmin').'</td></tr> 414 '.( !empty($categorized['Marketing']) ? wp_kses_post($categorized['Marketing']) : '<tr class="cookieadmin-empty-row"><td colspan=4>'.esc_html__('No Cookies Found!', 'cookieadmin').'</td></tr>' ).' 415 </tbody> 416 <tbody id="unknown_tbody"> 417 <tr><td colspan=4>'.esc_html__('Unknown Cookies', 'cookieadmin').'</td></tr> 418 '.( !empty($categorized['Unknown']) ? wp_kses_post($categorized['Unknown']) : '<tr class="cookieadmin-empty-row"><td colspan=4>'.esc_html__('No Cookies Found!', 'cookieadmin').'</td></tr>' ).' 419 </tbody> 420 </table> 421 </div> 422 </div> 423 </div> 424 </div>'; 425 426 wp_nonce_field('cookieadmin_admin_nonce', 'cookieadmin_security'); 427 428 echo ' 429 </div> 430 </form> 431 <br/>'; 432 433 self::footer_theme(); 434 435 echo ' 436 <!-- Modal Overlay --> 437 <div class="cookieadmin_modal-overlay" id="edit-cookie-modal" hidden> 438 <div class="cookieadmin_modal-container"> 439 <div class="cookieadmin_modal-header"> 440 <h2>'.esc_html__('Edit Cookie', 'cookieadmin').'</h2> 441 <button class="cookieadmin_dialog_modal_close_btn">×</button> 442 </div> 443 444 <div class="cookieadmin_modal-body"> 445 <div class="cookieadmin_form-group"> 446 <label for="cookieadmin-dialog-cookie-category">'.esc_html__('Category', 'cookieadmin').'</label> 447 <select id="cookieadmin-dialog-cookie-category"> 448 <option value="Unknown">'.esc_html__('Unknown', 'cookieadmin').'</option> 449 <option value="Necessary">'.esc_html__('Necessary', 'cookieadmin').'</option> 450 <option value="Functional">'.esc_html__('Functional', 'cookieadmin').'</option> 451 <option value="Analytics">'.esc_html__('Analytical', 'cookieadmin').'</option> 452 <option value="Marketing">'.esc_html__('Marketing', 'cookieadmin').'</option> 453 </select> 454 </div> 455 456 <div class="cookieadmin_form-group"> 457 <label for="cookie_id">'.esc_html__('Cookie Name/ID', 'cookieadmin').'</label> 458 <input type="text" id="cookieadmin-dialog-cookie-name" Placeholder="'.esc_html__('Enter Cookie Name or id', 'cookieadmin').'"> 459 </div> 460 461 <div class="cookieadmin_form-group"> 462 <label for="description">'.esc_html__('Description', 'cookieadmin').'</label> 463 <textarea id="cookieadmin-dialog-cookie-desc" Placeholder="'.esc_html__('Enter Cookie description here', 'cookieadmin').'"></textarea> 464 </div> 465 466 <div class="cookieadmin_form-group"> 467 <label for="duration">'.esc_html__('Duration', 'cookieadmin').'</label> 468 <input type="text" id="cookieadmin-dialog-cookie-duration" Placeholder="'.esc_html__('30 days', 'cookieadmin').'"> 469 </div> 470 471 <div class="cookieadmin_modal-footer" style="background-color:#ffffff;"> 472 <button class="cookieadmin-btn cookieadmin-btn-primary" id="cookieadmin_dialog_save_btn" form="edit-cookie-form">'.esc_html__('Save', 'cookieadmin').'</button> 473 </div> 474 </div> 475 </div> 262 if($cookieadmin_consent_purge['success'] === false){ 263 /* translators: %1$d: number of consent logs deleted, %2$s: error message*/ 264 $msg = sprintf(__('<br><strong>Consent logs deletion failed:</strong> %1$d logs deleted. Error : %2$s', 'cookieadmin'), $count, esc_html($cookieadmin_consent_purge['message'])); 265 } 266 } 267 } 268 269 if(empty($msg)){ 270 return; 271 } 272 273 // cookieadmin_logo_svg fn is Internal static SVG. if allowing user input or filters, escape it. 274 echo ' 275 <div class="notice notice-info is-dismissible" id="cookieadmin-consent-purge-notice"> 276 <p>'.cookieadmin_logo_svg().wp_kses_post($msg). '</p> 476 277 </div>'; 477 } 478 479 static function consent_form_page(){ 480 481 global $cookieadmin_lang, $cookieadmin_error, $cookieadmin_msg; 482 483 self::header_theme(__('Consent Form', 'cookieadmin')); 484 485 $view = get_option('cookieadmin_law', 'cookieadmin_gdpr'); 486 $policy = cookieadmin_load_policy(); 487 488 $templates = implode("", cookieadmin_load_consent_template($policy[$view], $view)); 489 490 $policy['set'] = $view; 491 $policy['admin_url'] = admin_url('admin-ajax.php'); 492 $policy['cookieadmin_nonce'] = wp_create_nonce('cookieadmin_admin_js_nonce'); 493 494 $cookieadmin_requires_pro = self::is_feature_available(1); 495 496 echo ' 497 <div class="cookieadmin_consent-wrap"> 498 <form action="" method="post" id="consent_submenu"> 499 500 <div class="cookieadmin_consent-contents"> 501 <div class="cookieadmin_consent_settings"> 502 <div class="cookieadmin-contents cookieadmin_consent"> 503 504 <div class="cookieadmin-setting"> 505 <label class="cookieadmin-title" for="cookieadmin_consent_type">'.esc_html__('Consent Type', 'cookieadmin').'</label> 506 <div class="cookieadmin-setting-contents"> 507 <select name="cookieadmin_consent_type" id="cookieadmin_consent_type"> 508 <option name="cookieadmin_gdpr" id="cookieadmin_gdpr" value="cookieadmin_gdpr">'.esc_html__('GDPR', 'cookieadmin').'</option> 509 <option name="cookieadmin_us" id="cookieadmin_us" value="cookieadmin_us">'.esc_html__('US State Laws', 'cookieadmin').'</option> 510 </select> 511 </div> 512 </div> 513 514 <div class="cookieadmin-setting cookieadmin_consent-expiry"> 515 <label class="cookieadmin-title" for="cookieadmin_consent_expiry">'.esc_html__('Consent Expiry', 'cookieadmin').'</label> 516 <div class="cookieadmin-setting-contents"> 517 <input type="number" name="cookieadmin_days" id="cookieadmin_consent_expiry" style="max-width:70px;" value="'.esc_attr($policy[$view]['cookieadmin_days']).'"> 518 </div> 519 </div> 520 521 <div class="cookieadmin-setting consent-layout"> 522 <label class="cookieadmin-title">'.esc_html__('Notice Type', 'cookieadmin').'</label> 523 <div class="cookieadmin-setting-contents"> 524 <input name="cookieadmin_layout" type="radio" id="cookieadmin_layout_box" value="box"> 525 <label class="cookieadmin-input" for="cookieadmin_layout_box">'.esc_html__('Box', 'cookieadmin').'</label> 526 <input name="cookieadmin_layout" type="radio" id="cookieadmin_layout_footer" value="footer"> 527 <label class="cookieadmin-input" for="cookieadmin_layout_footer">'.esc_html__('Footer', 'cookieadmin').'</label> 528 <input name="cookieadmin_layout" type="radio" id="cookieadmin_layout_popup" value="popup"> 529 <label for="cookieadmin_layout_popup">'.esc_html__('Popup', 'cookieadmin').'</label> 530 </div> 531 </div> 532 533 <div class="cookieadmin-setting consent-position"> 534 <label class="cookieadmin-title">'.esc_html__('Notice Position', 'cookieadmin').'</label> 535 <div class="cookieadmin-setting-contents"> 536 <input class="cookieadmin_box_layout" id="cookieadmin_position_bottom_left" name="cookieadmin_position" type="radio" value="bottom_left" checked> 537 <label class="cookieadmin_box_layout cookieadmin-input" for="cookieadmin_position_bottom_left">'.esc_html__('Bottom Left', 'cookieadmin').'</label> 538 <input class="cookieadmin_box_layout" id="cookieadmin_position_bottom_right" name="cookieadmin_position" type="radio" value="bottom_right"> 539 <label class="cookieadmin_box_layout cookieadmin-input" for="cookieadmin_position_bottom_right">'.esc_html__('Bottom Right', 'cookieadmin').'</label> 540 <input class="cookieadmin_box_layout" id="cookieadmin_position_top_left" name="cookieadmin_position" type="radio" value="top_left"> 541 <label class="cookieadmin_box_layout cookieadmin-input" for="cookieadmin_position_top_left">'.esc_html__('Top Left', 'cookieadmin').'</label> 542 <input class="cookieadmin_box_layout" id="cookieadmin_position_top_right" name="cookieadmin_position" type="radio" value="top_right"> 543 <label class="cookieadmin_box_layout cookieadmin-input" for="cookieadmin_position_top_right">'.esc_html__('Top Right', 'cookieadmin').'</label> 544 <input class="cookieadmin_foter_layout" id="cookieadmin_position_top" name="cookieadmin_position" type="radio" value="top" style="display:none;"> 545 <label class="cookieadmin_foter_layout cookieadmin-input" for="cookieadmin_position_top" style="display:none;">'.esc_html__('Top', 'cookieadmin').'</label> 546 <input class="cookieadmin_foter_layout" id="cookieadmin_position_bottom" name="cookieadmin_position" type="radio" value="bottom" style="display:none;"> 547 <label class="cookieadmin_foter_layout" for="cookieadmin_position_bottom" style="display:none;">'.esc_html__('Bottom', 'cookieadmin').'</label> 548 </div> 549 </div> 550 551 <div class="cookieadmin-setting consent-modal-layout"> 552 <label class="cookieadmin-title">'.esc_html__('Preference Position', 'cookieadmin').'</label> 553 <div class="cookieadmin-setting-contents"> 554 <input id="cookieadmin_modal_center" name="cookieadmin_modal" type="radio" value="center" checked> 555 <label class="cookieadmin-input" for="cookieadmin_modal_center">'.esc_html__('Center', 'cookieadmin').'</label> 556 <input id="cookieadmin_modal_side" name="cookieadmin_modal" type="radio" value="side"> 557 <label class="cookieadmin-input" for="cookieadmin_modal_side">'.esc_html__('Side', 'cookieadmin').'</label> 558 <input id="cookieadmin_modal_down" name="cookieadmin_modal" type="radio" value="down"> 559 <label for="cookieadmin_modal_down">'.esc_html__('Draw down', 'cookieadmin').'</label> 560 </div> 561 </div> 562 563 <div class="cookieadmin-setting consent-notice"> 564 <label class="cookieadmin-title">'.esc_html__('Notice Section', 'cookieadmin').'</label> 565 <div class="cookieadmin-setting-contents cookieadmin-vertical"> 566 <label for="cookieadmin_notice_title_layout">'.esc_html__('Title', 'cookieadmin').'</label> 567 <input type="text" id="cookieadmin_notice_title_layout" name="cookieadmin_notice_title" style="width: 270px;" value="'.esc_attr($policy[$view]['cookieadmin_notice_title']).'"> 568 <label for="cookieadmin_notice_layout" style="margin-top:20px;">'.esc_html__('Notice', 'cookieadmin').'</label> 569 <textarea rows="5vh" cols="100vw" id="cookieadmin_notice_layout" name="cookieadmin_notice">'.esc_html($policy[$view]['cookieadmin_notice']).'</textarea> 570 <div class="cookieadmin-setting-colors cookieadmin-setting-contents cookieadmin-horizontal"> 571 <div class="cookieadmin-setting-color cookieadmin-vertical" > 572 <label for="cookieadmin_notice_title_color">'.esc_html__('Title', 'cookieadmin').'</label> 573 <div class="cookieadmin-color-holder cookieadmin-horizontal"> 574 <input type="color" id="cookieadmin_notice_title_color_box" name="cookieadmin_notice_title_color_box" value="'.esc_attr($policy[$view]['cookieadmin_notice_title_color']).'"> 575 <input type="text" id="cookieadmin_notice_title_color" name="cookieadmin_notice_title_color" value="'.esc_attr($policy[$view]['cookieadmin_notice_title_color']).'" class="cookieadmin-color-input"> 576 </div> 577 </div> 578 <div class="cookieadmin-setting-color cookieadmin-vertical"> 579 <label for="cookieadmin_notice_color">'.esc_html__('Content', 'cookieadmin').'</label> 580 <div class="cookieadmin-color-holder cookieadmin-horizontal"> 581 <input type="color" id="cookieadmin_notice_color_box" name="cookieadmin_notice_color_box" value="'.esc_attr($policy[$view]['cookieadmin_notice_color']).'"> 582 <input type="text" id="cookieadmin_notice_color" name="cookieadmin_notice_color" value="'.esc_attr($policy[$view]['cookieadmin_notice_color']).'" class="cookieadmin-color-input"> 583 </div> 584 </div> 585 <div class="cookieadmin-setting-color cookieadmin-vertical"> 586 <label for="cookieadmin_consent_inside_bg_color">'.esc_html__('Background', 'cookieadmin').'</label> 587 <div class="cookieadmin-color-holder cookieadmin-horizontal"> 588 <input type="color" id="cookieadmin_consent_inside_bg_color_box" name="cookieadmin_consent_inside_bg_color_box" value="'.esc_attr($policy[$view]['cookieadmin_consent_inside_bg_color']).'"> 589 <input type="text" id="cookieadmin_consent_inside_bg_color" name="cookieadmin_consent_inside_bg_color" value="'.esc_attr($policy[$view]['cookieadmin_consent_inside_bg_color']).'" class="cookieadmin-color-input"> 590 </div> 591 </div> 592 <div class="cookieadmin-setting-color cookieadmin-vertical"> 593 <label for="cookieadmin_consent_inside_border_color">'.esc_html__('Border', 'cookieadmin').'</label> 594 <div class="cookieadmin-color-holder cookieadmin-horizontal"> 595 <input type="color" id="cookieadmin_consent_inside_border_color_box" name="cookieadmin_consent_inside_border_color_box" value="'.esc_attr($policy[$view]['cookieadmin_consent_inside_border_color']).'"> 596 <input type="text" id="cookieadmin_consent_inside_border_color" name="cookieadmin_consent_inside_border_color" value="'.esc_attr($policy[$view]['cookieadmin_consent_inside_border_color']).'" class="cookieadmin-color-input"> 597 </div> 598 </div> 599 </div> 600 </div> 601 </div> 602 </div> 603 <div class="cookieadmin-setting"> 604 <label class="cookieadmin-title">'.esc_html__('Buttons', 'cookieadmin').'</label> 605 <div class="cookieadmin-buttons cookieadmin-setting-contents cookieadmin-horizontal"> 606 <div class="cookieadmin-button cookieadmin-vertical"> 607 <input id="cookieadmin_customize_btn" name="cookieadmin_customize_btn" style="max-width:130px;text-align:center;" value="'.esc_attr($policy[$view]['cookieadmin_customize_btn']).'"> 608 <div class="cookieadmin-color-holder cookieadmin-horizontal"> 609 <input type="color" id="cookieadmin_customize_btn_color_box" name="cookieadmin_customize_btn_color_box" value="'.esc_attr($policy[$view]['cookieadmin_customize_btn_color']).'"> 610 <input type="text" id="cookieadmin_customize_btn_color" name="cookieadmin_customize_btn_color" value="'.esc_attr($policy[$view]['cookieadmin_customize_btn_color']).'" class="cookieadmin-color-input"> 611 </div> 612 <div class="cookieadmin-color-holder cookieadmin-horizontal"> 613 <input type="color" id="cookieadmin_customize_btn_bg_color_box" name="cookieadmin_customize_btn_bg_color_box" value="'.esc_attr($policy[$view]['cookieadmin_customize_btn_bg_color']).'"> 614 <input type="text" id="cookieadmin_customize_btn_bg_color" name="cookieadmin_customize_btn_bg_color" value="'.esc_attr($policy[$view]['cookieadmin_customize_btn_bg_color']).'" class="cookieadmin-color-input"> 615 </div> 616 </div> 617 <div class="cookieadmin-button cookieadmin-vertical"> 618 <input id="cookieadmin_reject_btn" name="cookieadmin_reject_btn" style="max-width:130px;text-align:center;" value="'.esc_attr($policy[$view]['cookieadmin_reject_btn']).'"> 619 <div class="cookieadmin-color-holder cookieadmin-horizontal"> 620 <input type="color" id="cookieadmin_reject_btn_color_box" name="cookieadmin_reject_btn_color_box" value="'.esc_attr($policy[$view]['cookieadmin_reject_btn_color']).'"> 621 <input type="text" id="cookieadmin_reject_btn_color" name="cookieadmin_reject_btn_color" value="'.esc_attr($policy[$view]['cookieadmin_reject_btn_color']).'" class="cookieadmin-color-input"> 622 </div> 623 <div class="cookieadmin-color-holder cookieadmin-horizontal"> 624 <input type="color" id="cookieadmin_reject_btn_bg_color_box" name="cookieadmin_reject_btn_bg_color_box" value="'.esc_attr($policy[$view]['cookieadmin_reject_btn_bg_color']).'"> 625 <input type="text" id="cookieadmin_reject_btn_bg_color" name="cookieadmin_reject_btn_bg_color" value="'.esc_attr($policy[$view]['cookieadmin_reject_btn_bg_color']).'" class="cookieadmin-color-input"> 626 </div> 627 </div> 628 <div class="cookieadmin-button cookieadmin-vertical"> 629 <input id="cookieadmin_accept_btn" name="cookieadmin_accept_btn" style="max-width:130px;text-align:center;" value="'.esc_attr($policy[$view]['cookieadmin_accept_btn']).'"> 630 <div class="cookieadmin-color-holder cookieadmin-horizontal"> 631 <input type="color" id="cookieadmin_accept_btn_color_box" name="cookieadmin_accept_btn_color_box" value="'.esc_attr($policy[$view]['cookieadmin_accept_btn_color']).'"> 632 <input type="text" id="cookieadmin_accept_btn_color" name="cookieadmin_accept_btn_color" value="'.esc_attr($policy[$view]['cookieadmin_accept_btn_color']).'" class="cookieadmin-color-input"> 633 </div> 634 <div class="cookieadmin-color-holder cookieadmin-horizontal"> 635 <input type="color" id="cookieadmin_accept_btn_bg_color_box" name="cookieadmin_accept_btn_bg_color_box" value="'.esc_attr($policy[$view]['cookieadmin_accept_btn_bg_color']).'"> 636 <input type="text" id="cookieadmin_accept_btn_bg_color" name="cookieadmin_accept_btn_bg_color" value="'.esc_attr($policy[$view]['cookieadmin_accept_btn_bg_color']).'" class="cookieadmin-color-input"> 637 </div> 638 </div> 639 <div class="cookieadmin-button cookieadmin-vertical"> 640 <input id="cookieadmin_save_btn" name="cookieadmin_save_btn" style="max-width:130px;text-align:center;" value="'.esc_attr($policy[$view]['cookieadmin_save_btn']).'"> 641 <div class="cookieadmin-color-holder cookieadmin-horizontal"> 642 <input type="color" id="cookieadmin_save_btn_color_box" name="cookieadmin_save_btn_color_box" value="'.esc_attr($policy[$view]['cookieadmin_save_btn_color']).'"> 643 <input type="text" id="cookieadmin_save_btn_color" name="cookieadmin_save_btn_color" value="'.esc_attr($policy[$view]['cookieadmin_save_btn_color']).'" class="cookieadmin-color-input"> 644 </div> 645 <div class="cookieadmin-color-holder cookieadmin-horizontal"> 646 <input type="color" id="cookieadmin_save_btn_bg_color_box" name="cookieadmin_save_btn_bg_color_box" value="'.esc_attr($policy[$view]['cookieadmin_save_btn_bg_color']).'"> 647 <input type="text" id="cookieadmin_save_btn_bg_color" name="cookieadmin_save_btn_bg_color" value="'.esc_attr($policy[$view]['cookieadmin_save_btn_bg_color']).'" class="cookieadmin-color-input"> 648 </div> 649 </div> 650 </div> 651 </div> 652 <div class="cookieadmin-setting consent-preference"> 653 <label class="cookieadmin-title">'.esc_html__('Preference Section', 'cookieadmin').'</label> 654 <div class="cookieadmin-setting-contents cookieadmin-vertical"> 655 <label for="cookieadmin_preference_title_layout">'.esc_html__('Title', 'cookieadmin').'</label> 656 <input type="text" id="cookieadmin_preference_title_layout" name="cookieadmin_preference_title" style="width: 270px;" value="'.esc_html($policy[$view]['cookieadmin_preference_title']).'"> 657 <label for="cookieadmin_preference_layout" style="margin-top:20px;">'.esc_html__('Privacy Notice', 'cookieadmin').'</label> 658 <textarea rows="8vh" cols="100vw" id="cookieadmin_preference_layout" name="cookieadmin_preference">'.esc_html($policy[$view]['cookieadmin_preference']).'</textarea> 659 <div class="cookieadmin-setting-colors cookieadmin-setting-contents cookieadmin-setting-color cookieadmin-horizontal"> 660 <div class="cookieadmin-setting-color cookieadmin-vertical"> 661 <label for="cookieadmin_preference_title_color">'.esc_html__('Title', 'cookieadmin').'</label> 662 <div class="cookieadmin-color-holder cookieadmin-horizontal"> 663 <input type="color" id="cookieadmin_preference_title_color_box" name="cookieadmin_preference_title_color_box" value="'.esc_attr($policy[$view]['cookieadmin_preference_title_color']).'"> 664 <input type="text" id="cookieadmin_preference_title_color" name="cookieadmin_preference_title_color" value="'.esc_attr($policy[$view]['cookieadmin_preference_title_color']).'" class="cookieadmin-color-input"> 665 </div> 666 </div> 667 <div class="cookieadmin-setting-color cookieadmin-vertical"> 668 <label for="cookieadmin_details_wrapper_color">'.esc_html__('Content', 'cookieadmin').'</label> 669 <div class="cookieadmin-color-holder cookieadmin-horizontal"> 670 <input type="color" id="cookieadmin_details_wrapper_color_box" name="cookieadmin_details_wrapper_color_box" value="'.esc_attr($policy[$view]['cookieadmin_details_wrapper_color']).'"> 671 <input type="text" id="cookieadmin_details_wrapper_color" name="cookieadmin_details_wrapper_color" value="'.esc_attr($policy[$view]['cookieadmin_details_wrapper_color']).'" class="cookieadmin-color-input"> 672 </div> 673 </div> 674 <div class="cookieadmin-setting-color cookieadmin-vertical"> 675 <label for="cookieadmin_cookie_modal_bg_color">'.esc_html__('Background', 'cookieadmin').'</label> 676 <div class="cookieadmin-color-holder cookieadmin-horizontal"> 677 <input type="color" id="cookieadmin_cookie_modal_bg_color_box" name="cookieadmin_cookie_modal_bg_color_box" value="'.esc_attr($policy[$view]['cookieadmin_cookie_modal_bg_color']).'"> 678 <input type="text" id="cookieadmin_cookie_modal_bg_color" name="cookieadmin_cookie_modal_bg_color" value="'.esc_attr($policy[$view]['cookieadmin_cookie_modal_bg_color']).'" class="cookieadmin-color-input"> 679 </div> 680 </div> 681 <div class="cookieadmin-setting-color cookieadmin-vertical"> 682 <label for="cookieadmin_cookie_modal_border_color">'.esc_html__('Border', 'cookieadmin').'</label> 683 <div class="cookieadmin-color-holder cookieadmin-horizontal"> 684 <input type="color" id="cookieadmin_cookie_modal_border_color_box" name="cookieadmin_cookie_modal_border_color_box" value="'.esc_attr($policy[$view]['cookieadmin_cookie_modal_border_color']).'"> 685 <input type="text" id="cookieadmin_cookie_modal_border_color" name="cookieadmin_cookie_modal_border_color" value="'.esc_attr($policy[$view]['cookieadmin_cookie_modal_border_color']).'" class="cookieadmin-color-input"> 686 </div> 687 </div> 688 </div> 689 690 <div class="cookieadmin-setting-colors cookieadmin-setting-contents cookieadmin-setting-color cookieadmin-horizontal" cookieadmin-pro-only="1"> 691 <div class="cookieadmin-setting-color cookieadmin-vertical"> 692 <label for="cookieadmin_links_color">'.esc_html__('Links', 'cookieadmin').wp_kses_post($cookieadmin_requires_pro).'</label> 693 <div class="cookieadmin-color-holder cookieadmin-horizontal"> 694 <input type="color" id="cookieadmin_links_color_box" name="cookieadmin_links_color_box" value="'.esc_attr($policy[$view]['cookieadmin_links_color']).'"> 695 <input type="text" id="cookieadmin_links_color" name="cookieadmin_links_color" value="'.esc_attr($policy[$view]['cookieadmin_links_color']).'" class="cookieadmin-color-input"> 696 </div> 697 </div> 698 <div class="cookieadmin-setting-color cookieadmin-vertical"> 699 <label for="cookieadmin_slider_on_bg_color">'.esc_html__('Button Switch On', 'cookieadmin').wp_kses_post($cookieadmin_requires_pro).'</label> 700 <div class="cookieadmin-color-holder cookieadmin-horizontal"> 701 <input type="color" id="cookieadmin_slider_on_bg_color_box" name="cookieadmin_slider_on_bg_color_box" value="'.esc_attr($policy[$view]['cookieadmin_slider_on_bg_color']).'"> 702 <input type="text" id="cookieadmin_slider_on_bg_color" name="cookieadmin_slider_on_bg_color" value="'.esc_attr($policy[$view]['cookieadmin_slider_on_bg_color']).'" class="cookieadmin-color-input"> 703 </div> 704 </div> 705 <div class="cookieadmin-setting-color cookieadmin-vertical"> 706 <label for="cookieadmin_slider_off_bg_color">'.esc_html__('Button Switch Off', 'cookieadmin').wp_kses_post($cookieadmin_requires_pro).'</label> 707 <div class="cookieadmin-color-holder cookieadmin-horizontal"> 708 <input type="color" id="cookieadmin_slider_off_bg_color_box" name="cookieadmin_slider_off_bg_color_box" value="'.esc_attr($policy[$view]['cookieadmin_slider_off_bg_color']).'"> 709 <input type="text" id="cookieadmin_slider_off_bg_color" name="cookieadmin_slider_off_bg_color" value="'.esc_attr($policy[$view]['cookieadmin_slider_off_bg_color']).'" class="cookieadmin-color-input"> 710 </div> 711 </div> 712 </div> 713 714 <span style="margin-top:30px;"> 715 716 <input type="submit" name="cookieadmin_save_settings" class="cookieadmin-btn cookieadmin-btn-primary action" value="'.esc_html__('Save Settings', 'cookieadmin').'"> 717 718 <input type="button" id="cookieadmin_show_preview" name="cookieadmin_show_preview" class="cookieadmin-btn cookieadmin-btn-secondary" value="'.esc_html__('Show Preview', 'cookieadmin').'"> 719 720 </span> 721 722 </div> 723 </div> 724 </div> 725 </div> 726 '; 727 wp_nonce_field('cookieadmin_admin_nonce', 'cookieadmin_security'); 728 echo '<br/> 729 <br/> 730 </form> 731 </div>'; 732 self::footer_theme(); 733 734 $allowed_tags = cookieadmin_kses_allowed_html(); 735 echo wp_kses($templates, $allowed_tags); 736 } 737 738 static function cookieadmin_scan_cookies($url = ''){ 739 global $wpdb; 740 741 $urls = array(get_site_url()); 742 743 if(cookieadmin_is_pro()){ 744 $cookieData = apply_filters('cookieadmin_pro_scan_cookies', $urls); 745 }else{ 746 $cookieData = \CookieAdmin\Scanner::start_scan($urls); 747 } 748 // cookieadmin_r_print($cookieData); 749 750 if(!empty($cookieData) && self::save_raw_scan_results($cookieData)){ 751 self::cookieadmin_auto_configure_cookies(); 752 } 753 754 wp_send_json_error(array('message' =>__('No cookies found!', 'cookieadmin'))); 755 } 756 757 static function cookieadmin_table_exists($table_name) { 758 global $wpdb; 759 760 $query = $wpdb->prepare("SHOW TABLES LIKE %s", $table_name); 761 762 return $wpdb->get_var($query) === $table_name; 763 } 764 765 static function cookieadmin_save_settings(){ 766 767 global $cookieadmin_lang, $cookieadmin_error, $cookieadmin_msg, $cookieadmin_settings, $cookieadmin_policies; 768 769 // debug_print_backtrace();die; 770 771 check_admin_referer('cookieadmin_admin_nonce', 'cookieadmin_security'); 772 773 if(!current_user_can('administrator')){ 774 wp_send_json_error(array('message' => __('Sorry, but you do not have permissions to perform this action', 'cookieadmin'))); 775 } 776 777 $policy = cookieadmin_load_policy(); 778 779 $cookieadmin_consent_type = isset( $_REQUEST['cookieadmin_consent_type'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['cookieadmin_consent_type'] ) ) : ''; 780 781 if(!empty($cookieadmin_consent_type)){ 782 783 $laws = array('cookieadmin_gdpr' => '', 'cookieadmin_us' => ''); 784 785 $law = array_key_exists($cookieadmin_consent_type, $laws) ? $cookieadmin_consent_type : 'cookieadmin_gdpr'; 786 787 if(empty($cookieadmin_error)){ 788 update_option('cookieadmin_law', $law); 789 } 790 } 791 792 if(isset($_REQUEST['page']) && $_REQUEST['page'] === 'cookieadmin-settings'){ 793 794 // Save cookieadmin_settings only on settings page 795 $cookieadmin_settings['google_consent_mode_v2'] = (isset( $_REQUEST['cookieadmin_google_consent_mode_v2'] ) ? 1 : 0); 796 $cookieadmin_settings['hide_powered_by'] = (isset( $_REQUEST['cookieadmin_hide_powered_by'] ) ? 1 : 0); 797 $cookieadmin_settings['hide_reconsent'] = (isset( $_REQUEST['cookieadmin_hide_reconsent'] ) ? 1 : 0); 798 799 if(empty($cookieadmin_error)){ 800 update_option('cookieadmin_settings', $cookieadmin_settings); 801 } 802 803 // get the consent type from option table, if not saved then return default as 'gdpr' 804 $law = get_option('cookieadmin_law', 'cookieadmin_gdpr'); 805 806 //set preload and consent field for "cookieadmin-settings" page 807 $setting['preload'] = !empty($_REQUEST['cookieadmin_preload']) ? array_map('sanitize_text_field', wp_unslash($_REQUEST['cookieadmin_preload'])) : []; 808 $setting['reload_on_consent'] = !empty($_REQUEST['cookieadmin_reload_on_consent']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_reload_on_consent'])) : ''; 809 }else{ 810 // set saved or default preload and consent field for for "cookieadmin-consent" page 811 $setting['preload'] = !empty($policy[$law]['preload']) ? $policy[$law]['preload'] : []; 812 $setting['reload_on_consent'] = !empty($policy[$law]['reload_on_consent']) ? $policy[$law]['reload_on_consent'] : ''; 813 } 814 815 $setting['cookieadmin_geo_tgt'] = (!empty($_REQUEST['cookieadmin_geo_tgt'])) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_geo_tgt'])) : 'www'; 816 817 $setting['cookieadmin_layout'] = (!empty($_REQUEST['cookieadmin_layout']) && in_array($_REQUEST['cookieadmin_layout'], array('box', 'footer', 'popup'))) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_layout'])) : (!empty($policy[$law]['cookieadmin_layout']) ? $policy[$law]['cookieadmin_layout'] : 'box'); 818 819 $setting['cookieadmin_position'] = (!empty($_REQUEST['cookieadmin_position']) && in_array($_REQUEST['cookieadmin_position'], array('bottom_left', 'bottom_right', 'top_left', 'top_right', 'top', 'bottom'))) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_position'])) : (!empty($policy[$law]['cookieadmin_position']) ? $policy[$law]['cookieadmin_position'] : 'bottom_left'); 820 821 $setting['cookieadmin_modal'] = (isset($_REQUEST['cookieadmin_modal']) && in_array($_REQUEST['cookieadmin_modal'], array('center', 'side', 'down'))) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_modal'])) : (!empty($policy[$law]['cookieadmin_modal']) ? $policy[$law]['cookieadmin_modal'] : 'center'); 822 823 if($setting['cookieadmin_layout'] == 'popup'){ 824 $setting['cookieadmin_modal'] = 'center'; 825 unset($setting['cookieadmin_position']); 826 } 827 828 $setting['cookieadmin_notice_title'] = !empty($_REQUEST['cookieadmin_notice_title']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_notice_title'])) : $policy[$law]['cookieadmin_notice_title']; 829 $setting['cookieadmin_notice_title_color'] = !empty($_REQUEST['cookieadmin_notice_title_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_notice_title_color'])) : (!empty($policy[$law]['cookieadmin_notice_title_color']) ? $policy[$law]['cookieadmin_notice_title_color'] : '#000000'); 830 831 $setting['cookieadmin_notice'] = !empty($_REQUEST['cookieadmin_notice']) ? wp_kses(wp_unslash($_REQUEST['cookieadmin_notice']), cookieadmin_kses_allowed_html()) : $policy[$law]['cookieadmin_notice']; 832 $setting['cookieadmin_notice_color'] = !empty($_REQUEST['cookieadmin_notice_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_notice_color'])) : (!empty($policy[$law]['cookieadmin_notice_color']) ? $policy[$law]['cookieadmin_notice_color'] : '#000000'); 833 834 $setting['cookieadmin_consent_inside_bg_color'] = !empty($_REQUEST['cookieadmin_consent_inside_bg_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_consent_inside_bg_color'])) : (!empty($policy[$law]['cookieadmin_consent_inside_bg_color']) ? $policy[$law]['cookieadmin_consent_inside_bg_color'] : '#ffffff'); 835 $setting['cookieadmin_consent_inside_border_color'] = !empty($_REQUEST['cookieadmin_consent_inside_border_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_consent_inside_border_color'])) : (!empty($policy[$law]['cookieadmin_consent_inside_border_color']) ? $policy[$law]['cookieadmin_consent_inside_border_color'] : '#000000'); 836 837 $setting['cookieadmin_customize_btn'] = !empty($_REQUEST['cookieadmin_customize_btn']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_customize_btn'])) : (!empty($policy[$law]['cookieadmin_customize_btn']) ? $policy[$law]['cookieadmin_customize_btn'] : 'Customize'); 838 $setting['cookieadmin_customize_btn_color'] = !empty($_REQUEST['cookieadmin_customize_btn_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_customize_btn_color'])) : (!empty($policy[$law]['cookieadmin_customize_btn_color']) ? $policy[$law]['cookieadmin_customize_btn_color'] : '#ffffff'); 839 $setting['cookieadmin_customize_btn_bg_color'] = !empty($_REQUEST['cookieadmin_customize_btn_bg_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_customize_btn_bg_color'])) : (!empty($policy[$law]['cookieadmin_customize_btn_bg_color']) ? $policy[$law]['cookieadmin_customize_btn_bg_color'] : '#0000ff'); 840 841 $setting['cookieadmin_reject_btn'] = !empty($_REQUEST['cookieadmin_reject_btn']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_reject_btn'])) : (!empty($policy[$law]['cookieadmin_reject_btn']) ? $policy[$law]['cookieadmin_reject_btn'] : 'Reject All'); 842 $setting['cookieadmin_reject_btn_color'] = !empty($_REQUEST['cookieadmin_reject_btn_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_reject_btn_color'])) : (!empty($policy[$law]['cookieadmin_reject_btn_color']) ? $policy[$law]['cookieadmin_reject_btn_color'] : '#ffffff'); 843 $setting['cookieadmin_reject_btn_bg_color'] = !empty($_REQUEST['cookieadmin_reject_btn_bg_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_reject_btn_bg_color'])) : (!empty($policy[$law]['cookieadmin_reject_btn_bg_color']) ? $policy[$law]['cookieadmin_reject_btn_bg_color'] : '#ff0000'); 844 845 $setting['cookieadmin_accept_btn'] = !empty($_REQUEST['cookieadmin_accept_btn']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_accept_btn'])) : (!empty($policy[$law]['cookieadmin_accept_btn']) ? $policy[$law]['cookieadmin_accept_btn'] : 'Accept All'); 846 $setting['cookieadmin_accept_btn_color'] = !empty($_REQUEST['cookieadmin_accept_btn_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_accept_btn_color'])) : (!empty($policy[$law]['cookieadmin_accept_btn']) ? $policy[$law]['cookieadmin_accept_btn_color'] : '#ffffff'); 847 $setting['cookieadmin_accept_btn_bg_color'] = !empty($_REQUEST['cookieadmin_accept_btn_bg_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_accept_btn_bg_color'])) : (!empty($policy[$law]['cookieadmin_accept_btn_bg_color']) ? $policy[$law]['cookieadmin_accept_btn_bg_color'] : '#00ff00'); 848 849 $setting['cookieadmin_save_btn'] = !empty($_REQUEST['cookieadmin_save_btn']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_save_btn'])) : (!empty($policy[$law]['cookieadmin_save_btn']) ? $policy[$law]['cookieadmin_save_btn'] : 'Save Preferences'); 850 $setting['cookieadmin_save_btn_color'] = !empty($_REQUEST['cookieadmin_save_btn_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_save_btn_color'])) : (!empty($policy[$law]['cookieadmin_save_btn_color']) ? $policy[$law]['cookieadmin_save_btn_color'] : '#ffffff'); 851 $setting['cookieadmin_save_btn_bg_color'] = !empty($_REQUEST['cookieadmin_save_btn_bg_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_save_btn_bg_color'])) : (!empty($policy[$law]['cookieadmin_save_btn_bg_color']) ? $policy[$law]['cookieadmin_save_btn_bg_color'] : '#183833'); 852 853 $setting['cookieadmin_preference_title'] = !empty($_REQUEST['cookieadmin_preference_title']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_preference_title'])) : $policy[$law]['cookieadmin_preference_title']; 854 $setting['cookieadmin_preference_title_color'] = !empty($_REQUEST['cookieadmin_preference_title_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_preference_title_color'])) : (!empty($policy[$law]['cookieadmin_preference_title_color']) ? $policy[$law]['cookieadmin_preference_title_color'] : '#000000'); 855 856 $setting['cookieadmin_preference'] = !empty($_REQUEST['cookieadmin_preference']) ? wp_kses(wp_unslash($_REQUEST['cookieadmin_preference']), cookieadmin_kses_allowed_html()) : $policy[$law]['cookieadmin_preference']; 857 $setting['cookieadmin_details_wrapper_color'] = !empty($_REQUEST['cookieadmin_details_wrapper_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_details_wrapper_color'])) : (!empty($policy[$law]['cookieadmin_details_wrapper_color']) ? $policy[$law]['cookieadmin_details_wrapper_color'] : '#000000'); 858 859 $setting['cookieadmin_cookie_modal_bg_color'] = !empty($_REQUEST['cookieadmin_cookie_modal_bg_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_cookie_modal_bg_color'])) : (!empty($policy[$law]['cookieadmin_cookie_modal_bg_color']) ? $policy[$law]['cookieadmin_cookie_modal_bg_color'] : '#ffffff'); 860 $setting['cookieadmin_cookie_modal_border_color'] = !empty($_REQUEST['cookieadmin_cookie_modal_border_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_cookie_modal_border_color'])) : (!empty($policy[$law]['cookieadmin_cookie_modal_border_color']) ? $policy[$law]['cookieadmin_cookie_modal_border_color'] : '#000000'); 861 862 $setting['cookieadmin_slider_off_bg_color'] = !empty($_REQUEST['cookieadmin_slider_off_bg_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_slider_off_bg_color'])) : (!empty($policy[$law]['cookieadmin_slider_off_bg_color']) ? $policy[$law]['cookieadmin_slider_off_bg_color'] : '#808080'); 863 $setting['cookieadmin_slider_on_bg_color'] = !empty($_REQUEST['cookieadmin_slider_on_bg_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_slider_on_bg_color'])) : (!empty($policy[$law]['cookieadmin_slider_on_bg_color']) ? $policy[$law]['cookieadmin_slider_on_bg_color'] : '#3582c4'); 864 $setting['cookieadmin_links_color'] = !empty($_REQUEST['cookieadmin_links_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_links_color'])) : (!empty($policy[$law]['cookieadmin_links_color']) ? $policy[$law]['cookieadmin_links_color'] : '#1863dc'); 865 866 $setting['cookieadmin_days'] = !empty($_REQUEST['cookieadmin_days']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_days'])) : (!empty($policy[$law]['cookieadmin_days']) ? $policy[$law]['cookieadmin_days'] : '365'); 867 868 $policy[$law] = $setting; 869 870 // Check for certain fields to be saved only if their values is not the same as default 871 $cookieadmin_check_changes = array('cookieadmin_notice_title', 'cookieadmin_notice', 'cookieadmin_preference_title', 'cookieadmin_preference', 'reConsent_title', 'cookieadmin_customize_btn', 'cookieadmin_reject_btn', 'cookieadmin_accept_btn', 'cookieadmin_save_btn'); 872 873 foreach($cookieadmin_check_changes as $c_field){ 874 foreach($policy as $c_law => $c_val){ 875 if(!empty($c_val[$c_field]) && $c_val[$c_field] == $cookieadmin_policies[$c_law][$c_field]){ 876 unset($policy[$c_law][$c_field]); 877 } 878 } 879 } 880 881 update_option('cookieadmin_consent_settings', $policy); 882 883 if(empty($cookieadmin_error)){ 884 $cookieadmin_msg = __('Settings saved successfully', 'cookieadmin'); 885 } 886 } 887 888 889 static function cookieadmin_auto_configure_cookies(){ 890 global $wpdb; 891 892 $table_name = esc_sql($wpdb->prefix . 'cookieadmin_cookies'); 893 $categorized_cookies = []; 894 $uncategorized_cookies = []; 895 896 $all_cookies = $wpdb->get_results("SELECT cookie_name, category FROM {$table_name}"); 897 898 foreach($all_cookies as $cookie){ 899 900 if(!empty($cookie->categorized)){ 901 $categorized_cookies[] = $cookie->cookie_name; 902 }else{ 903 $uncategorized_cookies[] = $cookie->cookie_name; 904 } 905 } 906 907 if(!empty($uncategorized_cookies)){ 908 909 $uncategorized_cookies = array_flip($uncategorized_cookies); 910 $categorized_cookies = array_flip($categorized_cookies); 911 912 913 $categorizd_cookies = \CookieAdmin\CookieCategorizer::categorize_cookies($uncategorized_cookies, $categorized_cookies); 914 915 $remove_cookies = $categorizd_cookies['remove_cookies']; 916 unset($categorizd_cookies['remove_cookies']); 917 if(!empty($remove_cookies)){ 918 $placeholders = implode(',', array_fill(0, count($remove_cookies), '%s')); 919 $sql = $wpdb->prepare("DELETE FROM {$table_name} WHERE raw_name IN ({$placeholders})", ...$remove_cookies); 920 $wpdb->query($sql); 921 } 922 923 foreach($categorizd_cookies as $cookie_data){ 924 925 $wpdb->update( 926 $table_name, 927 [ 'cookie_name' => $cookie_data['cookie_name'], 'category' => $cookie_data['category'], 'description' => $cookie_data['description'], 'edited' => 1, 'patterns' => $cookie_data['patterns'] ], // Data to update 928 [ 'raw_name' => $cookie_data['raw_name'] ], // WHERE 929 [ '%s', '%s', '%s', '%d', '%s' ], // Format for the data 930 [ '%s' ] // Format for the WHERE clause 931 ); 932 933 } 934 935 $categorized_cookies = $wpdb->get_results("SELECT id, cookie_name, category, expires, description FROM {$table_name}"); 936 937 wp_send_json_success($categorized_cookies); 938 } 939 wp_send_json(['success' => true, 940 'data' => null, 941 'message' => __('No cookies to categorize!', 'cookieadmin')]); 942 } 943 944 static function cookieadmin_edit_cookies(){ 945 global $wpdb; 946 947 $table_name = esc_sql($wpdb->prefix . 'cookieadmin_cookies'); 948 949 if(!empty($_REQUEST['cookie_info'])) { 950 951 $cookie_info = wp_unslash($_REQUEST['cookie_info']); 952 953 $resp = $wpdb->update( 954 $table_name, 955 [ 'cookie_name' => sanitize_text_field($cookie_info['name']), 'description' => sanitize_text_field($cookie_info['description']), 'expires' => sanitize_text_field($cookie_info['duration']), 'category' => sanitize_text_field($cookie_info['type']), 'edited' => 1], // Data to update 956 [ 'id' => sanitize_text_field($cookie_info['id']) ], // WHERE 957 [ '%s', '%s', '%s', '%s', '%d' ], // Format for the data 958 [ '%d' ] // Format for the WHERE clause 959 ); 960 961 }elseif( !empty($_REQUEST['cookie_raw_id']) ){ 962 963 $cookie_id = (int) sanitize_text_field(wp_unslash($_REQUEST['cookie_raw_id'])); 964 965 $resp = $wpdb->delete( $table_name, ['id' => $cookie_id], [ '%s' ] ); 966 } 967 968 if ($wpdb->last_error || $resp === false) { 969 //error_log('DB Error: ' . $wpdb->last_error); // Log it 970 wp_send_json(['success' => true, 971 'data' => null, 972 'message' => __('Error editing cookie, Error: ', 'cookieadmin') . esc_html($wpdb->last_error)]); 973 } 974 975 wp_send_json_success(__('Cookie updated!', 'cookieadmin')); 976 977 } 978 979 static function save_raw_scan_results(array $found_cookies){ 980 981 global $wpdb; 982 983 $table_name = esc_sql($wpdb->prefix . 'cookieadmin_cookies'); 984 985 if (empty($found_cookies)) { 986 return ['inserted' => 0, 'updated' => 0]; 987 } 988 989 // Step 1: Fetch all existing cookie names from our database in one efficient query. 990 $existing_cookies_in_db = $wpdb->get_col("SELECT cookie_name FROM {$table_name}"); 991 // Use array_flip for very fast 'isset' lookups instead of slow 'in_array' in a loop. 992 $existing_cookies_lookup = !empty($existing_cookies_in_db) ? array_flip($existing_cookies_in_db) : []; 993 994 $results = ['inserted' => 0, 'updated' => 0]; 995 996 // Step 2: Loop through each cookie found by the scanner. 997 foreach ($found_cookies as $cookie_name => $cookie_data) { 998 999 // Step 3: Check if the cookie exists in our DB. 1000 if (isset($existing_cookies_lookup[$cookie_name])) { 1001 1002 $wpdb->update( 1003 $table_name, 1004 [ 'scan_timestamp' => time() ], // Data to update 1005 [ 'cookie_name' => $cookie_name ], // WHERE clause 1006 [ '%s' ], // Format for the data 1007 [ '%s' ] // Format for the WHERE clause 1008 ); 1009 $results['updated']++; 1010 1011 } else { 1012 1013 // ------ INSERT a NEW cookie ------ 1014 $data = [ 1015 'cookie_name' => sanitize_text_field($cookie_name), 1016 'domain' => sanitize_text_field($cookie_data['domain']), 1017 'path' => sanitize_text_field($cookie_data['path']), 1018 'expires' => !empty($cookie_data['expires']) ? $cookie_data['expires'] : null, 1019 'max_age' => $cookie_data['Max-Age'] ? $cookie_data['Max-Age'] : null, 1020 'samesite' => !empty($cookie_data['samesite']) ? sanitize_text_field($cookie_data['samesite']) : null, 1021 'secure' => (int)($cookie_data['secure'] ?? 0), 1022 'httponly' => (int)($cookie_data['httponly'] ?? 0), 1023 'raw_name' => sanitize_text_field($cookie_name), 1024 'scan_timestamp' => time(), 1025 ]; 1026 1027 $formats = ['%s', '%s', '%s', '%s', '%d', '%s', '%d', '%d', '%s']; 1028 1029 if ($wpdb->insert($table_name, $data, $formats)) { 1030 $results['inserted']++; 1031 } else { 1032 //error_log("CookieAdmin: Error inserting cookie data: " . $wpdb->last_error); 1033 } 1034 } 1035 } 1036 return $results; 278 279 wp_register_script('cookieadmin-consent-purge-notice', '', ['jquery'], '', true); 280 wp_enqueue_script('cookieadmin-consent-purge-notice'); 281 wp_add_inline_script('cookieadmin-consent-purge-notice', 'jQuery("#cookieadmin-consent-purge-notice").on("click", 282 function(e){ 283 284 let target = jQuery(e.target); 285 if(!target.hasClass("notice-dismiss")){ 286 return; 287 } 288 289 var data; 290 291 // Hide it 292 jQuery("#cookieadmin-consent-purge-notice").remove(); 293 294 // Save this preference 295 jQuery.post("'.admin_url('admin-ajax.php?action=cookieadmin_ajax_handler&cookieadmin_act=close-notice¬ice=cookieadmin-consent-purge-notice').'&cookieadmin_security='.wp_create_nonce('cookieadmin_admin_js_nonce').'", data, function(response) { 296 }); 297 298 });'); 299 300 } 301 302 static function close_notices(){ 303 304 if(empty($_REQUEST['notice'])){ 305 return; 306 } 307 308 $notice = sanitize_text_field(wp_unslash($_REQUEST['notice'])); 309 $notice = str_replace('-notice', '', $notice); 310 $notice = str_replace('-', '_', $notice); 311 312 update_option($notice, array()); 1037 313 } 1038 314 … … 1106 382 } 1107 383 1108 $msg = ' <sup style="font-size:11px;"><a href="'.COOKIEADMIN_PRO_URL.'" target="_blank" style="text-decoration:none; color:red;"><b>'. __('Pro', 'cookieadmin').'</b></a></sup>';384 $msg = ' <sup style="font-size:11px;"><a href="'.COOKIEADMIN_PRO_URL.'" target="_blank" style="text-decoration:none; color:red;"><b>'.esc_html__('Pro', 'cookieadmin').'</b></a></sup>'; 1109 385 1110 386 if(!empty($return)){ -
cookieadmin/trunk/includes/cookiecategorizer.php
r3328224 r3460841 15 15 * @return array The enriched list of cookies. 16 16 */ 17 static function categorize_cookies( array $found_cookies, array$categorized_cookies) {17 static function categorize_cookies($found_cookies, $categorized_cookies) { 18 18 if (empty($found_cookies)) { 19 19 return []; … … 36 36 37 37 38 static function generate_query_prefixes( array $cookie_names): array{38 static function generate_query_prefixes($cookie_names){ 39 39 $prefixes = []; 40 40 foreach ($cookie_names as $name) { … … 55 55 56 56 57 static function fetch_candidates_from_db( array $prefixes): array{57 static function fetch_candidates_from_db($prefixes){ 58 58 59 59 if (empty($prefixes)) { … … 71 71 72 72 73 static function match_and_enrich_cookies( array $found_cookies, array $db_candidates, array $old_categorized_cookies): array{73 static function match_and_enrich_cookies($found_cookies, $db_candidates, $old_categorized_cookies){ 74 74 $categorized_cookies = []; 75 $old_categorized_cookies = [];76 75 $remove_cookies = []; 77 76 … … 103 102 104 103 if (!empty($best_match)) { 105 106 if(!empty($old_categorized_cookies) && array_key_exists($best_match['cookie_name'], $old_categorized_cookies)){ 107 $remove_cookies[] = $scanned_name; 108 continue; 104 105 $cookie_name = $best_match['cookie_name']; 106 107 if(!empty($old_categorized_cookies) && array_key_exists($cookie_name, $old_categorized_cookies)){ 108 $remove_cookies[] = $old_categorized_cookies[$cookie_name]; 109 109 } 110 110 111 $cookie_name = $best_match['cookie_name']; 112 $categorized_cookies[$cookie_name]['cookie_name'] = $cookie_name; 113 $categorized_cookies[$cookie_name]['raw_name'] = $scanned_name; 111 $categorized_cookies[$cookie_name]['cookie_name'] = $cookie_name; 112 $categorized_cookies[$cookie_name]['raw_name'] = $scanned_name; 114 113 $categorized_cookies[$cookie_name]['category'] = $best_match['category']; 115 114 $categorized_cookies[$cookie_name]['description'] = $best_match['description']; -
cookieadmin/trunk/includes/enduser.php
r3384049 r3460841 25 25 wp_enqueue_style('cookieadmin-style', COOKIEADMIN_PLUGIN_URL . 'assets/css/consent.css', [], COOKIEADMIN_VERSION); 26 26 27 wp_enqueue_script('cookieadmin_js', COOKIEADMIN_PLUGIN_URL . 'assets/js/consent.js', [], COOKIEADMIN_VERSION , 'async');27 wp_enqueue_script('cookieadmin_js', COOKIEADMIN_PLUGIN_URL . 'assets/js/consent.js', [], COOKIEADMIN_VERSION); 28 28 29 29 $policy[$view]['ajax_url'] = admin_url('admin-ajax.php'); … … 41 41 $policy[$view]['base_path'] = $base_path; 42 42 43 $policy[$view]['lang']['show_more'] = __('show more', 'cookieadmin'); 44 $policy[$view]['lang']['show_less'] = __('show less', 'cookieadmin'); 43 $policy[$view]['lang']['show_less'] = __('Show less', 'cookieadmin'); 45 44 $policy[$view]['lang']['duration'] = __('Duration', 'cookieadmin'); 46 45 $policy[$view]['lang']['session'] = __('Session', 'cookieadmin'); 46 $policy[$view]['lang']['days'] = __('Days', 'cookieadmin'); 47 47 48 48 // cookieadmin_r_print($policy);die(); … … 95 95 96 96 foreach (self::$categorized_cookies as $item) { 97 $category = strtolower($item->category);98 $patterns = json_decode($item->patterns, true);97 $category = !empty($item->category) ? strtolower($item->category) : ''; 98 $patterns = !empty($item->patterns) ? json_decode($item->patterns, true) : ''; 99 99 100 100 if (!empty($patterns) && !empty($category)) { -
cookieadmin/trunk/includes/functions.php
r3383420 r3460841 54 54 // Enduser loading 55 55 /////////////////////////// 56 57 // Check if our scanner is visiting 58 if(defined('COOKIEADMIN_SCANNER')){ 59 return false; 60 } 56 61 57 62 add_action('wp_enqueue_scripts', '\CookieAdmin\Enduser::enqueue_scripts'); … … 99 104 } 100 105 // === Plugin Update Notice END === // 101 102 106 } 103 107 … … 132 136 133 137 $admin_allowed_actions = array( 134 'scan_cookies' => 'cookieadmin_scan_cookies', 135 'cookieadmin-auto-categorize' => 'cookieadmin_auto_configure_cookies', 136 'cookieadmin-edit-cookie' => 'cookieadmin_edit_cookies', 137 'close-update-notice' => 'close_plugin_update_notice' 138 'scan_cookies' => '\CookieAdmin\Admin\Scan::scan_cookies_ajax', 139 'cookieadmin-edit-cookie' => '\CookieAdmin\Admin\Scan::edit_cookies', 140 'cookieadmin-delete-cookie' => '\CookieAdmin\Admin\Scan::delete_cookies', 141 'close-update-notice' => '\CookieAdmin\Admin::close_plugin_update_notice', 142 'close-notice' => '\CookieAdmin\Admin::close_notices' 138 143 ); 139 144 … … 156 161 } 157 162 158 call_user_func('\CookieAdmin\Admin::'.$admin_allowed_actions[$cookieadmin_fn]); 163 // TODO: Need to test this throughly 164 call_user_func($admin_allowed_actions[$cookieadmin_fn]); 159 165 160 166 }elseif(array_key_exists($cookieadmin_fn, $general_actions)){ … … 207 213 'plugin_url' => esc_url(COOKIEADMIN_PLUGIN_URL), 208 214 'powered_by' => __('Powered by', 'cookieadmin'), 209 'show_more' => __('show more', 'cookieadmin'),210 215 'reconsent' => __('Re-consent', 'cookieadmin'), 211 216 'cookie_preferences' => __('Cookie Preferences', 'cookieadmin'), 212 'remark_standard' => __(' Standard', 'cookieadmin'),217 'remark_standard' => __('Always Active', 'cookieadmin'), 213 218 'remark' => __('Remark', 'cookieadmin'), 214 219 'none' => __('None', 'cookieadmin'), … … 229 234 function cookieadmin_load_consent_template($policy, $view){ 230 235 231 if(!file_exists(COOKIEADMIN_DIR.'assets/cookie/template. json')){236 if(!file_exists(COOKIEADMIN_DIR.'assets/cookie/template.php')){ 232 237 return false; 233 238 } 234 239 235 $content = json_decode(file_get_contents(COOKIEADMIN_DIR.'assets/cookie/template.json'), true);240 include_once(COOKIEADMIN_DIR.'assets/cookie/template.php'); 236 241 237 242 if(empty($content)){ … … 240 245 241 246 $template = array(); 242 $template[$view] = $content['cookieadmin_layout'][$policy['cookieadmin_layout']];247 $template[$view] = ($policy['cookieadmin_layout'] != 'popup') ? $content['cookieadmin_layout'][$policy['cookieadmin_layout']] : ''; 243 248 $template[$view] .= $content['cookieadmin_modal'][$policy['cookieadmin_modal']]; 244 249 $template[$view] .= $content['cookieadmin_reconsent']; -
cookieadmin/trunk/readme.txt
r3412297 r3460841 5 5 Tested up to: 6.9 6 6 Requires PHP: 7.0 7 Stable tag: 1.1. 47 Stable tag: 1.1.5 8 8 License: LGPLv2.1 9 9 License URI: http://www.gnu.org/licenses/lgpl-2.1.html … … 76 76 == Changelog == 77 77 78 = 1.1.5 = 79 * [Pro Feature] Added German (Switzerland), Spanish (Argentina), Finnish and Croatian languages. 80 * [Pro Feature] Introduced monthly automatic cookie scanning across all website pages. 81 * [Pro Feature] Added automatic consent log cleanup with configurable limit. 82 * [Fix] Improved Google Consent Mode v2 compatibility for cached websites. 83 * [Fix] Improved consent saving reliability on cached websites by making frontend requests cache-safe. 84 * [UI] Adjusted Consent Preferences modal description to auto height for better readability and removed Show more button. 85 * [UI] Fixed Re-Consent icon styling issues caused by page builder CSS conflicts. 86 78 87 = 1.1.4 = 79 88 * [Pro Feature] Added Canadian French and Lithuanian languages.
Note: See TracChangeset
for help on using the changeset viewer.