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.
		
			
				
	
	
		
			178 lines
		
	
	
	
		
			5.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			178 lines
		
	
	
	
		
			5.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Manifest
 | |
| 
 | |
| Component for reading [phar.io](https://phar.io/) manifest information from a [PHP Archive (PHAR)](http://php.net/phar).
 | |
| 
 | |
| ## Installation
 | |
| 
 | |
| You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
 | |
| 
 | |
|     composer require phar-io/manifest
 | |
| 
 | |
| If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
 | |
| 
 | |
|     composer require --dev phar-io/manifest
 | |
| 
 | |
| ## Usage Examples
 | |
| 
 | |
| ### Read from `manifest.xml`
 | |
| ```php
 | |
| use PharIo\Manifest\ManifestLoader;
 | |
| use PharIo\Manifest\ManifestSerializer;
 | |
| 
 | |
| $manifest = ManifestLoader::fromFile('manifest.xml');
 | |
| 
 | |
| var_dump($manifest);
 | |
| 
 | |
| echo (new ManifestSerializer)->serializeToString($manifest);
 | |
| ```
 | |
| 
 | |
| <details>
 | |
|   <summary>Output</summary>
 | |
|     
 | |
| ```shell
 | |
| object(PharIo\Manifest\Manifest)#14 (6) {
 | |
|   ["name":"PharIo\Manifest\Manifest":private]=>
 | |
|   object(PharIo\Manifest\ApplicationName)#10 (1) {
 | |
|     ["name":"PharIo\Manifest\ApplicationName":private]=>
 | |
|     string(12) "some/library"
 | |
|   }
 | |
|   ["version":"PharIo\Manifest\Manifest":private]=>
 | |
|   object(PharIo\Version\Version)#12 (5) {
 | |
|     ["originalVersionString":"PharIo\Version\Version":private]=>
 | |
|     string(5) "1.0.0"
 | |
|     ["major":"PharIo\Version\Version":private]=>
 | |
|     object(PharIo\Version\VersionNumber)#13 (1) {
 | |
|       ["value":"PharIo\Version\VersionNumber":private]=>
 | |
|       int(1)
 | |
|     }
 | |
|     ["minor":"PharIo\Version\Version":private]=>
 | |
|     object(PharIo\Version\VersionNumber)#23 (1) {
 | |
|       ["value":"PharIo\Version\VersionNumber":private]=>
 | |
|       int(0)
 | |
|     }
 | |
|     ["patch":"PharIo\Version\Version":private]=>
 | |
|     object(PharIo\Version\VersionNumber)#22 (1) {
 | |
|       ["value":"PharIo\Version\VersionNumber":private]=>
 | |
|       int(0)
 | |
|     }
 | |
|     ["preReleaseSuffix":"PharIo\Version\Version":private]=>
 | |
|     NULL
 | |
|   }
 | |
|   ["type":"PharIo\Manifest\Manifest":private]=>
 | |
|   object(PharIo\Manifest\Library)#6 (0) {
 | |
|   }
 | |
|   ["copyrightInformation":"PharIo\Manifest\Manifest":private]=>
 | |
|   object(PharIo\Manifest\CopyrightInformation)#19 (2) {
 | |
|     ["authors":"PharIo\Manifest\CopyrightInformation":private]=>
 | |
|     object(PharIo\Manifest\AuthorCollection)#9 (1) {
 | |
|       ["authors":"PharIo\Manifest\AuthorCollection":private]=>
 | |
|       array(1) {
 | |
|         [0]=>
 | |
|         object(PharIo\Manifest\Author)#15 (2) {
 | |
|           ["name":"PharIo\Manifest\Author":private]=>
 | |
|           string(13) "Reiner Zufall"
 | |
|           ["email":"PharIo\Manifest\Author":private]=>
 | |
|           object(PharIo\Manifest\Email)#16 (1) {
 | |
|             ["email":"PharIo\Manifest\Email":private]=>
 | |
|             string(16) "reiner@zufall.de"
 | |
|           }
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|     ["license":"PharIo\Manifest\CopyrightInformation":private]=>
 | |
|     object(PharIo\Manifest\License)#11 (2) {
 | |
|       ["name":"PharIo\Manifest\License":private]=>
 | |
|       string(12) "BSD-3-Clause"
 | |
|       ["url":"PharIo\Manifest\License":private]=>
 | |
|       object(PharIo\Manifest\Url)#18 (1) {
 | |
|         ["url":"PharIo\Manifest\Url":private]=>
 | |
|         string(26) "https://domain.tld/LICENSE"
 | |
|       }
 | |
|     }
 | |
|   }
 | |
|   ["requirements":"PharIo\Manifest\Manifest":private]=>
 | |
|   object(PharIo\Manifest\RequirementCollection)#17 (1) {
 | |
|     ["requirements":"PharIo\Manifest\RequirementCollection":private]=>
 | |
|     array(1) {
 | |
|       [0]=>
 | |
|       object(PharIo\Manifest\PhpVersionRequirement)#20 (1) {
 | |
|         ["versionConstraint":"PharIo\Manifest\PhpVersionRequirement":private]=>
 | |
|         object(PharIo\Version\SpecificMajorAndMinorVersionConstraint)#24 (3) {
 | |
|           ["originalValue":"PharIo\Version\AbstractVersionConstraint":private]=>
 | |
|           string(3) "7.0"
 | |
|           ["major":"PharIo\Version\SpecificMajorAndMinorVersionConstraint":private]=>
 | |
|           int(7)
 | |
|           ["minor":"PharIo\Version\SpecificMajorAndMinorVersionConstraint":private]=>
 | |
|           int(0)
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|   }
 | |
|   ["bundledComponents":"PharIo\Manifest\Manifest":private]=>
 | |
|   object(PharIo\Manifest\BundledComponentCollection)#8 (1) {
 | |
|     ["bundledComponents":"PharIo\Manifest\BundledComponentCollection":private]=>
 | |
|     array(0) {
 | |
|     }
 | |
|   }
 | |
| }
 | |
| <?xml version="1.0" encoding="UTF-8"?>
 | |
| <phar xmlns="https://phar.io/xml/manifest/1.0">
 | |
|     <contains name="some/library" version="1.0.0" type="library"/>
 | |
|     <copyright>
 | |
|         <author name="Reiner Zufall" email="reiner@zufall.de"/>
 | |
|         <license type="BSD-3-Clause" url="https://domain.tld/LICENSE"/>
 | |
|     </copyright>
 | |
|     <requires>
 | |
|         <php version="7.0"/>
 | |
|     </requires>
 | |
| </phar>
 | |
| ```
 | |
| </details>
 | |
| 
 | |
| ### Create via API
 | |
| ```php
 | |
| $bundled = new \PharIo\Manifest\BundledComponentCollection();
 | |
| $bundled->add(
 | |
|     new \PharIo\Manifest\BundledComponent('vendor/packageA', new \PharIo\Version\Version('1.2.3-dev')
 | |
|     )
 | |
| );
 | |
| 
 | |
| $manifest = new PharIo\Manifest\Manifest(
 | |
|     new \PharIo\Manifest\ApplicationName('vendor/package'),
 | |
|     new \PharIo\Version\Version('1.0.0'),
 | |
|     new \PharIo\Manifest\Library(),
 | |
|     new \PharIo\Manifest\CopyrightInformation(
 | |
|         new \PharIo\Manifest\AuthorCollection(),
 | |
|         new \PharIo\Manifest\License(
 | |
|             'BSD-3-Clause',
 | |
|             new \PharIo\Manifest\Url('https://spdx.org/licenses/BSD-3-Clause.html')
 | |
|         )
 | |
|     ),
 | |
|     new \PharIo\Manifest\RequirementCollection(),
 | |
|     $bundled
 | |
| );
 | |
| 
 | |
| echo (new ManifestSerializer)->serializeToString($manifest);
 | |
| ```
 | |
| 
 | |
| <details>
 | |
|   <summary>Output</summary>
 | |
|     
 | |
| ```xml
 | |
| <?xml version="1.0" encoding="UTF-8"?>
 | |
| <phar xmlns="https://phar.io/xml/manifest/1.0">
 | |
|     <contains name="vendor/package" version="1.0.0" type="library"/>
 | |
|     <copyright>
 | |
|         <license type="BSD-3-Clause" url="https://spdx.org/licenses/BSD-3-Clause.html"/>
 | |
|     </copyright>
 | |
|     <requires>
 | |
|         <php version="*"/>
 | |
|     </requires>
 | |
|     <bundles>
 | |
|         <component name="vendor/packageA" version="1.2.3-dev"/>
 | |
|     </bundles>
 | |
| </phar>
 | |
| ```
 | |
|     
 | |
| </details>
 | |
| 
 |