<?php
require_once "Article.php";
/**
 * Die Klasse beinhaltet alle Methoden für die Operation mit den Artikel-Daten.
 *
 * @author Niklas Ortmann
 */
interface ArticleManagerDAO
{
    /**
     * Ein angemeldeter Nutzer erstellt einen neuen Beitrag.
     * @param $title string Titel des Beitrags
     * @param $content string Inhalt des Beitrags
     * @param $author string der Autor des des Beitrages NID
     * @param $category string Kategorie des Beitrages
     * @param $tags string optionale Schlagworte für eine bessere Suche
     *
     * Mögliche Exceptions:
     * TODO Fehlerbeschreibung hinzufügen & tags hinzufügen
     */
    public function addArticle($title, $content, $author, $category, $tags);

    /**
     * Ein angemeldeter Nutzer bearbeitet einen Beitrag.
     * $id ID des Beitrags
     * $title Titel des Beitrags
     * $content Der Inhalt des Beitrags
     * $author dem Author des des Beitrags (NID oder email)
     *
     * Mögliche Exceptions:
     * TODO Fehlerbeschreibung hinzufügen
     */
    public function updateArticle($id, $title, $content, $author);

    /*
     * Ein angemeldeter Nutzer löscht einen seiner Beiträge.
     * $id ID des Beitrags
     * $title Titel des Beitrags
     * $content Der Inhalt des Beitrags
     * $author dem Author des des Beitrags (NID oder email)
     *
     * Mögliche Exceptions:
     * TODO Fehlerbeschreibung hinzufügen
     */
    public function deleteArticle($id);

    /**
     * Beitrag aufrufen.
     * $id ID des Beitrags
     *
     * @return Article
     * Mögliche Exceptions:
     * TODO Fehlerbeschreibung hinzufügen
     */
    public function getArticle($id);

    /**
     * Alle Beiträge aufrufen.
     *
     * Mögliche Exceptions:
     * TODO Fehlerbeschreibung hinzufügen
     */
    public function getAllArticles();

    /**
     * Such-Funktion
     * 
     * @param $keyword Wort, nach dem gesucht wird als string
     */
    public function search(string $keyword): array;


}
?>