<?php

/**
 * OpenKM, Open Knowledge Management System S.L.  (http://www.openkm.com)
 * Copyright (c) 2006-2018
 *
 * No bytes were intentionally harmed during the development of this application.
 *
 * This program is commercial software; you can use it under the terms of the
 * EULA - OpenKM SDK End User License Agreement as published by OpenKM Knowledge Management System S.L.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * EULA - OpenKM SDK End User License Agreement for more details:
 * http://docs.openkm.com/kcenter/view/licenses/eula-openkm-sdk-end-user-license-agreement.html
 */

namespace openkm\definition;

use openkm\bean\Document;

/**
 * BaseDocument
 *
 * @author sochoa
 */
interface BaseDocument {

    public function createDocument($uuid, $name, $content);

    public function deleteDocument($uuid);

    public function getDocumentProperties($uuid);

    public function getContent($uuid);

    public function getContentByVersion($uuid, $versionId);

    public function getExtractedText($uuid);

    public function getThumbnail($uuid);

    public function getDocumentChildren($uuid);

    public function renameDocument($uuid, $newName);

    public function setProperties(Document $document);

    public function setLanguage($uuid, $lang);

    public function setDocumentTitle($uuid, $title);

    public function checkout($uuid);

    public function cancelCheckout($uuid);

    public function forceCancelCheckout($uuid);

    public function isCheckedOut($uuid);

    public function checkin($uuid, $content, $comment, $increment);

    public function getVersionHistory($uuid);

    public function lock($uuid);

    public function unlock($uuid);

    public function forceUnlock($uuid);

    public function isLocked($uuid);

    public function getLockInfo($uuid);

    public function purgeDocument($uuid);

    public function moveDocument($uuid, $dstId);

    public function copyDocument($uuid, $dstId, $newName);

    public function restoreVersion($uuid, $versionId);

    public function purgeVersionHistory($uuid);

    public function getVersionHistorySize($uuid);

    public function isValidDocument($uuid);

    public function getDocumentPath($uuid);

    public function getDetectedLanguages();

    public function extendedDocumentCopy($uuid, $dstId, $name, $categories, $keywords, $propertyGroups, $notes, $wiki);

    public function createFromTemplate($uuid, $dstPath, $categories, $keywords, $propertyGroups, $notes, $wiki, $formElements = []);

    public function createFromTemplateSimple($uuid, $dstPath, $categories, $keywords, $propertyGroups, $notes, $wiki, $properties = []);

    public function updateFromTemplate($uuid, $dstId, $formElements = []);

    public function updateFromTemplateSimple($uuid, $dstId, $properties = []);

    public function getAnnotations($uuid, $verName);

    public function getDifferences($uuid, $v1, $v2);

    public function getCheckedOut();

    public function mergePdf($destinationUuid, $docName, $uuids = []);
    
}

?>
