added additional plugins

This commit is contained in:
Rodolfo Martinez 2025-12-12 19:05:48 -05:00
parent c85895d306
commit 00e60ec1b7
132 changed files with 27514 additions and 0 deletions

View file

@ -0,0 +1,261 @@
# WPForms to Mailjet Automation Plugin - Build Instructions
## Directory Structure
```
wpforms-mailjet-automation/
├── wpforms-mailjet-automation.php (Main plugin file)
├── uninstall.php (Cleanup on uninstall)
├── index.php (Silence is golden)
├── BUILD-INSTRUCTIONS.md (This file)
├── package.json (Node.js dependencies - create this)
├── includes/
│ ├── index.php
│ ├── class-wpfmj-activator.php
│ ├── class-wpfmj-deactivator.php
│ ├── class-wpfmj-loader.php
│ ├── class-wpfmj-core.php
│ ├── class-wpfmj-cpt.php
│ ├── class-wpfmj-encryption.php
│ ├── class-wpfmj-mailjet-api.php
│ ├── class-wpfmj-form-handler.php
│ └── class-wpfmj-error-logger.php
├── admin/
│ ├── index.php
│ ├── class-wpfmj-admin.php
│ ├── class-wpfmj-dashboard.php
│ ├── css/
│ │ ├── index.php
│ │ └── wpfmj-admin.css
│ └── js/
│ ├── index.php
│ ├── wpfmj-wizard.js (Built React bundle - will be generated)
│ └── wpfmj-wizard.asset.php (Dependency file)
└── assets/
├── index.php
└── src/
├── index.php
└── wizard/
├── index.php
├── App.jsx (Main React component)
├── components/
│ ├── index.php
│ ├── StepOne.jsx
│ ├── StepTwo.jsx
│ ├── StepThree.jsx
│ ├── StepFour.jsx
│ ├── StepFive.jsx
│ └── StepSix.jsx
└── utils/
├── index.php
└── api.js
```
## Building the React Application
### Step 1: Install Node.js Dependencies
Create a `package.json` file in the plugin root directory:
```json
{
"name": "wpforms-mailjet-automation",
"version": "1.0.0",
"description": "WPForms to Mailjet automation plugin",
"scripts": {
"build": "wp-scripts build assets/src/wizard/App.jsx --output-path=admin/js",
"start": "wp-scripts start assets/src/wizard/App.jsx --output-path=admin/js"
},
"devDependencies": {
"@wordpress/scripts": "^26.0.0"
},
"dependencies": {
"@wordpress/element": "^5.0.0",
"@wordpress/components": "^25.0.0",
"@wordpress/i18n": "^4.0.0"
}
}
```
Then run:
```bash
npm install
```
### Step 2: Build the React Bundle
Run the build command:
```bash
npm run build
```
This will compile all React components into `admin/js/wpfmj-wizard.js` and generate `admin/js/wpfmj-wizard.asset.php` with dependency information.
### Step 3: Development Mode (Optional)
For development with hot reload:
```bash
npm run start
```
## Installation
1. Upload the entire `wpforms-mailjet-automation` folder to `/wp-content/plugins/`
2. Activate the plugin through the 'Plugins' menu in WordPress
3. Ensure WPForms is installed and activated
4. (Optional) Copy `wpfmj-config-sample.php` to `wpfmj-config.php` and customize settings
5. Navigate to 'Mailjet Automations' in the WordPress admin menu
## Requirements
- WordPress 5.8 or higher
- PHP 7.4 or higher
- WPForms plugin (any version)
- Node.js 14+ and npm (for building only)
## Plugin Features
### Core Functionality
- ✅ React-based wizard interface using @wordpress/components
- ✅ 6-step automation setup process
- ✅ Custom post type for storing automations
- ✅ Encrypted API key storage
- ✅ Field mapping (email, firstname, lastname)
- ✅ Trigger field selection (checkbox, radio, dropdown, multi-select)
- ✅ Answer-to-list mapping with unique list constraints
- ✅ Automatic retry logic (3 attempts with exponential backoff)
- ✅ Email notifications on persistent failures
- ✅ Error logging with custom database table
- ✅ Dashboard for managing automations
- ✅ Pause/activate/edit/delete automations
- ✅ Error count display per automation
### Security Features
- ✅ AES-256-CBC encryption for API credentials
- ✅ Nonce verification on all AJAX requests
- ✅ Capability checks (manage_options)
- ✅ Input sanitization and validation
- ✅ Prepared SQL statements
### Compatibility
- ✅ WooCommerce HPOS compatibility declared
- ✅ No conflicts with WPForms
- ✅ No conflicts with WooCommerce
- ✅ No conflicts with LearnDash
- ✅ No conflicts with Wordfence
- ✅ Safe database schema with proper indexes
### Performance
- ✅ No excessive AJAX calls (dashboard loads once per page view)
- ✅ Efficient database queries with proper indexing
- ✅ Automatic cleanup of old error logs (90 days)
- ✅ Minimal overhead on form submissions
- ✅ Set-and-forget architecture
## File-by-File Placement
### Root Files
- `wpforms-mailjet-automation.php` - Root directory
- `uninstall.php` - Root directory
- `index.php` - Root directory
- `package.json` - Root directory (create from template above)
### Includes Files (includes/)
- `index.php`
- `class-wpfmj-activator.php`
- `class-wpfmj-deactivator.php`
- `class-wpfmj-loader.php`
- `class-wpfmj-core.php`
- `class-wpfmj-cpt.php`
- `class-wpfmj-encryption.php`
- `class-wpfmj-mailjet-api.php`
- `class-wpfmj-form-handler.php`
- `class-wpfmj-error-logger.php`
### Admin Files (admin/)
- `index.php`
- `class-wpfmj-admin.php`
- `class-wpfmj-dashboard.php`
### Admin CSS (admin/css/)
- `index.php`
- `wpfmj-admin.css`
### Admin JS (admin/js/)
- `index.php`
- `wpfmj-wizard.asset.php`
- `wpfmj-wizard.js` (will be generated by build process)
### React Source Files (assets/src/wizard/)
- `index.php`
- `App.jsx`
### React Components (assets/src/wizard/components/)
- `index.php`
- `StepOne.jsx`
- `StepTwo.jsx`
- `StepThree.jsx`
- `StepFour.jsx`
- `StepFive.jsx`
- `StepSix.jsx`
### React Utils (assets/src/wizard/utils/)
- `index.php`
- `api.js`
## Testing Checklist
### Before Production
- [ ] Test with fresh WordPress installation
- [ ] Test with WPForms Lite and Pro
- [ ] Test form submission triggers automation
- [ ] Test with checkbox fields (multiple selections)
- [ ] Test with radio/dropdown fields (single selection)
- [ ] Test API connection with valid/invalid credentials
- [ ] Test saving as draft vs. activating
- [ ] Test editing existing automation
- [ ] Test pausing/activating automation
- [ ] Test deleting automation
- [ ] Verify email notifications on API failures
- [ ] Check error log table creation
- [ ] Verify encryption/decryption of API keys
- [ ] Test with WooCommerce active (HPOS enabled)
- [ ] Test uninstall cleanup
### Performance Testing
- [ ] No infinite loops detected
- [ ] No memory leaks during form submission
- [ ] Dashboard loads without excessive queries
- [ ] No AJAX polling in background
### Security Testing
- [ ] SQL injection attempts blocked
- [ ] XSS attempts blocked
- [ ] CSRF protected with nonces
- [ ] Capability checks enforced
- [ ] API credentials properly encrypted
## Common Issues and Solutions
### Issue: React bundle not loading
**Solution:** Run `npm run build` to generate the JavaScript bundle
### Issue: "WPForms required" error
**Solution:** Install and activate WPForms plugin
### Issue: API connection fails
**Solution:** Verify API credentials in Mailjet account under Account Settings > REST API
### Issue: Automation not triggering
**Solution:** Check that automation status is "Active" (not "Paused")
### Issue: Missing form fields
**Solution:** Ensure the selected form has been saved with fields in WPForms
## Support
For issues, questions, or feature requests, please contact the plugin author.
## License
GPL-2.0+