Publisher Modülü Analizi
Genel Bakış
Section titled “Genel Bakış”Bu belge, Publisher modülü mimarisinin, kalıplarının ve uygulama ayrıntılarının teknik analizini sağlar. Üretim kalitesinde bir XOOPS modülünün nasıl yapılandırıldığını anlamak için bunu referans olarak kullanın.
Mimariye Genel Bakış
Section titled “Mimariye Genel Bakış”flowchart TB subgraph "Presentation Layer" FE[Frontend Pages] AD[Admin Panel] BL[Blocks] end
subgraph "Application Layer" PH[Page Handlers] BH[Block Handlers] FO[Forms] end
subgraph "Domain Layer" IT[Item Entity] CA[Category Entity] FI[File Entity] end
subgraph "Infrastructure" IH[ItemHandler] CH[CategoryHandler] FH[FileHandler] DB[(Database)] end
FE --> PH AD --> PH BL --> BH PH --> IT PH --> CA BH --> IT IT --> IH CA --> CH FI --> FH IH --> DB CH --> DB FH --> DBDizin Yapısı
Section titled “Dizin Yapısı”publisher/├── admin/│ ├── index.php # Admin dashboard│ ├── item.php # Article management│ ├── category.php # Category management│ ├── permission.php # Permissions│ ├── file.php # File manager│ └── menu.php # Admin menu├── assets/│ ├── css/│ ├── js/│ └── images/├── class/│ ├── Category.php # Category entity│ ├── CategoryHandler.php # Category data access│ ├── Item.php # Article entity│ ├── ItemHandler.php # Article data access│ ├── File.php # File attachment│ ├── FileHandler.php # File data access│ ├── Form/ # Form classes│ ├── Common/ # Utilities│ └── Helper.php # Module helper├── include/│ ├── common.php # Initialization│ ├── functions.php # Utility functions│ ├── oninstall.php # Install hooks│ ├── onupdate.php # Update hooks│ └── search.php # Search integration├── language/├── templates/├── sql/└── xoops_version.phpVarlık Analizi
Section titled “Varlık Analizi”Öğe (Makale) Varlık
Section titled “Öğe (Makale) Varlık”class Item extends \XoopsObject{ // Fields public function initVar(): void { $this->initVar('itemid', XOBJ_DTYPE_INT, null, false); $this->initVar('categoryid', XOBJ_DTYPE_INT, 0, false); $this->initVar('title', XOBJ_DTYPE_TXTBOX, '', true); $this->initVar('subtitle', XOBJ_DTYPE_TXTBOX, ''); $this->initVar('summary', XOBJ_DTYPE_TXTAREA, ''); $this->initVar('body', XOBJ_DTYPE_TXTAREA, '', true); $this->initVar('uid', XOBJ_DTYPE_INT, 0); $this->initVar('status', XOBJ_DTYPE_INT, 0); $this->initVar('datesub', XOBJ_DTYPE_INT, time()); // ... more fields }
// Business methods public function isPublished(): bool { return $this->getVar('status') == _PUBLISHER_STATUS_PUBLISHED; }
public function canEdit(int $userId): bool { return $this->getVar('uid') == $userId || $this->isAdmin($userId); }}İşleyici Kalıbı
Section titled “İşleyici Kalıbı”class ItemHandler extends \XoopsPersistableObjectHandler{ public function __construct(\XoopsDatabase $db) { parent::__construct( $db, 'publisher_items', Item::class, 'itemid', 'title' ); }
public function getPublishedItems(int $limit = 10): array { $criteria = new \CriteriaCompo(); $criteria->add(new \Criteria('status', _PUBLISHER_STATUS_PUBLISHED)); $criteria->setSort('datesub'); $criteria->setOrder('DESC'); $criteria->setLimit($limit);
return $this->getObjects($criteria); }}İzin Sistemi
Section titled “İzin Sistemi”İzin Türleri
Section titled “İzin Türleri”| İzin | Açıklama |
|---|---|
publisher_view | Görüntüle category/articles |
publisher_submit | Yeni makaleler gönderin |
publisher_approve | Gönderimleri otomatik olarak onayla |
publisher_moderate | Bekleyen makaleleri inceleyin |
publisher_global | Genel module izinleri |
İzin Kontrolü
Section titled “İzin Kontrolü”class PermissionHandler{ public function isGranted(string $permission, int $categoryId): bool { $userId = $GLOBALS['xoopsUser']?->uid() ?? 0; $groups = $this->getUserGroups($userId);
return $this->grouppermHandler->checkRight( $permission, $categoryId, $groups, $this->helper->getModule()->mid() ); }}İş Akışı Durumları
Section titled “İş Akışı Durumları”stateDiagram-v2 [*] --> Draft: Create Draft --> Submitted: Submit Submitted --> Published: Approve Submitted --> Rejected: Reject Submitted --> Draft: Return for Edit Published --> Offline: Unpublish Offline --> Published: Republish Published --> [*]: Delete Rejected --> [*]: Deletetemplate Yapısı
Section titled “template Yapısı”Ön Uç Şablonları
Section titled “Ön Uç Şablonları”| template | Amaç |
|---|---|
publisher_index.tpl | module ana sayfası |
publisher_item.tpl | Tek makale |
publisher_category.tpl | Kategori listeleme |
publisher_submit.tpl | Başvuru formu |
publisher_search.tpl | Arama sonuçları |
Blok Şablonları
Section titled “Blok Şablonları”| template | Amaç |
|---|---|
publisher_block_latest.tpl | Son makaleler |
publisher_block_spotlight.tpl | Öne çıkan makale |
publisher_block_category.tpl | Kategori menüsü |
Kullanılan Anahtar Desenler
Section titled “Kullanılan Anahtar Desenler”- İşleyici Kalıbı - Veri erişimi kapsülleme
- Değer Nesnesi - Durum sabitleri
- template Yöntemi - Form oluşturma
- Strateji - Farklı görüntüleme modları
- Gözlemci - Etkinliklerle ilgili bildirimler
module Geliştirmeye Yönelik Dersler
Section titled “module Geliştirmeye Yönelik Dersler”- CRUD için XoopsPersistableObjectHandler kullanın
- Parçalı izinleri uygulayın
- Sunumu mantıktan ayırın
- Sorgular için Kriterleri kullanın
- Birden fazla içerik durumunu destekleyin
- XOOPS bildirim sistemiyle entegrasyon
İlgili Belgeler
Section titled “İlgili Belgeler”- Makale Oluşturma - Makale yönetimi
- Kategorileri Yönetme - Kategori sistemi
- permissions-Kurulum - İzin yapılandırması
- Developer-Guide/Hooks-and-Events - Uzatma noktaları