owncloud/core

View on GitHub
lib/public/Activity/IExtension.php

Summary

Maintainability
A
45 mins
Test Coverage
<?php
/**
 * @author Björn Schießle <bjoern@schiessle.org>
 * @author Joas Schilling <coding@schilljs.com>
 * @author Morris Jobke <hey@morrisjobke.de>
 * @author Thomas Müller <thomas.mueller@tmit.eu>
 *
 * @copyright Copyright (c) 2018, ownCloud GmbH
 * @license AGPL-3.0
 *
 * This code is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License, version 3,
 * as published by the Free Software Foundation.
 *
 * 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
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License, version 3,
 * along with this program.  If not, see <http://www.gnu.org/licenses/>
 *
 */

/**
 * Public interface of ownCloud for apps to use.
 * Activity/IExtension interface
 */

// use OCP namespace for all classes that are considered public.
// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP\Activity;

/**
 * Interface IExtension
 *
 * @package OCP\Activity
 * @since 8.0.0
 */
interface IExtension {
    public const METHOD_STREAM = 'stream';
    public const METHOD_MAIL = 'email';

    public const PRIORITY_VERYLOW     = 10;
    public const PRIORITY_LOW    = 20;
    public const PRIORITY_MEDIUM    = 30;
    public const PRIORITY_HIGH    = 40;
    public const PRIORITY_VERYHIGH    = 50;

    /**
     * The extension can return an array of additional notification types.
     * If no additional types are to be added false is to be returned
     *
     * @param string $languageCode
     * @return array|false Array "stringID of the type" => "translated string description for the setting"
     *                 or Array "stringID of the type" => [
     *                     'desc' => "translated string description for the setting"
     *                     'methods' => [self::METHOD_*],
     *                 ]
     * @since 8.0.0 - 8.2.0: Added support to allow limiting notifications to certain methods
     */
    public function getNotificationTypes($languageCode);

    /**
     * For a given method additional types to be displayed in the settings can be returned.
     * In case no additional types are to be added false is to be returned.
     *
     * @param string $method
     * @return array|false
     * @since 8.0.0
     */
    public function getDefaultTypes($method);

    /**
     * A string naming the css class for the icon to be used can be returned.
     * If no icon is known for the given type false is to be returned.
     *
     * @param string $type
     * @return string|false
     * @since 8.0.0
     */
    public function getTypeIcon($type);

    /**
     * The extension can translate a given message to the requested languages.
     * If no translation is available false is to be returned.
     *
     * @param string $app
     * @param string $text
     * @param array $params
     * @param boolean $stripPath
     * @param boolean $highlightParams
     * @param string $languageCode
     * @return string|false
     * @since 8.0.0
     */
    public function translate($app, $text, $params, $stripPath, $highlightParams, $languageCode);

    /**
     * The extension can define the type of parameters for translation
     *
     * Currently known types are:
     * * file        => will strip away the path of the file and add a tooltip with it
     * * username    => will add the avatar of the user
     *
     * @param string $app
     * @param string $text
     * @return array|false
     * @since 8.0.0
     */
    public function getSpecialParameterList($app, $text);

    /**
     * The extension can define the parameter grouping by returning the index as integer.
     * In case no grouping is required false is to be returned.
     *
     * @param array $activity
     * @return integer|false
     * @since 8.0.0
     */
    public function getGroupParameter($activity);

    /**
     * The extension can define additional navigation entries. The array returned has to contain two keys 'top'
     * and 'apps' which hold arrays with the relevant entries.
     * If no further entries are to be added false is no be returned.
     *
     * @return array|false
     * @since 8.0.0
     */
    public function getNavigation();

    /**
     * The extension can check if a customer filter (given by a query string like filter=abc) is valid or not.
     *
     * @param string $filterValue
     * @return boolean
     * @since 8.0.0
     */
    public function isFilterValid($filterValue);

    /**
     * The extension can filter the types based on the filter if required.
     * In case no filter is to be applied false is to be returned unchanged.
     *
     * @param array $types
     * @param string $filter
     * @return array|false
     * @since 8.0.0
     */
    public function filterNotificationTypes($types, $filter);

    /**
     * For a given filter the extension can specify the sql query conditions including parameters for that query.
     * In case the extension does not know the filter false is to be returned.
     * The query condition and the parameters are to be returned as array with two elements.
     * E.g. return array('`app` = ? and `message` like ?', array('mail', 'ownCloud%'));
     *
     * @param string $filter
     * @return array|false
     * @since 8.0.0
     */
    public function getQueryForFilter($filter);
}