Skip to content
wiki.fftac.org

Member System - Source Excerpt 03

Back to Member System

Summary

This source excerpt preserves a bounded section of Anti-Christ.net/wp-content/themes/anti-christ-thin-veil/inc/member-system.php so readers can inspect the evidence without opening the full source file.

**Source path:** Anti-Christ.net/wp-content/themes/anti-christ-thin-veil/inc/member-system.php

ob_start();
	?>
	<section class="member-auth-grid">
		<div class="member-auth-panel">
			<?php if ( is_user_logged_in() ) : ?>
				<h2><?php esc_html_e( 'Already signed in', 'anti-christ-thin-veil' ); ?></h2>
				<p><?php esc_html_e( 'Your WordPress account can submit dispatches for editorial review.', 'anti-christ-thin-veil' ); ?></p>
				<a class="button button-primary" href="<?php echo esc_url( actv_page_url( 'submit-dispatch' ) ); ?>"><?php esc_html_e( 'Submit dispatch', 'anti-christ-thin-veil' ); ?></a>
				<a class="button button-ghost" href="<?php echo esc_url( wp_logout_url( actv_page_url( 'members' ) ) ); ?>"><?php esc_html_e( 'Log out', 'anti-christ-thin-veil' ); ?></a>
			<?php else : ?>
				<h2><?php esc_html_e( 'WordPress member login', 'anti-christ-thin-veil' ); ?></h2>
				<?php
				echo wp_login_form(
					array(
						'echo'     => false,
						'redirect' => actv_page_url( 'members' ),
						'remember' => true,
					)
				);
				?>
				<p class="member-form-note"><a href="<?php echo esc_url( wp_lostpassword_url( actv_page_url( 'member-login' ) ) ); ?>"><?php esc_html_e( 'Lost your WordPress password?', 'anti-christ-thin-veil' ); ?></a></p>
			<?php endif; ?>
		</div>
		<aside class="member-side-panel">
			<h2><?php esc_html_e( 'Access notes', 'anti-christ-thin-veil' ); ?></h2>
			<ul class="protocol-list">
				<li><?php esc_html_e( 'Loginizer is active for brute-force protection on the WordPress login endpoint.', 'anti-christ-thin-veil' ); ?></li>
				<li><?php esc_html_e( 'Roster signup and WordPress posting accounts are different systems.', 'anti-christ-thin-veil' ); ?></li>
				<li><?php esc_html_e( 'Submitted dispatches save as pending posts until an editor reviews them.', 'anti-christ-thin-veil' ); ?></li>
			</ul>
			<?php if ( actv_wordpress_registration_open() ) : ?>
				<a class="button button-ghost" href="<?php echo esc_url( wp_registration_url() ); ?>"><?php esc_html_e( 'Create WordPress account', 'anti-christ-thin-veil' ); ?></a>
			<?php else : ?>
				<a class="button button-ghost" href="<?php echo esc_url( actv_page_url( 'join' ) ); ?>"><?php esc_html_e( 'Request posting access', 'anti-christ-thin-veil' ); ?></a>
			<?php endif; ?>
		</aside>
	</section>
	<?php
	return ob_get_clean();
}

/**
 * Render Participants Database roster intake.
 *
 * @return string
 */
function actv_render_member_join_panel() {
	if ( ! actv_is_age_verified() ) {
		return actv_render_age_gate( __( 'member roster intake', 'anti-christ-thin-veil' ) );
	}

	ob_start();
	?>
	<section class="member-auth-grid">
		<div class="member-auth-panel">
			<h2><?php esc_html_e( 'Member roster intake', 'anti-christ-thin-veil' ); ?></h2>
			<p><?php esc_html_e( 'Participants Database stores the roster request and emails a private edit link when configured. This does not automatically create a WordPress login account, publication right, or promise of anonymity.', 'anti-christ-thin-veil' ); ?></p>
			<?php if ( actv_participants_database_available() ) : ?>
				<div class="pdb-member-panel">
					<?php echo do_shortcode( '[pdb_signup]' ); ?>
				</div>
			<?php else : ?>
				<div class="member-alert"><?php esc_html_e( 'Participants Database is not active, so roster intake is unavailable.', 'anti-christ-thin-veil' ); ?></div>
			<?php endif; ?>
		</div>
		<aside class="member-side-panel">
			<h2><?php esc_html_e( 'Private record link', 'anti-christ-thin-veil' ); ?></h2>
			<p><?php esc_html_e( 'Already on the roster? Use your private link to update your record, or request the link again if Participants Database email is configured.', 'anti-christ-thin-veil' ); ?></p>
			<a class="button button-ghost" href="<?php echo esc_url( add_query_arg( 'm', 'r', actv_page_url( 'join' ) ) ); ?>"><?php esc_html_e( 'Recover private link', 'anti-christ-thin-veil' ); ?></a>
			<a class="button button-ghost" href="<?php echo esc_url( actv_page_url( 'member-record' ) ); ?>"><?php esc_html_e( 'Open record page', 'anti-christ-thin-veil' ); ?></a>
		</aside>
	</section>
	<?php
	return ob_get_clean();
}

/**
 * Render Participants Database private record form.
 *
 * @return string
 */
function actv_render_member_record_panel() {
	if ( ! actv_is_age_verified() ) {
		return actv_render_age_gate( __( 'private roster record', 'anti-christ-thin-veil' ) );
	}

	ob_start();
	?>
	<section class="member-auth-grid">
		<div class="member-auth-panel">
			<h2><?php esc_html_e( 'Private roster record', 'anti-christ-thin-veil' ); ?></h2>
			<p><?php esc_html_e( 'This page expects a valid Participants Database private link. If the form is empty, return through your emailed link or recover it from the roster intake page.', 'anti-christ-thin-veil' ); ?></p>
			<?php if ( actv_participants_database_available() ) : ?>
				<div class="pdb-member-panel">
					<?php echo do_shortcode( '[pdb_record]' ); ?>
				</div>
			<?php else : ?>
				<div class="member-alert"><?php esc_html_e( 'Participants Database is not active, so private record editing is unavailable.', 'anti-christ-thin-veil' ); ?></div>
			<?php endif; ?>
		</div>
		<aside class="member-side-panel">
			<h2><?php esc_html_e( 'Need the link again?', 'anti-christ-thin-veil' ); ?></h2>
			<p><?php esc_html_e( 'The private edit link is managed by Participants Database and depends on its email configuration.', 'anti-christ-thin-veil' ); ?></p>
			<a class="button button-ghost" href="<?php echo esc_url( add_query_arg( 'm', 'r', actv_page_url( 'join' ) ) ); ?>"><?php esc_html_e( 'Recover private link', 'anti-christ-thin-veil' ); ?></a>
		</aside>
	</section>
	<?php
	return ob_get_clean();
}

/**
 * Render the front-end pending-post submission form.
 *
 * @return string
 */
function actv_render_submit_dispatch_panel() {
	if ( ! actv_is_age_verified() ) {
		return actv_render_age_gate( __( 'dispatch submission', 'anti-christ-thin-veil' ) );
	}

	if ( ! is_user_logged_in() ) {
		ob_start();
		?>
		<section class="member-system-grid" aria-label="<?php esc_attr_e( 'Submission access', 'anti-christ-thin-veil' ); ?>">
			<article class="member-card">
				<p class="section-label"><?php esc_html_e( 'Login required', 'anti-christ-thin-veil' ); ?></p>
				<h2><?php esc_html_e( 'Sign in to submit', 'anti-christ-thin-veil' ); ?></h2>
				<p><?php esc_html_e( 'Dispatches are stored as pending WordPress posts under the signed-in account that submitted them.', 'anti-christ-thin-veil' ); ?></p>
				<a class="button button-primary" href="<?php echo esc_url( actv_page_url( 'member-login' ) ); ?>"><?php esc_html_e( 'Open login', 'anti-christ-thin-veil' ); ?></a>
			</article>
			<article class="member-card">
				<p class="section-label"><?php esc_html_e( 'No account?', 'anti-christ-thin-veil' ); ?></p>
				<h2><?php esc_html_e( 'Request posting access', 'anti-christ-thin-veil' ); ?></h2>
				<p><?php esc_html_e( 'Public WordPress registration is closed unless an admin enables it. Use roster intake to request access; approval is narrow, manual, and review-first.', 'anti-christ-thin-veil' ); ?></p>
				<a class="button button-ghost" href="<?php echo esc_url( actv_page_url( 'join' ) ); ?>"><?php esc_html_e( 'Open roster intake', 'anti-christ-thin-veil' ); ?></a>
			</article>
		</section>
		<?php
		return ob_get_clean();
	}

	$choices = actv_member_submission_category_choices();