introducing OCP\AppFramework\App
This commit is contained in:
parent
911bd3c16f
commit
38f9df4293
|
@ -25,6 +25,7 @@
|
|||
namespace OC\AppFramework;
|
||||
|
||||
use OC\AppFramework\DependencyInjection\DIContainer;
|
||||
use OCP\AppFramework\IAppContainer;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -45,7 +46,7 @@ class App {
|
|||
* @param DIContainer $container an instance of a pimple container.
|
||||
*/
|
||||
public static function main($controllerName, $methodName, array $urlParams,
|
||||
DIContainer $container) {
|
||||
IAppContainer $container) {
|
||||
$container['urlParams'] = $urlParams;
|
||||
$controller = $container[$controllerName];
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
|
||||
|
||||
namespace OC\AppFramework\Core;
|
||||
use OCP\AppFramework\IApi;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -32,7 +33,7 @@ namespace OC\AppFramework\Core;
|
|||
* Should you find yourself in need for more methods, simply inherit from this
|
||||
* class and add your methods
|
||||
*/
|
||||
class API {
|
||||
class API implements IApi{
|
||||
|
||||
private $appName;
|
||||
|
||||
|
|
|
@ -32,9 +32,11 @@ use OC\AppFramework\Middleware\MiddlewareDispatcher;
|
|||
use OC\AppFramework\Middleware\Security\SecurityMiddleware;
|
||||
use OC\AppFramework\Utility\SimpleContainer;
|
||||
use OC\AppFramework\Utility\TimeFactory;
|
||||
use OCP\AppFramework\IApi;
|
||||
use OCP\AppFramework\IAppContainer;
|
||||
|
||||
|
||||
class DIContainer extends SimpleContainer {
|
||||
class DIContainer extends SimpleContainer implements IAppContainer{
|
||||
|
||||
|
||||
/**
|
||||
|
@ -45,6 +47,8 @@ class DIContainer extends SimpleContainer {
|
|||
|
||||
$this['AppName'] = $appName;
|
||||
|
||||
$this->registerParameter('ServerContainer', \OC::$server);
|
||||
|
||||
$this['API'] = $this->share(function($c){
|
||||
return new API($c['AppName']);
|
||||
});
|
||||
|
@ -119,4 +123,19 @@ class DIContainer extends SimpleContainer {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return IApi
|
||||
*/
|
||||
function getCoreApi()
|
||||
{
|
||||
return $this->query('API');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \OCP\Core\IServerContainer
|
||||
*/
|
||||
function getServer()
|
||||
{
|
||||
return $this->query('ServerContainer');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
<?php
|
||||
|
||||
namespace OCP\AppFramework;
|
||||
|
||||
|
||||
/**
|
||||
* Class App
|
||||
* @package OCP\AppFramework
|
||||
*
|
||||
* Any application must inherit this call - all controller instances to be used are
|
||||
* to be registered using IContainer::registerService
|
||||
*/
|
||||
class App {
|
||||
public function __construct($appName) {
|
||||
$this->container = new \OC\AppFramework\DependencyInjection\DIContainer($appName);
|
||||
}
|
||||
|
||||
private $container;
|
||||
|
||||
/**
|
||||
* @return IAppContainer
|
||||
*/
|
||||
public function getContainer() {
|
||||
return $this->container;
|
||||
}
|
||||
|
||||
/**
|
||||
* This function is called by the routing component to fire up the frameworks dispatch mechanism.
|
||||
*
|
||||
* Example code in routes.php of the task app:
|
||||
* $this->create('tasks_index', '/')->get()->action(
|
||||
* function($params){
|
||||
* $app = new TaskApp();
|
||||
* $app->dispatch('PageController', 'index', $params);
|
||||
* }
|
||||
* );
|
||||
*
|
||||
*
|
||||
* Example for for TaskApp implementation:
|
||||
* class TaskApp extends \OCP\AppFramework\App {
|
||||
*
|
||||
* public function __construct(){
|
||||
* parent::__construct('tasks');
|
||||
*
|
||||
* $this->getContainer()->registerService('PageController', function(IAppContainer $c){
|
||||
* $a = $c->query('API');
|
||||
* $r = $c->query('Request');
|
||||
* return new PageController($a, $r);
|
||||
* });
|
||||
* }
|
||||
* }
|
||||
*
|
||||
* @param string $controllerName the name of the controller under which it is
|
||||
* stored in the DI container
|
||||
* @param string $methodName the method that you want to call
|
||||
* @param array $urlParams an array with variables extracted from the routes
|
||||
*/
|
||||
public function dispatch($controllerName, $methodName, array $urlParams) {
|
||||
\OC\AppFramework\App::main($controllerName, $methodName, $urlParams, $this->container);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,238 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* ownCloud - App Framework
|
||||
*
|
||||
* @author Bernhard Posselt
|
||||
* @copyright 2012 Bernhard Posselt nukeawhale@gmail.com
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3 of the License, or any later version.
|
||||
*
|
||||
* This library 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 along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
namespace OCP\AppFramework;
|
||||
|
||||
|
||||
/**
|
||||
* A few very basic and frequently used API functions are combined in here
|
||||
*/
|
||||
interface IApi {
|
||||
|
||||
/**
|
||||
* used to return the appname of the set application
|
||||
* @return string the name of your application
|
||||
*/
|
||||
function getAppName();
|
||||
|
||||
|
||||
/**
|
||||
* Creates a new navigation entry
|
||||
* @param array $entry containing: id, name, order, icon and href key
|
||||
*/
|
||||
function addNavigationEntry(array $entry);
|
||||
|
||||
|
||||
/**
|
||||
* Gets the userid of the current user
|
||||
* @return string the user id of the current user
|
||||
*/
|
||||
function getUserId();
|
||||
|
||||
|
||||
/**
|
||||
* Sets the current navigation entry to the currently running app
|
||||
*/
|
||||
function activateNavigationEntry();
|
||||
|
||||
|
||||
/**
|
||||
* Adds a new javascript file
|
||||
* @param string $scriptName the name of the javascript in js/ without the suffix
|
||||
* @param string $appName the name of the app, defaults to the current one
|
||||
*/
|
||||
function addScript($scriptName, $appName = null);
|
||||
|
||||
|
||||
/**
|
||||
* Adds a new css file
|
||||
* @param string $styleName the name of the css file in css/without the suffix
|
||||
* @param string $appName the name of the app, defaults to the current one
|
||||
*/
|
||||
function addStyle($styleName, $appName = null);
|
||||
|
||||
|
||||
/**
|
||||
* shorthand for addScript for files in the 3rdparty directory
|
||||
* @param string $name the name of the file without the suffix
|
||||
*/
|
||||
function add3rdPartyScript($name);
|
||||
|
||||
|
||||
/**
|
||||
* shorthand for addStyle for files in the 3rdparty directory
|
||||
* @param string $name the name of the file without the suffix
|
||||
*/
|
||||
function add3rdPartyStyle($name);
|
||||
|
||||
/**
|
||||
* Looks up a system-wide defined value
|
||||
* @param string $key the key of the value, under which it was saved
|
||||
* @return string the saved value
|
||||
*/
|
||||
function getSystemValue($key);
|
||||
|
||||
/**
|
||||
* Sets a new system-wide value
|
||||
* @param string $key the key of the value, under which will be saved
|
||||
* @param string $value the value that should be stored
|
||||
*/
|
||||
function setSystemValue($key, $value);
|
||||
|
||||
|
||||
/**
|
||||
* Looks up an app-specific defined value
|
||||
* @param string $key the key of the value, under which it was saved
|
||||
* @return string the saved value
|
||||
*/
|
||||
function getAppValue($key, $appName = null);
|
||||
|
||||
|
||||
/**
|
||||
* Writes a new app-specific value
|
||||
* @param string $key the key of the value, under which will be saved
|
||||
* @param string $value the value that should be stored
|
||||
*/
|
||||
function setAppValue($key, $value, $appName = null);
|
||||
|
||||
|
||||
/**
|
||||
* Shortcut for setting a user defined value
|
||||
* @param string $key the key under which the value is being stored
|
||||
* @param string $value the value that you want to store
|
||||
* @param string $userId the userId of the user that we want to store the value under, defaults to the current one
|
||||
*/
|
||||
function setUserValue($key, $value, $userId = null);
|
||||
|
||||
|
||||
/**
|
||||
* Shortcut for getting a user defined value
|
||||
* @param string $key the key under which the value is being stored
|
||||
* @param string $userId the userId of the user that we want to store the value under, defaults to the current one
|
||||
*/
|
||||
function getUserValue($key, $userId = null);
|
||||
|
||||
/**
|
||||
* Returns the translation object
|
||||
* @return \OC_L10N the translation object
|
||||
*
|
||||
* FIXME: returns private object / should be retrieved from teh ServerContainer
|
||||
*/
|
||||
function getTrans();
|
||||
|
||||
|
||||
/**
|
||||
* Used to abstract the owncloud database access away
|
||||
* @param string $sql the sql query with ? placeholder for params
|
||||
* @param int $limit the maximum number of rows
|
||||
* @param int $offset from which row we want to start
|
||||
* @return \OCP\DB a query object
|
||||
*
|
||||
* FIXME: returns non public interface / object
|
||||
*/
|
||||
function prepareQuery($sql, $limit=null, $offset=null);
|
||||
|
||||
|
||||
/**
|
||||
* Used to get the id of the just inserted element
|
||||
* @param string $tableName the name of the table where we inserted the item
|
||||
* @return int the id of the inserted element
|
||||
*
|
||||
* FIXME: move to db object
|
||||
*/
|
||||
function getInsertId($tableName);
|
||||
|
||||
|
||||
/**
|
||||
* Returns the URL for a route
|
||||
* @param string $routeName the name of the route
|
||||
* @param array $arguments an array with arguments which will be filled into the url
|
||||
* @return string the url
|
||||
*/
|
||||
function linkToRoute($routeName, $arguments=array());
|
||||
|
||||
|
||||
/**
|
||||
* Returns an URL for an image or file
|
||||
* @param string $file the name of the file
|
||||
* @param string $appName the name of the app, defaults to the current one
|
||||
*/
|
||||
function linkTo($file, $appName=null);
|
||||
|
||||
|
||||
/**
|
||||
* Returns the link to an image, like link to but only with prepending img/
|
||||
* @param string $file the name of the file
|
||||
* @param string $appName the name of the app, defaults to the current one
|
||||
*/
|
||||
function imagePath($file, $appName = null);
|
||||
|
||||
|
||||
/**
|
||||
* Makes an URL absolute
|
||||
* @param string $url the url
|
||||
* @return string the absolute url
|
||||
*
|
||||
* FIXME: function should live in Request / Response
|
||||
*/
|
||||
function getAbsoluteURL($url);
|
||||
|
||||
|
||||
/**
|
||||
* links to a file
|
||||
* @param string $file the name of the file
|
||||
* @param string $appName the name of the app, defaults to the current one
|
||||
* @deprecated replaced with linkToRoute()
|
||||
* @return string the url
|
||||
*/
|
||||
function linkToAbsolute($file, $appName = null);
|
||||
|
||||
|
||||
/**
|
||||
* Checks if an app is enabled
|
||||
* @param string $appName the name of an app
|
||||
* @return bool true if app is enabled
|
||||
*/
|
||||
public function isAppEnabled($appName);
|
||||
|
||||
|
||||
/**
|
||||
* Writes a function into the error log
|
||||
* @param string $msg the error message to be logged
|
||||
* @param int $level the error level
|
||||
*
|
||||
* FIXME: add logger instance to ServerContainer
|
||||
*/
|
||||
function log($msg, $level = null);
|
||||
|
||||
|
||||
/**
|
||||
* Returns a template
|
||||
* @param string $templateName the name of the template
|
||||
* @param string $renderAs how it should be rendered
|
||||
* @param string $appName the name of the app
|
||||
* @return \OCP\Template a new template
|
||||
*/
|
||||
function getTemplate($templateName, $renderAs='user', $appName=null);
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
|
||||
namespace OCP\AppFramework;
|
||||
|
||||
use OCP\AppFramework\IApi;
|
||||
use OCP\Core\IContainer;
|
||||
|
||||
/**
|
||||
* Class IAppContainer
|
||||
* @package OCP\AppFramework
|
||||
*
|
||||
* This container interface provides short cuts for app developers to access predefined app service.
|
||||
*/
|
||||
interface IAppContainer extends IContainer{
|
||||
|
||||
/**
|
||||
* @return IApi
|
||||
*/
|
||||
function getCoreApi();
|
||||
|
||||
/**
|
||||
* @return \OCP\Core\IServerContainer
|
||||
*/
|
||||
function getServer();
|
||||
}
|
Loading…
Reference in New Issue