Changeset 3139125
- Timestamp:
- 08/21/2024 02:18:55 PM (20 months ago)
- Location:
- pmpro-discord-add-on
- Files:
-
- 144 added
- 9 edited
-
tags/1.2.20 (added)
-
tags/1.2.20/.gitignore (added)
-
tags/1.2.20/CHANGELOG.txt (added)
-
tags/1.2.20/README.md (added)
-
tags/1.2.20/assets (added)
-
tags/1.2.20/assets/css (added)
-
tags/1.2.20/assets/css/ets-pmpro-discord-style.css (added)
-
tags/1.2.20/assets/css/ets-pmpro-discord-style.min.css (added)
-
tags/1.2.20/assets/css/skeletabs.css (added)
-
tags/1.2.20/assets/images (added)
-
tags/1.2.20/assets/images/ets-logo.png (added)
-
tags/1.2.20/assets/images/icon.png (added)
-
tags/1.2.20/assets/images/ravisoni.png (added)
-
tags/1.2.20/assets/images/spinner.gif (added)
-
tags/1.2.20/assets/images/user-original.png (added)
-
tags/1.2.20/assets/js (added)
-
tags/1.2.20/assets/js/ets-pmpro-add-discord-script.js (added)
-
tags/1.2.20/assets/js/ets-pmpro-add-discord-script.min.js (added)
-
tags/1.2.20/assets/js/jquery.wordpress.js (added)
-
tags/1.2.20/assets/js/skeletabs.js (added)
-
tags/1.2.20/includes (added)
-
tags/1.2.20/includes/classes (added)
-
tags/1.2.20/includes/classes/class-discord-addon-admin-notices.php (added)
-
tags/1.2.20/includes/classes/class-discord-addon-logs.php (added)
-
tags/1.2.20/includes/classes/class-discord-addon-utils.php (added)
-
tags/1.2.20/includes/classes/class-discord-api.php (added)
-
tags/1.2.20/includes/classes/class-pmpro-discord-admin-setting.php (added)
-
tags/1.2.20/includes/functions.php (added)
-
tags/1.2.20/includes/pages (added)
-
tags/1.2.20/includes/pages/advanced.php (added)
-
tags/1.2.20/includes/pages/appearance.php (added)
-
tags/1.2.20/includes/pages/discord-role-level-map.php (added)
-
tags/1.2.20/includes/pages/discord-settings.php (added)
-
tags/1.2.20/includes/pages/documentation.php (added)
-
tags/1.2.20/includes/pages/error_log.php (added)
-
tags/1.2.20/includes/pages/get-support.php (added)
-
tags/1.2.20/includes/template (added)
-
tags/1.2.20/includes/template/notification (added)
-
tags/1.2.20/includes/template/notification/review (added)
-
tags/1.2.20/includes/template/notification/review/review.php (added)
-
tags/1.2.20/languages (added)
-
tags/1.2.20/languages/pmpro-discord.pot (added)
-
tags/1.2.20/libraries (added)
-
tags/1.2.20/libraries/action-scheduler (added)
-
tags/1.2.20/libraries/action-scheduler/README.md (added)
-
tags/1.2.20/libraries/action-scheduler/action-scheduler.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes (added)
-
tags/1.2.20/libraries/action-scheduler/classes/ActionScheduler_ActionClaim.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/ActionScheduler_ActionFactory.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/ActionScheduler_AdminView.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/ActionScheduler_AsyncRequest_QueueRunner.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/ActionScheduler_Compatibility.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/ActionScheduler_DataController.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/ActionScheduler_DateTime.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/ActionScheduler_Exception.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/ActionScheduler_FatalErrorMonitor.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/ActionScheduler_InvalidActionException.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/ActionScheduler_ListTable.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/ActionScheduler_LogEntry.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/ActionScheduler_NullLogEntry.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/ActionScheduler_OptionLock.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/ActionScheduler_QueueCleaner.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/ActionScheduler_QueueRunner.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/ActionScheduler_Versions.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/ActionScheduler_WPCommentCleaner.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/ActionScheduler_wcSystemStatus.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/WP_CLI (added)
-
tags/1.2.20/libraries/action-scheduler/classes/WP_CLI/ActionScheduler_WPCLI_QueueRunner.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/WP_CLI/ActionScheduler_WPCLI_Scheduler_command.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/WP_CLI/Migration_Command.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/WP_CLI/ProgressBar.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/abstracts (added)
-
tags/1.2.20/libraries/action-scheduler/classes/abstracts/ActionScheduler.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/abstracts/ActionScheduler_Abstract_ListTable.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/abstracts/ActionScheduler_Abstract_QueueRunner.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/abstracts/ActionScheduler_Abstract_RecurringSchedule.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/abstracts/ActionScheduler_Abstract_Schedule.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/abstracts/ActionScheduler_Abstract_Schema.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/abstracts/ActionScheduler_Lock.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/abstracts/ActionScheduler_Logger.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/abstracts/ActionScheduler_Store.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/abstracts/ActionScheduler_TimezoneHelper.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/actions (added)
-
tags/1.2.20/libraries/action-scheduler/classes/actions/ActionScheduler_Action.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/actions/ActionScheduler_CanceledAction.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/actions/ActionScheduler_FinishedAction.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/actions/ActionScheduler_NullAction.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/data-stores (added)
-
tags/1.2.20/libraries/action-scheduler/classes/data-stores/ActionScheduler_DBLogger.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/data-stores/ActionScheduler_DBStore.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/data-stores/ActionScheduler_HybridStore.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/data-stores/ActionScheduler_wpCommentLogger.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/data-stores/ActionScheduler_wpPostStore.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/data-stores/ActionScheduler_wpPostStore_PostStatusRegistrar.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/data-stores/ActionScheduler_wpPostStore_PostTypeRegistrar.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/data-stores/ActionScheduler_wpPostStore_TaxonomyRegistrar.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/migration (added)
-
tags/1.2.20/libraries/action-scheduler/classes/migration/ActionMigrator.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/migration/ActionScheduler_DBStoreMigrator.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/migration/BatchFetcher.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/migration/Config.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/migration/Controller.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/migration/DryRun_ActionMigrator.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/migration/DryRun_LogMigrator.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/migration/LogMigrator.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/migration/Runner.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/migration/Scheduler.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/schedules (added)
-
tags/1.2.20/libraries/action-scheduler/classes/schedules/ActionScheduler_CanceledSchedule.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/schedules/ActionScheduler_CronSchedule.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/schedules/ActionScheduler_IntervalSchedule.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/schedules/ActionScheduler_NullSchedule.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/schedules/ActionScheduler_Schedule.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/schedules/ActionScheduler_SimpleSchedule.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/schema (added)
-
tags/1.2.20/libraries/action-scheduler/classes/schema/ActionScheduler_LoggerSchema.php (added)
-
tags/1.2.20/libraries/action-scheduler/classes/schema/ActionScheduler_StoreSchema.php (added)
-
tags/1.2.20/libraries/action-scheduler/deprecated (added)
-
tags/1.2.20/libraries/action-scheduler/deprecated/ActionScheduler_Abstract_QueueRunner_Deprecated.php (added)
-
tags/1.2.20/libraries/action-scheduler/deprecated/ActionScheduler_AdminView_Deprecated.php (added)
-
tags/1.2.20/libraries/action-scheduler/deprecated/ActionScheduler_Schedule_Deprecated.php (added)
-
tags/1.2.20/libraries/action-scheduler/deprecated/ActionScheduler_Store_Deprecated.php (added)
-
tags/1.2.20/libraries/action-scheduler/deprecated/functions.php (added)
-
tags/1.2.20/libraries/action-scheduler/functions.php (added)
-
tags/1.2.20/libraries/action-scheduler/lib (added)
-
tags/1.2.20/libraries/action-scheduler/lib/WP_Async_Request.php (added)
-
tags/1.2.20/libraries/action-scheduler/lib/cron-expression (added)
-
tags/1.2.20/libraries/action-scheduler/lib/cron-expression/CronExpression.php (added)
-
tags/1.2.20/libraries/action-scheduler/lib/cron-expression/CronExpression_AbstractField.php (added)
-
tags/1.2.20/libraries/action-scheduler/lib/cron-expression/CronExpression_DayOfMonthField.php (added)
-
tags/1.2.20/libraries/action-scheduler/lib/cron-expression/CronExpression_DayOfWeekField.php (added)
-
tags/1.2.20/libraries/action-scheduler/lib/cron-expression/CronExpression_FieldFactory.php (added)
-
tags/1.2.20/libraries/action-scheduler/lib/cron-expression/CronExpression_FieldInterface.php (added)
-
tags/1.2.20/libraries/action-scheduler/lib/cron-expression/CronExpression_HoursField.php (added)
-
tags/1.2.20/libraries/action-scheduler/lib/cron-expression/CronExpression_MinutesField.php (added)
-
tags/1.2.20/libraries/action-scheduler/lib/cron-expression/CronExpression_MonthField.php (added)
-
tags/1.2.20/libraries/action-scheduler/lib/cron-expression/CronExpression_YearField.php (added)
-
tags/1.2.20/libraries/action-scheduler/lib/cron-expression/LICENSE (added)
-
tags/1.2.20/libraries/action-scheduler/lib/cron-expression/README.md (added)
-
tags/1.2.20/libraries/action-scheduler/license.txt (added)
-
tags/1.2.20/license.txt (added)
-
tags/1.2.20/pmpro-discord.php (added)
-
tags/1.2.20/readme.txt (added)
-
tags/1.2.20/uninstall.php (added)
-
trunk/CHANGELOG.txt (modified) (1 diff)
-
trunk/assets/css/ets-pmpro-discord-style.css (modified) (1 diff)
-
trunk/assets/css/ets-pmpro-discord-style.min.css (modified) (1 diff)
-
trunk/includes/classes/class-discord-api.php (modified) (2 diffs)
-
trunk/includes/classes/class-pmpro-discord-admin-setting.php (modified) (3 diffs)
-
trunk/includes/functions.php (modified) (1 diff)
-
trunk/includes/pages/advanced.php (modified) (1 diff)
-
trunk/pmpro-discord.php (modified) (2 diffs)
-
trunk/readme.txt (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
pmpro-discord-add-on/trunk/CHANGELOG.txt
r3137481 r3139125 1 = 1.2.20 = 2 - Added handling for cases where Discord user email does not exist, ensuring a temporary email is used. 3 - Implemented the [discord_user_info] shortcode to display the current user's WordPress account name, Discord username, and roles, styled to match Discord's role display format. 4 1 5 = 1.2.19 = 2 6 - Added editable text fields for the messages "Following Roles was assigned to you in Discord:" and "Following Roles will be assigned to you in Discord:" in the Appearance settings. -
pmpro-discord-add-on/trunk/assets/css/ets-pmpro-discord-style.css
r2964072 r3139125 527 527 margin-left: 15px; 528 528 } 529 530 .discord-user-info { 531 background-color: #f9f9f9; 532 padding: 15px; 533 border: 1px solid #ddd; 534 border-radius: 5px; 535 max-width: 400px; 536 margin: 20px 0; 537 font-family: Arial, sans-serif; 538 } 539 540 .discord-user-info p { 541 margin: 10px 0; 542 line-height: 1.6; 543 } 544 545 .discord-user-info strong { 546 color: #333; 547 font-weight: bold; 548 } 549 .discord-role { 550 display: inline-flex; 551 align-items: center; 552 margin: 5px 0; 553 background-color: #232528; 554 color: #BBBEC1; 555 padding-right: 10px; 556 padding-left: 10px; 557 border-radius: 5%; 558 } 559 560 561 .discord-role i { 562 display: inline-block; 563 width: 12px; 564 height: 12px; 565 border-radius: 50%; 566 margin-right: 8px; 567 background-color: #7289DA; 568 } 569 570 .discord-role span { 571 font-size: 14px; 572 color: #ffffff; 573 } 574 -
pmpro-discord-add-on/trunk/assets/css/ets-pmpro-discord-style.min.css
r2964072 r3139125 1 .tab{overflow:hidden}.tab.ets-tabs{margin-top:25px;display:block;width:90%}.tab button:hover{color:#000}.tab button.active{color:#fff;background:#77a02e}#ets_setting{display:none;width:90%}#ets_about_us{display:none;width:90%}.ets-input-group{display:inline-block;width:100%;margin-bottom:10px}.ets-input-group label{margin-bottom:10px;font-size:14px;display:block;font-weight:500;color:#000}.ets-input{width:100%;height:40px;border-radius:0px!important}.ets-input:hover{border-bottom:2px solid #77a02e}.ets-input-group .ets-textarea{width:100%}#ets_setting h3{font-size:20px}.ets-submit{padding:10px 20px;background:#444;color:#fff;font-size:14px;box-shadow:0 0 0 0;border:0}#ets_post_text_ifr{height:250px!important}.ets-input-group #ets_renewal_mail_body_ifr{height:250px!important}.ets-btn{padding:10px 20px;color:#fff;font-size:14px;box-shadow:0 0 0 0;border:0;text-decoration:none;display:inline-block;font-weight:600;letter-spacing:.0333em;line-height:1.25;margin:0;opacity:1;text-transform:uppercase}.ets-btn.pmpro-btn-connect-to-bot{font-weight:400;display:none;text-transform:none}.ets-btn.not-active{pointer-events:none;cursor:default;text-decoration:none;background-color:#77A02E;color:#fff}.ets-btn.error-bk{cursor:cursor;text-decoration:none;background-color:red}.error-log{height:400px;overflow:scroll}.pmpro-btn-connect-to-bot{background-color:red}.pmpro-clrbtndiv{display:flex}.pmpro-clrbtndiv .form-group{display:flex;align-items:center}.pmpro-clrbtndiv .form-group .spinner{margin:10px 10px 0}.ets-bg-red{background-color:#FF0000!important;color:#fff}.ets-bg-green{background-color:#77A02E!important;color:#fff}.ets-pmpro-bg-download{background-color:#2CA450!important;color:#fff}.ets-submit.ets-pmpro-bg-download{margin:0 2px}.wp-core-ui .notice.is-dismissible.support-success-msg{position:fixed;top:10%;right:0}a{text-decoration:none}.contact-form{min-height:100vh;background-color:#f1f1f1}.pr-100{padding-right:100px}.ets-mt-5{margin-top:3rem!important}.ets-align-items-center{align-items:center}.ets-container{max-width:1140px;display:block;margin:auto}.contact-form{display:inline-block;width:100%;padding:50px 0;text-align:center}.ets-row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.ets-col-7{flex:0 0 58.333333%;max-width:58.333333%;padding:0 15px;box-sizing:border-box}.ets-col-3{flex:0 0 25%;max-width:25%;padding:0 15px;box-sizing:border-box}.ets-offset-md-1{margin-left:8.333333%}.ets-form-group{margin-bottom:16px}.contact-form .top-logo-title img{width:200px}.contact-form .top-logo-title h1{margin:30px 0 20px;font-size:29px;font-weight:700}.contact-form .top-logo-title p{font-size:14px;color:#232323}.contact-fields .contact-input{display:block;height:40px;width:100%;padding:.375rem .75rem;font-size:14px;border-radius:0px!important;box-sizing:border-box}.contact-input:hover{border-bottom:2px solid #77a02e}.contact-fields label{font-size:14px;margin-bottom:5px}.contact-textarea:hover{border-bottom:2px solid #77a02e}.contact-textarea{display:block;width:100%;height:65px;background-color:#fff;box-shadow:0 0 0 0;border:1px solid #ced4da;box-sizing:border-box;border-radius:0px!important}.right-side-box{position:relative;min-height:150px;background-color:#444;margin-left:-90px;padding:20px 15px}.contact-fields{display:inline-block;width:100%;padding:35px 100px 35px 15px;background-color:#fff;text-align:left;box-sizing:border-box}.top-icon-title i{font-size:26px;color:#fff;margin-right:15px}.top-icon-title p{margin:0;font-size:16px;font-weight:600;color:#fff}.contact-details .contact-body p{font-size:14px;margin-bottom:5px;color:#fff;text-align:left}.contact-details .contact-body p a{color:#fff}.contact-details{display:inline-block;width:100%;margin-bottom:20px}.contact-details .top-icon-title{display:inline-flex;align-items:center;width:100%}.contact-details .contact-body{margin-top:16px}.submit-btn{display:flex;align-items:center;width:100%;padding-top:16px}.contact-form .btn-submit{background-color:#444;color:#fff;border-radius:0;padding:10px 20px;font-size:14px;border:1px solid transparent}.contact-form .btn-submit:hover,.contact-form .btn-submit:focus{background-color:#fff;color:#444;border:1px solid #444;box-shadow:0 0 0}.btn-skype{background-color:#0078d7;color:#fff;border-radius:0;padding:10px 20px;font-size:14px;border:1px solid transparent;margin-left:auto}.btn-skype:hover,.btn-skype:focus{background-color:#fff;color:#0078d7;border-color:#0078d7}.ets_assigned_role{font-size:10px;margin-top:5px}.ets-danger-text{color:#FF0000!important}.top-icon-title svg{margin-right:5px}@media (max-width:992px) and (min-width:768px){.contact-details .contact-body p{font-size:12px}.right-side-box{padding:20px 10px}}@media (max-width:768px){.form-fields-box{padding:0 20px}.pr-100{padding-right:15px}.right-side-box{margin-left:0;margin-top:20px}.ets-container{max-width:100%}.ets-col-7{max-width:100%;flex:0 0 100%}.ets-offset-md-1{margin-left:0}.ets-col-3{flex:0 0 100%;max-width:100%}}*{box-sizing:border-box}.ets-column{float:left;width:50%;padding:10px;height:auto;text-align:center;min-height:300px}.pmpro-discord-roles-col{border:2px dashed transparent;transition:ease 0.3s}.ets-spinner{background:url(../images/spinner.gif) no-repeat;background-size:auto;background-size:20px 20px;display:inline-block;visibility:hidden;vertical-align:middle;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:4px 10px 0}.ets-is-active{visibility:visible}.pmpro-discord-roles .spinner,.initialtab.spinner{float:none}.hoverActive{border:2px dashed #275EE8}.row-container:after{content:"";display:table;clear:both}.makeMeDraggable{background-color:#275EE8;padding:10px;color:#fff;margin-bottom:10px;width:100%;cursor:all-scroll}.makeMeDroppable{background-color:#77A02E;margin-bottom:10px;color:#fff;width:100%;display:flex}.makeMeDroppable span{width:100%;padding:10px}div.bottom-btn{margin-top:10px;text-align:center}div.mapping-json{text-align:center;margin-top:10px}#pmpro_maaping_json_val{width:50%;display:none}.notice.ets-notice{background-color:rgba(51,170,51,.1);margin-bottom:10px}.isa_error{color:#D8000C;background-color:#FFD2D2}.isa_info{color:#00529B;background-color:#BDE5F8}.isa_info i,.isa_success i,.isa_warning i,.isa_error i{margin:10px 22px;font-size:2em;vertical-align:middle}.pmpro-discord-roles .spinner,.initialtab.spinner{display:inline-block}.spinner{display:none}select#defaultRole{border-radius:0}[data-identity="level-mapping"]{display:none}.right-side-box .svg-inline--fa{color:#77a02e}.ets-save-success{display:none;color:#2ca450}.ets_pmpro_discord_dm_textarea{height:130px}.ets_assigned_role>span{padding:0 7px;border-radius:12px;color:#fff;display:inline-flex;flex-direction:row;align-items:center;background-color:#28303d;margin-right:5px}.ets_assigned_role>span>i{width:100%;height:14px;display:inline-block;border-radius:20%;margin-right:6px}div.ets-pmpro-discord-review-notice{background-color:#FFF;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.15);box-shadow:0 1px 4px rgba(0,0,0,.15);display:-webkit-box;display:-ms-flexbox;display:flex;padding:0!important;position:relative}div.ets-pmpro-discord-review-notice div.ets-pmpro-discord-notice-icon{background-image:url(../../assets/images/icon.png);background-position:left center;background-repeat:no-repeat;background-size:contain;min-width:150px}div.ets-pmpro-discord-review-notice div.ets-pmpro-discord-notice-content{padding:20px}div.ets-pmpro-discord-review-notice div.ets-pmpro-discord-notice-content p.ets-pmpro-signature{display:flex;align-items:center}div.ets-pmpro-discord-review-notice div.ets-pmpro-discord-notice-content img{width:45px;height:auto;border-radius:50%;margin-left:15px}1 .tab{overflow:hidden}.tab.ets-tabs{margin-top:25px;display:block;width:90%}.tab button:hover{color:#000}.tab button.active{color:#fff;background:#77a02e}#ets_setting{display:none;width:90%}#ets_about_us{display:none;width:90%}.ets-input-group{display:inline-block;width:100%;margin-bottom:10px}.ets-input-group label{margin-bottom:10px;font-size:14px;display:block;font-weight:500;color:#000}.ets-input{width:100%;height:40px;border-radius:0px!important}.ets-input:hover{border-bottom:2px solid #77a02e}.ets-input-group .ets-textarea{width:100%}#ets_setting h3{font-size:20px}.ets-submit{padding:10px 20px;background:#444;color:#fff;font-size:14px;box-shadow:0 0 0 0;border:0}#ets_post_text_ifr{height:250px!important}.ets-input-group #ets_renewal_mail_body_ifr{height:250px!important}.ets-btn{padding:10px 20px;color:#fff;font-size:14px;box-shadow:0 0 0 0;border:0;text-decoration:none;display:inline-block;font-weight:600;letter-spacing:.0333em;line-height:1.25;margin:0;opacity:1;text-transform:uppercase}.ets-btn.pmpro-btn-connect-to-bot{font-weight:400;display:none;text-transform:none}.ets-btn.not-active{pointer-events:none;cursor:default;text-decoration:none;background-color:#77A02E;color:#fff}.ets-btn.error-bk{cursor:cursor;text-decoration:none;background-color:red}.error-log{height:400px;overflow:scroll}.pmpro-btn-connect-to-bot{background-color:red}.pmpro-clrbtndiv{display:flex}.pmpro-clrbtndiv .form-group{display:flex;align-items:center}.pmpro-clrbtndiv .form-group .spinner{margin:10px 10px 0}.ets-bg-red{background-color:#FF0000!important;color:#fff}.ets-bg-green{background-color:#77A02E!important;color:#fff}.ets-pmpro-bg-download{background-color:#2CA450!important;color:#fff}.ets-submit.ets-pmpro-bg-download{margin:0 2px}.wp-core-ui .notice.is-dismissible.support-success-msg{position:fixed;top:10%;right:0}a{text-decoration:none}.contact-form{min-height:100vh;background-color:#f1f1f1}.pr-100{padding-right:100px}.ets-mt-5{margin-top:3rem!important}.ets-align-items-center{align-items:center}.ets-container{max-width:1140px;display:block;margin:auto}.contact-form{display:inline-block;width:100%;padding:50px 0;text-align:center}.ets-row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.ets-col-7{flex:0 0 58.333333%;max-width:58.333333%;padding:0 15px;box-sizing:border-box}.ets-col-3{flex:0 0 25%;max-width:25%;padding:0 15px;box-sizing:border-box}.ets-offset-md-1{margin-left:8.333333%}.ets-form-group{margin-bottom:16px}.contact-form .top-logo-title img{width:200px}.contact-form .top-logo-title h1{margin:30px 0 20px;font-size:29px;font-weight:700}.contact-form .top-logo-title p{font-size:14px;color:#232323}.contact-fields .contact-input{display:block;height:40px;width:100%;padding:.375rem .75rem;font-size:14px;border-radius:0px!important;box-sizing:border-box}.contact-input:hover{border-bottom:2px solid #77a02e}.contact-fields label{font-size:14px;margin-bottom:5px}.contact-textarea:hover{border-bottom:2px solid #77a02e}.contact-textarea{display:block;width:100%;height:65px;background-color:#fff;box-shadow:0 0 0 0;border:1px solid #ced4da;box-sizing:border-box;border-radius:0px!important}.right-side-box{position:relative;min-height:150px;background-color:#444;margin-left:-90px;padding:20px 15px}.contact-fields{display:inline-block;width:100%;padding:35px 100px 35px 15px;background-color:#fff;text-align:left;box-sizing:border-box}.top-icon-title i{font-size:26px;color:#fff;margin-right:15px}.top-icon-title p{margin:0;font-size:16px;font-weight:600;color:#fff}.contact-details .contact-body p{font-size:14px;margin-bottom:5px;color:#fff;text-align:left}.contact-details .contact-body p a{color:#fff}.contact-details{display:inline-block;width:100%;margin-bottom:20px}.contact-details .top-icon-title{display:inline-flex;align-items:center;width:100%}.contact-details .contact-body{margin-top:16px}.submit-btn{display:flex;align-items:center;width:100%;padding-top:16px}.contact-form .btn-submit{background-color:#444;color:#fff;border-radius:0;padding:10px 20px;font-size:14px;border:1px solid #fff0}.contact-form .btn-submit:hover,.contact-form .btn-submit:focus{background-color:#fff;color:#444;border:1px solid #444;box-shadow:0 0 0}.btn-skype{background-color:#0078d7;color:#fff;border-radius:0;padding:10px 20px;font-size:14px;border:1px solid #fff0;margin-left:auto}.btn-skype:hover,.btn-skype:focus{background-color:#fff;color:#0078d7;border-color:#0078d7}.ets_assigned_role{font-size:10px;margin-top:5px}.ets-danger-text{color:#FF0000!important}.top-icon-title svg{margin-right:5px}@media (max-width:992px) and (min-width:768px){.contact-details .contact-body p{font-size:12px}.right-side-box{padding:20px 10px}}@media (max-width:768px){.form-fields-box{padding:0 20px}.pr-100{padding-right:15px}.right-side-box{margin-left:0;margin-top:20px}.ets-container{max-width:100%}.ets-col-7{max-width:100%;flex:0 0 100%}.ets-offset-md-1{margin-left:0}.ets-col-3{flex:0 0 100%;max-width:100%}}*{box-sizing:border-box}.ets-column{float:left;width:50%;padding:10px;height:auto;text-align:center;min-height:300px}.pmpro-discord-roles-col{border:2px dashed #fff0;transition:ease 0.3s}.ets-spinner{background:url(../images/spinner.gif) no-repeat;background-size:auto;background-size:20px 20px;display:inline-block;visibility:hidden;vertical-align:middle;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:4px 10px 0}.ets-is-active{visibility:visible}.pmpro-discord-roles .spinner,.initialtab.spinner{float:none}.hoverActive{border:2px dashed #275EE8}.row-container:after{content:"";display:table;clear:both}.makeMeDraggable{background-color:#275EE8;padding:10px;color:#fff;margin-bottom:10px;width:100%;cursor:all-scroll}.makeMeDroppable{background-color:#77A02E;margin-bottom:10px;color:#fff;width:100%;display:flex}.makeMeDroppable span{width:100%;padding:10px}div.bottom-btn{margin-top:10px;text-align:center}div.mapping-json{text-align:center;margin-top:10px}#pmpro_maaping_json_val{width:50%;display:none}.notice.ets-notice{background-color:rgb(51 170 51 / .1);margin-bottom:10px}.isa_error{color:#D8000C;background-color:#FFD2D2}.isa_info{color:#00529B;background-color:#BDE5F8}.isa_info i,.isa_success i,.isa_warning i,.isa_error i{margin:10px 22px;font-size:2em;vertical-align:middle}.pmpro-discord-roles .spinner,.initialtab.spinner{display:inline-block}.spinner{display:none}select#defaultRole{border-radius:0}[data-identity="level-mapping"]{display:none}.right-side-box .svg-inline--fa{color:#77a02e}.ets-save-success{display:none;color:#2ca450}.ets_pmpro_discord_dm_textarea{height:130px}.ets_assigned_role>span{padding:0 7px;border-radius:12px;color:#fff;display:inline-flex;flex-direction:row;align-items:center;background-color:#28303d;margin-right:5px}.ets_assigned_role>span>i{width:100%;height:14px;display:inline-block;border-radius:20%;margin-right:6px}div.ets-pmpro-discord-review-notice{background-color:#FFF;-webkit-box-shadow:0 1px 4px rgb(0 0 0 / .15);box-shadow:0 1px 4px rgb(0 0 0 / .15);display:-webkit-box;display:-ms-flexbox;display:flex;padding:0!important;position:relative}div.ets-pmpro-discord-review-notice div.ets-pmpro-discord-notice-icon{background-image:url(../../assets/images/icon.png);background-position:left center;background-repeat:no-repeat;background-size:contain;min-width:150px}div.ets-pmpro-discord-review-notice div.ets-pmpro-discord-notice-content{padding:20px}div.ets-pmpro-discord-review-notice div.ets-pmpro-discord-notice-content p.ets-pmpro-signature{display:flex;align-items:center}div.ets-pmpro-discord-review-notice div.ets-pmpro-discord-notice-content img{width:45px;height:auto;border-radius:50%;margin-left:15px}.discord-user-info{background-color:#f9f9f9;padding:15px;border:1px solid #ddd;border-radius:5px;max-width:400px;margin:20px 0;font-family:Arial,sans-serif}.discord-user-info p{margin:10px 0;line-height:1.6}.discord-user-info strong{color:#333;font-weight:700}.discord-role{display:inline-flex;align-items:center;margin:5px 0;background-color:#232528;color:#BBBEC1;padding-right:10px;padding-left:10px;border-radius:5%}.discord-role i{display:inline-block;width:12px;height:12px;border-radius:50%;margin-right:8px;background-color:#7289DA}.discord-role span{font-size:14px;color:#fff} -
pmpro-discord-add-on/trunk/includes/classes/class-discord-api.php
r3137481 r3139125 614 614 if ( is_array( $res_body ) ) { 615 615 if ( array_key_exists( 'access_token', $res_body ) ) { 616 $access_token = sanitize_text_field( trim( $res_body['access_token'] ) ); 617 $user_body = $this->get_discord_current_user( $access_token ); 618 $discord_user_email = $user_body['email']; 616 $access_token = sanitize_text_field( trim( $res_body['access_token'] ) ); 617 $user_body = $this->get_discord_current_user( $access_token ); 618 $temporary_email = $user_body['id'] . '@placeholder.email'; 619 $discord_user_email = ( ! empty( $user_body['email'] ) ) ? $user_body['email'] : $temporary_email; 620 619 621 $password = wp_generate_password( 12, true, false ); 620 622 if ( email_exists( $discord_user_email ) ) { … … 623 625 } else { 624 626 $user_id = wp_create_user( $discord_user_email, $password, $discord_user_email ); 627 add_user_meta( $user_id, 'email_needs_update', true ); 625 628 wp_new_user_notification( $user_id, null, $password ); 626 629 } -
pmpro-discord-add-on/trunk/includes/classes/class-pmpro-discord-admin-setting.php
r3137481 r3139125 18 18 // Add new button in pmpro profile 19 19 add_shortcode( 'discord_connect_button', array( $this, 'ets_pmpro_discord_add_connect_discord_button' ) ); 20 // Add new shortcode to fetch and display the Discord username, account name, and roles linked to a user's membership 21 add_shortcode( 'discord_user_info', array( $this, 'ets_pmpro_discord_display_user_info' ) ); 22 20 23 21 24 add_action( 'pmpro_show_user_profile', array( $this, 'ets_pmpro_show_discord_button' ) ); … … 195 198 196 199 } 200 201 /** 202 * Fetch and display the Discord username, WordPress account name, and roles linked to a user's membership. 203 * 204 * @return string|null The formatted HTML string containing the Discord username, WordPress account name, and roles. 205 */ 206 public function ets_pmpro_discord_display_user_info(){ 207 $user_id = get_current_user_id(); 208 if ( ! $user_id ) { 209 return 'You must be logged in to view this information.'; 210 } 211 wp_enqueue_style( 'ets_pmpro_add_discord_style' ); 212 213 $discord_user_name = sanitize_text_field( trim( get_user_meta( $user_id, '_ets_pmpro_discord_username', true ) ) ); 214 $wp_account_name = get_the_author_meta('display_name', $user_id); 215 $all_roles = unserialize( get_option( 'ets_pmpro_discord_all_roles' ) ); 216 $roles_color = unserialize( get_option( 'ets_pmpro_discord_roles_color' ) ); 217 $default_role = sanitize_text_field( trim( get_option( '_ets_pmpro_discord_default_role_id' ) ) ); 218 $ets_pmpor_discord_role_mapping = json_decode( get_option( 'ets_pmpor_discord_role_mapping' ), true ); 219 $curr_level_id = ets_pmpro_discord_get_current_level_id( $user_id ); 220 221 if ( substr( $discord_user_name,-2) === '#0'){ 222 $discord_user_name = substr( $discord_user_name, 0, -2 ); 223 } 224 $mapped_role_name = ''; 225 226 if ( $curr_level_id && is_array( $all_roles ) ) { 227 if ( is_array( $ets_pmpor_discord_role_mapping ) && array_key_exists( 'pmpro_level_id_' . $curr_level_id, $ets_pmpor_discord_role_mapping ) ) { 228 $mapped_role_id = $ets_pmpor_discord_role_mapping[ 'pmpro_level_id_' . $curr_level_id ]; 229 if ( array_key_exists( $mapped_role_id, $all_roles ) ) { 230 $mapped_role_name = '<span class="discord-role"> <i style="background-color:#' . dechex( $roles_color[ $mapped_role_id ] ) . '"></i>' . $all_roles[ $mapped_role_id ] . '</span>'; 231 } 232 } 233 } 234 235 $default_role_name = ''; 236 if ( $default_role != 'none' && is_array( $all_roles ) && array_key_exists( $default_role, $all_roles ) ) { 237 $default_role_name = '<span class="discord-role"> <i style="background-color:#' . dechex( $roles_color[ $default_role ] ) . '"></i>' . $all_roles[ $default_role ] . '</span>'; 238 } 239 240 $output = '<div class="discord-user-info">'; 241 $output .= '<p><strong>Account Name:</strong> ' . esc_html($wp_account_name) . '</p>'; 242 $output .= '<p><strong>Discord Username:</strong> ' . esc_html($discord_user_name) . '</p>'; 243 if ( $mapped_role_name ) { 244 $output .= '<p><strong>Assigned Discord Role:</strong> ' . ets_pmpro_discord_allowed_html( $mapped_role_name ) . '</p>'; 245 } 246 if ( $default_role_name ) { 247 $output .= '<p><strong>Default Discord Role:</strong> ' . ets_pmpro_discord_allowed_html( $default_role_name ) . '</p>'; 248 } 249 $output .= '</div>'; 250 251 return $output; 252 } 253 197 254 198 255 /** … … 357 414 */ 358 415 public function ets_pmpro_discord_add_script() { 416 $min = ( WP_DEBUG) ? '' : '.min'; 359 417 wp_register_style( 360 418 'ets_pmpro_add_discord_style', 361 ETS_PMPRO_DISCORD_URL . 'assets/css/ets-pmpro-discord-style .min.css',419 ETS_PMPRO_DISCORD_URL . 'assets/css/ets-pmpro-discord-style' . $min . '.css', 362 420 false, 363 421 ETS_PMPRO_VERSION -
pmpro-discord-add-on/trunk/includes/functions.php
r2737604 r3139125 312 312 function ets_pmpro_discord_allowed_html( $html_message ) { 313 313 $allowed_html = array( 314 'span' => array( ),314 'span' => array( 'class' =>array()), 315 315 'i' => array( 316 316 'style' => array() -
pmpro-discord-add-on/trunk/includes/pages/advanced.php
r2917053 r3139125 28 28 <table class="form-table" role="presentation"> 29 29 <tbody> 30 <tr> 31 <th scope="row"><?php echo __( 'Shortcode', 'pmpro-discord-add-on' ); ?></th> 32 <td> <fieldset> 33 [discord_connect_button] 34 <br/> 35 <small><?php echo __( ' Using the shortcode [discord_connect_button] on any page, anyone can join the website discord server by authentication via member discord account. New members will get default role if selected in the setting.', 'pmpro-discord-add-on' ); ?></small> 36 </fieldset></td> 37 </tr> 30 <tr> 31 <th scope="row"><?php echo __( 'Shortcode', 'pmpro-discord-add-on' ); ?></th> 32 <td> <fieldset> 33 [discord_connect_button] 34 <br/> 35 <small><?php echo __( 'Using the shortcode [discord_connect_button] on any page, anyone can join the website Discord server by authenticating via their Discord account. New members will get the default role if selected in the settings.', 'pmpro-discord-add-on' ); ?></small> 36 </fieldset></td> 37 </tr> 38 <tr> 39 <th scope="row"><?php echo __( 'Shortcode', 'pmpro-discord-add-on' ); ?></th> 40 <td> <fieldset> 41 [discord_user_info] 42 <br/> 43 <small><?php echo __( 'The [discord_user_info] shortcode displays the current user\'s WordPress account name, Discord username, and any roles assigned to them. This information is styled to mimic Discord\'s role display format.', 'pmpro-discord-add-on' ); ?></small> 44 </fieldset></td> 45 </tr> 46 38 47 <tr> 39 48 <th scope="row"><?php echo __( 'Use rich embed messaging feature?', 'pmpro-discord-add-on' ); ?></th> -
pmpro-discord-add-on/trunk/pmpro-discord.php
r3137481 r3139125 4 4 * Plugin URI: https://www.expresstechsoftwares.com/step-by-step-documentation-guide-on-how-to-connect-pmpro-and-discord-server-using-discord-addon 5 5 * Description: Connect your PaidMebershipPro site to your discord server, enable your members to be part of your community. 6 * Version: 1.2. 196 * Version: 1.2.20 7 7 * Author: ExpressTech Software Solutions Pvt. Ltd., Strangers Studios 8 8 * Author URI: https://www.expresstechsoftwares.com … … 15 15 16 16 // create plugin version constant. 17 define( 'ETS_PMPRO_VERSION', '1.2. 19' );17 define( 'ETS_PMPRO_VERSION', '1.2.20' ); 18 18 19 19 // create plugin url constant. -
pmpro-discord-add-on/trunk/readme.txt
r3137481 r3139125 8 8 Tested up to: 6.5 9 9 Requires PHP: 7.0 10 Stable tag: 1.2. 1910 Stable tag: 1.2.20 11 11 License: GPLv2 12 12 License URI: https://www.gnu.org/licenses/gpl-2.0.html
Note: See TracChangeset
for help on using the changeset viewer.