Publisher - Riferimento API
Riferimento API Publisher
Sezione intitolata “Riferimento API Publisher”Riferimento completo per classi del modulo Publisher, metodi, funzioni ed endpoint API.
Struttura Modulo
Sezione intitolata “Struttura Modulo”Organizzazione Classi
Sezione intitolata “Organizzazione Classi”Classi Modulo Publisher:
├── Item / ItemHandler│ ├── Ottieni articoli│ ├── Crea articoli│ ├── Aggiorna articoli│ └── Elimina articoli│├── Category / CategoryHandler│ ├── Ottieni categorie│ ├── Crea categorie│ ├── Aggiorna categorie│ └── Elimina categorie│├── Comment / CommentHandler│ ├── Ottieni commenti│ ├── Crea commenti│ ├── Modera commenti│ └── Elimina commenti│└── Helper ├── Funzioni utilità ├── Funzioni formato └── Controlli autorizzazioneClasse Item
Sezione intitolata “Classe Item”Panoramica
Sezione intitolata “Panoramica”La classe Item rappresenta un singolo articolo/elemento in Publisher.
Namespace: XoopsModules\Publisher\
File: modules/publisher/class/Item.php
Costruttore
Sezione intitolata “Costruttore”// Crea nuovo elemento$item = new Item();
// Ottieni elemento esistente$itemHandler = xoops_getModuleHandler('Item', 'publisher');$item = $itemHandler->get($itemId);Proprietà e Metodi
Sezione intitolata “Proprietà e Metodi”Ottieni Proprietà
Sezione intitolata “Ottieni Proprietà”// Ottieni ID articolo$itemId = $item->getVar('itemid');$itemId = $item->id();
// Ottieni titolo$title = $item->getVar('title');$title = $item->title();
// Ottieni descrizione$description = $item->getVar('description');$description = $item->description();
// Ottieni corpo/contenuto$body = $item->getVar('body');$body = $item->body();
// Ottieni sottotitolo$subtitle = $item->getVar('subtitle');$subtitle = $item->subtitle();
// Ottieni autore$authorId = $item->getVar('uid');$authorId = $item->authorId();
// Ottieni nome autore$authorName = $item->getVar('uname');$authorName = $item->uname();
// Ottieni categoria$categoryId = $item->getVar('categoryid');$categoryId = $item->categoryId();
// Ottieni stato$status = $item->getVar('status');$status = $item->status();
// Ottieni data pubblicazione$date = $item->getVar('datesub');$date = $item->date();
// Ottieni data modifica$modified = $item->getVar('datemod');$modified = $item->modified();
// Ottieni conteggio visualizzazioni$views = $item->getVar('counter');$views = $item->views();
// Ottieni immagine$image = $item->getVar('image');$image = $item->image();
// Ottieni stato in evidenza$featured = $item->getVar('featured');Imposta Proprietà
Sezione intitolata “Imposta Proprietà”// Imposta titolo$item->setVar('title', 'Nuovo Titolo Articolo');
// Imposta corpo$item->setVar('body', '<p>Contenuto articolo qui</p>');
// Imposta descrizione$item->setVar('description', 'Breve descrizione');
// Imposta categoria$item->setVar('categoryid', 5);
// Imposta stato (0=bozza, 1=pubblicato, ecc)$item->setVar('status', 1);
// Imposta in evidenza$item->setVar('featured', 1);
// Imposta immagine$item->setVar('image', 'path/to/image.jpg');// Ottieni data formattata$formatted = $item->date('Y-m-d H:i:s');$formatted = $item->date('l, F j, Y');
// Ottieni URL elemento$url = $item->url();
// Ottieni URL categoria$catUrl = $item->categoryUrl();
// Verifica se pubblicato$isPublished = $item->isPublished();
// Ottieni URL modifica$editUrl = $item->editUrl();
// Ottieni URL eliminazione$deleteUrl = $item->deleteUrl();
// Ottieni estratto/riepilogo$summary = $item->getSummary(100);$summary = $item->description();
// Ottieni tutti i tag$tags = $item->getTags();
// Ottieni commenti$comments = $item->getComments();$commentCount = $item->getCommentCount();
// Ottieni valutazione$rating = $item->getRating();
// Ottieni conteggio valutazione$ratingCount = $item->getRatingCount();Classe ItemHandler
Sezione intitolata “Classe ItemHandler”Panoramica
Sezione intitolata “Panoramica”ItemHandler gestisce operazioni CRUD per articoli.
File: modules/publisher/class/ItemHandler.php
Recupera Elementi
Sezione intitolata “Recupera Elementi”// Ottieni singolo elemento per ID$itemHandler = xoops_getModuleHandler('Item', 'publisher');$item = $itemHandler->get($itemId);
// Ottieni tutti elementi$items = $itemHandler->getAll();
// Ottieni elementi con condizioni$criteria = new CriteriaCompo();$criteria->add(new Criteria('status', 1)); // Solo pubblicati$criteria->add(new Criteria('categoryid', 5)); // Categoria specifica$criteria->setLimit(10);$criteria->setStart(0);$items = $itemHandler->getObjects($criteria);
// Ottieni elementi per categoria$items = $itemHandler->getByCategory($categoryId, $limit = 10);
// Ottieni elementi recenti$items = $itemHandler->getRecent($limit = 10);
// Ottieni elementi in evidenza$items = $itemHandler->getFeatured($limit = 5);
// Conta elementi$total = $itemHandler->getCount($criteria);Crea Elemento
Sezione intitolata “Crea Elemento”// Crea nuovo elemento$item = $itemHandler->create();
// Imposta proprietà$item->setVar('title', 'Titolo Articolo');$item->setVar('body', '<p>Contenuto</p>');$item->setVar('description', 'Breve desc');$item->setVar('categoryid', 1);$item->setVar('uid', $userId);$item->setVar('status', 0); // Bozza$item->setVar('datesub', time());
// Salvaif ($itemHandler->insert($item)) { $itemId = $item->getVar('itemid'); echo "Articolo creato: " . $itemId;} else { echo "Errore: " . implode(', ', $item->getErrors());}Aggiorna Elemento
Sezione intitolata “Aggiorna Elemento”// Ottieni elemento$item = $itemHandler->get($itemId);
// Modifica$item->setVar('title', 'Titolo Aggiornato');$item->setVar('body', '<p>Contenuto aggiornato</p>');$item->setVar('status', 1); // Pubblica
// Salvaif ($itemHandler->insert($item)) { echo "Elemento aggiornato";} else { echo "Errore: " . implode(', ', $item->getErrors());}Elimina Elemento
Sezione intitolata “Elimina Elemento”// Ottieni elemento$item = $itemHandler->get($itemId);
// Eliminaif ($itemHandler->delete($item)) { echo "Elemento eliminato";} else { echo "Errore eliminazione elemento";}
// Elimina per ID$itemHandler->deleteByPrimary($itemId);Classe Category
Sezione intitolata “Classe Category”Panoramica
Sezione intitolata “Panoramica”La classe Category rappresenta una categoria o sezione.
File: modules/publisher/class/Category.php
// Ottieni ID categoria$catId = $category->getVar('categoryid');$catId = $category->id();
// Ottieni nome$name = $category->getVar('name');$name = $category->name();
// Ottieni descrizione$desc = $category->getVar('description');$desc = $category->description();
// Ottieni immagine$image = $category->getVar('image');$image = $category->image();
// Ottieni categoria genitore$parentId = $category->getVar('parentid');$parentId = $category->parentId();
// Ottieni stato$status = $category->getVar('status');
// Ottieni URL$url = $category->url();
// Ottieni conteggio elementi$count = $category->itemCount();
// Ottieni sottocategorie$subs = $category->getSubCategories();
// Ottieni oggetto categoria genitore$parent = $category->getParent();Classe CategoryHandler
Sezione intitolata “Classe CategoryHandler”Panoramica
Sezione intitolata “Panoramica”CategoryHandler gestisce operazioni CRUD categoria.
File: modules/publisher/class/CategoryHandler.php
Recupera Categorie
Sezione intitolata “Recupera Categorie”// Ottieni singola categoria$catHandler = xoops_getModuleHandler('Category', 'publisher');$category = $catHandler->get($categoryId);
// Ottieni tutte le categorie$categories = $catHandler->getAll();
// Ottieni categorie radice (senza genitore)$roots = $catHandler->getRoots();
// Ottieni sottocategorie$subs = $catHandler->getByParent($parentId);
// Ottieni categorie con criteria$criteria = new CriteriaCompo();$criteria->add(new Criteria('status', 1));$categories = $catHandler->getObjects($criteria);Crea Categoria
Sezione intitolata “Crea Categoria”// Crea nuovo$category = $catHandler->create();
// Imposta valori$category->setVar('name', 'Notizie');$category->setVar('description', 'Elementi notizie');$category->setVar('parentid', 0); // Livello radice$category->setVar('status', 1);
// Salvaif ($catHandler->insert($category)) { $catId = $category->getVar('categoryid');} else { echo "Errore";}Aggiorna Categoria
Sezione intitolata “Aggiorna Categoria”// Ottieni categoria$category = $catHandler->get($categoryId);
// Modifica$category->setVar('name', 'Nome Aggiornato');
// Salva$catHandler->insert($category);Elimina Categoria
Sezione intitolata “Elimina Categoria”// Ottieni categoria$category = $catHandler->get($categoryId);
// Elimina$catHandler->delete($category);Funzioni Helper
Sezione intitolata “Funzioni Helper”Funzioni Utilità
Sezione intitolata “Funzioni Utilità”La classe Helper fornisce funzioni utilità:
File: modules/publisher/class/Helper.php
// Ottieni istanza helper$helper = \XoopsModules\Publisher\Helper::getInstance();
// Ottieni istanza modulo$module = $helper->getModule();
// Ottieni handler$itemHandler = $helper->getHandler('Item');$catHandler = $helper->getHandler('Category');
// Ottieni valore configurazione$editorName = $helper->getConfig('editor');$itemsPerPage = $helper->getConfig('items_per_page');
// Controlla autorizzazione$canView = $helper->hasPermission('view', $categoryId);$canEdit = $helper->hasPermission('edit', $itemId);$canDelete = $helper->hasPermission('delete', $itemId);$canApprove = $helper->hasPermission('approve');
// Ottieni URL$indexUrl = $helper->url('index.php');$itemUrl = $helper->url('index.php?op=showitem&itemid=' . $itemId);
// Ottieni percorso base$basePath = $helper->getPath();$templatePath = $helper->getPath('templates');Funzioni Formato
Sezione intitolata “Funzioni Formato”// Formatta data$formatted = $helper->formatDate($timestamp, 'Y-m-d');
// Tronca testo$excerpt = $helper->truncate($text, $length = 100);
// Sanitizza input$clean = $helper->sanitize($input);
// Prepara output$output = $helper->prepare($data);
// Ottieni breadcrumb$breadcrumb = $helper->getBreadcrumb($itemId);JavaScript API
Sezione intitolata “JavaScript API”Funzioni JavaScript Frontend
Sezione intitolata “Funzioni JavaScript Frontend”Publisher include API JavaScript per interazioni frontend:
// Includi libreria JS Publisher<script src="/modules/publisher/assets/js/publisher.js"></script>
// Controlla se esiste oggetto Publisherif (typeof Publisher !== 'undefined') { // Usa API Publisher}
// Ottieni dati articolovar item = Publisher.getItem(itemId);console.log(item.title);console.log(item.url);
// Ottieni dati categoriavar category = Publisher.getCategory(categoryId);console.log(category.name);
// Invia valutazionePublisher.submitRating(itemId, rating, function(response) { console.log('Valutazione salvata');});
// Carica altri articoliPublisher.loadMore(categoryId, page, limit, function(articles) { // Gestisci articoli caricati});
// Cerca articoliPublisher.search(query, function(results) { // Gestisci risultati ricerca});Endpoint Ajax
Sezione intitolata “Endpoint Ajax”Publisher fornisce endpoint AJAX per interazioni frontend:
// Ottieni articolo via AJAXfetch('/modules/publisher/ajax.php?op=getItem&itemid=' + itemId) .then(response => response.json()) .then(data => console.log(data));
// Invia commento 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));
// Ottieni valutazionifetch('/modules/publisher/ajax.php?op=getRatings&itemid=' + itemId) .then(response => response.json()) .then(data => console.log(data));REST API (Se Abilitata)
Sezione intitolata “REST API (Se Abilitata)”Endpoint API
Sezione intitolata “Endpoint API”Se Publisher espone 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}Esempio Chiamate API
Sezione intitolata “Esempio Chiamate API”// Ottieni elementi via REST$url = 'http://example.com/modules/publisher/api/items';$response = file_get_contents($url);$items = json_decode($response, true);
// Ottieni singolo elemento$url = 'http://example.com/modules/publisher/api/items/1';$response = file_get_contents($url);$item = json_decode($response, true);
// Crea elemento$url = 'http://example.com/modules/publisher/api/items';$data = array( 'title' => 'Nuovo Articolo', 'body' => 'Contenuto qui', '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));Schema Database
Sezione intitolata “Schema Database”Tabelle
Sezione intitolata “Tabelle”publisher_categories
Sezione intitolata “publisher_categories”- categoryid (PK)- name- description- image- parentid (FK)- status- created- modifiedpublisher_items
Sezione intitolata “publisher_items”- itemid (PK)- categoryid (FK)- uid (FK a users)- title- subtitle- description- body- image- status- featured- datesub- datemod- counter (views)publisher_comments
Sezione intitolata “publisher_comments”- commentid (PK)- itemid (FK)- uid (FK)- comment- datesub- approvedpublisher_files
Sezione intitolata “publisher_files”- fileid (PK)- itemid (FK)- filename- description- uploadedEventi e Hook
Sezione intitolata “Eventi e Hook”Eventi Publisher
Sezione intitolata “Eventi Publisher”// Evento creazione elemento$modHandler = xoops_getHandler('module');$modHandler->activateModule('publisher');$publisher = xoops_getModuleHandler('Item', 'publisher');xoops_events()->trigger( 'publisher.item.created', array('item' => $item));
// Elemento aggiornatoxoops_events()->trigger( 'publisher.item.updated', array('item' => $item));
// Elemento eliminatoxoops_events()->trigger( 'publisher.item.deleted', array('itemid' => $itemId));
// Articolo commentatoxoops_events()->trigger( 'publisher.comment.added', array('comment' => $comment));Ascolta Eventi
Sezione intitolata “Ascolta Eventi”// Registra listener eventoxoops_events()->attach( 'publisher.item.created', array($myClass, 'onItemCreated'));
// O in pluginpublic function onItemCreated($item) { // Gestisci creazione elemento}Esempi di Codice
Sezione intitolata “Esempi di Codice”Ottieni Articoli Recenti
Sezione intitolata “Ottieni Articoli Recenti”<?php// Ottieni articoli pubblicati recenti$itemHandler = xoops_getModuleHandler('Item', 'publisher');$criteria = new CriteriaCompo();$criteria->add(new Criteria('status', 1)); // Pubblicato$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() . "'>Leggi Di Più</a>\n\n";}?>Crea Articolo Programmaticamente
Sezione intitolata “Crea Articolo Programmaticamente”<?php// Crea articolo$itemHandler = xoops_getModuleHandler('Item', 'publisher');$item = $itemHandler->create();
$item->setVar('title', 'Articolo Programmatico');$item->setVar('description', 'Creato via API');$item->setVar('body', '<p>Contenuto completo qui</p>');$item->setVar('categoryid', 1);$item->setVar('uid', 1);$item->setVar('status', 1); // Pubblicato$item->setVar('datesub', time());
if ($itemHandler->insert($item)) { echo "Articolo creato: " . $item->getVar('itemid');} else { echo "Errore: " . implode(', ', $item->getErrors());}?>Ottieni Articoli per Categoria
Sezione intitolata “Ottieni Articoli per Categoria”<?php// Ottieni articoli categoria$catId = 5;$itemHandler = xoops_getModuleHandler('Item', 'publisher');$items = $itemHandler->getByCategory($catId, $limit = 10);
echo "Articoli nella categoria " . $catId . ":\n";foreach ($items as $item) { echo "- " . $item->title() . "\n";}?>Aggiorna Stato Articolo
Sezione intitolata “Aggiorna Stato Articolo”<?php// Cambia stato articolo$itemHandler = xoops_getModuleHandler('Item', 'publisher');$item = $itemHandler->get($itemId);
if ($item) { $item->setVar('status', 1); // Pubblica
if ($itemHandler->insert($item)) { echo "Articolo pubblicato"; } else { echo "Errore pubblicazione articolo"; }} else { echo "Articolo non trovato";}?>Ottieni Albero Categorie
Sezione intitolata “Ottieni Albero Categorie”<?php// Crea albero categorie$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);}?>Gestione Errori
Sezione intitolata “Gestione Errori”Gestisci Errori
Sezione intitolata “Gestisci Errori”<?php// Try/catch gestione erroritry { $itemHandler = xoops_getModuleHandler('Item', 'publisher'); $item = $itemHandler->get($itemId);
if (!$item) { throw new Exception('Elemento non trovato'); }
$item->setVar('title', 'Nuovo Titolo');
if (!$itemHandler->insert($item)) { throw new Exception('Errore salvataggio elemento'); }} catch (Exception $e) { error_log('Errore Publisher: ' . $e->getMessage()); // Gestisci errore}?>Ottieni Messaggi Errore
Sezione intitolata “Ottieni Messaggi Errore”<?php// Ottieni messaggi errore da oggetto$item = $itemHandler->create();// ... imposta variabili ...
if (!$itemHandler->insert($item)) { $errors = $item->getErrors(); foreach ($errors as $error) { echo "Errore: " . $error . "\n"; }}?>Documentazione Correlata
Sezione intitolata “Documentazione Correlata”- Hook e Eventi
- Template Personalizzati
- Analisi Modulo Publisher
- Template e Blocchi in Publisher
- Creazione Articoli
- Gestione Categorie
Risorse
Sezione intitolata “Risorse”#publisher #api #reference #code #classes #methods #xoops