Publisher - API-Referenz
Publisher API-Referenz
Abschnitt betitelt „Publisher API-Referenz“Vollständige Referenz für Publisher-Modulklassen, -methoden, -funktionen und API-Endpunkte.
Modulstruktur
Abschnitt betitelt „Modulstruktur“Klassenorganisation
Abschnitt betitelt „Klassenorganisation“Publisher Module Classes:
├── Item / ItemHandler│ ├── Get articles│ ├── Create articles│ ├── Update articles│ └── Delete articles│├── Category / CategoryHandler│ ├── Get categories│ ├── Create categories│ ├── Update categories│ └── Delete categories│├── Comment / CommentHandler│ ├── Get comments│ ├── Create comments│ ├── Moderate comments│ └── Delete comments│└── Helper ├── Utility functions ├── Format functions └── Permission checksItem-Klasse
Abschnitt betitelt „Item-Klasse“Übersicht
Abschnitt betitelt „Übersicht“Die Item-Klasse stellt einen einzelnen Artikel/Eintrag im Publisher dar.
Namespace: XoopsModules\Publisher\
Datei: modules/publisher/class/Item.php
Konstruktor
Abschnitt betitelt „Konstruktor“// Create new item$item = new Item();
// Get existing item$itemHandler = xoops_getModuleHandler('Item', 'publisher');$item = $itemHandler->get($itemId);Eigenschaften & Methoden
Abschnitt betitelt „Eigenschaften & Methoden“Eigenschaften abrufen
Abschnitt betitelt „Eigenschaften abrufen“// Get article ID$itemId = $item->getVar('itemid');$itemId = $item->id();
// Get title$title = $item->getVar('title');$title = $item->title();
// Get description$description = $item->getVar('description');$description = $item->description();
// Get body/content$body = $item->getVar('body');$body = $item->body();
// Get subtitle$subtitle = $item->getVar('subtitle');$subtitle = $item->subtitle();
// Get author$authorId = $item->getVar('uid');$authorId = $item->authorId();
// Get author name$authorName = $item->getVar('uname');$authorName = $item->uname();
// Get category$categoryId = $item->getVar('categoryid');$categoryId = $item->categoryId();
// Get status$status = $item->getVar('status');$status = $item->status();
// Get published date$date = $item->getVar('datesub');$date = $item->date();
// Get modified date$modified = $item->getVar('datemod');$modified = $item->modified();
// Get view count$views = $item->getVar('counter');$views = $item->views();
// Get image$image = $item->getVar('image');$image = $item->image();
// Get featured status$featured = $item->getVar('featured');Eigenschaften festlegen
Abschnitt betitelt „Eigenschaften festlegen“// Set title$item->setVar('title', 'New Article Title');
// Set body$item->setVar('body', '<p>Article content here</p>');
// Set description$item->setVar('description', 'Short description');
// Set category$item->setVar('categoryid', 5);
// Set status (0=draft, 1=published, etc)$item->setVar('status', 1);
// Set featured$item->setVar('featured', 1);
// Set image$item->setVar('image', 'path/to/image.jpg');Methods
Abschnitt betitelt „Methods“// Get formatted date$formatted = $item->date('Y-m-d H:i:s');$formatted = $item->date('l, F j, Y');
// Get item URL$url = $item->url();
// Get category URL$catUrl = $item->categoryUrl();
// Check if published$isPublished = $item->isPublished();
// Get edit URL$editUrl = $item->editUrl();
// Get delete URL$deleteUrl = $item->deleteUrl();
// Get excerpt/summary$summary = $item->getSummary(100);$summary = $item->description();
// Get all tags$tags = $item->getTags();
// Get comments$comments = $item->getComments();$commentCount = $item->getCommentCount();
// Get rating$rating = $item->getRating();
// Get rating count$ratingCount = $item->getRatingCount();ItemHandler-Klasse
Abschnitt betitelt „ItemHandler-Klasse“Übersicht
Abschnitt betitelt „Übersicht“Der ItemHandler verwaltet CRUD-Operationen für Artikel.
Datei: modules/publisher/class/ItemHandler.php
Artikel abrufen
Abschnitt betitelt „Artikel abrufen“// Get single item by ID$itemHandler = xoops_getModuleHandler('Item', 'publisher');$item = $itemHandler->get($itemId);
// Get all items$items = $itemHandler->getAll();
// Get items with conditions$criteria = new CriteriaCompo();$criteria->add(new Criteria('status', 1)); // Published only$criteria->add(new Criteria('categoryid', 5)); // Specific category$criteria->setLimit(10);$criteria->setStart(0);$items = $itemHandler->getObjects($criteria);
// Get items by category$items = $itemHandler->getByCategory($categoryId, $limit = 10);
// Get recent items$items = $itemHandler->getRecent($limit = 10);
// Get featured items$items = $itemHandler->getFeatured($limit = 5);
// Count items$total = $itemHandler->getCount($criteria);Artikel erstellen
Abschnitt betitelt „Artikel erstellen“// Create new item$item = $itemHandler->create();
// Set properties$item->setVar('title', 'Article Title');$item->setVar('body', '<p>Content</p>');$item->setVar('description', 'Short desc');$item->setVar('categoryid', 1);$item->setVar('uid', $userId);$item->setVar('status', 0); // Draft$item->setVar('datesub', time());
// Saveif ($itemHandler->insert($item)) { $itemId = $item->getVar('itemid'); echo "Article created: " . $itemId;} else { echo "Error: " . implode(', ', $item->getErrors());}Artikel aktualisieren
Abschnitt betitelt „Artikel aktualisieren“// Get item$item = $itemHandler->get($itemId);
// Modify$item->setVar('title', 'Updated Title');$item->setVar('body', '<p>Updated content</p>');$item->setVar('status', 1); // Publish
// Saveif ($itemHandler->insert($item)) { echo "Item updated";} else { echo "Error: " . implode(', ', $item->getErrors());}Artikel löschen
Abschnitt betitelt „Artikel löschen“// Get item$item = $itemHandler->get($itemId);
// Deleteif ($itemHandler->delete($item)) { echo "Item deleted";} else { echo "Error deleting item";}
// Delete by ID$itemHandler->deleteByPrimary($itemId);Category-Klasse
Abschnitt betitelt „Category-Klasse“Übersicht
Abschnitt betitelt „Übersicht“Die Category-Klasse stellt eine Kategorie oder einen Bereich dar.
Datei: modules/publisher/class/Category.php
Methoden
Abschnitt betitelt „Methoden“// Get category ID$catId = $category->getVar('categoryid');$catId = $category->id();
// Get name$name = $category->getVar('name');$name = $category->name();
// Get description$desc = $category->getVar('description');$desc = $category->description();
// Get image$image = $category->getVar('image');$image = $category->image();
// Get parent category$parentId = $category->getVar('parentid');$parentId = $category->parentId();
// Get status$status = $category->getVar('status');
// Get URL$url = $category->url();
// Get item count$count = $category->itemCount();
// Get subcategories$subs = $category->getSubCategories();
// Get parent category object$parent = $category->getParent();CategoryHandler-Klasse
Abschnitt betitelt „CategoryHandler-Klasse“Übersicht
Abschnitt betitelt „Übersicht“Der CategoryHandler verwaltet Kategorie-CRUD-Operationen.
Datei: modules/publisher/class/CategoryHandler.php
Kategorien abrufen
Abschnitt betitelt „Kategorien abrufen“// Get single category$catHandler = xoops_getModuleHandler('Category', 'publisher');$category = $catHandler->get($categoryId);
// Get all categories$categories = $catHandler->getAll();
// Get root categories (no parent)$roots = $catHandler->getRoots();
// Get subcategories$subs = $catHandler->getByParent($parentId);
// Get categories with criteria$criteria = new CriteriaCompo();$criteria->add(new Criteria('status', 1));$categories = $catHandler->getObjects($criteria);Kategorie erstellen
Abschnitt betitelt „Kategorie erstellen“// Create new$category = $catHandler->create();
// Set values$category->setVar('name', 'News');$category->setVar('description', 'News items');$category->setVar('parentid', 0); // Root level$category->setVar('status', 1);
// Saveif ($catHandler->insert($category)) { $catId = $category->getVar('categoryid');} else { echo "Error";}Kategorie aktualisieren
Abschnitt betitelt „Kategorie aktualisieren“// Get category$category = $catHandler->get($categoryId);
// Modify$category->setVar('name', 'Updated Name');
// Save$catHandler->insert($category);Kategorie löschen
Abschnitt betitelt „Kategorie löschen“// Get category$category = $catHandler->get($categoryId);
// Delete$catHandler->delete($category);Helper-Funktionen
Abschnitt betitelt „Helper-Funktionen“Hilfsfunktionen
Abschnitt betitelt „Hilfsfunktionen“Die Helper-Klasse bietet Hilfsfunktionen:
Datei: modules/publisher/class/Helper.php
// Get helper instance$helper = \XoopsModules\Publisher\Helper::getInstance();
// Get module instance$module = $helper->getModule();
// Get handler$itemHandler = $helper->getHandler('Item');$catHandler = $helper->getHandler('Category');
// Get config value$editorName = $helper->getConfig('editor');$itemsPerPage = $helper->getConfig('items_per_page');
// Check permission$canView = $helper->hasPermission('view', $categoryId);$canEdit = $helper->hasPermission('edit', $itemId);$canDelete = $helper->hasPermission('delete', $itemId);$canApprove = $helper->hasPermission('approve');
// Get URL$indexUrl = $helper->url('index.php');$itemUrl = $helper->url('index.php?op=showitem&itemid=' . $itemId);
// Get base path$basePath = $helper->getPath();$templatePath = $helper->getPath('templates');Format-Funktionen
Abschnitt betitelt „Format-Funktionen“// Format date$formatted = $helper->formatDate($timestamp, 'Y-m-d');
// Truncate text$excerpt = $helper->truncate($text, $length = 100);
// Sanitize input$clean = $helper->sanitize($input);
// Prepare output$output = $helper->prepare($data);
// Get breadcrumb$breadcrumb = $helper->getBreadcrumb($itemId);JavaScript API
Abschnitt betitelt „JavaScript API“Frontend JavaScript-Funktionen
Abschnitt betitelt „Frontend JavaScript-Funktionen“Publisher umfasst JavaScript-API für Frontend-Interaktionen:
// Include Publisher JS library<script src="/modules/publisher/assets/js/publisher.js"></script>
// Check if Publisher object existsif (typeof Publisher !== 'undefined') { // Use Publisher API}
// Get article datavar item = Publisher.getItem(itemId);console.log(item.title);console.log(item.url);
// Get category datavar category = Publisher.getCategory(categoryId);console.log(category.name);
// Submit ratingPublisher.submitRating(itemId, rating, function(response) { console.log('Rating saved');});
// Load more articlesPublisher.loadMore(categoryId, page, limit, function(articles) { // Handle loaded articles});
// Search articlesPublisher.search(query, function(results) { // Handle search results});Ajax-Endpunkte
Abschnitt betitelt „Ajax-Endpunkte“Publisher provides AJAX endpoints for frontend interactions:
// Get article via AJAXfetch('/modules/publisher/ajax.php?op=getItem&itemid=' + itemId) .then(response => response.json()) .then(data => console.log(data));
// Submit comment via AJAXfetch('/modules/publisher/ajax.php', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: 'op=addComment&itemid=' + itemId + '&text=' + comment}).then(response => response.json()).then(data => console.log(data));
// Get ratingsfetch('/modules/publisher/ajax.php?op=getRatings&itemid=' + itemId) .then(response => response.json()) .then(data => console.log(data));REST API (If Enabled)
Abschnitt betitelt „REST API (If Enabled)“API Endpoints
Abschnitt betitelt „API Endpoints“If Publisher exposes REST API:
GET /modules/publisher/api/itemsGET /modules/publisher/api/items/{id}GET /modules/publisher/api/categoriesGET /modules/publisher/api/categories/{id}POST /modules/publisher/api/itemsPUT /modules/publisher/api/items/{id}DELETE /modules/publisher/api/items/{id}Example API Calls
Abschnitt betitelt „Example API Calls“// Get items via REST$url = 'http://example.com/modules/publisher/api/items';$response = file_get_contents($url);$items = json_decode($response, true);
// Get single item$url = 'http://example.com/modules/publisher/api/items/1';$response = file_get_contents($url);$item = json_decode($response, true);
// Create item$url = 'http://example.com/modules/publisher/api/items';$data = array( 'title' => 'New Article', 'body' => 'Content here', 'categoryid' => 1);$options = array( 'http' => array( 'method' => 'POST', 'header' => 'Content-Type: application/json', 'content' => json_encode($data) ));$response = file_get_contents($url, false, stream_context_create($options));Datenbankschema
Abschnitt betitelt „Datenbankschema“Tabellen
Abschnitt betitelt „Tabellen“publisher_categories
Abschnitt betitelt „publisher_categories“- categoryid (PK)- name- description- image- parentid (FK)- status- created- modifiedpublisher_items
Abschnitt betitelt „publisher_items“- itemid (PK)- categoryid (FK)- uid (FK to users)- title- subtitle- description- body- image- status- featured- datesub- datemod- counter (views)publisher_comments
Abschnitt betitelt „publisher_comments“- commentid (PK)- itemid (FK)- uid (FK)- comment- datesub- approvedpublisher_files
Abschnitt betitelt „publisher_files“- fileid (PK)- itemid (FK)- filename- description- uploadedEreignisse & Hooks
Abschnitt betitelt „Ereignisse & Hooks“Publisher-Ereignisse
Abschnitt betitelt „Publisher-Ereignisse“// Item created event$modHandler = xoops_getHandler('module');$modHandler->activateModule('publisher');$publisher = xoops_getModuleHandler('Item', 'publisher');xoops_events()->trigger( 'publisher.item.created', array('item' => $item));
// Item updatedxoops_events()->trigger( 'publisher.item.updated', array('item' => $item));
// Item deletedxoops_events()->trigger( 'publisher.item.deleted', array('itemid' => $itemId));
// Article commentedxoops_events()->trigger( 'publisher.comment.added', array('comment' => $comment));Auf Ereignisse hören
Abschnitt betitelt „Auf Ereignisse hören“// Register event listenerxoops_events()->attach( 'publisher.item.created', array($myClass, 'onItemCreated'));
// Or in pluginpublic function onItemCreated($item) { // Handle item creation}Codebeispiele
Abschnitt betitelt „Codebeispiele“Aktuelle Artikel abrufen
Abschnitt betitelt „Aktuelle Artikel abrufen“<?php// Get recent published articles$itemHandler = xoops_getModuleHandler('Item', 'publisher');$criteria = new CriteriaCompo();$criteria->add(new Criteria('status', 1)); // Published$criteria->setSort('datesub');$criteria->setOrder('DESC');$criteria->setLimit(5);
$items = $itemHandler->getObjects($criteria);
foreach ($items as $item) { echo $item->title() . "\n"; echo $item->date('Y-m-d') . "\n"; echo $item->description() . "\n"; echo "<a href='" . $item->url() . "'>Read More</a>\n\n";}?>Artikel programmgesteuert erstellen
Abschnitt betitelt „Artikel programmgesteuert erstellen“<?php// Create article$itemHandler = xoops_getModuleHandler('Item', 'publisher');$item = $itemHandler->create();
$item->setVar('title', 'Programmatic Article');$item->setVar('description', 'Created via API');$item->setVar('body', '<p>Full content here</p>');$item->setVar('categoryid', 1);$item->setVar('uid', 1);$item->setVar('status', 1); // Published$item->setVar('datesub', time());
if ($itemHandler->insert($item)) { echo "Article created: " . $item->getVar('itemid');} else { echo "Error: " . implode(', ', $item->getErrors());}?>Artikel nach Kategorie abrufen
Abschnitt betitelt „Artikel nach Kategorie abrufen“<?php// Get category articles$catId = 5;$itemHandler = xoops_getModuleHandler('Item', 'publisher');$items = $itemHandler->getByCategory($catId, $limit = 10);
echo "Articles in category " . $catId . ":\n";foreach ($items as $item) { echo "- " . $item->title() . "\n";}?>Artikel-Status aktualisieren
Abschnitt betitelt „Artikel-Status aktualisieren“<?php// Change article status$itemHandler = xoops_getModuleHandler('Item', 'publisher');$item = $itemHandler->get($itemId);
if ($item) { $item->setVar('status', 1); // Publish
if ($itemHandler->insert($item)) { echo "Article published"; } else { echo "Error publishing article"; }} else { echo "Article not found";}?>Kategorienbaum abrufen
Abschnitt betitelt „Kategorienbaum abrufen“<?php// Build category tree$catHandler = xoops_getModuleHandler('Category', 'publisher');$roots = $catHandler->getRoots();
function displayTree($category, $level = 0) { echo str_repeat(" ", $level) . $category->name() . "\n";
$subs = $category->getSubCategories(); foreach ($subs as $sub) { displayTree($sub, $level + 1); }}
foreach ($roots as $root) { displayTree($root);}?>Fehlerbehandlung
Abschnitt betitelt „Fehlerbehandlung“Fehler behandeln
Abschnitt betitelt „Fehler behandeln“<?php// Try/catch error handlingtry { $itemHandler = xoops_getModuleHandler('Item', 'publisher'); $item = $itemHandler->get($itemId);
if (!$item) { throw new Exception('Item not found'); }
$item->setVar('title', 'New Title');
if (!$itemHandler->insert($item)) { throw new Exception('Failed to save item'); }} catch (Exception $e) { error_log('Publisher Error: ' . $e->getMessage()); // Handle error}?>Fehlermeldungen abrufen
Abschnitt betitelt „Fehlermeldungen abrufen“<?php// Get error messages from object$item = $itemHandler->create();// ... set variables ...
if (!$itemHandler->insert($item)) { $errors = $item->getErrors(); foreach ($errors as $error) { echo "Error: " . $error . "\n"; }}?>Related Documentation
Abschnitt betitelt „Related Documentation“- Hooks and Events
- Custom Templates
- Publisher Module Analysis
- Templates and Blocks in Publisher
- Article Creation
- Category Management
Resources
Abschnitt betitelt „Resources“#publisher #api #reference #code #classes #methods #xoops