Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions includes/Admin/Admin_Installer.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,32 +21,32 @@
*/
public function admin_notice() {
$page_created = get_option( '_wpuf_page_created' );
if ( $page_created != '1' && 'off' == wpuf_get_option( 'install_wpuf_pages', 'wpuf_general', 'on' ) ) {

Check warning on line 24 in includes/Admin/Admin_Installer.php

View workflow job for this annotation

GitHub Actions / Run PHPCS inspection

Loose comparisons are not allowed. Expected: "==="; Found: "=="

Check warning on line 24 in includes/Admin/Admin_Installer.php

View workflow job for this annotation

GitHub Actions / Run PHPCS inspection

Loose comparisons are not allowed. Expected: "!=="; Found: "!="
?>
<div class="updated error">
<p>
<?php esc_html_e( 'If you have not created <strong>WP User Frontend</strong> pages yet, you can do this by one click.',

Check failure on line 28 in includes/Admin/Admin_Installer.php

View workflow job for this annotation

GitHub Actions / Run PHPCS inspection

Opening parenthesis of a multi-line function call must be the last content on the line

Check failure on line 28 in includes/Admin/Admin_Installer.php

View workflow job for this annotation

GitHub Actions / Run PHPCS inspection

Opening PHP tag must be on a line by itself
'wp-user-frontend' ); ?>

Check failure on line 29 in includes/Admin/Admin_Installer.php

View workflow job for this annotation

GitHub Actions / Run PHPCS inspection

Closing PHP tag must be on a line by itself

Check failure on line 29 in includes/Admin/Admin_Installer.php

View workflow job for this annotation

GitHub Actions / Run PHPCS inspection

Closing parenthesis of a multi-line function call must be on a line by itself

Check failure on line 29 in includes/Admin/Admin_Installer.php

View workflow job for this annotation

GitHub Actions / Run PHPCS inspection

Multi-line function call not indented correctly; expected 20 spaces but found 38

Check warning on line 29 in includes/Admin/Admin_Installer.php

View workflow job for this annotation

GitHub Actions / Run PHPCS inspection

Found precision alignment of 2 spaces.
</p>
<p class="submit">
<a class="button button-primary"
href="<?php echo esc_url( add_query_arg( [ 'install_wpuf_pages' => true ],

Check failure on line 33 in includes/Admin/Admin_Installer.php

View workflow job for this annotation

GitHub Actions / Run PHPCS inspection

Opening parenthesis of a multi-line function call must be the last content on the line

Check failure on line 33 in includes/Admin/Admin_Installer.php

View workflow job for this annotation

GitHub Actions / Run PHPCS inspection

Opening PHP tag must be on a line by itself

Check failure on line 33 in includes/Admin/Admin_Installer.php

View workflow job for this annotation

GitHub Actions / Run PHPCS inspection

Opening PHP tag must be on a line by itself

Check failure on line 33 in includes/Admin/Admin_Installer.php

View workflow job for this annotation

GitHub Actions / Run PHPCS inspection

Opening statement of multi-line function call not indented correctly; expected 20 spaces but found 23

Check failure on line 33 in includes/Admin/Admin_Installer.php

View workflow job for this annotation

GitHub Actions / Run PHPCS inspection

Opening statement of multi-line function call not indented correctly; expected 20 spaces but found 23

Check warning on line 33 in includes/Admin/Admin_Installer.php

View workflow job for this annotation

GitHub Actions / Run PHPCS inspection

Found precision alignment of 3 spaces.
admin_url( 'admin.php?page=wpuf-settings' ) ) ); ?>"><?php esc_html_e( 'Install WPUF Pages',
'wp-user-frontend' ); ?></a>

Check warning on line 35 in includes/Admin/Admin_Installer.php

View workflow job for this annotation

GitHub Actions / Run PHPCS inspection

Found precision alignment of 3 spaces.
<?php esc_html_e( 'or', 'wp-user-frontend' ); ?>
<a class="button"
href="<?php echo esc_url( add_query_arg( [ 'wpuf_hide_page_nag' => true ] ) ); ?>"><?php esc_html_e( 'Skip Setup',

Check warning on line 38 in includes/Admin/Admin_Installer.php

View workflow job for this annotation

GitHub Actions / Run PHPCS inspection

Found precision alignment of 3 spaces.
'wp-user-frontend' ); ?></a>
</p>
</div>
<?php
}
if ( isset( $_GET['wpuf_page_installed'] ) && $_GET['wpuf_page_installed'] == '1' ) {

Check warning on line 44 in includes/Admin/Admin_Installer.php

View workflow job for this annotation

GitHub Actions / Run PHPCS inspection

Loose comparisons are not allowed. Expected: "==="; Found: "=="

Check warning on line 44 in includes/Admin/Admin_Installer.php

View workflow job for this annotation

GitHub Actions / Run PHPCS inspection

Processing form data without nonce verification.

Check warning on line 44 in includes/Admin/Admin_Installer.php

View workflow job for this annotation

GitHub Actions / Run PHPCS inspection

Processing form data without nonce verification.
?>
<div class="updated">
<p>
<strong><?php esc_html_e( 'Congratulations!',
'wp-user-frontend' ); ?></strong> <?php echo wp_kses_post( 'Pages for <strong>WP User Frontend</strong> has been successfully installed and saved!',

Check warning on line 49 in includes/Admin/Admin_Installer.php

View workflow job for this annotation

GitHub Actions / Run PHPCS inspection

Found precision alignment of 2 spaces.
'wp-user-frontend' ); ?>
</p>
</div>
Expand Down Expand Up @@ -86,6 +86,11 @@
$dashboard_page = $this->create_page( __( 'Dashboard', 'wp-user-frontend' ), '[wpuf_dashboard]' );
$account_page = $this->create_page( __( 'Account', 'wp-user-frontend' ), '[wpuf_account]' );
$edit_page = $this->create_page( __( 'Edit', 'wp-user-frontend' ), '[wpuf_edit]' );

if ( class_exists( 'WPUF_User_Listing' ) ) {
$this->create_page( __( 'User Directory', 'wp-user-frontend' ), $this->get_user_directory_page_content() );
}

// login page
$login_page = $this->create_page( __( 'Login', 'wp-user-frontend' ), '[wpuf-login]' );
$post_form = $this->create_form();
Expand Down Expand Up @@ -185,4 +190,57 @@
public function create_form() {
return wpuf_create_sample_form( __( 'Sample Form', 'wp-user-frontend' ), 'wpuf_forms' );
}

/**
* Get user directory page content
*
* @since WPUF_SINCE
*
* @return string
*/
private function get_user_directory_page_content() {
return '<!-- wp:wpuf-ud/directory {"directory_layout":"roundGrids","hasSelectedLayout":true,"selectedLayout":"roundGrids"} -->
<div class="wp-block-wpuf-ud-directory"><!-- wp:wpuf-ud/directory-item -->
<div class="wp-block-wpuf-ud-directory-item"><!-- wp:group {"className":"is-style-default","style":{"border":{"radius":"8px","color":"#d1d5db","width":"1px"},"spacing":{"margin":{"top":"0","bottom":"0"},"blockGap":"0","padding":{"top":"var:preset|spacing|30","bottom":"var:preset|spacing|30","left":"0","right":"0"}}},"layout":{"type":"flex","orientation":"vertical","justifyContent":"center"}} -->
<div class="wp-block-group is-style-default has-border-color" style="border-color:#d1d5db;border-width:1px;border-radius:8px;margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--30);padding-right:0;padding-bottom:var(--wp--preset--spacing--30);padding-left:0"><!-- wp:wpuf-ud/avatar {"avatarSize":"custom","fallbackType":"gravatar","customSize":128} /-->

<!-- wp:wpuf-ud/name {"textAlign":"center","style":{"color":"#0F172A","fontWeight":"bold","typography":{"fontWeight":"600","fontSize":"20px","lineHeight":"2"}}} /-->

<!-- wp:wpuf-ud/contact {"showIcons":false,"iconSize":"small","showLabels":false,"className":"wpuf-user-contact-info wpuf-contact-layout-inline"} /-->

<!-- wp:wpuf-ud/social {"iconSize":"medium"} -->
<div class="wp-block-wpuf-ud-social"><div class="wpuf-social-fields"></div></div>
<!-- /wp:wpuf-ud/social -->

<!-- wp:wpuf-ud/button {"textColor":"base","fontSize":"medium","style":{"color":{"background":"#7c3aed"},"border":{"radius":"6px"}}} /--></div>
<!-- /wp:group --></div>
<!-- /wp:wpuf-ud/directory-item --></div>
<!-- /wp:wpuf-ud/directory -->

<!-- wp:wpuf-ud/profile {"block_instance_id":"e111db80-9c50-4642-aaa7-b56a8ebc54b1","userId":1,"userObject":{"id":1,"user_login":"admin101","display_name":"admin101","user_email":"","user_url":"https://wpuf.test","bio":"","avatar":"","first_name":"","last_name":"","nickname":"","name":"admin101","url":"https://wpuf.test","description":"","link":"https://wpuf.test/author/admin101/","slug":"admin101","avatar_urls":{"24":"https://secure.gravatar.com/avatar/74a43f5a2491b706609180d3059d0b4269b25d859801497ec0d248fe75f37ac4?s=24\u0026d=mm\u0026r=g","48":"https://secure.gravatar.com/avatar/74a43f5a2491b706609180d3059d0b4269b25d859801497ec0d248fe75f37ac4?s=48\u0026d=mm\u0026r=g","96":"https://secure.gravatar.com/avatar/74a43f5a2491b706609180d3059d0b4269b25d859801497ec0d248fe75f37ac4?s=96\u0026d=mm\u0026r=g"},"meta":[],"_links":{"self":[{"href":"https://wpuf.test/wp-json/wp/v2/users/1","targetHints":{"allow":["GET","POST","PUT","PATCH","DELETE"]}}],"collection":[{"href":"https://wpuf.test/wp-json/wp/v2/users"}]}},"canEdit":"1","hasSelectedPattern":true} -->
<div class="wp-block-wpuf-ud-profile wpuf-user-profile"><!-- wp:columns {"className":"wpuf-flex wpuf-flex-row wpuf-gap-8 wpuf-border wpuf-border-gray-200 wpuf-rounded-lg wpuf-p-8"} -->
<div class="wp-block-columns wpuf-flex wpuf-flex-row wpuf-gap-8 wpuf-border wpuf-border-gray-200 wpuf-rounded-lg wpuf-p-8"><!-- wp:column {"width":"33%","className":"wpuf-profile-sidebar","style":{"border":{"width":"0 1px 0 0","style":"solid","color":"#E5E7EB"}}} -->
<div class="wp-block-column wpuf-profile-sidebar has-border-color" style="border-color:#E5E7EB;border-style:solid;border-width:0 1px 0 0;flex-basis:33%"><!-- wp:wpuf-ud/avatar {"avatarSize":"custom","customSize":100} /-->

<!-- wp:wpuf-ud/name {"headingLevel":"h2","showRole":true} /-->

<!-- wp:wpuf-ud/contact {"showFields":["display_name","user_email","user_url"],"layoutStyle":"vertical","showLabels":false,"style":{"spacing":{"margin":{"top":"1rem","bottom":"1rem"}}}} /-->

<!-- wp:group {"className":"wpuf-mt-8","style":{"spacing":{"margin":{"top":"2rem"}}}} -->
<div class="wp-block-group wpuf-mt-8" style="margin-top:2rem"><!-- wp:heading {"level":4,"style":{"spacing":{"margin":{"top":"2rem"}}}} -->
<h4 class="wp-block-heading" style="margin-top:2rem">Bio</h4>
<!-- /wp:heading -->

<!-- wp:wpuf-ud/bio {"characterLimit":100,"style":{"spacing":{"margin":{"top":".75rem"}}}} /--></div>
<!-- /wp:group --></div>
<!-- /wp:column -->

<!-- wp:column {"width":"67%","className":"wpuf-profile-content"} -->
<div class="wp-block-column wpuf-profile-content" style="flex-basis:67%"><!-- wp:wpuf-ud/tabs -->
<div class="wpuf-user-tabs" data-about-content="[]"></div>
<!-- /wp:wpuf-ud/tabs --></div>
<!-- /wp:column --></div>
<!-- /wp:columns --></div>
<!-- /wp:wpuf-ud/profile -->';
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Remove hard-coded user data (admin101, wpuf.test) and ephemeral block attributes

The block attributes embed a real username, userId=1, and dev-domain links. This will leak environment-specific/PII-ish data into customer sites and may render incorrect links. Also attributes like block_instance_id, hasSelectedLayout, and hasSelectedPattern are editor-state noise that make content brittle. Replace with a minimal, portable layout; localize visible text (e.g., “Bio”).

-    private function get_user_directory_page_content() {
-        return '<!-- wp:wpuf-ud/directory {"directory_layout":"roundGrids","hasSelectedLayout":true,"selectedLayout":"roundGrids"} -->
+    private function get_user_directory_page_content() {
+        $bio = esc_html__( 'Bio', 'wp-user-frontend' );
+        return <<<HTML
+<!-- wp:wpuf-ud/directory {"directory_layout":"roundGrids"} -->
 <div class="wp-block-wpuf-ud-directory"><!-- wp:wpuf-ud/directory-item -->
 <div class="wp-block-wpuf-ud-directory-item"><!-- wp:group {"className":"is-style-default","style":{"border":{"radius":"8px","color":"#d1d5db","width":"1px"},"spacing":{"margin":{"top":"0","bottom":"0"},"blockGap":"0","padding":{"top":"var:preset|spacing|30","bottom":"var:preset|spacing|30","left":"0","right":"0"}}},"layout":{"type":"flex","orientation":"vertical","justifyContent":"center"}} -->
 <div class="wp-block-group is-style-default has-border-color" style="border-color:#d1d5db;border-width:1px;border-radius:8px;margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--30);padding-right:0;padding-bottom:var(--wp--preset--spacing--30);padding-left:0"><!-- wp:wpuf-ud/avatar {"avatarSize":"custom","fallbackType":"gravatar","customSize":128} /-->
 
 <!-- wp:wpuf-ud/name {"textAlign":"center","style":{"color":"#0F172A","fontWeight":"bold","typography":{"fontWeight":"600","fontSize":"20px","lineHeight":"2"}}} /-->
 
 <!-- wp:wpuf-ud/contact {"showIcons":false,"iconSize":"small","showLabels":false,"className":"wpuf-user-contact-info wpuf-contact-layout-inline"} /-->
 
 <!-- wp:wpuf-ud/social {"iconSize":"medium"} -->
 <div class="wp-block-wpuf-ud-social"><div class="wpuf-social-fields"></div></div>
 <!-- /wp:wpuf-ud/social -->
 
 <!-- wp:wpuf-ud/button {"textColor":"base","fontSize":"medium","style":{"color":{"background":"#7c3aed"},"border":{"radius":"6px"}}} /--></div>
 <!-- /wp:group --></div>
 <!-- /wp:wpuf-ud/directory-item --></div>
-<!-- /wp:wpuf-ud/directory -->
-
-<!-- wp:wpuf-ud/profile {"block_instance_id":"e111db80-9c50-4642-aaa7-b56a8ebc54b1","userId":1,"userObject":{"id":1,"user_login":"admin101","display_name":"admin101","user_email":"","user_url":"https://wpuf.test","bio":"","avatar":"","first_name":"","last_name":"","nickname":"","name":"admin101","url":"https://wpuf.test","description":"","link":"https://wpuf.test/author/admin101/","slug":"admin101","avatar_urls":{"24":"https://secure.gravatar.com/avatar/74a43f5a2491b706609180d3059d0b4269b25d859801497ec0d248fe75f37ac4?s=24\\u0026d=mm\\u0026r=g","48":"https://secure.gravatar.com/avatar/74a43f5a2491b706609180d3059d0b4269b25d859801497ec0d248fe75f37ac4?s=48\\u0026d=mm\\u0026r=g","96":"https://secure.gravatar.com/avatar/74a43f5a2491b706609180d3059d0b4269b25d859801497ec0d248fe75f37ac4?s=96\\u0026d=mm\\u0026r=g"},"meta":[],"_links":{"self":[{"href":"https://wpuf.test/wp-json/wp/v2/users/1","targetHints":{"allow":["GET","POST","PUT","PATCH","DELETE"]}}],"collection":[{"href":"https://wpuf.test/wp-json/wp/v2/users"}]}},"canEdit":"1","hasSelectedPattern":true} -->
+<!-- /wp:wpuf-ud/directory -->
+
+<!-- wp:wpuf-ud/profile -->
 <div class="wp-block-wpuf-ud-profile wpuf-user-profile"><!-- wp:columns {"className":"wpuf-flex wpuf-flex-row wpuf-gap-8 wpuf-border wpuf-border-gray-200 wpuf-rounded-lg wpuf-p-8"} -->
 <div class="wp-block-columns wpuf-flex wpuf-flex-row wpuf-gap-8 wpuf-border wpuf-border-gray-200 wpuf-rounded-lg wpuf-p-8"><!-- wp:column {"width":"33%","className":"wpuf-profile-sidebar","style":{"border":{"width":"0 1px 0 0","style":"solid","color":"#E5E7EB"}}} -->
 <div class="wp-block-column wpuf-profile-sidebar has-border-color" style="border-color:#E5E7EB;border-style:solid;border-width:0 1px 0 0;flex-basis:33%"><!-- wp:wpuf-ud/avatar {"avatarSize":"custom","customSize":100} /-->
 
 <!-- wp:wpuf-ud/name {"headingLevel":"h2","showRole":true} /-->
 
 <!-- wp:wpuf-ud/contact {"showFields":["display_name","user_email","user_url"],"layoutStyle":"vertical","showLabels":false,"style":{"spacing":{"margin":{"top":"1rem","bottom":"1rem"}}}} /-->
 
 <!-- wp:group {"className":"wpuf-mt-8","style":{"spacing":{"margin":{"top":"2rem"}}}} -->
-<div class="wp-block-group wpuf-mt-8" style="margin-top:2rem"><!-- wp:heading {"level":4,"style":{"spacing":{"margin":{"top":"2rem"}}}} -->
-<h4 class="wp-block-heading" style="margin-top:2rem">Bio</h4>
+<div class="wp-block-group wpuf-mt-8" style="margin-top:2rem"><!-- wp:heading {"level":4,"style":{"spacing":{"margin":{"top":"2rem"}}}} -->
+<h4 class="wp-block-heading" style="margin-top:2rem">{$bio}</h4>
 <!-- /wp:heading -->
 
 <!-- wp:wpuf-ud/bio {"characterLimit":100,"style":{"spacing":{"margin":{"top":".75rem"}}}} /--></div>
 <!-- /wp:group --></div>
 <!-- /wp:column -->
 
 <!-- wp:column {"width":"67%","className":"wpuf-profile-content"} -->
 <div class="wp-block-column wpuf-profile-content" style="flex-basis:67%"><!-- wp:wpuf-ud/tabs -->
 <div class="wpuf-user-tabs" data-about-content="[]"></div>
 <!-- /wp:wpuf-ud/tabs --></div>
 <!-- /wp:column --></div>
 <!-- /wp:columns --></div>
-<!-- /wp:wpuf-ud/profile -->';
+<!-- /wp:wpuf-ud/profile -->
+HTML;
     }

Follow-ups:

  • Validate that wpuf-ud/profile renders correctly with default attributes (no userId).
  • Confirm no unintended links are produced to non-site domains.

}
Loading