Implements automatic creation of required plugin pages (Community Login, Trainer Registration, Trainer Dashboard) upon plugin activation. This addresses E2E test failures caused by missing pages in the test environment. - Adds activation hook in `hvac-community-events.php` to call `hvac_ce_create_required_pages`. - The callback function checks for existing pages by slug and creates them using `wp_insert_post` if missing. Includes debug logging. Also fixes issues identified during E2E test debugging: - Corrects fatal error in `includes/community/class-login-handler.php` by replacing undefined constant `HVAC_COMMUNITY_EVENTS_PATH` with `HVAC_CE_PLUGIN_DIR`. - Updates `tests/e2e/tests/login.spec.ts` to use the correct selector `#wp-submit` for the login form submit button instead of `button[type="submit"]`. Documentation updates: - Adds `docs/automatic-page-creation-plan.md`. - Updates `README.md` regarding automatic page creation. - Updates Memory Bank files (`decisionLog.md`, `progress.md`, `activeContext.md`). Note: Activation hook logging did not appear during WP-CLI activation, requiring further investigation if page creation issues persist. E2E test confirmation pending.
		
			
				
	
	
		
			72 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace PharIo\CSFixer;
 | |
| 
 | |
| use PhpCsFixer\Fixer\FixerInterface;
 | |
| use PhpCsFixer\FixerDefinition\FixerDefinition;
 | |
| use PhpCsFixer\Tokenizer\Tokens;
 | |
| use PhpCsFixer\Tokenizer\Token;
 | |
| 
 | |
| /**
 | |
|  * Main implementation taken from kubawerlos/php-cs-fixer-customere-fixers
 | |
|  * Copyright (c) 2018 Kuba Werłos
 | |
|  *
 | |
|  * Slightly modified to work without the gazillion of composer dependencies
 | |
|  *
 | |
|  * Original:
 | |
|  * https://github.com/kubawerlos/php-cs-fixer-custom-fixers/blob/master/src/Fixer/PhpdocSingleLineVarFixer.php
 | |
|  *
 | |
|  */
 | |
| class PhpdocSingleLineVarFixer implements FixerInterface {
 | |
| 
 | |
|     public function getDefinition(): FixerDefinition {
 | |
|         return new FixerDefinition(
 | |
|             '`@var` annotation must be in single line when is the only content.',
 | |
|             [new CodeSample('<?php
 | |
|                     /**
 | |
|                      * @var string
 | |
|                      */
 | |
|                 ')]
 | |
|         );
 | |
|     }
 | |
| 
 | |
|     public function isCandidate(Tokens $tokens): bool {
 | |
|         return $tokens->isTokenKindFound(T_DOC_COMMENT);
 | |
|     }
 | |
| 
 | |
|     public function isRisky(): bool {
 | |
|         return false;
 | |
|     }
 | |
| 
 | |
|     public function fix(\SplFileInfo $file, Tokens $tokens): void {
 | |
|         foreach($tokens as $index => $token) {
 | |
|             if (!$token->isGivenKind(T_DOC_COMMENT)) {
 | |
|                 continue;
 | |
|             }
 | |
|             if (\stripos($token->getContent(), '@var') === false) {
 | |
|                 continue;
 | |
|             }
 | |
| 
 | |
|             if (preg_match('#^/\*\*[\s\*]+(@var[^\r\n]+)[\s\*]*\*\/$#u', $token->getContent(), $matches) !== 1) {
 | |
|                 continue;
 | |
|             }
 | |
|             $newContent = '/** ' . \rtrim($matches[1]) . ' */';
 | |
|             if ($newContent === $token->getContent()) {
 | |
|                 continue;
 | |
|             }
 | |
|             $tokens[$index] = new Token([T_DOC_COMMENT, $newContent]);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public function getPriority(): int {
 | |
|         return 0;
 | |
|     }
 | |
| 
 | |
|     public function getName(): string {
 | |
|         return 'PharIo/phpdoc_single_line_var_fixer';
 | |
|     }
 | |
| 
 | |
|     public function supports(\SplFileInfo $file): bool {
 | |
|         return true;
 | |
|     }
 | |
| 
 | |
| }
 |