Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/paid-memberships-pro/includes/terms.php
Keine Baseline-Datei – Diff nur gegen leer.
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
+