PluginProbe
Charitable – Donation & Fundraising Platform (Donation Forms, Recurring Donations & Fundraising Campaigns) / 1.7.0
Charitable – Donation & Fundraising Platform (Donation Forms, Recurring Donations & Fundraising Campaigns) v1.7.0
1.8.12.3 1.8.12.2 1.8.12.1 1.8.12 1.8.11.3 1.8.11.2 1.8.11.1 1.8.11 1.6.6 1.6.60 1.6.7 1.6.8 1.6.9 1.7.0 1.7.0.1 1.7.0.11 1.7.0.12 1.7.0.14 1.7.0.2 1.7.0.3 1.7.0.5 1.7.0.6 1.7.0.7 1.7.0.9 1.8.0 All 210 releases
charitable / includes / shortcodes / class-charitable-login-shortcode.php

class-charitable-login-shortcode.php in Charitable – Donation & Fundraising Platform (Donation Forms, Recurring Donations & Fundraising Campaigns) 1.7.0, at includes/shortcodes/class-charitable-login-shortcode.php

135 lines 3.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Login shortcode class.
4 *
5 * @package Charitable/Shortcodes/Login
6 * @author David Bisset
7 * @copyright Copyright (c) 2022, WP Charitable LLC
8 * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
9 * @since 1.0.0
10 * @version 1.6.51
11 */
12
13 // Exit if accessed directly.
14 if ( ! defined( 'ABSPATH' ) ) {
15 exit;
16 }
17
18 if ( ! class_exists( 'Charitable_Login_Shortcode' ) ) :
19
20 /**
21 * Charitable_Login_Shortcode class.
22 *
23 * @since 1.0.0
24 */
25 class Charitable_Login_Shortcode {
26
27 /**
28 * The callback method for the campaigns shortcode.
29 *
30 * This receives the user-defined attributes and passes the logic off to the class.
31 *
32 * @since 1.0.0
33 *
34 * @param array $atts User-defined shortcode attributes.
35 * @return string
36 */
37 public static function display( $atts = array() ) {
38 $defaults = array(
39 'logged_in_message' => __( 'You are already logged in!', 'charitable' ),
40 'redirect' => esc_url( charitable_get_login_redirect_url() ),
41 'registration_link_text' => __( 'Register', 'charitable' ),
42 );
43
44 $args = shortcode_atts( $defaults, $atts, 'charitable_login' );
45 $args['login_form_args'] = self::get_login_form_args( $args );
46
47 if ( is_user_logged_in() ) {
48 ob_start();
49 charitable_template( 'shortcodes/logged-in.php', $args );
50 return ob_get_clean();
51 }
52
53 if ( false == $args['registration_link_text'] || 'false' == $args['registration_link_text'] ) {
54 $args['registration_link'] = false;
55 } else {
56 $registration_link = charitable_get_permalink( 'registration_page' );
57
58 if ( charitable_get_permalink( 'login_page' ) === $registration_link ) {
59 $args['registration_link'] = false;
60 } else {
61 $args['registration_link'] = add_query_arg(
62 'redirect_to',
63 urlencode( urldecode( $args['redirect'] ) ),
64 $registration_link
65 );
66 }
67 }
68
69 ob_start();
70
71 charitable_template( 'shortcodes/login.php', $args );
72
73 /**
74 * Filter the default output of the login shortcode.
75 *
76 * @since 1.0.0
77 *
78 * @param string $content The default login shortcode output.
79 */
80 return apply_filters( 'charitable_login_shortcode', ob_get_clean() );
81 }
82
83 /**
84 * Fingerprint the login form with our charitable=true hidden field.
85 *
86 * @see wp_login_form
87 *
88 * @since 1.4.0
89 *
90 * @param string $content The default output.
91 * @param array $args Arguments passed to wp_login_form.
92 * @return string
93 */
94 public static function add_hidden_field_to_login_form( $content, $args ) {
95 if ( isset( $args['charitable'] ) && $args['charitable'] ) {
96 $content .= '<input type="hidden" name="charitable" value="1" />';
97 }
98
99 return $content;
100 }
101
102 /**
103 * Return donations to display with the shortcode.
104 *
105 * @see wp_login_form
106 *
107 * @since 1.0.0
108 *
109 * @param array $args Arguments to pass to wp_login_form.
110 * @return mixed[] $args
111 */
112 protected static function get_login_form_args( $args ) {
113 $default = array(
114 'redirect' => $args['redirect'],
115 'charitable' => true,
116 );
117
118 if ( isset( $_GET['username'] ) ) {
119 $default['value_username'] = str_replace( ' ', '+', $_GET['username'] );
120 }
121
122 /**
123 * Filter the arguments to pass to wp_login_form().
124 *
125 * @since 1.0.0
126 *
127 * @param array $default The default arguments.
128 * @param array $args Passed in arguments.
129 */
130 return apply_filters( 'charitable_login_form_args', $default, $args );
131 }
132 }
133
134 endif;
135