| Envato Elements | 2.0.13 | Template Kits + Elementor + Photos + Subscription/API + ZIP Import |
| Envato Market | 2.0.11 | إدارة مشتريات Envato + Themes/Plugins + التحديث والتثبيت عبر WordPress |
تم فحص 254 ملفًا فعليًا داخل الأرشيفين، مع تصنيف PHP/JS/JSX/SCSS/CSS/assets، واستخراج الـClasses والـFunctions والـHooks والـREST/AJAX ومسارات API الرئيسية.
1. Envato Elements
المعمارية الأساسية هي:
React UI
↓
REST / Admin AJAX
↓
API Controllers
↓
Extensions API / Content API
↓
Download ZIP
↓
ZIP Validation
↓
Template Kits CPT
↓
Elementor Builder
↓
Templates / Media / Global Styles
وأهم الطبقات:
inc/api/— واجهة العمليات الخارجية.inc/backend/— منطق WordPress الداخلي.inc/utils/— APIs والحدود والأدوات المشتركة.vendor/template-kit-import/— محرك استيراد Template Kits.src/js/react/components/— واجهة React الأصلية.assets/main.js— نسخة React المجمعة للإنتاج.
ومن أهم الملفات التي تم تحليلها:
class-api.php، class-template-kit-install.php، class-template-kit-import.php، class-template-kit-search.php، class-requirements.php، class-settings.php، class-subscription-api.php، class-content-api.php، class-extensions-api.php، class-template-kits.php، وطبقة Builder_Elementor.
2. Envato Market
المسار مختلف:
WordPress Admin
↓
Envato Market Admin
↓
OAuth / Token
↓
Envato Market API
↓
Purchased Themes / Plugins
↓
WordPress Update Transients
↓
WordPress Upgrader
↓
Install / Update
وأهم الطبقات:
class-envato-market.php— القلب المركزي.class-envato-market-api.php— الاتصال بـEnvato Market API.class-envato-market-items.php— إدارة المشتريات والتحديثات.class-envato-market-admin.php— لوحة الإدارة.class-envato-market-theme-upgrader.php— التحديث.class-envato-market-github.php— تحديث إضافة Envato Market نفسها.
3. ملاحظة مهمة جدًا لإعادة البناء
هذه ليست مجرد ملفات يمكن نسخها إلى مشروع جديد.
هناك Domain Logic مهم جدًا يجب الحفاظ عليه، خصوصًا:
- التحقق من الاشتراك والتوكن.
- صلاحيات WordPress.
- REST permissions.
- AJAX + nonces.
- تنزيل Template Kits.
- التحقق من ZIP.
- قراءة
manifest.json. - إنشاء Template Kit CPT.
- حفظ الـmetadata.
- استيراد Elementor JSON.
- إدارة الصور.
- تسجيل عمليات التنزيل.
- WordPress Theme/Plugin Updater.
- Deferred Downloads.
- Envato API normalization.
كما وجدت نقاطًا يجب تحسينها إذا كان الهدف بناء نسخة حديثة، مثل ZIP security، SSRF protection، manifest validation، token security، compatibility، وفصل الخدمات عن WordPress singleton architecture.
التقرير الكامل
أنشأت لك تقريرًا منظمًا يحتوي على جرد الملفات، المجلدات، Classes/Functions، طبقات React، تدفقات التشغيل، المعمارية، نقاط الأمن والموثوقية، وعلاقة النظامين:
تحميل تقرير التحليل المعماري العميق
والخطوة التالية الأفضل هي أن ننتقل من التحليل العام إلى خريطة Dependency Map فعلية: ملف → Class → Function → Hook → REST Endpoint → React Component → API → قاعدة البيانات/Metadata، ثم نبني منها مخطط Core Plugin + Modules + Services + CPTs + Tables لإعادة كتابة النظام بطريقة حديثة. envato_deep_architecture_audit.mdمستندفتح الملف
اكمل
نعم، أكملت الطبقة التالية من التحليل، والنتيجة أصبحت أوضح بكثير.
1. الخريطة الحقيقية للنظام
Envato Elements
React / Admin UI
↓
REST API
↓
AJAX Compatibility Bridge
↓
API Controllers
↓
┌───────────────────────────────┐
│ Subscription / Search / Kits │
│ Photos / Requirements │
│ Settings / Project │
└───────────────────────────────┘
↓
Envato Extensions API
+
Content API
↓
Download Service
↓
ZIP Pipeline
↓
manifest.json
↓
envato_tk_import CPT
↓
Elementor / Gutenberg Adapter
↓
Templates + Images + Styles
وهنا اكتشفت نقطة معمارية مهمة جدًا:class-rest.php لا يقدم REST فقط، بل يحتوي أيضًا على جسر AJAX يرجع إلى الـREST routes عندما تكون استضافة WordPress غير مناسبة للتعامل مع REST مباشرة.
أي أن التصميم القديم يحاول حل مشكلة توافق الاستضافات بهذه الطريقة:
React
├── REST
│
└── wp_ajax_envato_elements
↓
REST Server
↓
Endpoint
وهذا جزء مهم جدًا إذا كنا سنعيد البناء.
2. جميع عمليات Template Kits
تم استخراج خريطة الـEndpoints الأساسية:
| Endpoint | الوظيفة |
|---|---|
fetchPremiumTemplateKitSearchResults | البحث في Kits المدفوعة |
fetchFreeTemplateKitSearchResults | البحث في Kits المجانية |
fetchFreeBlockSearchResults | البحث في Blocks |
installPremiumTemplateKit | تثبيت Kit مدفوع |
installFreeTemplateKit | تثبيت Kit مجاني |
uploadTemplateKitZipFile | رفع ZIP محلي |
deleteTemplateKit | حذف Kit |
fetchInstalledTemplateKits | عرض Kits المثبتة |
fetchIndividualTemplates | عرض Templates داخل Kit |
importSingleTemplate | استيراد Template |
importFreeBlock | استيراد Block |
getSingleTemplateImportData | الحصول على بيانات الاستيراد |
importElementorTemplateImage | استيراد الصور |
verifyExtensionsToken | التحقق من الاشتراك/Token |
3. المسار الأخطر والأهم: تثبيت Kit مدفوع
العملية فعليًا:
User
↓
React
↓
installPremiumTemplateKit
↓
Template_Kit_Install
↓
Extensions_API
↓
/extensions/item/{id}/download
↓
Envato License/Token
↓
Temporary Download URL
↓
wp_safe_remote_get()
↓
Temporary ZIP
↓
ZIP Importer
↓
manifest.json
↓
CPT
↓
Metadata
↓
Elementor
وهذا يعني أن الـToken لا يمنح الوصول إلى الملف مباشرة من React.
بل:
Browser
↓
WordPress
↓
Token
↓
Envato
↓
Temporary URL
↓
WordPress Server
وهذا تصميم مهم جدًا للحفاظ عليه في النظام الجديد.
4. نموذج البيانات الموجود فعليًا
هناك حاليًا اعتماد كبير على WordPress Options وPost Meta.
Options
مثل:
envato_elements_options
elements_token
subscription_status
downloaded_items
project_name
Template Kit CPT
الـCPT هو:
envato_tk_import
ويتم تخزين معلومات مهمة داخل:
envato_tk_manifest
envato_tk_folder_name
envato_tk_builder
envato_tk_source_zip_url
وهنا تظهر مشكلة مهمة عند بناء منصة أكبر:
Post Meta مناسب لبداية الإضافة، لكنه ليس أفضل مكان لإدارة منصة ضخمة تحتوي على آلاف Kits وملايين عمليات الاستيراد والتنزيل.
لذلك أقترح في النسخة الجديدة:
WordPress CPT
+
Custom Tables
+
Object/Cache Layer
+
Queue
بدل الاعتماد على Post Meta وحده.
5. اكتشاف مهم جدًا داخل ZIP Import
المسار:
ZIP
↓
uploads/template-kits/
↓
random folder
↓
extract
↓
manifest.json
↓
CPT
لكن الكود القديم نفسه يحتوي على ملاحظة بأن:
manifestيحتاج إلى validation.
وهذه نقطة ينبغي ألا تنتقل كما هي إلى المشروع الجديد.
في النسخة الجديدة سيكون:
ZIP
↓
Quarantine
↓
ZIP Signature Check
↓
File Count Check
↓
Uncompressed Size Check
↓
Path Traversal Check
↓
Allowed Extensions
↓
manifest.json
↓
JSON Schema Validation
↓
Builder Validation
↓
Dependency Validation
↓
Persistence
↓
Import Job
وهذا سيجعل محرك الاستيراد أكثر أمانًا واستقرارًا.
6. Envato Market مختلف تمامًا
لا ينبغي دمجه داخل Template Kit Engine.
وظيفته:
Envato Token
↓
Envato Market API
↓
Purchased Items
↓
Themes / Plugins
↓
WordPress Update Transients
↓
WordPress Upgrader
↓
Install / Update
ومن أقوى الأفكار الموجودة في الكود القديم:
Deferred Download
بدل:
Generate permanent download URL
↓
send it around
يستخدم:
Update Request
↓
Deferred Download Marker
↓
maybe_deferred_download()
↓
API Authentication
↓
Download
↓
WordPress Upgrader
وهذه فكرة ينبغي الاحتفاظ بها في إعادة البناء.
7. التصميم الجديد الذي أوصي ببنائه
بدل أن يكون المشروع:
Envato Plugin
Envato Market Plugin
Elementor Code
WordPress Hooks
React
نجعله:
MIQYAS / Platform Core
│
├── Core
│ ├── Contracts
│ ├── Services
│ ├── Events
│ ├── Exceptions
│ ├── Security
│ ├── HTTP
│ ├── Cache
│ └── Logger
│
├── Providers
│ ├── Envato Elements
│ ├── Envato Market
│ └── Future Providers
│
├── Template Engine
│ ├── Kit Manager
│ ├── Manifest
│ ├── ZIP Inspector
│ ├── Import Pipeline
│ └── Dependency Resolver
│
├── Builders
│ ├── Elementor
│ ├── Gutenberg
│ └── Future Builders
│
├── Licensing
│ ├── Subscription
│ ├── Purchase
│ ├── Token
│ └── Entitlements
│
├── Media
│ ├── Images
│ ├── Attachments
│ └── Import
│
├── Jobs
│ ├── Queue
│ ├── Workers
│ ├── Retry
│ └── Scheduler
│
├── REST API
│
├── Admin UI
│ └── React
│
└── WordPress Adapter
├── CPT
├── Options
├── Users
├── Media
└── Upgrader
8. والأهم: لا نعيد كتابة الملفات القديمة واحدًا لواحد
بدل:
class-template-kit-install.php
نحوّلها إلى:
InstallTemplateKitController
↓
InstallTemplateKitService
↓
LicenseService
↓
ProviderInterface
↓
EnvatoElementsProvider
↓
DownloadService
↓
ZipValidationService
↓
ManifestService
↓
KitRepository
↓
ImportJob
↓
BuilderInterface
↓
ElementorAdapter
وبذلك يصبح النظام قابلًا للتوسع.
9. الجداول التي أقترحها
بدل وضع كل شيء في post_meta:
wp_mqy_connections
wp_mqy_providers
wp_mqy_template_kits
wp_mqy_template_items
wp_mqy_downloads
wp_mqy_import_jobs
wp_mqy_import_logs
wp_mqy_entitlements
wp_mqy_usage_events
wp_mqy_webhooks
مثلًا:
wp_mqy_template_kits
id
provider_id
remote_id
title
slug
builder
version
manifest_json
source_url
local_path
status
created_at
updated_at
wp_mqy_import_jobs
id
kit_id
item_id
user_id
job_type
status
progress
payload
result
error
attempts
started_at
finished_at
created_at
وهذا يفتح الباب مباشرة أمام:
Queue
Background Jobs
Cron
Retry
Human Approval
Logs
Webhooks
AI Agents
Workflow Engine
وهو قريب جدًا من الاتجاه الذي كنا نبنيه في مشروع منصة الـAI/WordPress لديك.
10. الملف الجديد
أعددت لك خريطة الاعتماديات التفصيلية كملف مستقل:
تحميل Envato Deep Dependency Map
المرحلة التالية التي أقترح أن نبدأ بها
ننتقل الآن إلى المستوى الأعمق جدًا:
File → Class → Method → Hook → Endpoint → Database → External API → React Component
ثم أبني لك منه مخطط قاعدة البيانات الكامل + Custom Post Types + Taxonomies + REST API + Services + Interfaces + Jobs + Queues + WooCommerce integration + Elementor integration، بحيث يصبح لدينا Blueprint فعلي لإعادة كتابة النظام بدل مجرد تحليل الإضافة القديمة. envato_deep_dependency_map.mdمستندفتح الملف
ممتاز. وصلنا الآن إلى مستوى أعمق من مجرد “شرح الملفات”.
أنشأت Master Re-Architecture Blueprint جديدًا، وفيه تحويل للتحليل إلى تصميم هندسي فعلي:
تحميل Master Re-Architecture Blueprint
ما أضفته الآن
1. نموذج Domain كامل
فصلت النظام إلى كيانات مستقلة:
ProviderConnection
Entitlement
CatalogItem
TemplateKit
TemplateItem
ImportJob
UsageEvent
Artifact
Requirement
وهذا مهم جدًا لأن:
Token ≠ Subscription ≠ Purchase ≠ Download Permission
وهي أشياء كانت متداخلة جزئيًا في النظام القديم.
2. دورة حياة Template Kit
أصبحت العملية المقترحة:
DISCOVERED
↓
LICENSE_CHECKED
↓
DOWNLOAD_REQUESTED
↓
DOWNLOADING
↓
DOWNLOADED
↓
QUARANTINED
↓
VALIDATING
↓
VALIDATED
↓
REGISTERED
↓
READY
↓
IMPORT_QUEUED
↓
IMPORTING
↓
IMPORTED
مع حالات:
FAILED
RETRYING
CANCELLED
DELETED
وهذا يفتح الطريق لتشغيل الاستيراد في الخلفية بدل تجميد طلب HTTP.
3. محرك ZIP جديد
بدل:
Upload ZIP
↓
Extract
سيصبح:
Upload
↓
Quarantine
↓
Archive Inspection
↓
Path Traversal Check
↓
File Count Check
↓
Size Check
↓
Allowed Extensions
↓
Manifest Validation
↓
Builder Validation
↓
Dependency Validation
↓
Register
↓
Import
وهذا سيكون أحد أهم أجزاء الـCore Plugin.
4. Dependency / Requirements Engine
الـKit يمكن أن يقول:
Requires:
- Elementor >= X
- Plugin A >= Y
- Plugin B
ثم النظام يفحص:
هل موجود؟
هل الإصدار مناسب؟
هل مفعّل؟
هل يحتاج تثبيت؟
هل يحتاج موافقة المستخدم؟
ثم:
READY
أو:
BLOCKED
5. Provider Architecture
بدل ربط النظام بالكامل بـEnvato:
Core
↓
Provider Interface
↓
├── Envato Elements
├── Envato Market
├── Future Provider A
└── Future Provider B
مثلًا:
interface ContentProviderInterface
{
public function search(array $criteria);
public function getItem(string $remoteId);
public function requestDownload(string $remoteId);
public function verifyEntitlement(string $remoteId);
}
وهذا يعني أننا نستطيع مستقبلًا إضافة مزود جديد دون إعادة كتابة Template Engine.
6. Job Engine
العمليات الطويلة ستصبح Jobs:
VerifyEntitlementJob
DownloadArtifactJob
InspectZipJob
ValidateManifestJob
RegisterKitJob
InstallRequirementJob
ImportTemplateJob
ImportMediaJob
RewriteUrlsJob
VerifyImportJob
CleanupArtifactJob
وكل Job يجب أن يكون:
- قابلًا لإعادة المحاولة
- Idempotent
- قابلًا للتتبع
- قابلًا للاستئناف
- قابلًا للإلغاء حيث يكون ذلك آمنًا
7. Event System
أضفت أيضًا نموذج الأحداث:
ProviderConnected
EntitlementVerified
CatalogItemDiscovered
DownloadStarted
DownloadCompleted
ArtifactValidated
TemplateKitRegistered
ImportStarted
TemplateImported
MediaImported
ImportCompleted
ImportFailed
RequirementMissing
RequirementInstalled
KitDeleted
وهذه نقطة استراتيجية جدًا؛ لأنها تسمح لاحقًا بربط النظام مع:
AI Agents
Workflow Engine
Webhooks
Analytics
Notifications
Billing
Usage Metering
Automation
8. فصل WordPress عن الـCore
هذه من أهم التغييرات.
بدل أن يحتوي Domain على:
update_post_meta()
add_action()
get_option()
wp_remote_get()
سيصبح:
Domain
↓
Interface
↓
WordPress Adapter
مثل:
TemplateKitRepositoryInterface
↓
WpTemplateKitRepository
وبذلك لا يصبح النظام أسير WordPress في كل طبقاته.
9. النتيجة النهائية التي نقترب منها
React Admin
│
REST API
│
Application Services
│
┌────────────────┼────────────────┐
│ │ │
Template Domain Licensing Domain Job Engine
│ │ │
└────────────────┼────────────────┘
│
Provider Contracts
│
┌─────────────┴─────────────┐
│ │
Envato Elements Envato Market
│ │
└─────────────┬─────────────┘
│
Infrastructure
│
┌───────────────┼───────────────┐
│ │ │
WordPress Database HTTP
│ │ │
Elementor Custom Tables APIs
Media Library
WP Upgrader
وهنا بدأنا فعليًا في تحويل الإضافتين القديمتين إلى منصة قابلة للتوسع، وليس مجرد نسخة منهما.
والمرحلة التالية الأكثر أهمية ستكون تصميم قاعدة البيانات الفعلية بالكامل: كل جدول، كل عمود، نوع البيانات، Primary Keys، Foreign Keys، Indexes، حالات الـJobs، جداول الـLicenses/Entitlements، Template Kits/Items، Artifacts، Usage Events، Webhooks، ثم ربطها بـCPT + Taxonomies + WooCommerce Products + Elementor. envato_master_rearchitecture_blueprint.mdمستندفتح الملف