Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
843f86be85 | |||
a4966ce897 | |||
0e09e70c90 | |||
0a98ba8c2e | |||
35534aa246 | |||
97901dfdfe | |||
e3319c4959 | |||
e7e831d8b5 | |||
9c557bc46d | |||
0fa1e048ef | |||
91e1da9d05 | |||
08616164e9 | |||
22d13ef8aa |
195
.ai-assistant.md
Normal file
195
.ai-assistant.md
Normal file
@ -0,0 +1,195 @@
|
|||||||
|
# AI Assistant Guide for Fix Plugin Does Not Exist Notices
|
||||||
|
|
||||||
|
This guide helps AI assistants understand the project structure, workflows, and best practices for this repository.
|
||||||
|
|
||||||
|
## Project Overview
|
||||||
|
|
||||||
|
- **Plugin Name**: Fix 'Plugin file does not exist.' Notices
|
||||||
|
- **Repository**: https://github.com/wpallstars/fix-plugin-does-not-exist-notices
|
||||||
|
- **Description**: WordPress plugin that adds missing plugins to the plugins list with a "Remove Reference" link to clean up invalid plugin entries and remove error notices.
|
||||||
|
|
||||||
|
## Version Management
|
||||||
|
|
||||||
|
### Version Numbering Convention
|
||||||
|
|
||||||
|
We follow [Semantic Versioning](https://semver.org/):
|
||||||
|
- **MAJOR.MINOR.PATCH** (e.g., 1.6.0)
|
||||||
|
- **MAJOR**: Breaking changes
|
||||||
|
- **MINOR**: New features, non-breaking
|
||||||
|
- **PATCH**: Bug fixes, non-breaking
|
||||||
|
|
||||||
|
### When to Increment Version Numbers
|
||||||
|
|
||||||
|
- **PATCH** (1.6.0 → 1.6.1):
|
||||||
|
- Bug fixes
|
||||||
|
- Small text changes
|
||||||
|
- Minor improvements that don't add new features
|
||||||
|
|
||||||
|
- **MINOR** (1.6.0 → 1.7.0):
|
||||||
|
- New features
|
||||||
|
- Significant improvements to existing functionality
|
||||||
|
- Deprecation of features (but not removal)
|
||||||
|
|
||||||
|
- **MAJOR** (1.6.0 → 2.0.0):
|
||||||
|
- Breaking changes
|
||||||
|
- Removal of features
|
||||||
|
- Major architectural changes
|
||||||
|
|
||||||
|
### Version Update Checklist
|
||||||
|
|
||||||
|
When updating the version number, always update these files:
|
||||||
|
1. `fix-plugin-does-not-exist-notices.php` (Plugin header)
|
||||||
|
2. `CHANGELOG.md` (Add new version section)
|
||||||
|
3. `readme.txt` (Stable tag and Changelog section)
|
||||||
|
4. `README.md` (Update Changelog section to match readme.txt)
|
||||||
|
5. Update `FPDEN_VERSION` constant in the main plugin file
|
||||||
|
|
||||||
|
**IMPORTANT**: Always ensure README.md is kept in sync with readme.txt for consistency across platforms.
|
||||||
|
|
||||||
|
## Git Workflow
|
||||||
|
|
||||||
|
### Branch Naming Convention
|
||||||
|
|
||||||
|
- Feature branches: `feature/descriptive-name`
|
||||||
|
- Bug fix branches: `fix/issue-description`
|
||||||
|
- Release branches: `v{MAJOR}.{MINOR}.{PATCH}`
|
||||||
|
|
||||||
|
### Commit Message Guidelines
|
||||||
|
|
||||||
|
- Use present tense ("Add feature" not "Added feature")
|
||||||
|
- Start with a verb
|
||||||
|
- Keep the first line under 50 characters
|
||||||
|
- Reference issues when relevant: "Fix #123: Resolve plugin detection issue"
|
||||||
|
|
||||||
|
### Pre-Release Checklist
|
||||||
|
|
||||||
|
Before creating a new release, verify the following:
|
||||||
|
|
||||||
|
- [ ] Determine the correct version increment (MAJOR, MINOR, or PATCH) based on the changes
|
||||||
|
- [ ] Ensure all changes are documented in CHANGELOG.md
|
||||||
|
- [ ] Verify all code changes are tested and working correctly
|
||||||
|
- [ ] Check that all files are properly formatted and follow WordPress coding standards
|
||||||
|
- [ ] Ensure Git Updater configuration is correct (if applicable)
|
||||||
|
|
||||||
|
### Release Process
|
||||||
|
|
||||||
|
1. Create a new branch for the version: `git checkout -b v{MAJOR}.{MINOR}.{PATCH}`
|
||||||
|
2. Update version numbers in ALL required files:
|
||||||
|
- `fix-plugin-does-not-exist-notices.php` (Plugin header)
|
||||||
|
- `FPDEN_VERSION` constant in the main plugin file
|
||||||
|
- `readme.txt` (Stable tag)
|
||||||
|
- `README.md` (Ensure changelog is updated)
|
||||||
|
- Any other files that reference the version number
|
||||||
|
3. Update CHANGELOG.md with all changes
|
||||||
|
4. Update readme.txt changelog section
|
||||||
|
5. Update README.md changelog section to match readme.txt
|
||||||
|
6. Commit changes: `git commit -m "Prepare release v{MAJOR}.{MINOR}.{PATCH}"`
|
||||||
|
7. Push branch to all remotes:
|
||||||
|
```
|
||||||
|
git push github HEAD:v{MAJOR}.{MINOR}.{PATCH}
|
||||||
|
git push gitea HEAD:v{MAJOR}.{MINOR}.{PATCH}
|
||||||
|
```
|
||||||
|
8. Create and push a tag to trigger the GitHub Actions workflow:
|
||||||
|
```
|
||||||
|
git tag -a v{MAJOR}.{MINOR}.{PATCH} -m "Release version {MAJOR}.{MINOR}.{PATCH}"
|
||||||
|
git push github refs/tags/v{MAJOR}.{MINOR}.{PATCH}
|
||||||
|
git push gitea refs/tags/v{MAJOR}.{MINOR}.{PATCH}
|
||||||
|
```
|
||||||
|
9. Verify the GitHub Actions workflow completes successfully
|
||||||
|
|
||||||
|
## Build Process
|
||||||
|
|
||||||
|
The build process is handled by `build.sh`:
|
||||||
|
1. Updates version numbers
|
||||||
|
2. Installs composer dependencies
|
||||||
|
3. Copies files to build directory
|
||||||
|
4. Creates ZIP file
|
||||||
|
|
||||||
|
To manually build the plugin:
|
||||||
|
```
|
||||||
|
./build.sh {MAJOR}.{MINOR}.{PATCH}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Remote Repositories
|
||||||
|
|
||||||
|
The plugin is hosted on multiple repositories:
|
||||||
|
- GitHub: https://github.com/wpallstars/fix-plugin-does-not-exist-notices
|
||||||
|
- Gitea: https://gitea.wpallstars.com/wpallstars/fix-plugin-does-not-exist-notices
|
||||||
|
- WordPress.org: https://wordpress.org/plugins/fix-plugin-does-not-exist-notices/
|
||||||
|
|
||||||
|
Always push changes to all remotes to keep them in sync.
|
||||||
|
|
||||||
|
## GitHub Actions
|
||||||
|
|
||||||
|
The repository uses GitHub Actions for automated builds and deployments:
|
||||||
|
- Triggered by tags matching the pattern `v*`
|
||||||
|
- Builds the plugin
|
||||||
|
- Creates a GitHub release
|
||||||
|
- Deploys to WordPress.org
|
||||||
|
|
||||||
|
## Testing Guidelines
|
||||||
|
|
||||||
|
Before releasing:
|
||||||
|
1. Test with the latest WordPress version
|
||||||
|
2. Test with PHP 7.0+ (minimum supported version)
|
||||||
|
3. Verify all features work as expected
|
||||||
|
4. Check for any PHP warnings or notices
|
||||||
|
|
||||||
|
## Common Tasks for AI Assistants
|
||||||
|
|
||||||
|
### Creating a New Release
|
||||||
|
|
||||||
|
```
|
||||||
|
# 1. Create a new branch
|
||||||
|
git checkout -b v1.7.0
|
||||||
|
|
||||||
|
# 2. Update version numbers in ALL required files
|
||||||
|
# - fix-plugin-does-not-exist-notices.php
|
||||||
|
# - CHANGELOG.md
|
||||||
|
# - readme.txt
|
||||||
|
# - README.md
|
||||||
|
# - FPDEN_VERSION constant
|
||||||
|
|
||||||
|
# 3. Commit changes
|
||||||
|
git add .
|
||||||
|
git commit -m "Prepare release v1.7.0"
|
||||||
|
|
||||||
|
# 4. Push to remotes
|
||||||
|
git push github HEAD:v1.7.0
|
||||||
|
git push gitea HEAD:v1.7.0
|
||||||
|
|
||||||
|
# 5. Create and push tag
|
||||||
|
git tag -a v1.7.0 -m "Release version 1.7.0"
|
||||||
|
git push github refs/tags/v1.7.0
|
||||||
|
git push gitea refs/tags/v1.7.0
|
||||||
|
```
|
||||||
|
|
||||||
|
### Adding a New Feature
|
||||||
|
|
||||||
|
```
|
||||||
|
# 1. Create feature branch
|
||||||
|
git checkout -b feature/new-feature-name
|
||||||
|
|
||||||
|
# 2. Make changes and commit
|
||||||
|
git add .
|
||||||
|
git commit -m "Add new feature"
|
||||||
|
|
||||||
|
# 3. Push to remotes
|
||||||
|
git push github HEAD:feature/new-feature-name
|
||||||
|
git push gitea HEAD:feature/new-feature-name
|
||||||
|
```
|
||||||
|
|
||||||
|
### Fixing a Bug
|
||||||
|
|
||||||
|
```
|
||||||
|
# 1. Create bugfix branch
|
||||||
|
git checkout -b fix/bug-description
|
||||||
|
|
||||||
|
# 2. Make changes and commit
|
||||||
|
git add .
|
||||||
|
git commit -m "Fix #123: Fix bug description"
|
||||||
|
|
||||||
|
# 3. Push to remotes
|
||||||
|
git push github HEAD:fix/bug-description
|
||||||
|
git push gitea HEAD:fix/bug-description
|
||||||
|
```
|
160
.github/ai-workflows/bug-fixing.md
vendored
Normal file
160
.github/ai-workflows/bug-fixing.md
vendored
Normal file
@ -0,0 +1,160 @@
|
|||||||
|
# Bug Fixing Guide for AI Assistants
|
||||||
|
|
||||||
|
This document provides guidance for AI assistants to help with bug fixing for the Fix Plugin Does Not Exist Notices plugin.
|
||||||
|
|
||||||
|
## Bug Fixing Workflow
|
||||||
|
|
||||||
|
### 1. Create a Bug Fix Branch
|
||||||
|
|
||||||
|
Always start by creating a bug fix branch from the main branch:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git checkout main
|
||||||
|
git pull github main
|
||||||
|
git checkout -b fix/bug-description
|
||||||
|
```
|
||||||
|
|
||||||
|
Use a descriptive name that clearly indicates what bug is being fixed.
|
||||||
|
|
||||||
|
### 2. Understand the Bug
|
||||||
|
|
||||||
|
Before fixing a bug, make sure you understand:
|
||||||
|
|
||||||
|
- What is the expected behavior?
|
||||||
|
- What is the actual behavior?
|
||||||
|
- What are the steps to reproduce the bug?
|
||||||
|
- What is the impact of the bug?
|
||||||
|
- What is the root cause of the bug?
|
||||||
|
|
||||||
|
### 3. Fix the Bug
|
||||||
|
|
||||||
|
When fixing a bug:
|
||||||
|
|
||||||
|
- Make minimal changes necessary to fix the bug
|
||||||
|
- Avoid introducing new features while fixing bugs
|
||||||
|
- Maintain backward compatibility
|
||||||
|
- Add appropriate comments explaining the fix
|
||||||
|
- Consider adding tests to prevent regression
|
||||||
|
|
||||||
|
### 4. Update Documentation
|
||||||
|
|
||||||
|
Update relevant documentation to reflect the bug fix:
|
||||||
|
|
||||||
|
- Add a description to CHANGELOG.md under an "Unreleased" section
|
||||||
|
- Update readme.txt if the bug fix affects user-facing functionality
|
||||||
|
|
||||||
|
### 5. Testing
|
||||||
|
|
||||||
|
Test the bug fix thoroughly:
|
||||||
|
|
||||||
|
- Verify that the bug is fixed
|
||||||
|
- Ensure no regression in related functionality
|
||||||
|
- Test with the latest WordPress version
|
||||||
|
- Test with the minimum supported WordPress version (5.0)
|
||||||
|
- Test with PHP 7.0+ (minimum supported version)
|
||||||
|
|
||||||
|
### 6. Commit Changes
|
||||||
|
|
||||||
|
Make atomic commits with clear messages:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git add .
|
||||||
|
git commit -m "Fix #123: Brief description of the bug fix"
|
||||||
|
```
|
||||||
|
|
||||||
|
If there's an issue number, reference it in the commit message.
|
||||||
|
|
||||||
|
### 7. Push to Remote
|
||||||
|
|
||||||
|
Push the bug fix branch to the remote repositories:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git push github HEAD:fix/bug-description
|
||||||
|
git push gitea HEAD:fix/bug-description
|
||||||
|
```
|
||||||
|
|
||||||
|
### 8. Create Pull Request (Optional)
|
||||||
|
|
||||||
|
If the repository uses pull requests for code review, create a pull request from the bug fix branch to the main branch.
|
||||||
|
|
||||||
|
## Determining Version Increment
|
||||||
|
|
||||||
|
After fixing a bug, determine the appropriate version increment:
|
||||||
|
|
||||||
|
- **PATCH** (e.g., 1.6.0 → 1.6.1): For most bug fixes that don't change functionality
|
||||||
|
- **MINOR** (e.g., 1.6.0 → 1.7.0): For bug fixes that introduce new features or significant changes
|
||||||
|
- **MAJOR** (e.g., 1.6.0 → 2.0.0): For bug fixes that introduce breaking changes
|
||||||
|
|
||||||
|
## Hotfix Process
|
||||||
|
|
||||||
|
For critical bugs that need immediate fixing in a released version:
|
||||||
|
|
||||||
|
### 1. Create a Hotfix Branch
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git checkout v{MAJOR}.{MINOR}.{PATCH}
|
||||||
|
git checkout -b hotfix/v{MAJOR}.{MINOR}.{PATCH+1}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Fix the Bug
|
||||||
|
|
||||||
|
Apply the minimal fix necessary to address the critical issue.
|
||||||
|
|
||||||
|
### 3. Update Version Numbers
|
||||||
|
|
||||||
|
Increment the PATCH version and update all version numbers:
|
||||||
|
|
||||||
|
- Main plugin file (fix-plugin-does-not-exist-notices.php)
|
||||||
|
- FPDEN_VERSION constant
|
||||||
|
- CHANGELOG.md
|
||||||
|
- readme.txt
|
||||||
|
|
||||||
|
### 4. Commit and Push
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git add .
|
||||||
|
git commit -m "Hotfix: Brief description of the critical bug fix"
|
||||||
|
git push github HEAD:hotfix/v{MAJOR}.{MINOR}.{PATCH+1}
|
||||||
|
git push gitea HEAD:hotfix/v{MAJOR}.{MINOR}.{PATCH+1}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. Create and Push Tag
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git tag -a v{MAJOR}.{MINOR}.{PATCH+1} -m "Hotfix release version {MAJOR}.{MINOR}.{PATCH+1}"
|
||||||
|
git push github refs/tags/v{MAJOR}.{MINOR}.{PATCH+1}
|
||||||
|
git push gitea refs/tags/v{MAJOR}.{MINOR}.{PATCH+1}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Common Bug Types and Fixing Strategies
|
||||||
|
|
||||||
|
### WordPress Compatibility Issues
|
||||||
|
|
||||||
|
- Test with the specific WordPress version where the issue occurs
|
||||||
|
- Check for deprecated functions or hooks
|
||||||
|
- Review WordPress changelog for relevant changes
|
||||||
|
|
||||||
|
### PHP Compatibility Issues
|
||||||
|
|
||||||
|
- Test with the specific PHP version where the issue occurs
|
||||||
|
- Check for deprecated PHP functions or features
|
||||||
|
- Use appropriate polyfills if necessary
|
||||||
|
|
||||||
|
### JavaScript Issues
|
||||||
|
|
||||||
|
- Test in different browsers
|
||||||
|
- Check for browser console errors
|
||||||
|
- Consider browser-specific workarounds if necessary
|
||||||
|
|
||||||
|
### CSS Issues
|
||||||
|
|
||||||
|
- Test in different browsers and screen sizes
|
||||||
|
- Use browser developer tools to inspect elements
|
||||||
|
- Consider browser-specific workarounds if necessary
|
||||||
|
|
||||||
|
### Database Issues
|
||||||
|
|
||||||
|
- Use proper database prefixing
|
||||||
|
- Sanitize database inputs
|
||||||
|
- Use prepared statements for queries
|
||||||
|
- Consider database version differences
|
163
.github/ai-workflows/code-review.md
vendored
Normal file
163
.github/ai-workflows/code-review.md
vendored
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
# Code Review Guide for AI Assistants
|
||||||
|
|
||||||
|
This document provides guidance for AI assistants to help with code review for the Fix Plugin Does Not Exist Notices plugin.
|
||||||
|
|
||||||
|
## Code Review Checklist
|
||||||
|
|
||||||
|
When reviewing code, check for the following:
|
||||||
|
|
||||||
|
### Functionality
|
||||||
|
|
||||||
|
- [ ] Does the code work as expected?
|
||||||
|
- [ ] Does it handle edge cases appropriately?
|
||||||
|
- [ ] Are there any logical errors?
|
||||||
|
- [ ] Is error handling implemented properly?
|
||||||
|
|
||||||
|
### Code Quality
|
||||||
|
|
||||||
|
- [ ] Does the code follow WordPress coding standards?
|
||||||
|
- [ ] Is the code well-organized and easy to understand?
|
||||||
|
- [ ] Are there any code smells (duplicate code, overly complex functions, etc.)?
|
||||||
|
- [ ] Are functions and variables named appropriately?
|
||||||
|
- [ ] Are there appropriate comments and documentation?
|
||||||
|
|
||||||
|
### Security
|
||||||
|
|
||||||
|
- [ ] Is user input properly validated and sanitized?
|
||||||
|
- [ ] Is output properly escaped?
|
||||||
|
- [ ] Are capability checks used for user actions?
|
||||||
|
- [ ] Are nonces used for form submissions?
|
||||||
|
- [ ] Are there any potential SQL injection vulnerabilities?
|
||||||
|
- [ ] Are there any potential XSS vulnerabilities?
|
||||||
|
|
||||||
|
### Performance
|
||||||
|
|
||||||
|
- [ ] Are there any performance bottlenecks?
|
||||||
|
- [ ] Are database queries optimized?
|
||||||
|
- [ ] Is caching used appropriately?
|
||||||
|
- [ ] Are assets (CSS, JS) properly enqueued?
|
||||||
|
|
||||||
|
### Compatibility
|
||||||
|
|
||||||
|
- [ ] Is the code compatible with the minimum supported WordPress version (5.0)?
|
||||||
|
- [ ] Is the code compatible with the minimum supported PHP version (7.0)?
|
||||||
|
- [ ] Are there any browser compatibility issues?
|
||||||
|
- [ ] Are there any conflicts with other plugins?
|
||||||
|
|
||||||
|
### Internationalization
|
||||||
|
|
||||||
|
- [ ] Are all user-facing strings translatable?
|
||||||
|
- [ ] Is the correct text domain used?
|
||||||
|
- [ ] Are translation functions used correctly?
|
||||||
|
|
||||||
|
### Accessibility
|
||||||
|
|
||||||
|
- [ ] Does the code follow accessibility best practices?
|
||||||
|
- [ ] Are ARIA attributes used appropriately?
|
||||||
|
- [ ] Is keyboard navigation supported?
|
||||||
|
- [ ] Is screen reader support implemented?
|
||||||
|
|
||||||
|
## Code Review Process
|
||||||
|
|
||||||
|
### 1. Understand the Context
|
||||||
|
|
||||||
|
Before reviewing code, understand:
|
||||||
|
- What problem is the code trying to solve?
|
||||||
|
- What are the requirements?
|
||||||
|
- What are the constraints?
|
||||||
|
|
||||||
|
### 2. Review the Code
|
||||||
|
|
||||||
|
Review the code with the checklist above in mind.
|
||||||
|
|
||||||
|
### 3. Provide Feedback
|
||||||
|
|
||||||
|
When providing feedback:
|
||||||
|
- Be specific and clear
|
||||||
|
- Explain why a change is needed
|
||||||
|
- Provide examples or suggestions when possible
|
||||||
|
- Prioritize feedback (critical issues vs. minor improvements)
|
||||||
|
- Be constructive and respectful
|
||||||
|
|
||||||
|
### 4. Follow Up
|
||||||
|
|
||||||
|
After the code has been updated:
|
||||||
|
- Review the changes
|
||||||
|
- Verify that issues have been addressed
|
||||||
|
- Provide additional feedback if necessary
|
||||||
|
|
||||||
|
## Common Issues to Look For
|
||||||
|
|
||||||
|
### PHP Issues
|
||||||
|
|
||||||
|
- Undefined variables or functions
|
||||||
|
- Incorrect function parameters
|
||||||
|
- Missing return statements
|
||||||
|
- Improper error handling
|
||||||
|
- Inefficient loops or conditionals
|
||||||
|
- Hardcoded values that should be configurable
|
||||||
|
|
||||||
|
### WordPress-Specific Issues
|
||||||
|
|
||||||
|
- Incorrect hook usage
|
||||||
|
- Missing or incorrect nonces
|
||||||
|
- Missing capability checks
|
||||||
|
- Direct database queries instead of using WordPress functions
|
||||||
|
- Improper enqueuing of scripts and styles
|
||||||
|
- Not using WordPress functions for common tasks
|
||||||
|
|
||||||
|
### JavaScript Issues
|
||||||
|
|
||||||
|
- Undefined variables or functions
|
||||||
|
- Event listener memory leaks
|
||||||
|
- jQuery conflicts
|
||||||
|
- Browser compatibility issues
|
||||||
|
- Missing error handling
|
||||||
|
|
||||||
|
### CSS Issues
|
||||||
|
|
||||||
|
- Browser compatibility issues
|
||||||
|
- Specificity issues
|
||||||
|
- Unused styles
|
||||||
|
- Overriding WordPress admin styles inappropriately
|
||||||
|
|
||||||
|
## Example Feedback
|
||||||
|
|
||||||
|
### Good Feedback Example
|
||||||
|
|
||||||
|
```
|
||||||
|
In function `handle_remove_reference()`:
|
||||||
|
|
||||||
|
1. The nonce check is missing, which could lead to CSRF vulnerabilities.
|
||||||
|
Consider adding:
|
||||||
|
```php
|
||||||
|
if (!isset($_GET['_wpnonce']) || !wp_verify_nonce($_GET['_wpnonce'], 'fpden_remove_reference')) {
|
||||||
|
wp_die(__('Security check failed.', 'fix-plugin-does-not-exist-notices'));
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
2. The user capability check should be more specific. Instead of:
|
||||||
|
```php
|
||||||
|
if (!current_user_can('manage_options')) {
|
||||||
|
```
|
||||||
|
Consider using:
|
||||||
|
```php
|
||||||
|
if (!current_user_can('activate_plugins')) {
|
||||||
|
```
|
||||||
|
This is more appropriate for the action being performed.
|
||||||
|
|
||||||
|
3. The success message should be translatable:
|
||||||
|
```php
|
||||||
|
// Change this:
|
||||||
|
add_settings_error('fpden', 'fpden_removed', 'Plugin reference removed successfully.', 'updated');
|
||||||
|
|
||||||
|
// To this:
|
||||||
|
add_settings_error('fpden', 'fpden_removed', __('Plugin reference removed successfully.', 'fix-plugin-does-not-exist-notices'), 'updated');
|
||||||
|
```
|
||||||
|
```
|
||||||
|
|
||||||
|
### Poor Feedback Example
|
||||||
|
|
||||||
|
```
|
||||||
|
This code has security issues and doesn't follow best practices. Fix it.
|
||||||
|
```
|
130
.github/ai-workflows/feature-development.md
vendored
Normal file
130
.github/ai-workflows/feature-development.md
vendored
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
# Feature Development Guide for AI Assistants
|
||||||
|
|
||||||
|
This document provides guidance for AI assistants to help with feature development for the Fix Plugin Does Not Exist Notices plugin.
|
||||||
|
|
||||||
|
## Feature Development Workflow
|
||||||
|
|
||||||
|
### 1. Create a Feature Branch
|
||||||
|
|
||||||
|
Always start by creating a feature branch from the main branch:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git checkout main
|
||||||
|
git pull github main
|
||||||
|
git checkout -b feature/descriptive-name
|
||||||
|
```
|
||||||
|
|
||||||
|
Use a descriptive name that clearly indicates what the feature is about.
|
||||||
|
|
||||||
|
### 2. Implement the Feature
|
||||||
|
|
||||||
|
When implementing a new feature:
|
||||||
|
|
||||||
|
- Follow WordPress coding standards
|
||||||
|
- Ensure all strings are translatable
|
||||||
|
- Add appropriate comments
|
||||||
|
- Consider performance implications
|
||||||
|
- Maintain backward compatibility
|
||||||
|
|
||||||
|
### 3. Update Documentation
|
||||||
|
|
||||||
|
Update relevant documentation to reflect the new feature:
|
||||||
|
|
||||||
|
- Add a description to CHANGELOG.md under an "Unreleased" section
|
||||||
|
- Update readme.txt if the feature affects user-facing functionality
|
||||||
|
- Update inline documentation/comments
|
||||||
|
|
||||||
|
### 4. Testing
|
||||||
|
|
||||||
|
Test the feature thoroughly:
|
||||||
|
|
||||||
|
- Test with the latest WordPress version
|
||||||
|
- Test with the minimum supported WordPress version (5.0)
|
||||||
|
- Test with PHP 7.0+ (minimum supported version)
|
||||||
|
- Test in different environments (if possible)
|
||||||
|
|
||||||
|
### 5. Commit Changes
|
||||||
|
|
||||||
|
Make atomic commits with clear messages:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git add .
|
||||||
|
git commit -m "Add feature: descriptive name"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6. Push to Remote
|
||||||
|
|
||||||
|
Push the feature branch to the remote repositories:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git push github HEAD:feature/descriptive-name
|
||||||
|
git push gitea HEAD:feature/descriptive-name
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7. Create Pull Request (Optional)
|
||||||
|
|
||||||
|
If the repository uses pull requests for code review, create a pull request from the feature branch to the main branch.
|
||||||
|
|
||||||
|
## Code Standards and Best Practices
|
||||||
|
|
||||||
|
### PHP Coding Standards
|
||||||
|
|
||||||
|
- Follow [WordPress PHP Coding Standards](https://developer.wordpress.org/coding-standards/wordpress-coding-standards/php/)
|
||||||
|
- Use tabs for indentation, not spaces
|
||||||
|
- Use proper naming conventions:
|
||||||
|
- Class names: `Class_Name`
|
||||||
|
- Function names: `function_name`
|
||||||
|
- Variable names: `$variable_name`
|
||||||
|
|
||||||
|
### JavaScript Coding Standards
|
||||||
|
|
||||||
|
- Follow [WordPress JavaScript Coding Standards](https://developer.wordpress.org/coding-standards/wordpress-coding-standards/javascript/)
|
||||||
|
- Use tabs for indentation, not spaces
|
||||||
|
- Use proper naming conventions:
|
||||||
|
- Function names: `functionName`
|
||||||
|
- Variable names: `variableName`
|
||||||
|
|
||||||
|
### Internationalization (i18n)
|
||||||
|
|
||||||
|
- Wrap all user-facing strings in appropriate translation functions:
|
||||||
|
- `__()` for simple strings
|
||||||
|
- `_e()` for echoed strings
|
||||||
|
- `esc_html__()` for escaped strings
|
||||||
|
- `esc_html_e()` for escaped and echoed strings
|
||||||
|
- Always use the plugin's text domain: `fix-plugin-does-not-exist-notices`
|
||||||
|
|
||||||
|
### Security Best Practices
|
||||||
|
|
||||||
|
- Validate and sanitize all input
|
||||||
|
- Escape all output
|
||||||
|
- Use nonces for form submissions
|
||||||
|
- Use capability checks for user actions
|
||||||
|
|
||||||
|
## Feature Types and Implementation Guidelines
|
||||||
|
|
||||||
|
### Admin Interface Features
|
||||||
|
|
||||||
|
When adding features to the admin interface:
|
||||||
|
|
||||||
|
- Use WordPress admin UI components for consistency
|
||||||
|
- Follow WordPress admin UI patterns
|
||||||
|
- Ensure accessibility compliance
|
||||||
|
- Add appropriate help text
|
||||||
|
|
||||||
|
### Plugin Functionality Features
|
||||||
|
|
||||||
|
When adding core functionality:
|
||||||
|
|
||||||
|
- Ensure compatibility with WordPress hooks system
|
||||||
|
- Consider performance impact
|
||||||
|
- Maintain backward compatibility
|
||||||
|
- Add appropriate error handling
|
||||||
|
|
||||||
|
### Integration Features
|
||||||
|
|
||||||
|
When adding integration with other plugins or services:
|
||||||
|
|
||||||
|
- Make integrations optional when possible
|
||||||
|
- Check if the integrated plugin/service is available before using it
|
||||||
|
- Provide fallback functionality when the integration is not available
|
||||||
|
- Document the integration requirements
|
173
.github/ai-workflows/release-process.md
vendored
Normal file
173
.github/ai-workflows/release-process.md
vendored
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
# Release Process for AI Assistants
|
||||||
|
|
||||||
|
This document provides step-by-step instructions for AI assistants to help with the release process for the Fix Plugin Does Not Exist Notices plugin.
|
||||||
|
|
||||||
|
## Pre-Release Checklist
|
||||||
|
|
||||||
|
- [ ] All features for this release are complete
|
||||||
|
- [ ] All bug fixes for this release are complete
|
||||||
|
- [ ] CHANGELOG.md is up to date
|
||||||
|
- [ ] readme.txt is up to date
|
||||||
|
- [ ] All tests pass
|
||||||
|
|
||||||
|
## Determining the New Version Number
|
||||||
|
|
||||||
|
Based on the changes made, determine the appropriate version increment:
|
||||||
|
|
||||||
|
1. **PATCH** (e.g., 1.6.0 → 1.6.1): For bug fixes and minor improvements
|
||||||
|
2. **MINOR** (e.g., 1.6.0 → 1.7.0): For new features and significant improvements
|
||||||
|
3. **MAJOR** (e.g., 1.6.0 → 2.0.0): For breaking changes
|
||||||
|
|
||||||
|
## Release Steps
|
||||||
|
|
||||||
|
### 1. Create a New Branch
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git checkout -b v{MAJOR}.{MINOR}.{PATCH}
|
||||||
|
```
|
||||||
|
|
||||||
|
Example:
|
||||||
|
```bash
|
||||||
|
git checkout -b v1.7.0
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Update Version Numbers
|
||||||
|
|
||||||
|
Update the version number in the following files:
|
||||||
|
|
||||||
|
#### a. Main Plugin File (fix-plugin-does-not-exist-notices.php)
|
||||||
|
|
||||||
|
```php
|
||||||
|
/**
|
||||||
|
* Plugin Name: Fix 'Plugin file does not exist.' Notices
|
||||||
|
* Plugin URI: https://wordpress.org/plugins/fix-plugin-does-not-exist-notices/
|
||||||
|
* Description: Adds missing plugins to the plugins list with a "Remove Reference" link so you can permanently clean up invalid plugin entries and remove error notices.
|
||||||
|
* Version: {MAJOR}.{MINOR}.{PATCH}
|
||||||
|
* ...
|
||||||
|
*/
|
||||||
|
```
|
||||||
|
|
||||||
|
Also update the FPDEN_VERSION constant:
|
||||||
|
|
||||||
|
```php
|
||||||
|
define( 'FPDEN_VERSION', '{MAJOR}.{MINOR}.{PATCH}' );
|
||||||
|
```
|
||||||
|
|
||||||
|
#### b. CHANGELOG.md
|
||||||
|
|
||||||
|
Add a new section at the top of the CHANGELOG.md file:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
## [{MAJOR}.{MINOR}.{PATCH}] - YYYY-MM-DD
|
||||||
|
### Added
|
||||||
|
- New feature 1
|
||||||
|
- New feature 2
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Change 1
|
||||||
|
- Change 2
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Bug fix 1
|
||||||
|
- Bug fix 2
|
||||||
|
```
|
||||||
|
|
||||||
|
#### c. readme.txt
|
||||||
|
|
||||||
|
Update the stable tag:
|
||||||
|
|
||||||
|
```
|
||||||
|
Stable tag: {MAJOR}.{MINOR}.{PATCH}
|
||||||
|
```
|
||||||
|
|
||||||
|
Add a new entry to the changelog section:
|
||||||
|
|
||||||
|
```
|
||||||
|
= {MAJOR}.{MINOR}.{PATCH} =
|
||||||
|
* New feature 1
|
||||||
|
* New feature 2
|
||||||
|
* Change 1
|
||||||
|
* Change 2
|
||||||
|
* Fixed bug 1
|
||||||
|
* Fixed bug 2
|
||||||
|
```
|
||||||
|
|
||||||
|
Update the upgrade notice section:
|
||||||
|
|
||||||
|
```
|
||||||
|
= {MAJOR}.{MINOR}.{PATCH} =
|
||||||
|
Brief description of the most important changes in this release
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Commit Changes
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git add fix-plugin-does-not-exist-notices.php CHANGELOG.md readme.txt
|
||||||
|
git commit -m "Prepare release v{MAJOR}.{MINOR}.{PATCH}"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Push Branch to Remotes
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git push github HEAD:v{MAJOR}.{MINOR}.{PATCH}
|
||||||
|
git push gitea HEAD:v{MAJOR}.{MINOR}.{PATCH}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. Create and Push Tag
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git tag -a v{MAJOR}.{MINOR}.{PATCH} -m "Release version {MAJOR}.{MINOR}.{PATCH}"
|
||||||
|
git push github refs/tags/v{MAJOR}.{MINOR}.{PATCH}
|
||||||
|
git push gitea refs/tags/v{MAJOR}.{MINOR}.{PATCH}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6. Monitor GitHub Actions
|
||||||
|
|
||||||
|
Open the GitHub Actions page to monitor the build and deployment process:
|
||||||
|
https://github.com/wpallstars/fix-plugin-does-not-exist-notices/actions
|
||||||
|
|
||||||
|
### 7. Verify Release
|
||||||
|
|
||||||
|
- [ ] Check that the GitHub release was created successfully
|
||||||
|
- [ ] Verify that the plugin was deployed to WordPress.org
|
||||||
|
- [ ] Test the plugin from WordPress.org to ensure it works correctly
|
||||||
|
|
||||||
|
## Rollback Procedure (If Needed)
|
||||||
|
|
||||||
|
If issues are discovered after release:
|
||||||
|
|
||||||
|
### 1. Create a Hotfix Branch
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git checkout v{MAJOR}.{MINOR}.{PATCH}
|
||||||
|
git checkout -b hotfix/v{MAJOR}.{MINOR}.{PATCH+1}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Fix the Issues
|
||||||
|
|
||||||
|
Make the necessary changes to fix the issues.
|
||||||
|
|
||||||
|
### 3. Update Version Numbers
|
||||||
|
|
||||||
|
Increment the PATCH version and update all version numbers as described above.
|
||||||
|
|
||||||
|
### 4. Commit and Push
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git add .
|
||||||
|
git commit -m "Fix issues in v{MAJOR}.{MINOR}.{PATCH}"
|
||||||
|
git push github HEAD:hotfix/v{MAJOR}.{MINOR}.{PATCH+1}
|
||||||
|
git push gitea HEAD:hotfix/v{MAJOR}.{MINOR}.{PATCH+1}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. Create and Push Tag
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git tag -a v{MAJOR}.{MINOR}.{PATCH+1} -m "Hotfix release version {MAJOR}.{MINOR}.{PATCH+1}"
|
||||||
|
git push github refs/tags/v{MAJOR}.{MINOR}.{PATCH+1}
|
||||||
|
git push gitea refs/tags/v{MAJOR}.{MINOR}.{PATCH+1}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6. Monitor and Verify
|
||||||
|
|
||||||
|
Follow steps 6 and 7 from the release process to monitor and verify the hotfix release.
|
4
.gitignore
vendored
4
.gitignore
vendored
@ -29,6 +29,10 @@ bower_components/
|
|||||||
composer.lock
|
composer.lock
|
||||||
package-lock.json
|
package-lock.json
|
||||||
|
|
||||||
|
# Composer
|
||||||
|
vendor/
|
||||||
|
composer.phar
|
||||||
|
|
||||||
# Build files
|
# Build files
|
||||||
build/
|
build/
|
||||||
dist/
|
dist/
|
||||||
|
35
CHANGELOG.md
35
CHANGELOG.md
@ -2,15 +2,50 @@
|
|||||||
|
|
||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
## [1.6.4] - 2024-05-16
|
||||||
|
### Improved
|
||||||
|
- Version management to ensure consistent patch version increments
|
||||||
|
- Documentation for version update process
|
||||||
|
- AI workflow files with detailed version increment instructions
|
||||||
|
|
||||||
|
## [1.6.3] - 2024-05-15
|
||||||
|
### Fixed
|
||||||
|
- Git Updater repository URLs to use full repository paths
|
||||||
|
- Update URI configuration for proper update detection
|
||||||
|
- Version management following semantic versioning
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Updated organization name from 'WP All Stars' to 'WP ALLSTARS'
|
||||||
|
- Updated namespace from 'WPAllStars' to 'WPALLSTARS'
|
||||||
|
|
||||||
|
## [1.6.2] - 2024-05-15
|
||||||
|
### Changed
|
||||||
|
- Updated POT file version for consistency
|
||||||
|
- Improved JavaScript localization with proper fallbacks
|
||||||
|
- Enhanced code quality for WordPress.org submission
|
||||||
|
### Added
|
||||||
|
- Git Updater configuration with Update URI
|
||||||
|
- Update server URL configuration
|
||||||
|
|
||||||
|
## [1.6.1] - 2024-05-15
|
||||||
|
### Added
|
||||||
|
- AI assistant guide and workflow documentation
|
||||||
|
- Detailed release process documentation
|
||||||
|
- Feature development guidelines
|
||||||
|
- Bug fixing procedures
|
||||||
|
- Code review standards
|
||||||
|
|
||||||
## [1.6.0] - 2024-05-15
|
## [1.6.0] - 2024-05-15
|
||||||
### Added
|
### Added
|
||||||
- Full translation support with POT file
|
- Full translation support with POT file
|
||||||
- JavaScript localization for better multilingual support
|
- JavaScript localization for better multilingual support
|
||||||
- Plugin constants for improved code organization
|
- Plugin constants for improved code organization
|
||||||
|
- Git Updater support for updates from GitHub and Gitea
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
- Updated code to follow WordPress internationalization best practices
|
- Updated code to follow WordPress internationalization best practices
|
||||||
- Improved asset loading with version constants
|
- Improved asset loading with version constants
|
||||||
|
- Smart update detection based on installation source
|
||||||
|
|
||||||
## [1.5.0] - 2024-05-15
|
## [1.5.0] - 2024-05-15
|
||||||
### Added
|
### Added
|
||||||
|
61
README.md
61
README.md
@ -120,35 +120,46 @@ The plugin works by:
|
|||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
### 1.4.1
|
### 1.6.4
|
||||||
- Added FAQ about keeping the plugin installed after notices are cleared
|
* Updated version management to ensure consistent patch version increments
|
||||||
|
* Improved documentation for version update process
|
||||||
|
* Enhanced AI workflow files with detailed version increment instructions
|
||||||
|
|
||||||
### 1.4.0
|
### 1.6.3
|
||||||
- Updated plugin name and text domain
|
* Fixed Git Updater repository URLs to use full repository paths
|
||||||
- Repository rename from plugin-reference-cleaner to fix-plugin-does-not-exist-notices
|
* Corrected Update URI configuration for proper update detection
|
||||||
|
* Improved version management following semantic versioning
|
||||||
|
* Updated organization name from 'WP All Stars' to 'WP ALLSTARS'
|
||||||
|
* Updated namespace from 'WPAllStars' to 'WPALLSTARS'
|
||||||
|
|
||||||
### 1.3.3
|
### 1.6.2
|
||||||
* Improved notification placement next to WordPress error messages
|
* Updated POT file version for consistency
|
||||||
* Added "Click here to scroll" button that automatically locates missing plugins
|
* Improved JavaScript localization with proper fallbacks
|
||||||
* Enhanced reliability with multiple injection methods
|
* Enhanced code quality for WordPress.org submission
|
||||||
* Added visual arrow pointing from notification to error message
|
* Added Git Updater configuration with Update URI
|
||||||
|
* Added update server URL configuration
|
||||||
|
|
||||||
### 1.3.2
|
### 1.6.1
|
||||||
* Added prominent notification directly below WordPress error messages
|
* Added AI assistant guide and workflow documentation
|
||||||
* Improved user guidance with visual cues to connect error and solution
|
* Added detailed release process documentation
|
||||||
* Added eye-catching styling to help users understand how to fix errors
|
* Added feature development guidelines
|
||||||
|
* Added bug fixing procedures
|
||||||
|
* Added code review standards
|
||||||
|
|
||||||
### 1.3.1
|
### 1.6.0
|
||||||
* Added instructional notification explaining how to use the plugin
|
* Added full translation support with POT file
|
||||||
* Improved user guidance with step-by-step instructions
|
* Added JavaScript localization for better multilingual support
|
||||||
* Enhanced visual identification of missing plugins
|
* Added plugin constants for improved code organization
|
||||||
|
* Added Git Updater support for updates from GitHub and Gitea
|
||||||
|
* Updated code to follow WordPress internationalization best practices
|
||||||
|
* Improved asset loading with version constants
|
||||||
|
* Added smart update detection based on installation source
|
||||||
|
|
||||||
### 1.3.0
|
### 1.5.0
|
||||||
* Complete redesign for maximum compatibility with all WordPress themes
|
* Improved compatibility with WordPress 6.4
|
||||||
* Now adds missing plugins directly to the plugins list table
|
* Enhanced error detection for plugin references
|
||||||
* Uses standard WordPress admin UI patterns instead of DOM manipulation
|
* Minor UI improvements for better visibility
|
||||||
* Added "Remove Reference" action link in the plugins list
|
* Accessibility enhancements for screen readers
|
||||||
* Significantly improved reliability across all WordPress configurations
|
|
||||||
|
|
||||||
[View full changelog](CHANGELOG.md)
|
[View full changelog](CHANGELOG.md)
|
||||||
|
|
||||||
@ -158,4 +169,4 @@ This project is licensed under the GPL-2.0+ License - see the [LICENSE](LICENSE)
|
|||||||
|
|
||||||
## Support
|
## Support
|
||||||
|
|
||||||
For support, please visit [WP All Stars](https://www.wpallstars.com).
|
For support, please visit [WP ALLSTARS](https://www.wpallstars.com).
|
@ -18,11 +18,18 @@
|
|||||||
var ourNotice = document.createElement('div');
|
var ourNotice = document.createElement('div');
|
||||||
ourNotice.className = 'prc-notice';
|
ourNotice.className = 'prc-notice';
|
||||||
|
|
||||||
// Add content (using localized strings passed via wp_localize_script if needed, but simple for now)
|
// Add content using localized strings passed via wp_localize_script
|
||||||
|
var pluginMissingText = typeof fpdenData !== 'undefined' && fpdenData.i18n && fpdenData.i18n.pluginMissing ?
|
||||||
|
fpdenData.i18n.pluginMissing : 'Plugin file missing';
|
||||||
|
var removeReferenceText = typeof fpdenData !== 'undefined' && fpdenData.i18n && fpdenData.i18n.removeReference ?
|
||||||
|
fpdenData.i18n.removeReference : 'Remove Reference';
|
||||||
|
var clickToScrollText = typeof fpdenData !== 'undefined' && fpdenData.i18n && fpdenData.i18n.clickToScroll ?
|
||||||
|
fpdenData.i18n.clickToScroll : 'Click here to scroll to missing plugins';
|
||||||
|
|
||||||
ourNotice.innerHTML = '<h3 style="margin-top:0;color:#826200;">👉 Fix Plugin Does Not Exist Notices Can Fix This</h3>' +
|
ourNotice.innerHTML = '<h3 style="margin-top:0;color:#826200;">👉 Fix Plugin Does Not Exist Notices Can Fix This</h3>' +
|
||||||
'<p>To remove the above error notification, scroll down to find the plugin marked with "<strong style="color:red">(File Missing)</strong>" and click its "<strong>Remove Reference</strong>" link.</p>' +
|
'<p>To remove the above error notification, scroll down to find the plugin marked with "<strong style="color:red">(' + pluginMissingText + ')</strong>" and click its "<strong>' + removeReferenceText + '</strong>" link.</p>' +
|
||||||
'<p>This will permanently remove the missing plugin reference from your database.</p>' +
|
'<p>This will permanently remove the missing plugin reference from your database.</p>' +
|
||||||
'<p><a href="#" id="prc-scroll-to-plugin" style="font-weight:bold;text-decoration:underline;color:#826200;">Click here to scroll to the missing plugin</a></p>';
|
'<p><a href="#" id="prc-scroll-to-plugin" style="font-weight:bold;text-decoration:underline;color:#826200;">' + clickToScrollText + '</a></p>';
|
||||||
|
|
||||||
// Insert our notice right after the error
|
// Insert our notice right after the error
|
||||||
notice.parentNode.insertBefore(ourNotice, notice.nextSibling);
|
notice.parentNode.insertBefore(ourNotice, notice.nextSibling);
|
||||||
|
16
build.sh
16
build.sh
@ -18,6 +18,10 @@ ZIP_FILE="${PLUGIN_SLUG}-${VERSION}.zip"
|
|||||||
echo "Creating build directory..."
|
echo "Creating build directory..."
|
||||||
mkdir -p $BUILD_DIR
|
mkdir -p $BUILD_DIR
|
||||||
|
|
||||||
|
# Install composer dependencies
|
||||||
|
echo "Installing composer dependencies..."
|
||||||
|
composer install --no-dev --optimize-autoloader
|
||||||
|
|
||||||
# Copy required files
|
# Copy required files
|
||||||
echo "Copying plugin files..."
|
echo "Copying plugin files..."
|
||||||
cp fix-plugin-does-not-exist-notices.php $BUILD_DIR/
|
cp fix-plugin-does-not-exist-notices.php $BUILD_DIR/
|
||||||
@ -25,6 +29,18 @@ cp readme.txt $BUILD_DIR/
|
|||||||
cp LICENSE $BUILD_DIR/
|
cp LICENSE $BUILD_DIR/
|
||||||
cp README.md $BUILD_DIR/
|
cp README.md $BUILD_DIR/
|
||||||
cp CHANGELOG.md $BUILD_DIR/
|
cp CHANGELOG.md $BUILD_DIR/
|
||||||
|
cp composer.json $BUILD_DIR/
|
||||||
|
|
||||||
|
# Copy directories
|
||||||
|
echo "Copying directories..."
|
||||||
|
mkdir -p $BUILD_DIR/includes
|
||||||
|
cp -r includes/* $BUILD_DIR/includes/
|
||||||
|
mkdir -p $BUILD_DIR/languages
|
||||||
|
cp -r languages/* $BUILD_DIR/languages/
|
||||||
|
mkdir -p $BUILD_DIR/assets
|
||||||
|
cp -r assets/* $BUILD_DIR/assets/
|
||||||
|
mkdir -p $BUILD_DIR/vendor
|
||||||
|
cp -r vendor/* $BUILD_DIR/vendor/
|
||||||
|
|
||||||
# Create ZIP file
|
# Create ZIP file
|
||||||
echo "Creating ZIP file..."
|
echo "Creating ZIP file..."
|
||||||
|
21
composer.json
Normal file
21
composer.json
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"name": "wpallstars/fix-plugin-does-not-exist-notices",
|
||||||
|
"description": "Adds missing plugins to the plugins list with a 'Remove Reference' link so you can permanently clean up invalid plugin entries and remove error notices.",
|
||||||
|
"type": "wordpress-plugin",
|
||||||
|
"license": "GPL-2.0-or-later",
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Marcus Quinn",
|
||||||
|
"email": "6428977+marcusquinn@users.noreply.github.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.0",
|
||||||
|
"afragen/git-updater-lite": "^1"
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"WPAllStars\\FixPluginDoesNotExistNotices\\": "includes/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -4,13 +4,16 @@
|
|||||||
*
|
*
|
||||||
* @package FixPluginDoesNotExistNotices
|
* @package FixPluginDoesNotExistNotices
|
||||||
* @author Marcus Quinn
|
* @author Marcus Quinn
|
||||||
* @copyright 2023 WP All Stars
|
* @copyright 2023 WP ALLSTARS
|
||||||
* @license GPL-2.0+
|
* @license GPL-2.0+
|
||||||
|
* @noinspection PhpUndefinedFunctionInspection
|
||||||
|
* @noinspection PhpUndefinedConstantInspection
|
||||||
*
|
*
|
||||||
* @wordpress-plugin
|
* @wordpress-plugin
|
||||||
* Plugin Name: Fix 'Plugin file does not exist.' Notices
|
* Plugin Name: Fix 'Plugin file does not exist.' Notices
|
||||||
|
* Plugin URI: https://wordpress.org/plugins/fix-plugin-does-not-exist-notices/
|
||||||
* Description: Adds missing plugins to the plugins list with a "Remove Reference" link so you can permanently clean up invalid plugin entries and remove error notices.
|
* Description: Adds missing plugins to the plugins list with a "Remove Reference" link so you can permanently clean up invalid plugin entries and remove error notices.
|
||||||
* Version: 1.6.0
|
* Version: 1.6.4
|
||||||
* Author: Marcus Quinn
|
* Author: Marcus Quinn
|
||||||
* Author URI: https://www.wpallstars.com
|
* Author URI: https://www.wpallstars.com
|
||||||
* License: GPL-2.0+
|
* License: GPL-2.0+
|
||||||
@ -19,6 +22,11 @@
|
|||||||
* Domain Path: /languages
|
* Domain Path: /languages
|
||||||
* Requires at least: 5.0
|
* Requires at least: 5.0
|
||||||
* Requires PHP: 7.0
|
* Requires PHP: 7.0
|
||||||
|
* Update URI: https://git-updater.wpallstars.com
|
||||||
|
* GitHub Plugin URI: wpallstars/fix-plugin-does-not-exist-notices
|
||||||
|
* GitHub Branch: main
|
||||||
|
* Gitea Plugin URI: wpallstars/fix-plugin-does-not-exist-notices
|
||||||
|
* Gitea Branch: main
|
||||||
*
|
*
|
||||||
* This plugin is free software: you can redistribute it and/or modify
|
* This plugin is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -40,7 +48,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Define plugin constants
|
// Define plugin constants
|
||||||
define( 'FPDEN_VERSION', '1.6.0' );
|
define( 'FPDEN_VERSION', '1.6.4' );
|
||||||
define( 'FPDEN_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
|
define( 'FPDEN_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
|
||||||
define( 'FPDEN_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
|
define( 'FPDEN_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
|
||||||
define( 'FPDEN_PLUGIN_FILE', __FILE__ );
|
define( 'FPDEN_PLUGIN_FILE', __FILE__ );
|
||||||
@ -185,6 +193,7 @@ class Fix_Plugin_Does_Not_Exist_Notices {
|
|||||||
* @param array $plugin_data An array of plugin data.
|
* @param array $plugin_data An array of plugin data.
|
||||||
* @param string $context The plugin context (e.g., 'all', 'active', 'inactive').
|
* @param string $context The plugin context (e.g., 'all', 'active', 'inactive').
|
||||||
* @return array The potentially modified array of plugin action links.
|
* @return array The potentially modified array of plugin action links.
|
||||||
|
* @noinspection PhpUnusedParameterInspection
|
||||||
*/
|
*/
|
||||||
public function add_remove_reference_action( $actions, $plugin_file, $plugin_data, $context ) {
|
public function add_remove_reference_action( $actions, $plugin_file, $plugin_data, $context ) {
|
||||||
// Only run on the plugins page.
|
// Only run on the plugins page.
|
||||||
@ -395,3 +404,14 @@ class Fix_Plugin_Does_Not_Exist_Notices {
|
|||||||
|
|
||||||
// Initialize the plugin class.
|
// Initialize the plugin class.
|
||||||
new Fix_Plugin_Does_Not_Exist_Notices();
|
new Fix_Plugin_Does_Not_Exist_Notices();
|
||||||
|
|
||||||
|
// Initialize the updater if composer autoload exists
|
||||||
|
$autoloader = __DIR__ . '/vendor/autoload.php';
|
||||||
|
if (file_exists($autoloader)) {
|
||||||
|
require_once $autoloader;
|
||||||
|
|
||||||
|
// Initialize the updater if the class exists
|
||||||
|
if (class_exists('\WPALLSTARS\FixPluginDoesNotExistNotices\Updater')) {
|
||||||
|
new \WPALLSTARS\FixPluginDoesNotExistNotices\Updater(__FILE__);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
158
includes/Updater.php
Normal file
158
includes/Updater.php
Normal file
@ -0,0 +1,158 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Plugin Updater
|
||||||
|
*
|
||||||
|
* @package FixPluginDoesNotExistNotices
|
||||||
|
* @noinspection PhpUndefinedFunctionInspection
|
||||||
|
* @noinspection PhpUndefinedClassInspection
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace WPALLSTARS\FixPluginDoesNotExistNotices;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class Updater
|
||||||
|
*
|
||||||
|
* Handles plugin updates from different sources based on installation origin.
|
||||||
|
*/
|
||||||
|
class Updater {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Plugin file path
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private $plugin_file;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Installation source
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private $source;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*
|
||||||
|
* @param string $plugin_file Main plugin file path.
|
||||||
|
*/
|
||||||
|
public function __construct($plugin_file) {
|
||||||
|
$this->plugin_file = $plugin_file;
|
||||||
|
$this->source = $this->determine_installation_source();
|
||||||
|
$this->init();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize the updater based on the installation source
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function init() {
|
||||||
|
// Only initialize Git Updater if not installed from WordPress.org
|
||||||
|
if ($this->source !== 'wordpress.org') {
|
||||||
|
$this->init_git_updater();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine the installation source of the plugin
|
||||||
|
*
|
||||||
|
* @return string Installation source: 'github', 'gitea', or 'wordpress.org'
|
||||||
|
*/
|
||||||
|
private function determine_installation_source() {
|
||||||
|
// Default to WordPress.org
|
||||||
|
$source = 'wordpress.org';
|
||||||
|
|
||||||
|
// Check if the plugin was installed from GitHub
|
||||||
|
if ($this->is_github_installation()) {
|
||||||
|
$source = 'github';
|
||||||
|
}
|
||||||
|
// Check if the plugin was installed from Gitea
|
||||||
|
elseif ($this->is_gitea_installation()) {
|
||||||
|
$source = 'gitea';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $source;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the plugin was installed from GitHub
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
* @noinspection PhpUndefinedFunctionInspection
|
||||||
|
*/
|
||||||
|
private function is_github_installation() {
|
||||||
|
// Check for GitHub-specific markers in the plugin directory
|
||||||
|
$plugin_dir = \plugin_dir_path($this->plugin_file);
|
||||||
|
|
||||||
|
// Look for .git directory with GitHub remote
|
||||||
|
if (file_exists($plugin_dir . '.git')) {
|
||||||
|
$git_config = @file_get_contents($plugin_dir . '.git/config');
|
||||||
|
if ($git_config && strpos($git_config, 'github.com') !== false) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check for GitHub-specific files that might indicate it was downloaded from GitHub
|
||||||
|
if (file_exists($plugin_dir . '.github')) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the plugin was installed from Gitea
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
* @noinspection PhpUndefinedFunctionInspection
|
||||||
|
*/
|
||||||
|
private function is_gitea_installation() {
|
||||||
|
// Check for Gitea-specific markers in the plugin directory
|
||||||
|
$plugin_dir = \plugin_dir_path($this->plugin_file);
|
||||||
|
|
||||||
|
// Look for .git directory with Gitea remote
|
||||||
|
if (file_exists($plugin_dir . '.git')) {
|
||||||
|
$git_config = @file_get_contents($plugin_dir . '.git/config');
|
||||||
|
if ($git_config && strpos($git_config, 'gitea.wpallstars.com') !== false) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize Git Updater Lite
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
* @noinspection PhpUndefinedFunctionInspection
|
||||||
|
* @noinspection PhpUndefinedClassInspection
|
||||||
|
*/
|
||||||
|
private function init_git_updater() {
|
||||||
|
// Check if the Git Updater Lite class exists (composer autoload)
|
||||||
|
if (!class_exists('\\Fragen\\Git_Updater\\Lite')) {
|
||||||
|
// Try to include the autoloader
|
||||||
|
$autoloader = dirname($this->plugin_file) . '/vendor/autoload.php';
|
||||||
|
if (file_exists($autoloader)) {
|
||||||
|
require_once $autoloader;
|
||||||
|
} else {
|
||||||
|
return; // Can't load Git Updater Lite
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set the update server based on the installation source
|
||||||
|
\add_filter('gul_update_server', function() {
|
||||||
|
if ($this->source === 'github') {
|
||||||
|
return 'https://github.com/wpallstars/fix-plugin-does-not-exist-notices'; // GitHub repository URL
|
||||||
|
} elseif ($this->source === 'gitea') {
|
||||||
|
return 'https://gitea.wpallstars.com/wpallstars/fix-plugin-does-not-exist-notices'; // Gitea repository URL
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
});
|
||||||
|
|
||||||
|
// Initialize Git Updater Lite
|
||||||
|
if (class_exists('\\Fragen\\Git_Updater\\Lite')) {
|
||||||
|
(new \Fragen\Git_Updater\Lite($this->plugin_file))->run();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -2,14 +2,14 @@
|
|||||||
# This file is distributed under the GPL-2.0+.
|
# This file is distributed under the GPL-2.0+.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Fix 'Plugin file does not exist.' Notices 1.6.0\n"
|
"Project-Id-Version: Fix 'Plugin file does not exist.' Notices 1.6.4\n"
|
||||||
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/fix-plugin-does-not-exist-notices\n"
|
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/fix-plugin-does-not-exist-notices\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"POT-Creation-Date: 2024-05-15T12:00:00+00:00\n"
|
"POT-Creation-Date: 2024-05-16T12:00:00+00:00\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"X-Generator: WP-CLI 2.8.1\n"
|
"X-Generator: WP-CLI 2.8.1\n"
|
||||||
"X-Domain: fix-plugin-does-not-exist-notices\n"
|
"X-Domain: fix-plugin-does-not-exist-notices\n"
|
||||||
|
44
readme.txt
44
readme.txt
@ -5,7 +5,7 @@ Tags: plugins, missing plugins, cleanup, error fix, admin tools, plugin file doe
|
|||||||
Requires at least: 5.0
|
Requires at least: 5.0
|
||||||
Tested up to: 6.4
|
Tested up to: 6.4
|
||||||
Requires PHP: 7.0
|
Requires PHP: 7.0
|
||||||
Stable tag: 1.6.0
|
Stable tag: 1.6.4
|
||||||
License: GPL-2.0+
|
License: GPL-2.0+
|
||||||
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
|
|
||||||
@ -89,12 +89,40 @@ Although this plugin consumes minimal disk space, and doesn't run unless you are
|
|||||||
|
|
||||||
== Changelog ==
|
== Changelog ==
|
||||||
|
|
||||||
|
= 1.6.4 =
|
||||||
|
* Updated version management to ensure consistent patch version increments
|
||||||
|
* Improved documentation for version update process
|
||||||
|
* Enhanced AI workflow files with detailed version increment instructions
|
||||||
|
|
||||||
|
= 1.6.3 =
|
||||||
|
* Fixed Git Updater repository URLs to use full repository paths
|
||||||
|
* Corrected Update URI configuration for proper update detection
|
||||||
|
* Improved version management following semantic versioning
|
||||||
|
* Updated organization name from 'WP All Stars' to 'WP ALLSTARS'
|
||||||
|
* Updated namespace from 'WPAllStars' to 'WPALLSTARS'
|
||||||
|
|
||||||
|
= 1.6.2 =
|
||||||
|
* Updated POT file version for consistency
|
||||||
|
* Improved JavaScript localization with proper fallbacks
|
||||||
|
* Enhanced code quality for WordPress.org submission
|
||||||
|
* Added Git Updater configuration with Update URI
|
||||||
|
* Added update server URL configuration
|
||||||
|
|
||||||
|
= 1.6.1 =
|
||||||
|
* Added AI assistant guide and workflow documentation
|
||||||
|
* Added detailed release process documentation
|
||||||
|
* Added feature development guidelines
|
||||||
|
* Added bug fixing procedures
|
||||||
|
* Added code review standards
|
||||||
|
|
||||||
= 1.6.0 =
|
= 1.6.0 =
|
||||||
* Added full translation support with POT file
|
* Added full translation support with POT file
|
||||||
* Added JavaScript localization for better multilingual support
|
* Added JavaScript localization for better multilingual support
|
||||||
* Added plugin constants for improved code organization
|
* Added plugin constants for improved code organization
|
||||||
|
* Added Git Updater support for updates from GitHub and Gitea
|
||||||
* Updated code to follow WordPress internationalization best practices
|
* Updated code to follow WordPress internationalization best practices
|
||||||
* Improved asset loading with version constants
|
* Improved asset loading with version constants
|
||||||
|
* Added smart update detection based on installation source
|
||||||
|
|
||||||
= 1.5.0 =
|
= 1.5.0 =
|
||||||
* Improved compatibility with WordPress 6.4
|
* Improved compatibility with WordPress 6.4
|
||||||
@ -168,8 +196,20 @@ Although this plugin consumes minimal disk space, and doesn't run unless you are
|
|||||||
|
|
||||||
== Upgrade Notice ==
|
== Upgrade Notice ==
|
||||||
|
|
||||||
|
= 1.6.4 =
|
||||||
|
Improved version management with consistent patch version increments and enhanced documentation for development workflows!
|
||||||
|
|
||||||
|
= 1.6.3 =
|
||||||
|
Fixed Git Updater repository URLs and updated organization naming for consistent branding across all platforms!
|
||||||
|
|
||||||
|
= 1.6.2 =
|
||||||
|
Improved JavaScript localization, enhanced code quality, and added Git Updater configuration for seamless updates!
|
||||||
|
|
||||||
|
= 1.6.1 =
|
||||||
|
Added comprehensive AI assistant guide and workflow documentation for improved development processes!
|
||||||
|
|
||||||
= 1.6.0 =
|
= 1.6.0 =
|
||||||
Added full translation support! The plugin can now be translated into any language.
|
Added full translation support and Git Updater compatibility for direct updates from GitHub and Gitea!
|
||||||
|
|
||||||
= 1.5.0 =
|
= 1.5.0 =
|
||||||
Improved compatibility with WordPress 6.4 and accessibility enhancements for screen readers!
|
Improved compatibility with WordPress 6.4 and accessibility enhancements for screen readers!
|
||||||
|
Reference in New Issue
Block a user