Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/paid-memberships-pro/includes/terms.php

Keine Baseline-Datei – Diff nur gegen leer.
Zur Liste
1 -
1 + <?php
2 +
3 + /**
4 + * Show checkboxes to restrict content when creating a new term.
5 + *
6 + * @since 2.10
7 + */
8 + function pmpro_term_add_form_fields() {
9 + // Get all membership levels.
10 + $membership_levels = pmpro_getAllLevels( true, true );
11 + $membership_levels = pmpro_sort_levels_by_order( $membership_levels );
12 +
13 + // Get all levels for this term.
14 + // None because we're creating a new term.
15 + $term_levels = array();
16 +
17 + // Build the selectors for the #memberships list based on level count.
18 + $pmpro_memberships_checklist_classes = array( 'pmpro_checkbox_box', 'list:category', 'categorychecklist', 'form-no-clear');
19 + if ( count( $membership_levels ) > 9 ) {
20 + $pmpro_memberships_checklist_classes[] = 'pmpro_scrollable';
21 + }
22 + $pmpro_memberships_checklist_classes = implode( ' ', array_unique( $pmpro_memberships_checklist_classes ) );
23 +
24 + // Render form field div.
25 + ?>
26 + <div class="form-field">
27 + <label><?php esc_html_e( 'Require Membership', 'paid-memberships-pro' ); ?></label>
28 + <?php if ( count( $membership_levels ) > 1 ) { ?>
29 + <p><?php esc_html_e( 'Select:', 'paid-memberships-pro' ); ?> <a id="pmpro-memberships-checklist-select-all" href="javascript:void(0);"><?php esc_html_e( 'All', 'paid-memberships-pro' ); ?></a> | <a id="pmpro-memberships-checklist-select-none" href="javascript:void(0);"><?php esc_html_e( 'None', 'paid-memberships-pro' ); ?></a></p>
30 + <script type="text/javascript">
31 + jQuery('#pmpro-memberships-checklist-select-all').on('click',function(){
32 + jQuery('#pmpro-memberships-checklist input').prop('checked', true);
33 + });
34 + jQuery('#pmpro-memberships-checklist-select-none').on('click',function(){
35 + jQuery('#pmpro-memberships-checklist input').prop('checked', false);
36 + });
37 + </script>
38 + <?php } ?>
39 + <div id="pmpro-memberships-checklist" class="<?php echo esc_attr( $pmpro_memberships_checklist_classes ); ?>">
40 + <input type="hidden" name="pmpro_noncename" id="pmpro_noncename" value="<?php echo esc_attr( wp_create_nonce( plugin_basename(__FILE__) ) )?>" />
41 + <?php
42 + $in_member_cat = false;
43 + foreach ( $membership_levels as $level ) { ?>
44 + <div id="membership-level-<?php echo esc_attr( $level->id ); ?>" class="pmpro_clickable">
45 + <input id="in-membership-level-<?php echo esc_attr( $level->id ); ?>" type="checkbox" <?php if ( in_array( $level->id, $term_levels ) ) { ?>checked="checked"<?php } ?> name="pmpro_term_restrictions[]" value="<?php echo esc_attr( $level->id ) ;?>" />
46 + <label for="in-membership-level-<?php echo esc_attr( $level->id ); ?>"><?php echo esc_html( $level->name ); ?></label>
47 + </div>
48 + <?php
49 + }
50 + ?>
51 + </div>
52 + </div>
53 + <?php
54 + }
55 + add_action( 'category_add_form_fields', 'pmpro_term_add_form_fields' );
56 + add_action( 'post_tag_add_form_fields', 'pmpro_term_add_form_fields' );
57 +
58 + /**
59 + * Show checkboxes to restrict content when editing a term.
60 + *
61 + * @since 2.10
62 + *
63 + * @param WP_Term $term The term object.
64 + */
65 + function pmpro_term_edit_form_fields( $term ) {
66 + global $wpdb;
67 +
68 + // Get all membership levels.
69 + $membership_levels = pmpro_getAllLevels( true, true );
70 + $membership_levels = pmpro_sort_levels_by_order( $membership_levels );
71 +
72 + // Get all levels for this term.
73 + $term_levels = $wpdb->get_col( "SELECT membership_id FROM $wpdb->pmpro_memberships_categories WHERE category_id = '" . intval( $term->term_id ) . "'" );
74 +
75 + // Build the selectors for the #memberships list based on level count.
76 + $pmpro_memberships_checklist_classes = array( 'pmpro_checkbox_box', 'list:category', 'categorychecklist', 'form-no-clear');
77 + if ( count( $membership_levels ) > 9 ) {
78 + $pmpro_memberships_checklist_classes[] = 'pmpro_scrollable';
79 + }
80 + $pmpro_memberships_checklist_classes = implode( ' ', array_unique( $pmpro_memberships_checklist_classes ) );
81 +
82 + // Render table row.
83 + ?>
84 + <tr class="form-field">
85 + <th scope="row"><label><?php esc_html_e( 'Require Membership', 'paid-memberships-pro' ); ?></label></th>
86 + <td>
87 + <?php if ( count( $membership_levels ) > 1 ) { ?>
88 + <p><?php esc_html_e( 'Select:', 'paid-memberships-pro' ); ?> <a id="pmpro-memberships-checklist-select-all" href="javascript:void(0);"><?php esc_html_e( 'All', 'paid-memberships-pro' ); ?></a> | <a id="pmpro-memberships-checklist-select-none" href="javascript:void(0);"><?php esc_html_e( 'None', 'paid-memberships-pro' ); ?></a></p>
89 + <script type="text/javascript">
90 + jQuery('#pmpro-memberships-checklist-select-all').on('click',function(){
91 + jQuery('#pmpro-memberships-checklist input').prop('checked', true);
92 + });
93 + jQuery('#pmpro-memberships-checklist-select-none').on('click',function(){
94 + jQuery('#pmpro-memberships-checklist input').prop('checked', false);
95 + });
96 + </script>
97 + <?php } ?>
98 + <div id="pmpro-memberships-checklist" class="<?php echo esc_attr( $pmpro_memberships_checklist_classes ); ?>">
99 + <input type="hidden" name="pmpro_noncename" id="pmpro_noncename" value="<?php echo esc_attr( wp_create_nonce( plugin_basename(__FILE__) ) )?>" />
100 + <?php
101 + $in_member_cat = false;
102 + foreach ( $membership_levels as $level ) { ?>
103 + <div id="membership-level-<?php echo esc_attr( $level->id ); ?>" class="pmpro_clickable">
104 + <input id="in-membership-level-<?php echo esc_attr( $level->id ); ?>" type="checkbox" <?php if ( in_array( $level->id, $term_levels ) ) { ?>checked="checked"<?php } ?> name="pmpro_term_restrictions[]" value="<?php echo esc_attr( $level->id ) ;?>" />
105 + <label for="in-membership-level-<?php echo esc_attr( $level->id ); ?>"><?php echo esc_html( $level->name ); ?></label>
106 + </div>
107 + <?php
108 + }
109 + ?>
110 + </div>
111 + </td>
112 + </tr>
113 + <?php
114 + }
115 + add_action( 'category_edit_form_fields', 'pmpro_term_edit_form_fields', 10, 2 );
116 + add_action( 'post_tag_edit_form_fields', 'pmpro_term_edit_form_fields', 10, 2 );
117 +
118 + /**
119 + * Save checkboxes to restrict categories and tags when saving a term.
120 + *
121 + * @since 2.10
122 + *
123 + * @param int $term_id The ID of the term being saved.
124 + */
125 + function pmpro_term_saved( $term_id ) {
126 + // Check nonce.
127 + if ( ! isset( $_REQUEST['pmpro_noncename'] ) || ! wp_verify_nonce( sanitize_key( $_REQUEST['pmpro_noncename'] ), plugin_basename( __FILE__ ) ) ) {
128 + return;
129 + }
130 +
131 + // Remove all levels for this term.
132 + global $wpdb;
133 + $wpdb->query( "DELETE FROM $wpdb->pmpro_memberships_categories WHERE category_id = '" . intval( $term_id ) . "'" );
134 +
135 + // Add the levels that are now checked.
136 + if ( ! empty( $_REQUEST['pmpro_term_restrictions'] ) ) {
137 + foreach ( $_REQUEST['pmpro_term_restrictions'] as $level_id ) {
138 + $wpdb->query( "INSERT INTO $wpdb->pmpro_memberships_categories (membership_id, category_id) VALUES('" . intval( $level_id ) . "', '" . intval( $term_id ) . "')" );
139 + }
140 + }
141 + }
142 + add_action( 'saved_category', 'pmpro_term_saved' );
143 + add_action( 'saved_post_tag', 'pmpro_term_saved' );
144 +