From 9d532d6220138f886cc225d571b2fac3b136a9ef Mon Sep 17 00:00:00 2001 From: Kimberly Coleman Date: Wed, 22 Jan 2020 15:18:42 -0500 Subject: [PATCH 01/27] Adding Check gateway payment instuctions to filtered confirmation message text. --- pmpro-approvals.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pmpro-approvals.php b/pmpro-approvals.php index d42ebe2..bcaad3c 100644 --- a/pmpro-approvals.php +++ b/pmpro-approvals.php @@ -96,7 +96,7 @@ public static function init() { //Add code for filtering checkouts, confirmation, and content filters add_filter( 'pmpro_non_member_text_filter', array( 'PMPro_Approvals', 'pmpro_non_member_text_filter' ) ); add_action( 'pmpro_account_bullets_top', array( 'PMPro_Approvals', 'pmpro_account_bullets_top' ) ); - add_filter( 'pmpro_confirmation_message', array( 'PMPro_Approvals', 'pmpro_confirmation_message' ) ); + add_filter( 'pmpro_confirmation_message', array( 'PMPro_Approvals', 'pmpro_confirmation_message' ), 10, 2 ); add_action( 'pmpro_before_change_membership_level', array( 'PMPro_Approvals', 'pmpro_before_change_membership_level' ), 10, 2 ); add_action( 'pmpro_after_change_membership_level', array( 'PMPro_Approvals', 'pmpro_after_change_membership_level' ), 10, 2 ); @@ -1131,7 +1131,7 @@ public static function pmpro_members_list_user( $user ) { /** * Custom confirmation message for levels that requires approval. */ - public static function pmpro_confirmation_message( $confirmation_message ) { + public static function pmpro_confirmation_message( $confirmation_message, $pmpro_invoice ) { global $current_user; @@ -1153,6 +1153,12 @@ public static function pmpro_confirmation_message( $confirmation_message ) { $confirmation_message = '

' . sprintf( __( 'Thank you for your membership to %1$s. Your %2$s membership status is: %3$s.', 'pmpro-approvals' ), get_bloginfo( 'name' ), $current_user->membership_level->name, $approval_status ) . '

'; + // Check instructions + if ( $pmpro_invoice->gateway == "check" && ! pmpro_isLevelFree( $pmpro_invoice->membership_level ) ) { + $confirmation_message .= '
' . wpautop( wp_unslash( pmpro_getOption("instructions") ) ) . '
'; + } + + $confirmation_message .= '

' . sprintf( __( 'Below are details about your membership account and a receipt for your initial membership invoice. A welcome email with a copy of your initial membership invoice has been sent to %s.', 'pmpro-approvals' ), $current_user->user_email ) . '

'; return $confirmation_message; From c71fdb6f4f359daed6dd6cc5ab74294992669758 Mon Sep 17 00:00:00 2001 From: Kimberly Coleman Date: Thu, 23 Jan 2020 08:50:29 -0500 Subject: [PATCH 02/27] fixing warning when checkout for free level and $pmpro_invoice is false. --- pmpro-approvals.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pmpro-approvals.php b/pmpro-approvals.php index bcaad3c..ff89ace 100644 --- a/pmpro-approvals.php +++ b/pmpro-approvals.php @@ -1154,7 +1154,7 @@ public static function pmpro_confirmation_message( $confirmation_message, $pmpro $confirmation_message = '

' . sprintf( __( 'Thank you for your membership to %1$s. Your %2$s membership status is: %3$s.', 'pmpro-approvals' ), get_bloginfo( 'name' ), $current_user->membership_level->name, $approval_status ) . '

'; // Check instructions - if ( $pmpro_invoice->gateway == "check" && ! pmpro_isLevelFree( $pmpro_invoice->membership_level ) ) { + if ( ! empty( $pmpro_invoice ) && $pmpro_invoice->gateway == "check" && ! pmpro_isLevelFree( $pmpro_invoice->membership_level ) ) { $confirmation_message .= '
' . wpautop( wp_unslash( pmpro_getOption("instructions") ) ) . '
'; } From 70ecd8db79eade875d0089cebba767f6d0f93f53 Mon Sep 17 00:00:00 2001 From: JarrydLong Date: Thu, 20 Feb 2020 14:03:26 +0200 Subject: [PATCH 03/27] Fixed Undefined Variable Fixes #115 --- adminpages/approvals.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adminpages/approvals.php b/adminpages/approvals.php index 97a017b..18a1554 100644 --- a/adminpages/approvals.php +++ b/adminpages/approvals.php @@ -205,7 +205,7 @@ class="alternate"> first_name . ' ' . $theuser->last_name ); ?> user_email; ?> - + membership; From 6c50937dcd4239c84c377d4d0b7035fc50ca63fa Mon Sep 17 00:00:00 2001 From: JarrydLong Date: Thu, 27 Feb 2020 15:08:07 +0200 Subject: [PATCH 04/27] PHP Notice Fixed #113 Trying to get property of non-object when emails are sent - Fixed --- classes/class.approvalemails.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/class.approvalemails.php b/classes/class.approvalemails.php index 7c8ba0c..dc25a2e 100644 --- a/classes/class.approvalemails.php +++ b/classes/class.approvalemails.php @@ -113,8 +113,8 @@ public function sendAdminPending( $member = null, $admin = null ) { $this->body = file_get_contents( PMPRO_APP_DIR . '/email/admin_notification.html' ); $this->data = array( 'subject' => $this->subject, - 'name' => $admin->display_name, - 'user_login' => $admin->user_login, + 'name' => isset( $admin->display_name ) ? $admin->display_name : "", + 'user_login' => isset( $admin->user_login ) ? $admin->user_login : "", 'sitename' => get_option( 'blogname' ), 'siteemail' => pmpro_getOption( 'from_email' ), 'login_link' => wp_login_url(), From aad6c5ac04dc39fc10c94c64d17b90f69235750e Mon Sep 17 00:00:00 2001 From: Ronald Huereca Date: Mon, 16 Mar 2020 12:09:29 -0500 Subject: [PATCH 05/27] Ensuring approvals load only after all plugins have loaded to prevent loading too early. --- pmpro-approvals.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pmpro-approvals.php b/pmpro-approvals.php index ff89ace..968d9eb 100644 --- a/pmpro-approvals.php +++ b/pmpro-approvals.php @@ -12,7 +12,13 @@ define( 'PMPRO_APP_DIR', dirname( __FILE__ ) ); -require PMPRO_APP_DIR . '/classes/class.approvalemails.php'; +/** + * Only load approvals after plugins have been loaded. Otherwise it may be loaded too early (e.g., before PMPro). + */ +function pmpro_approvals_plugins_loaded() { + require PMPRO_APP_DIR . '/classes/class.approvalemails.php'; +} +add_action( 'plugins_loaded', 'pmpro_approvals_plugins_loaded' ); class PMPro_Approvals { /* From 6a5429208c30952058534d43439b1a3f246faae3 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 16 Sep 2020 21:08:39 +0200 Subject: [PATCH 06/27] Add SQL filters to getApprovals method Add filter `pmpro_approvals_pending_approvals_sql_parts` that filters SQL parts for the query to fetch all users pending approval. Add filter `pmpro_approvals_pending_approvals_sql` that filters final SQL string for the query to fetch all users pending approval. Closes #123 --- pmpro-approvals.php | 81 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 68 insertions(+), 13 deletions(-) diff --git a/pmpro-approvals.php b/pmpro-approvals.php index 968d9eb..d9428cb 100644 --- a/pmpro-approvals.php +++ b/pmpro-approvals.php @@ -817,37 +817,92 @@ public static function getApprovals( $l = false, $s = '', $status = 'pending', $ $end = $pn * $limit; $start = $end - $limit; - $sqlQuery = "SELECT SQL_CALC_FOUND_ROWS u.ID, u.user_login, u.user_email, UNIX_TIMESTAMP(u.user_registered) as joindate, mu.membership_id, mu.initial_payment, mu.billing_amount, mu.cycle_period, mu.cycle_number, mu.billing_limit, mu.trial_amount, mu.trial_limit, UNIX_TIMESTAMP(mu.startdate) as startdate, UNIX_TIMESTAMP(mu.enddate) as enddate, m.name as membership FROM $wpdb->users u LEFT JOIN $wpdb->pmpro_memberships_users mu ON u.ID = mu.user_id LEFT JOIN $wpdb->pmpro_membership_levels m ON mu.membership_id = m.id "; + $sql_parts = array(); + $sql_parts['SELECT'] = "SELECT SQL_CALC_FOUND_ROWS u.ID, u.user_login, u.user_email, UNIX_TIMESTAMP(u.user_registered) as joindate, mu.membership_id, mu.initial_payment, mu.billing_amount, mu.cycle_period, mu.cycle_number, mu.billing_limit, mu.trial_amount, mu.trial_limit, UNIX_TIMESTAMP(mu.startdate) as startdate, UNIX_TIMESTAMP(mu.enddate) as enddate, m.name as membership FROM $wpdb->users u "; + $sql_parts['JOIN'] = "LEFT JOIN $wpdb->pmpro_memberships_users mu ON u.ID = mu.user_id LEFT JOIN $wpdb->pmpro_membership_levels m ON mu.membership_id = m.id "; + $sql_parts['WHERE'] = "WHERE mu.status = 'active' AND mu.membership_id > 0 "; + $sql_parts['GROUP'] = ""; + $sql_parts['LIMIT'] = "LIMIT $start, $limit"; if ( ! empty( $status ) && $status != 'all' ) { - $sqlQuery .= "LEFT JOIN $wpdb->usermeta um ON um.user_id = u.ID AND um.meta_key LIKE CONCAT('pmpro_approval_', mu.membership_id) "; + $sql_parts['JOIN'] .= "LEFT JOIN $wpdb->usermeta um ON um.user_id = u.ID AND um.meta_key LIKE CONCAT('pmpro_approval_', mu.membership_id) "; } - $sqlQuery .= "WHERE mu.status = 'active' AND mu.membership_id > 0 "; - if ( ! empty( $s ) ) { - $sqlQuery .= "AND (u.user_login LIKE '%" . esc_sql( $s ) . "%' OR u.user_email LIKE '%" . esc_sql( $s ) . "%' OR u.display_name LIKE '%" . esc_sql( $s ) . "%') "; + $sql_parts['WHERE'] .= "AND (u.user_login LIKE '%" . esc_sql( $s ) . "%' OR u.user_email LIKE '%" . esc_sql( $s ) . "%' OR u.display_name LIKE '%" . esc_sql( $s ) . "%') "; } if ( $l ) { - $sqlQuery .= " AND mu.membership_id = '" . esc_sql( $l ) . "' "; + $sql_parts['WHERE'] .= "AND mu.membership_id = '" . esc_sql( $l ) . "' "; } else { - $sqlQuery .= ' AND mu.membership_id IN(' . implode( ',', self::getApprovalLevels() ) . ') '; + $sql_parts['WHERE'] .= "AND mu.membership_id IN(" . implode( ',', self::getApprovalLevels() ) . ") "; } if ( ! empty( $status ) && $status != 'all' ) { - $sqlQuery .= "AND um.meta_value LIKE '%\"" . esc_sql( $status ) . "\"%' "; + $sql_parts['WHERE'] .= "AND um.meta_value LIKE '%\"" . esc_sql( $status ) . "\"%' "; } - //$sqlQuery .= "GROUP BY u.ID "; - if ( $sortby == 'pmpro_approval' ) { - $sqlQuery .= "ORDER BY (um2.meta_value IS NULL) $sortorder "; + $sql_parts['ORDER'] = "ORDER BY (um2.meta_value IS NULL) $sortorder "; } else { - $sqlQuery .= "ORDER BY $sortby $sortorder "; + $sql_parts['ORDER'] = "ORDER BY $sortby $sortorder "; } - $sqlQuery .= "LIMIT $start, $limit"; + /** + * Filters SQL parts for the query to fetch all users pending approval. + * + * @since + * + * @param array $sql_parts The current SQL query parts + * @param int $l Level ID + * @param string $s Search string + * @param string $status Approval status + * @param string $sortby Sort by + * @param string $sortby Sort order + * @param int $pn Results page number + * @param int $limit Number of results per page limit + * + */ + $sql_parts = apply_filters( + 'pmpro_approvals_pending_approvals_sql_parts', + $sql_parts, + $l, + $s, + $status, + $sortby, + $sortorder , + $pn, + $limit + ); + + $sqlQuery = $sql_parts['SELECT'] . $sql_parts['JOIN'] . $sql_parts['WHERE'] . $sql_parts['GROUP'] . $sql_parts['ORDER'] . $sql_parts['LIMIT']; + + /** + * Filters final SQL string for the query to fetch all users pending approval. + * + * @since + * + * @param array $sqlQuery The current SQL query + * @param int $l Level ID + * @param string $s Search string + * @param string $status Approval status + * @param string $sortby Sort by + * @param string $sortby Sort order + * @param int $pn Results page number + * @param int $limit Number of results per page limit + * + */ + $sqlQuery = apply_filters( + 'pmpro_approvals_pending_approvals_sql', + $sqlQuery, + $l, + $s, + $status, + $sortby, + $sortorder , + $pn, + $limit + ); $theusers = $wpdb->get_results( $sqlQuery ); From ff9d99870305aebab0bd44b33396b4e73da6d6d5 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 16 Sep 2020 21:38:59 +0200 Subject: [PATCH 07/27] Add SQL filters to getApprovalCount method Add filter `pmpro_approvals_approval_count_sql_parts` that filters SQL parts for the query to get pending approvals count. Add filter `pmpro_approvals_approval_count_sql` that filters SQL string for the query to get pending approvals count. Closes #123 --- pmpro-approvals.php | 49 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 39 insertions(+), 10 deletions(-) diff --git a/pmpro-approvals.php b/pmpro-approvals.php index d9428cb..952dd0a 100644 --- a/pmpro-approvals.php +++ b/pmpro-approvals.php @@ -1492,17 +1492,46 @@ public static function getApprovalCount( $approval_status = null ) { $number_of_users = array(); } - // If we don't have this value yet, get it. + // If we don't have this value yet, get all users with 'pending' status. if ( ! isset( $number_of_users[$approval_status] ) ) { - //get all users with 'pending' status. - $sqlQuery = $wpdb->prepare( "SELECT COUNT(mu.user_id) as count - FROM $wpdb->pmpro_memberships_users mu - LEFT JOIN $wpdb->usermeta um - ON um.user_id = mu.user_id - AND um.meta_key LIKE CONCAT('pmpro_approval_', mu.membership_id) - WHERE mu.status = 'active' - AND mu.membership_id > 0 - AND um.meta_value LIKE '%s'", '%' . $approval_status . '%' ); + $sql_parts = array(); + $sql_parts['SELECT'] = "SELECT COUNT(mu.user_id) as count FROM $wpdb->pmpro_memberships_users mu "; + $sql_parts['JOIN'] = "LEFT JOIN $wpdb->usermeta um ON um.user_id = mu.user_id AND um.meta_key LIKE CONCAT('pmpro_approval_', mu.membership_id) "; + $sql_parts['WHERE'] = "WHERE mu.status = 'active' AND mu.membership_id > 0 AND um.meta_value LIKE '%" . esc_sql( $approval_status ) . "%' "; + $sql_parts['GROUP'] = ""; + $sql_parts['ORDER'] = ""; + $sql_parts['LIMIT'] = ""; + + /** + * Filters SQL parts for the query to get pending approvals count. + * + * @since + * + * @param array $sql_parts The current SQL query parts + * @param string $approval_status Approval status + */ + $sql_parts = apply_filters( + 'pmpro_approvals_approval_count_sql_parts', + $sql_parts, + $approval_status + ); + + $sqlQuery = $sql_parts['SELECT'] . $sql_parts['JOIN'] . $sql_parts['WHERE'] . $sql_parts['GROUP'] . $sql_parts['ORDER'] . $sql_parts['LIMIT']; + + /** + * Filters final SQL string for the query to get pending approvals count. + * + * @since + * + * @param array $sql_parts The current SQL query parts + * @param string $approval_status Approval status + * + */ + $sqlQuery = apply_filters( + 'pmpro_approvals_approval_count_sql', + $sqlQuery, + $approval_status + ); $results = $wpdb->get_results( $sqlQuery ); $number_of_users[$approval_status] = (int) $results[0]->count; From 1012622c7765d0dbbb3d1a0d8025e5a96315aa0a Mon Sep 17 00:00:00 2001 From: Michael Beil Date: Mon, 28 Sep 2020 16:20:09 +0200 Subject: [PATCH 08/27] Add German formal translation --- languages/.DS_Store | Bin 0 -> 6148 bytes languages/pmpro-approvals-de_DE_formal.mo | Bin 0 -> 8173 bytes languages/pmpro-approvals-de_DE_formal.po | 410 ++++++++++++++++++++++ 3 files changed, 410 insertions(+) create mode 100644 languages/.DS_Store create mode 100644 languages/pmpro-approvals-de_DE_formal.mo create mode 100644 languages/pmpro-approvals-de_DE_formal.po diff --git a/languages/.DS_Store b/languages/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8ce182268d9ee39fed76c9a7113a17c29651c2e2 GIT binary patch literal 6148 zcmeHKJx{|x41Ig8z`@Zz9W*uq5N8aVaBZ^$v1ou;1rCmk zP{d1#UMewSh?g^7BCiS@9K9T3H}jmhSz5$4XZ8DGyj2YN>ccJ}%Mg3v^ z9~Y&U3?u`8iUFC`SM`!lirzYToc7v6y`g>xb1j|5S~1aDF&%BiM_=-auDM?Y4vtpN RxRn$0kAU)$k_`L?1MezxC++|M literal 0 HcmV?d00001 diff --git a/languages/pmpro-approvals-de_DE_formal.mo b/languages/pmpro-approvals-de_DE_formal.mo new file mode 100644 index 0000000000000000000000000000000000000000..bb736253c6d1882f3cda70d6d8786b664fc79abc GIT binary patch literal 8173 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 SvV)m_2U~XbwLq0Y&i?_uRTty{ literal 0 HcmV?d00001 diff --git a/languages/pmpro-approvals-de_DE_formal.po b/languages/pmpro-approvals-de_DE_formal.po new file mode 100644 index 0000000..eb085af --- /dev/null +++ b/languages/pmpro-approvals-de_DE_formal.po @@ -0,0 +1,410 @@ +msgid "" +msgstr "" +"Project-Id-Version: Paid Memberships Pro - Approvals Add On\n" +"POT-Creation-Date: 2019-07-19 14:12+0200\n" +"PO-Revision-Date: 2020-09-20 14:34+0000\n" +"Last-Translator: \n" +"Language-Team: Deutsch (Sie)\n" +"Language: de-DE-formal\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Loco https://localise.biz/\n" +"X-Poedit-Basepath: ..\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-KeywordsList: __;_e;esc_html__\n" +"X-Poedit-SearchPath-0: .\n" +"Report-Msgid-Bugs-To: \n" +"X-Loco-Version: 2.4.3; wp-5.5.1" + +#: adminpages/approvals.php:6 +msgid "You do not have permissions to perform this action." +msgstr "Sie haben keine Berechtigung um diese Aktion durchzuführen." + +#: adminpages/approvals.php:51 pmpro-approvals.php:156 pmpro-approvals.php:175 +#: pmpro-approvals.php:177 pmpro-approvals.php:193 +msgid "Approvals" +msgstr "Genehmigungen" + +#: adminpages/approvals.php:58 +msgid "All" +msgstr "Alle" + +#: adminpages/approvals.php:63 pmpro-approvals.php:1081 +msgid "Pending" +msgstr "Vorläufig" + +#: adminpages/approvals.php:68 pmpro-approvals.php:631 +msgid "Approved" +msgstr "Genehmigt" + +#: adminpages/approvals.php:73 +msgid "Denied" +msgstr "Abgelehnt" + +#: adminpages/approvals.php:76 adminpages/approvals.php:80 +msgid "Search Approvals" +msgstr "Genehmigungen suchen" + +#: adminpages/approvals.php:83 +msgid "Show" +msgstr "Anzeigen" + +#: adminpages/approvals.php:88 +msgid "All Levels" +msgstr "Alle Level" + +#: adminpages/approvals.php:145 +msgid "applications awaiting review" +msgstr "Anwendungen die noch geprüft werden müssen" + +#: adminpages/approvals.php:153 +msgid "ID" +msgstr "ID" + +#: adminpages/approvals.php:154 adminpages/userinfo.php:49 +msgid "Username" +msgstr "Benutzername" + +#: adminpages/approvals.php:155 +msgid "Name" +msgstr "Name" + +#: adminpages/approvals.php:156 adminpages/userinfo.php:53 +msgid "Email" +msgstr "Email" + +#: adminpages/approvals.php:157 +msgid "Membership" +msgstr "Mitgliedschaft" + +#: adminpages/approvals.php:158 adminpages/userinfo.php:68 +#: pmpro-approvals.php:1209 +msgid "Approval Status" +msgstr "Genehmigungsstatus" + +#: adminpages/approvals.php:163 +msgid "Joined" +msgstr "Beigetreten" + +#: adminpages/approvals.php:219 adminpages/userinfo.php:74 +msgid "Email Confirmation Required." +msgstr "Email Bestätigung erforderlich." + +#: adminpages/approvals.php:232 +msgid "Approve" +msgstr "Genehmigen" + +#: adminpages/approvals.php:233 +msgid "Deny" +msgstr "Ablehnen" + +#: adminpages/approvals.php:246 +msgid "No pending members found." +msgstr "Keine vorläufigen Mitglieder gefunden." + +#: adminpages/userinfo.php:25 +msgid "No user id passed in." +msgstr "Keine Benutzer ID beigefügt." + +#: adminpages/userinfo.php:31 +#, php-format +msgid "No user found with ID %d." +msgstr "Kein Benutzer mit dieser ID gefunden." + +#: adminpages/userinfo.php:42 +msgid "Account Information" +msgstr "Konto Information" + +#: adminpages/userinfo.php:45 +msgid "User ID" +msgstr "Benutzer ID" + +#: adminpages/userinfo.php:57 +msgid "Membership Level" +msgstr "Mitgliedschafts-Level" + +#: adminpages/userinfo.php:118 +msgid "View File" +msgstr "Datei ansehen" + +#: adminpages/userinfo.php:135 +msgid "Back to Approvals" +msgstr "Zurück zu Genehmigungen" + +#: classes/class.approvalemails.php:30 +#, php-format +msgid "Your membership at %s has been approved." +msgstr "Ihre Mitgliedschaft für %s wurde genehmigt." + +#: classes/class.approvalemails.php:68 +#, php-format +msgid "Your membership at %s has been denied." +msgstr "Ihre Mitgliedschaft für %s wurde abgelehnt." + +#: classes/class.approvalemails.php:106 +#, php-format +msgid "A member at %s is waiting approval." +msgstr "Ein Mitglied unter %s wartet auf die Genehmigung." + +#: classes/class.approvalemails.php:159 +#, php-format +msgid "A member at %s has been approved." +msgstr "Ein Mitglied unter %s wurde genehmigt." + +#: classes/class.approvalemails.php:211 +#, php-format +msgid "A member at %s has been denied." +msgstr "Ein Mitglied unter %s wurde abgelehnt." + +#: pmpro-approvals.php:308 +msgid "Approval Settings" +msgstr "Genehmigungs Einstellungen" + +#: pmpro-approvals.php:312 +msgid "Requires Approval?" +msgstr "Genehmigung erforderlich?" + +#: pmpro-approvals.php:315 +msgid "No." +msgstr "Nein." + +#: pmpro-approvals.php:316 +msgid "Yes. Admin must approve new members for this level." +msgstr "Ja. Admin muss neue Mitglieder für diesen Level genehmigen." + +#: pmpro-approvals.php:318 +msgid "Yes. User must have an approved membership for a different level." +msgstr "" +"Ja. Benutzer muss eine bereits genehmigte Mitgliedschaft für ein anderes " +"Level besitzen." + +#: pmpro-approvals.php:319 +msgid "" +"Yes. User must have an approved membership for a different level AND admin " +"must approve new members for this level." +msgstr "" +"Ja. Benutzer muss eine bereits genehmigte Mitgliedschaft für ein anderes " +"Level besitzen UND admin muss die Mitgliedschaft für das neue Level " +"genehmigen." + +#: pmpro-approvals.php:330 +msgid "Which Level?" +msgstr "Welches Level" + +#: pmpro-approvals.php:504 +msgid "" +"Your previous application for this level has been denied. You will not be " +"allowed to check out." +msgstr "" +"Ihre vorherige Mitgliedschaft wurde abgelehnt. Eine erneute Buchung ist " +"nicht möglich." + +#: pmpro-approvals.php:514 +#, php-format +msgid "" +"Since your application to the %s level has been denied, you may not check " +"out for this level." +msgstr "" +"Da Ihre Mitgliedschaft für das %s Paket abgelehnt wurde, ist die Buchung für " +"dieses Level nicht möglich." + +#: pmpro-approvals.php:520 +#, php-format +msgid "Your application to %s is still pending." +msgstr "Ihre Mitgliedschaft für %s ist immer noch vorläufig." + +#: pmpro-approvals.php:524 +#, php-format +msgid "You must be approved for %s before checking out here." +msgstr "" +"Sie benötigen eine genehmigte Mitgliedschaft für %s bevor Sie die Buchung " +"fortsetzen können." + +#: pmpro-approvals.php:526 +#, php-format +msgid "" +"You must register and be approved for %2$s before " +"checking out here." +msgstr "" +"Sie müssen sich für %2$s und Ihre Mitgliedschaft muss " +"genehmigt werden, bevor Sie diese Buchung fortführen können." + +#: pmpro-approvals.php:612 +msgid "approved" +msgstr "genehmigt" + +#: pmpro-approvals.php:626 +#, php-format +msgid "%1$s on %2$s by %3$s" +msgstr "" + +#: pmpro-approvals.php:628 +#, php-format +msgid "%1$s on %2$s" +msgstr "" + +#: pmpro-approvals.php:637 pmpro-approvals.php:1107 +msgid "pending" +msgstr "vorläufig" + +#: pmpro-approvals.php:639 +#, php-format +msgid "Pending Approval for %s" +msgstr "Vorläufige Genehmigung für %s" + +#: pmpro-approvals.php:838 pmpro-approvals.php:886 pmpro-approvals.php:935 +msgid "You do not have permission to perform approvals." +msgstr "Sie haben keine Berechtigung um Genehmigungen zu erteilen." + +#: pmpro-approvals.php:863 +msgid "Member was approved." +msgstr "Mitgliedschaft wurde genehmigt." + +#: pmpro-approvals.php:911 +msgid "Member was denied." +msgstr "Mitgliedschaft wurde abgelehnt." + +#: pmpro-approvals.php:958 +msgid "Approval reset." +msgstr "Genehmigung wurde zurückgesetzt." + +#: pmpro-approvals.php:1034 +msgid "" +"Your membership requires approval before you are able to view this content." +msgstr "" +"Ihre Mitgliedschaft benötigt eine Genehmigung bevor Sie auf den gewünschten " +"Inhalt zugreifen können." + +#: pmpro-approvals.php:1036 +msgid "" +"Your membership application has been denied. Contact the site owners if you " +"believe this is an error." +msgstr "" +"Ihre Mitgliedschaft wurde abgelehnt. Kontaktieren Sie den Betreiber der " +"Seite, wenn Sie meinen, dass es sich dabei um einen Fehler handelt." + +#: pmpro-approvals.php:1067 +msgid "Status:" +msgstr "Status:" + +#: pmpro-approvals.php:1110 +#, php-format +msgid "" +"Thank you for your membership to %1$s. Your %2$s membership status is: " +"%3$s." +msgstr "" +"Vielen Dank für Ihre Registrierung bei %1$s. Der Mitgliedschafts-Status zu " +"Ihrem %2$s Paket ist aktuell: %3$s." + +#: pmpro-approvals.php:1112 +#, php-format +msgid "" +"Below are details about your membership account and a receipt for your " +"initial membership invoice. A welcome email with a copy of your initial " +"membership invoice has been sent to %s." +msgstr "" +"Nachfolgend finden Sie Details zu Ihrer Mitgliedschaft. Eine Willkommens-" +"Emailwurde bereits an die von Ihnen angegebene email-Adresse (%s) versendet." +" Darin enthalten ist auch ein link für die Bestätigung dieser email-Adresse. " +"Nach erfolgreicher Bestätigung wird Ihr Konto vollständig freigeschalten." + +#: pmpro-approvals.php:1124 +msgid "A user has been approved for !!membership_level_name!!" +msgstr "Ein Mitglied wurde für !!membership_level_name!! genehmigt." + +#: pmpro-approvals.php:1125 +msgid "Approvals - Approved Email (admin)" +msgstr "Genehmigungen - Genehmigte Email (admin)" + +#: pmpro-approvals.php:1130 +msgid "A user has been denied for !!membership_level_name!!" +msgstr "Ein Mitglied wurde für !!membership_level_name!! abgelehnt." + +#: pmpro-approvals.php:1131 +msgid "Approvals - Denied Email (admin)" +msgstr "Genehmigungen - Abgelehnte Email (admin)" + +#: pmpro-approvals.php:1136 +msgid "A user requires approval" +msgstr "Ein Benutzer benötigt eine Genehmigung" + +#: pmpro-approvals.php:1137 +msgid "Approvals - Requires Approval (admin)" +msgstr "Genehmigungen - Genehmigung erforderlich (admin)" + +#: pmpro-approvals.php:1144 +msgid "Your membership to !!sitename!! has been approved." +msgstr "Ihre Mitgliedschaft für !!sitename!! wurde genehmigt." + +#: pmpro-approvals.php:1145 +msgid "Approvals - Approved Email" +msgstr "Genehmigungen - Genehmigte Email (admin)" + +#: pmpro-approvals.php:1150 +msgid "Your membership to !!sitename!! has been denied." +msgstr "Ihre Mitgliedschaft für !!sitename!! wurde abgelehnt." + +#: pmpro-approvals.php:1151 +msgid "Approvals - Denied Email" +msgstr "Genehmigungen - Abgelehnte Email" + +#: pmpro-approvals.php:1170 +msgid "" +"Your membership account is now pending. You will be notified once your " +"account has been approved/denied." +msgstr "" +"Ihre Mitgliedschaft ist erst einmal vorläufig. Sie werden informiert, wenn " +"Ihre Mitgliedschaft genehmigt bzw. abgelehnt wurde." + +#: pmpro-approvals.php:1239 +msgid "User Approval Log" +msgstr "Benutzer Genehmigungen Logfile" + +#: pmpro-approvals.php:1272 +msgid "The chosen level does not require approval." +msgstr "Der gewünschte Level benötigt keine Genehmigungen." + +#: pmpro-approvals.php:1356 +msgid "No approval history found." +msgstr "Keine Genehmigungen in der Vergangenheit vorhanden." + +#: pmpro-approvals.php:1432 +msgid "View Documentation" +msgstr "Dokumentation ansehen." + +#: pmpro-approvals.php:1432 +msgid "Docs" +msgstr "Dokumente" + +#: pmpro-approvals.php:1433 +msgid "Visit Customer Support Forum" +msgstr "Das Customer Support Forum besuchen" + +#: pmpro-approvals.php:1433 +msgid "Support" +msgstr "Support" + +#. Plugin Name of the plugin/theme +msgid "Paid Memberships Pro - Approvals Add On" +msgstr "Paid Memberships Pro - Approvals Add On" + +#. Plugin URI of the plugin/theme +msgid "https://www.paidmembershipspro.com/add-ons/approval-process-membership/" +msgstr "" +"https://www.paidmembershipspro.com/add-ons/approval-process-membership/" + +#. Description of the plugin/theme +msgid "" +"Grants administrators the ability to approve/deny memberships after signup." +msgstr "" +"Gibt Administratoren die Möglichkeit Mitgliedschaft - nach einer erfolgten " +"Registrierung - zu genehmigen oder abzulehnen." + +#. Author of the plugin/theme +msgid "Stranger Studios" +msgstr "Stranger Studios" + +#. Author URI of the plugin/theme +msgid "https://www.paidmembershipspro.com" +msgstr "https://www.paidmembershipspro.com" From 92ec6bb707af6ccf996f9ef4aa824aa8f03a1098 Mon Sep 17 00:00:00 2001 From: Michael Beil Date: Tue, 6 Oct 2020 12:20:48 +0200 Subject: [PATCH 09/27] Remove .DS_Store --- .DS_Store | Bin 0 -> 6148 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..0cebd4491b04001d7c42ef8a1af78398f8d8bdb4 GIT binary patch literal 6148 zcmeHK%}N6?5Kh{vS&G<$V2`!E+xld#l!@FuM2L8aZLrCnHeOLuG0y0WjKZ{!pB zI?g0%v9w-1h?E(ae3SV}$d@JAFvfU$+OIKIVvGq;#GD1q2EjP$n&gZJk*hJL%w@#xym8>iNwxaPbNRx~?w$~$DE7s@Gm2(T z;wIC$?M`m7cj+c0&)8Q{6fAAmyY>gOZt3tW3KQ242NPB7_Xm)2cjJfsXx5IVVLw*m zI67cimaw{|@_b%zG%K=RYorx9Z?&ow*=(GosU?n%Yo`~zho|THOZxhz`Q`8_DmgH? zfOjx9EcMZugh3PzA-bqsR1gva!~ij{r3{$kP87FveY7lMfEf5a19(12P(<5crcoUo z(BSVQ#tVojVB=c?Q5v)jW*Q*^!gVR2F6HKl!F4(KrOC4mW*T)l<7#FY$IQ&l3x%uM z!7o)hi2-6@m4UqOmhk>R|M~sDT0}i!fEd^+26&<4blR{abGNQ74)0nC+5<(w oyiDV=1PpZ*LoQy$Wl$yHmuLXm1~ZM|0ihoOMFTa&z@IYk1u>*kj{pDw literal 0 HcmV?d00001 From 9861802103ed7921c64320cdddac76b2eb0325a4 Mon Sep 17 00:00:00 2001 From: Michael Beil Date: Tue, 6 Oct 2020 12:36:28 +0200 Subject: [PATCH 10/27] Remove .DS_Store and /languages/.DS_Store --- .DS_Store | Bin 6148 -> 0 bytes languages/.DS_Store | Bin 6148 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store delete mode 100644 languages/.DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 0cebd4491b04001d7c42ef8a1af78398f8d8bdb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}N6?5Kh{vS&G<$V2`!E+xld#l!@FuM2L8aZLrCnHeOLuG0y0WjKZ{!pB zI?g0%v9w-1h?E(ae3SV}$d@JAFvfU$+OIKIVvGq;#GD1q2EjP$n&gZJk*hJL%w@#xym8>iNwxaPbNRx~?w$~$DE7s@Gm2(T z;wIC$?M`m7cj+c0&)8Q{6fAAmyY>gOZt3tW3KQ242NPB7_Xm)2cjJfsXx5IVVLw*m zI67cimaw{|@_b%zG%K=RYorx9Z?&ow*=(GosU?n%Yo`~zho|THOZxhz`Q`8_DmgH? zfOjx9EcMZugh3PzA-bqsR1gva!~ij{r3{$kP87FveY7lMfEf5a19(12P(<5crcoUo z(BSVQ#tVojVB=c?Q5v)jW*Q*^!gVR2F6HKl!F4(KrOC4mW*T)l<7#FY$IQ&l3x%uM z!7o)hi2-6@m4UqOmhk>R|M~sDT0}i!fEd^+26&<4blR{abGNQ74)0nC+5<(w oyiDV=1PpZ*LoQy$Wl$yHmuLXm1~ZM|0ihoOMFTa&z@IYk1u>*kj{pDw diff --git a/languages/.DS_Store b/languages/.DS_Store deleted file mode 100644 index 8ce182268d9ee39fed76c9a7113a17c29651c2e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKJx{|x41Ig8z`@Zz9W*uq5N8aVaBZ^$v1ou;1rCmk zP{d1#UMewSh?g^7BCiS@9K9T3H}jmhSz5$4XZ8DGyj2YN>ccJ}%Mg3v^ z9~Y&U3?u`8iUFC`SM`!lirzYToc7v6y`g>xb1j|5S~1aDF&%BiM_=-auDM?Y4vtpN RxRn$0kAU)$k_`L?1MezxC++|M From 975ff581aecd77995550a75552dbe73e4aba2263 Mon Sep 17 00:00:00 2001 From: Ronald Huereca Date: Thu, 29 Oct 2020 07:31:13 -0500 Subject: [PATCH 11/27] Add a force param to force membership approval and a filter to skip email sending. --- pmpro-approvals.php | 44 ++++++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/pmpro-approvals.php b/pmpro-approvals.php index 968d9eb..60da995 100644 --- a/pmpro-approvals.php +++ b/pmpro-approvals.php @@ -855,20 +855,24 @@ public static function getApprovals( $l = false, $s = '', $status = 'pending', $ } /** - * Approve a member + * Approve a member. + * + * @param int $user_id The user ID. + * @param int $level_id The Level ID. + * @param bool $force Whether to force the appproval. */ - public static function approveMember( $user_id, $level_id = null ) { + public static function approveMember( $user_id, $level_id = null, $force = false ) { global $current_user, $msg, $msgt; //make sure they have permission - if ( ! current_user_can( 'manage_options' ) && ! current_user_can( 'pmpro_approvals' ) ) { + if ( ! current_user_can( 'manage_options' ) && ! current_user_can( 'pmpro_approvals' ) && ! $force ) { $msg = -1; $msgt = __( 'You do not have permission to perform approvals.', 'pmpro-approvals' ); return false; } - //get user's current level if none given + // get user's current level if none given. if ( empty( $level_id ) ) { $user_level = pmpro_getMembershipLevelForUser( $user_id ); $level_id = $user_level->id; @@ -876,7 +880,7 @@ public static function approveMember( $user_id, $level_id = null ) { do_action( 'pmpro_approvals_before_approve_member', $user_id, $level_id ); - //update user meta to save timestamp and user who approved + // update user meta to save timestamp and user who approved. update_user_meta( $user_id, 'pmpro_approval_' . $level_id, array( 'status' => 'approved', @@ -885,19 +889,35 @@ public static function approveMember( $user_id, $level_id = null ) { 'approver' => $current_user->user_login, ) ); - - //delete the approval count cache + + // delete the approval count cache. delete_transient( 'pmpro_approvals_approval_count' ); - //update statuses/etc + // update statuses/etc. $msg = 1; $msgt = __( 'Member was approved.', 'pmpro-approvals' ); - //send email to user and admin. - $approval_email = new PMPro_Approvals_Email(); - $approval_email->sendMemberApproved( $user_id ); - $approval_email->sendAdminApproval( $user_id ); + /** + * Potentially skip emails sent to admin/member. + * + * Skip sending if value is false. + * + * @since 1.3.5 + * + * @param boolean true to skip email, false to to not (default false) + * @param int $user_id The user ID to approve. + * @param int $level_id The level ID to approve. + * @param boolean $force Whether the approval was forced. + */ + $send_emails = apply_filters( 'pmpro_approvals_after_approve_member_send_emails', true, $user_id, $level_id, $force ); + if ( $send_emails ) { + // send email to user and admin. + $approval_email = new PMPro_Approvals_Email(); + $approval_email->sendMemberApproved( $user_id ); + $approval_email->sendAdminApproval( $user_id ); + } + self::updateUserLog( $user_id, $level_id ); do_action( 'pmpro_approvals_after_approve_member', $user_id, $level_id ); From 6a0f7fe51d7199f4592032d83960ba0d46736510 Mon Sep 17 00:00:00 2001 From: Andrew Lima Date: Tue, 10 Nov 2020 12:50:17 +0200 Subject: [PATCH 12/27] Bug Fix: Support Register Helper better BUG FIX: Fixed an issue where multiple fields belonging to different levels with the same name would show up twice on the view info page of the approvals. This now supports the 'level' attribute inside Register Helper when displaying fields. --- adminpages/userinfo.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/adminpages/userinfo.php b/adminpages/userinfo.php index 74eebe7..6d6f978 100644 --- a/adminpages/userinfo.php +++ b/adminpages/userinfo.php @@ -106,9 +106,16 @@ profile ) { + + // Check to see if level is set for the field. + if ( isset( $field->levels ) && ! in_array( $level_details->ID, $field->levels ) ) { + break; + } + ?> From d539b185c8d999d01f432495024b813e660dd809 Mon Sep 17 00:00:00 2001 From: Andrew Lima Date: Wed, 18 Nov 2020 11:11:22 +0200 Subject: [PATCH 13/27] Only instantiate the class if PMPro is active. BUG FIX: Fixed issue where Approvals would try to run even when Paid Memberships Pro is deactivated. --- pmpro-approvals.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pmpro-approvals.php b/pmpro-approvals.php index 60da995..9c18fae 100644 --- a/pmpro-approvals.php +++ b/pmpro-approvals.php @@ -1592,4 +1592,6 @@ public static function change_your_level_text( $translated_text, $text, $domain } // end class -PMPro_Approvals::get_instance(); +if ( defined( 'PMPRO_VERSION' ) ) { + PMPro_Approvals::get_instance(); +} From 3354d1280b73471aa5965df766a6da9742f0fc9b Mon Sep 17 00:00:00 2001 From: Andrew Lima Date: Wed, 18 Nov 2020 11:45:08 +0200 Subject: [PATCH 14/27] Rename variable to be more explicit. *ENHANCEMENT: Adjusted variable name for approval logging to be more clear what it's for. --- pmpro-approvals.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pmpro-approvals.php b/pmpro-approvals.php index 4d5324c..b2d120b 100644 --- a/pmpro-approvals.php +++ b/pmpro-approvals.php @@ -1439,7 +1439,7 @@ function pmpro_approval_updateApprovalStatus() { public static function updateUserLog( $user_id, $level_id ) { //get user's approval status - $user_meta_stuff = get_user_meta( $user_id, 'pmpro_approval_' . $level_id, true ); + $users_approval_information = get_user_meta( $user_id, 'pmpro_approval_' . $level_id, true ); $data = get_user_meta( $user_id, 'pmpro_approval_log', true ); @@ -1447,7 +1447,7 @@ public static function updateUserLog( $user_id, $level_id ) { $data = array(); } - $data[] = $user_meta_stuff['status'] . ' by ' . $user_meta_stuff['approver'] . ' on ' . date_i18n( get_option( 'date_format' ), $user_meta_stuff['timestamp'] ); + $data[] = $users_approval_information['status'] . ' by ' . $users_approval_information['approver'] . ' on ' . date_i18n( get_option( 'date_format' ), $users_approval_information['timestamp'] ); update_user_meta( $user_id, 'pmpro_approval_log', $data ); From 4ea40cfcd2cdd029c931380464fc187e36aeb84d Mon Sep 17 00:00:00 2001 From: Andrew Lima Date: Thu, 19 Nov 2020 16:17:29 +0200 Subject: [PATCH 15/27] Revert "Only instantiate the class if PMPro is active." This reverts commit d539b185c8d999d01f432495024b813e660dd809. --- pmpro-approvals.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pmpro-approvals.php b/pmpro-approvals.php index b2d120b..c845ac2 100644 --- a/pmpro-approvals.php +++ b/pmpro-approvals.php @@ -1676,6 +1676,4 @@ public static function change_your_level_text( $translated_text, $text, $domain } // end class -if ( defined( 'PMPRO_VERSION' ) ) { - PMPro_Approvals::get_instance(); -} +PMPro_Approvals::get_instance(); From 3809c03f25494f64b39b3f87818a4ef6ab50242e Mon Sep 17 00:00:00 2001 From: Edwin Smith Date: Tue, 24 Nov 2020 09:43:50 -0700 Subject: [PATCH 16/27] added a filter for the restrict checkout option and included it in the checkout conditionals --- pmpro-approvals.php | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/pmpro-approvals.php b/pmpro-approvals.php index c845ac2..6c2eb56 100644 --- a/pmpro-approvals.php +++ b/pmpro-approvals.php @@ -283,6 +283,22 @@ public static function requiresApproval( $level_id = null ) { return $requires_approval; } + /** + * Check if level has a restriction level at checkout + */ + public static function restrictCheckout( $level_id = null ) { + //no level? + if ( empty( $level_id ) ) { + return false; + } + + $options = self::getOptions( $level_id ); + + $restrict_checkout = apply_filters( 'pmpro_approvals_level_restrict_checkout', $options['restrict_checkout'], $level_id); + + return $restrict_checkout; + } + /** * Load check box to make level require membership. * Fires on pmpro_membership_level_after_other_settings @@ -529,14 +545,14 @@ public static function pmpro_checkout_preheader() { } //does this level require approval of another level? - $options = self::getOptions( $pmpro_level->id ); - if ( $options['restrict_checkout'] ) { - $other_level = pmpro_getLevel( $options['restrict_checkout'] ); + $restrict_checkout = self::restrictCheckout( $pmpro_level->id ); + if ( $restrict_checkout ) { + $other_level = pmpro_getLevel( $restrict_checkout ); //check that they are approved and not denied for that other level - if ( self::isDenied( null, $options['restrict_checkout'] ) ) { + if ( self::isDenied( null, $restrict_checkout ) ) { pmpro_setMessage( sprintf( __( 'Since your application to the %s level has been denied, you may not check out for this level.', 'pmpro-approvals' ), $other_level->name ), 'pmpro_error' ); - } elseif ( self::isPending( null, $options['restrict_checkout'] ) ) { + } elseif ( self::isPending( null, $restrict_checkout ) ) { //note we use pmpro_getMembershipLevelForUser instead of pmpro_hasMembershipLevel because the latter is filtered $user_level = pmpro_getMembershipLevelForUser( $current_user->ID ); if ( ! empty( $user_level ) && $user_level->id == $other_level->id ) { From 16161761855692e37c1803c613d1749ff180a94e Mon Sep 17 00:00:00 2001 From: Andrew Lima Date: Thu, 4 Mar 2021 11:36:10 +0200 Subject: [PATCH 17/27] ENHANCEMENT: Clear approval data when pending and cancelled. ENHANCEMENT: Clean up data if a user is pending and changes or cancels their membership level. --- pmpro-approvals.php | 59 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/pmpro-approvals.php b/pmpro-approvals.php index 968d9eb..003c2c4 100644 --- a/pmpro-approvals.php +++ b/pmpro-approvals.php @@ -103,7 +103,7 @@ public static function init() { add_filter( 'pmpro_non_member_text_filter', array( 'PMPro_Approvals', 'pmpro_non_member_text_filter' ) ); add_action( 'pmpro_account_bullets_top', array( 'PMPro_Approvals', 'pmpro_account_bullets_top' ) ); add_filter( 'pmpro_confirmation_message', array( 'PMPro_Approvals', 'pmpro_confirmation_message' ), 10, 2 ); - add_action( 'pmpro_before_change_membership_level', array( 'PMPro_Approvals', 'pmpro_before_change_membership_level' ), 10, 2 ); + add_action( 'pmpro_before_change_membership_level', array( 'PMPro_Approvals', 'pmpro_before_change_membership_level' ), 10, 4 ); add_action( 'pmpro_after_change_membership_level', array( 'PMPro_Approvals', 'pmpro_after_change_membership_level' ), 10, 2 ); //Integrate with Member Directory. @@ -1007,6 +1007,13 @@ public static function resetMember( $user_id, $level_id ) { */ public static function pmpro_before_change_membership_level( $level_id, $user_id ) { + // First see if the user is cancelling, try to clean up approval data if they are pending. + if ( $level_id == 0 || isset( $old_level[0]->ID ) ) { + if ( self::isPending( $user_id, $old_level[0]->ID ) ) { + self::clearApprovalData( $user_id, $old_level[0]->ID, apply_filters( 'pmpro_approvals_delete_log_on_cancel', false ) ); + } + } + //check if level requires approval, if not stop executing this function and don't send email. if ( ! self::requiresApproval( $level_id ) ) { return; @@ -1357,6 +1364,56 @@ function pmpro_approval_updateApprovalStatus() { id; + } + + do_action( 'pmpro_approvals_before_cleaned_approval_meta', $user_id, $level_id ); + + // If force set to true, we can delete all approval data for the user when they cancel their level. + if ( $force && $level_id == 0 ) { + delete_user_meta( $user_id, 'pmpro_approval_' . $level_id ); + delete_user_meta( $user_id, 'pmpro_approval_log' ); + } else { + // Get user meta and only remove the approval where status is pending. + $approval_status = get_user_meta( $user_id, 'pmpro_approval_' . $level_id ); + foreach( $approval_status as $key => $data ) { + // Remove this from the approvals array. + if ( $data['status'] === $status ) { + unset( $approval_status[$key] ); + } + } + + // Let's clean up the user meta table a bit more smartly if they have no data pending/approved etc. + if ( is_array( $approval_status ) && empty( $approval_status[0] ) ) { + delete_user_meta( $user_id, 'pmpro_approval_' . $level_id ); + } else { + update_user_meta( $user_id, 'pmpro_approval_' . $level_id, $approval_status ); + } + + } + + delete_transient( 'pmpro_approvals_approval_count' ); + + do_action( 'pmpro_approvals_after_cleaned_approval_meta', $user_id, $level_id ); + // If we made it here, let's assume it worked okay + return true; + + } + /** * Code generates user log for all users that require approval. * @since 1.0.2 From 9d214a7e1e5c90a83171784baa14d57648deec4e Mon Sep 17 00:00:00 2001 From: Andrew Lima Date: Thu, 4 Mar 2021 12:23:50 +0200 Subject: [PATCH 18/27] Escaping and sanitizing for userinfo page --- adminpages/userinfo.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/adminpages/userinfo.php b/adminpages/userinfo.php index 6d6f978..12ca771 100644 --- a/adminpages/userinfo.php +++ b/adminpages/userinfo.php @@ -36,15 +36,15 @@

- ID; ?> - display_name ); ?> (user_login ); ?>) - Edit Profile + ID ); ?> - display_name ); ?> (user_login ); ?>) +

-

+

- - + + @@ -55,7 +55,7 @@ - +
ID; ?>ID ); ?>
user_email ); ?>
$fields ) { $box = pmprorh_getCheckoutBoxByName( $where ); ?> -

label ); ?>

+ label ) ) { ?> +

label ); ?>

+ Date: Thu, 4 Mar 2021 12:54:39 +0200 Subject: [PATCH 19/27] Enhancement: Make links clickable ENHANCEMENT: Make links clickable if we detect a valid URL. This requires HTTP or HTTPS within the string etc. --- adminpages/userinfo.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/adminpages/userinfo.php b/adminpages/userinfo.php index 12ca771..47aa228 100644 --- a/adminpages/userinfo.php +++ b/adminpages/userinfo.php @@ -142,7 +142,12 @@ // remove trailing comma from string. echo ''; } else { - echo ''; + // If Register Helper field is a valid URL, then let's make it clickable. + if ( wp_http_validate_url( $register_helper_fields ) ) { + echo ''; + } else { + echo ''; + } } } ?> From 0f1fd3b0afb5cb7de610a9a67693c1aa38b31013 Mon Sep 17 00:00:00 2001 From: Andrew Lima Date: Thu, 4 Mar 2021 13:00:20 +0200 Subject: [PATCH 20/27] BUG FIX: If refreshing the approvals page, duplicate emails get sent out. BUG FIX: Fixes an issue where refreshing the page after approving a member would send duplicate emails out to the user and admin. --- adminpages/approvals.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/adminpages/approvals.php b/adminpages/approvals.php index 18a1554..4f66aae 100644 --- a/adminpages/approvals.php +++ b/adminpages/approvals.php @@ -34,10 +34,14 @@ //Approve, deny or reset member back to pending if ( ! empty( $_REQUEST['approve'] ) ) { check_admin_referer( 'pmpro_approvals', 'pmpro_approvals_nonce' ); - PMPro_Approvals::approveMember( intval( $_REQUEST['approve'] ), $l ); + if ( ! PMPro_Approvals::isApproved( intval( $_REQUEST['approve'] ) ) ) { + PMPro_Approvals::approveMember( intval( $_REQUEST['approve'] ), $l ); + } } elseif ( ! empty( $_REQUEST['deny'] ) ) { check_admin_referer( 'pmpro_approvals', 'pmpro_approvals_nonce' ); - PMPro_Approvals::denyMember( intval( $_REQUEST['deny'] ), $l ); + if ( ! PMPro_Approvals::isDenied( intval( $_REQUEST['deny'] ) ) ) { + PMPro_Approvals::denyMember( intval( $_REQUEST['deny'] ), $l ); + } } elseif ( ! empty( $_REQUEST['unapprove'] ) ) { check_admin_referer( 'pmpro_approvals', 'pmpro_approvals_nonce' ); PMPro_Approvals::resetMember( intval( $_REQUEST['unapprove'] ), $l ); From 55620e2532fd7e19ea4f4538d3473f7943ad9117 Mon Sep 17 00:00:00 2001 From: Andrew Lima Date: Thu, 4 Mar 2021 13:22:40 +0200 Subject: [PATCH 21/27] BUG FIX: Fixes an issue where shortcode wasn't restricting for pending members. BUG FIX: Fixes an issue for [membership] shortcode that didn't pass levels attribute and pending members used to gain access to restricted content. --- pmpro-approvals.php | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/pmpro-approvals.php b/pmpro-approvals.php index 3e01567..b35865b 100644 --- a/pmpro-approvals.php +++ b/pmpro-approvals.php @@ -94,6 +94,7 @@ public static function init() { //filter membership and content access add_filter( 'pmpro_has_membership_level', array( 'PMPro_Approvals', 'pmpro_has_membership_level' ), 10, 3 ); add_filter( 'pmpro_has_membership_access_filter', array( 'PMPro_Approvals', 'pmpro_has_membership_access_filter' ), 10, 4 ); + add_filter( 'pmpro_member_shortcode_access', array( 'PMPro_Approvals', 'pmpro_member_shortcode_access' ), 10, 4 ); //load checkbox in membership level edit page for users to select. add_action( 'pmpro_membership_level_after_other_settings', array( 'PMPro_Approvals', 'pmpro_membership_level_after_other_settings' ) ); @@ -481,6 +482,35 @@ public static function pmpro_has_membership_access_filter( $access, $post, $user return $access; } + /** + * Deny access for shortcode specific content to pending members. + * @since 1.4 + */ + public static function pmpro_member_shortcode_access( $access, $content, $levels, $delay ) { + global $current_user; + + if ( ! is_user_logged_in() ) { + return $access; + } + + // If no levels are defined but they aren't approved. Let's set this to false. + if ( empty( $levels ) && ! self::isApproved( $current_user->ID ) ) { + return false; + } + + // See if user is approved for any level. + if ( is_array( $levels ) && ! empty( $levels ) ) { + foreach ( $levels as $level ) { + if ( self::isApproved( $current_user->ID, $level ) ) { + $access = true; + break; + } + } + } + // $access = true; + return $access; + } + /** * Filter hasMembershipLevel to return false * if a user is not approved. From 2bec946ac5e30b6952acb9b90c26e7a92d4163a0 Mon Sep 17 00:00:00 2001 From: Andrew Lima Date: Thu, 4 Mar 2021 15:21:45 +0200 Subject: [PATCH 22/27] ENHANCEMENT: Automatically approve order when user approved (Pay By Check) ENHANCEMENT: Integrate with Pay By Check. When a user is approved, approve their pending check order. Has to be enabled by using the filter `pmpro_approvals_pbc_success_on_approval` and returning `true` to enable it. --- pmpro-approvals.php | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/pmpro-approvals.php b/pmpro-approvals.php index b35865b..9a56c9c 100644 --- a/pmpro-approvals.php +++ b/pmpro-approvals.php @@ -110,6 +110,10 @@ public static function init() { //Integrate with Member Directory. add_filter( 'pmpro_member_directory_sql_parts', array( 'PMPro_Approvals', 'pmpro_member_directory_sql_parts'), 10, 9 ); add_filter( 'gettext', array( 'PMPro_Approvals', 'change_your_level_text' ), 10, 3 ); + + //Integrate with Pay By Check Add On + add_action( 'pmpro_approvals_after_approve_member', array( 'PMPro_Approvals', 'pmpro_pay_by_check_approve' ), 10, 2 ); + //plugin row meta add_filter( 'plugin_row_meta', array( 'PMPro_Approvals', 'plugin_row_meta' ), 10, 2 ); } @@ -1723,6 +1727,36 @@ public static function pmpro_member_directory_sql_parts( $sql_parts, $levels, $s return $sql_parts; } + /** + * Helper function to change the order status to 'success' for Pay By Check Add On when user is approved. + * @since 1.4 + */ + public static function pmpro_pay_by_check_approve( $user_id, $level_id, $order_id = NULL ) { + + //If Pay By Check Add On not set, just bail. + if ( ! defined( 'PMPROPBC_VER' ) ) { + return; + } + + // User's have to physically set this as a filter for now. + if ( ! apply_filters( 'pmpro_approvals_pbc_success_on_approval', false ) ) { + return; + } + + //Check to see if the user's level that was approved had pay by check. + $requires_check = pmpropbc_getOptions( $level_id ); + + if ( $requires_check ) { + $order = new MemberOrder(); + $order->getLastMemberOrder( $user_id, 'pending', $level_id ); + + if ( isset( $order->gateway ) && $order->gateway == 'check' ) { + $order->status = 'success'; + $order->saveOrder(); + } + } + } + /** * Add links to the plugin row meta From aa15b13a50c1cd311138e2fca2e469bee0eee406 Mon Sep 17 00:00:00 2001 From: Andrew Lima Date: Thu, 4 Mar 2021 15:37:36 +0200 Subject: [PATCH 23/27] BUG FIX: Allow pending/non-approved members to cancel. BUG FIX: Allow pending/non-approved members to cancel their membership level. --- pmpro-approvals.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pmpro-approvals.php b/pmpro-approvals.php index 9a56c9c..8a58468 100644 --- a/pmpro-approvals.php +++ b/pmpro-approvals.php @@ -521,6 +521,12 @@ public static function pmpro_member_shortcode_access( $access, $content, $levels * Fires on pmpro_has_membership_level filter */ public static function pmpro_has_membership_level( $haslevel, $user_id, $levels ) { + global $pmpro_pages; + + // Let members access PMPro pages, PMPro can handle the cases here. + if ( is_page( $pmpro_pages ) ) { + return $haslevel; + } //if already false, skip if ( ! $haslevel ) { @@ -1495,11 +1501,6 @@ function pmpro_approval_updateApprovalStatus() { */ public static function clearApprovalData( $user_id, $level_id = NULL, $force = NULL, $status = 'pending' ) { - // Make sure the current user can call this function, just in case. - if ( ! current_user_can( 'manage_options' ) && ! current_user_can( 'pmpro_approvals' ) ) { - die( 'You cannot do this' ); - } - // try to get the current user level. if ( empty( $level_id ) ) { $user_level = pmpro_getMembershipLevelForUser( $user_id ); From 0dd54df4c447250cef7d4cad9c1262458387ac7a Mon Sep 17 00:00:00 2001 From: Andrew Lima Date: Wed, 7 Apr 2021 13:21:56 +0200 Subject: [PATCH 24/27] BUG FIX: Warning when admin changes the user's level. BUG FIX: Fixed an issue when user's level changed and would try to clear approval data. --- pmpro-approvals.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pmpro-approvals.php b/pmpro-approvals.php index 8a58468..fbca9fd 100644 --- a/pmpro-approvals.php +++ b/pmpro-approvals.php @@ -1136,12 +1136,12 @@ public static function resetMember( $user_id, $level_id ) { /** * Set approval status to pending for new members */ - public static function pmpro_before_change_membership_level( $level_id, $user_id ) { + public static function pmpro_before_change_membership_level( $level_id, $user_id, $old_levels, $cancel_level ) { // First see if the user is cancelling, try to clean up approval data if they are pending. - if ( $level_id == 0 || isset( $old_level[0]->ID ) ) { - if ( self::isPending( $user_id, $old_level[0]->ID ) ) { - self::clearApprovalData( $user_id, $old_level[0]->ID, apply_filters( 'pmpro_approvals_delete_log_on_cancel', false ) ); + if ( $level_id == 0 || isset( $old_levels[0]->ID ) ) { + if ( self::isPending( $user_id, $old_levels[0]->ID ) ) { + self::clearApprovalData( $user_id, $old_levels[0]->ID, apply_filters( 'pmpro_approvals_delete_log_on_cancel', false ) ); } } From 858c262b60f1e43ed8033289c588054ba5e2ecb9 Mon Sep 17 00:00:00 2001 From: Andrew Lima Date: Wed, 7 Apr 2021 13:36:55 +0200 Subject: [PATCH 25/27] Add README.MD File and banner --- README.md | 37 ++++++++++++++++++ ...l-process-for-membership-add-on-banner.png | Bin 0 -> 122386 bytes 2 files changed, 37 insertions(+) create mode 100644 README.md create mode 100644 approval-process-for-membership-add-on-banner.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..61c1c1b --- /dev/null +++ b/README.md @@ -0,0 +1,37 @@ +![](approval-process-for-membership-add-on-banner.png) + +# [Approval Process for Membership](https://www.paidmembershipspro.com/add-ons/approval-process-membership/) # +[comment]: # (Generate badges from shields.io, only works for .org plugins to get other stats etc. We'd have to create our own endpoints for Premium plugins) + +![License](https://img.shields.io/badge/license-GPL--2.0%2B-red.svg?style=flat-square) + +### Welcome to the Approval Process for Membership GitHub Repository +Grant membership site administrators the ability to approve or deny members. The Approvals Add On for Paid Memberships Pro allows you to set up a unique approval or application process for your membership site. + +For more information please visit [https://www.paidmembershipspro.com/add-ons/approval-process-membership/](https://www.paidmembershipspro.com/add-ons/approval-process-membership/) + +## Installation ## +For detailed installation steps, visit the [documentation](https://www.paidmembershipspro.com/add-ons/approval-process-membership/) page. + +1. Download the current development ZIP file directly: `https://github.com/strangerstudios/pmpro-approvals/archive/dev.zip` + +**Please ensure that once installing this version of the plugin to remove `-dev` from the plugin's folder name.** + +## Bugs ## +If you find an issue/bug, let us know by [creating a detailed GitHub issue](https://github.com/strangerstudios/pmpro-approvals/issues/new). + +## Support ## +This is a developer's portal for Approval Process for Membership. We do not offer support on this channel. **Any support related questions should be directed to [https://www.paidmembershipspro.com/add-ons/approval-process-membership/](https://www.paidmembershipspro.com/add-ons/approval-process-membership/).** + +## Contributing to Approval Process for Membership ## +We encourage and welcome any contribution to Approval Process for Membership. Please read the [guidelines for contributing](https://github.com/strangerstudios/pmpro-approvals/blob/dev/.github/CONTRIBUTING.md) to this repository. + +There are various **ways to the help development** of Approval Process for Membership: + +1. Report [bugs/issues](https://github.com/strangerstudios/pmpro-approvals/issues/new) on GitHub. +2. Work on any issues by submitting a Pull Request. + +Here are some ways for **non-developers to contribute** to Approval Process for Membership: + +1. Translate Approval Process for Membership into your own [language](https://www.paidmembershipspro.com/paid-memberships-pro-in-your-language/). +2. [Purchase a plus membership](https://paidmembershipspro.com/pricing) to help fund ongoing development and bug fixes. diff --git a/approval-process-for-membership-add-on-banner.png b/approval-process-for-membership-add-on-banner.png new file mode 100644 index 0000000000000000000000000000000000000000..ceddeb7e3c9022f84bebaab736a6984a7c931a75 GIT binary patch literal 122386 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�yQC`9Jm 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 Date: Wed, 7 Apr 2021 13:48:14 +0200 Subject: [PATCH 26/27] Add .gitattributes to repo. --- .gitattributes | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..f466c67 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,5 @@ +approval-process-for-membership-add-on-banner.png export-ignore +README.md export-ignore +.gitattributes export-ignore +.github export-ignore +.gitignore export-ignore \ No newline at end of file From 201df72ed9112b6b7004ce5a1d7f51c9f508448b Mon Sep 17 00:00:00 2001 From: Andrew Lima Date: Wed, 7 Apr 2021 16:29:22 +0200 Subject: [PATCH 27/27] Version bump + readme Update version and readme text. --- pmpro-approvals.php | 2 +- readme.txt | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/pmpro-approvals.php b/pmpro-approvals.php index fbca9fd..9c5179c 100644 --- a/pmpro-approvals.php +++ b/pmpro-approvals.php @@ -3,7 +3,7 @@ Plugin Name: Paid Memberships Pro - Approvals Add On Plugin URI: https://www.paidmembershipspro.com/add-ons/approval-process-membership/ Description: Grants administrators the ability to approve/deny memberships after signup. -Version: 1.3.4 +Version: 1.4 Author: Stranger Studios Author URI: https://www.paidmembershipspro.com Text Domain: pmpro-approvals diff --git a/readme.txt b/readme.txt index a6f79d1..8251471 100644 --- a/readme.txt +++ b/readme.txt @@ -36,6 +36,26 @@ Members pending approval will not have access to view members-only content until View full documentation at: https://www.paidmembershipspro.com/add-ons/approval-process-membership/ == Changelog == += 1.4 - 2021-04-07 = +* SECURITY: General escaping and sanitizing when outputting data on the user's approvals information page. +* ENHANCEMENT: Added translation file for German locale. +* ENHANCEMENT: Added in filter 'pmpro_approvals_approval_count_sql_parts' and 'pmpro_approvals_approval_count_sql' to make SQL query (when counting pending users) easier to manipulate. +* ENHANCEMENT: Added in filter 'pmpro_approvals_pending_approvals_sql_parts' and 'pmpro_approvals_pending_approvals_sql' to make SQL query (for retrieving pending users) easier to manipulate. +* ENHANCEMENT: Added in filter 'pmpro_approvals_level_restrict_checkout' to allow bypassing of checkout restriction. Thanks @edwinbsmith +* ENHANCEMENT: Improved coding readability and variable naming. +* ENHANCEMENT: Make links clickable when custom fields are added to the user's profile and previewing approval information. Note: the stored value requires http:// or https:// to make it clickable. +* ENHANCEMENT: Integrate with Pay By Check. When a user is approved, approve their pending check order. Has to be enabled by using the filter `pmpro_approvals_pbc_success_on_approval` and returning `true` to enable it. +* BUG FIX/ENHANCEMENT: Clear pending approval data if the user changes their level or cancels before being approved or denied. +* BUG FIX: Allow pending/non-approved members to cancel their membership level on the frontend. +* BUG FIX: Fixes an issue for [membership] shortcode that didn't pass levels attribute and pending members used to gain access to restricted content. +* BUG FIX: Fixed an issue where refreshing the approvals page may resend the approval email - this now only gets sent once. +* BUG FIX: Fixed an issue where multiple fields belonging to different levels with the same name would show up twice on the view info page of the approvals. This now supports the 'level' attribute inside Register Helper when displaying fields. +* BUG FIX: Fixed general issues when Paid Memberships Pro was not active. +* BUG FIX: Fixed warnings of missing variables when approval emails were sent. +* BUG FIX: Fixed an issue where an undefined variable was used inside the approval's list within the WordPress admin. +* BUG FIX: Fixed general warnings when a level does not require payment. +* BUG FIX: Support Pay By Check confirmation message/instructions when a level uses both Pay By Check and requires approval. +* BUG FIX: Fixing a notice for check payment instructions confirmation message text when approval level is free. = 1.3.4 - 2019-11-13 = * ENHANCEMENT: Improved query for Approval Count inside dashboard for speed improvements to reduce load times while in WordPress dashboard.

' . esc_html( rtrim( $rh_field_string, ', ' ) ) . '' . esc_html( $register_helper_fields ) . '' . esc_url( $register_helper_fields ) . '' . esc_html( $register_helper_fields ) . '