--- /dev/null
+<?php
+/**
+ * Copyright (c) 2013 Bart Visscher <bartv@thisnet.nl>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ *
+ */
+
+namespace OC;
+
+/**
+ * TODO: Description
+ */
+class AppHelper implements \OCP\IHelper {
+ /**
+ * Gets the content of an URL by using CURL or a fallback if it is not
+ * installed
+ * @param string $url the url that should be fetched
+ * @return string the content of the webpage
+ */
+ public function getUrlContent($url) {
+ return \OC_Util::getUrlContent($url);
+ }
+}
* Returns a url to the given app and file.
*/
public static function linkToRoute($route, $parameters = array()) {
- $urlLinkTo = OC::getRouter()->generate($route, $parameters);
- return $urlLinkTo;
+ return OC::$server->getURLGenerator()->linkToRoute($route, $parameters);
}
/**
* Returns a url to the given app and file.
*/
public static function linkTo( $app, $file, $args = array() ) {
- if( $app != '' ) {
- $app_path = OC_App::getAppPath($app);
- // Check if the app is in the app folder
- if ($app_path && file_exists($app_path . '/' . $file)) {
- if (substr($file, -3) == 'php' || substr($file, -3) == 'css') {
- $urlLinkTo = OC::$WEBROOT . '/index.php/apps/' . $app;
- $urlLinkTo .= ($file != 'index.php') ? '/' . $file : '';
- } else {
- $urlLinkTo = OC_App::getAppWebPath($app) . '/' . $file;
- }
- } else {
- $urlLinkTo = OC::$WEBROOT . '/' . $app . '/' . $file;
- }
- } else {
- if (file_exists(OC::$SERVERROOT . '/core/' . $file)) {
- $urlLinkTo = OC::$WEBROOT . '/core/' . $file;
- } else {
- $urlLinkTo = OC::$WEBROOT . '/' . $file;
- }
- }
-
- if ($args && $query = http_build_query($args, '', '&')) {
- $urlLinkTo .= '?' . $query;
- }
-
- return $urlLinkTo;
+ return OC::$server->getURLGenerator()->linkTo($app, $file, $args);
}
/**
* Returns a absolute url to the given app and file.
*/
public static function makeURLAbsolute($url) {
- return OC_Request::serverProtocol() . '://' . OC_Request::serverHost() . $url;
+ return OC::$server->getURLGenerator()->makeURLAbsolute($url);
}
/**
* Returns the path to the image.
*/
public static function imagePath($app, $image) {
- // Read the selected theme from the config file
- $theme = OC_Util::getTheme();
-
- // Check if the app is in the app folder
- if (file_exists(OC::$SERVERROOT . "/themes/$theme/apps/$app/img/$image")) {
- return OC::$WEBROOT . "/themes/$theme/apps/$app/img/$image";
- } elseif (file_exists(OC_App::getAppPath($app) . "/img/$image")) {
- return OC_App::getAppWebPath($app) . "/img/$image";
- } elseif (!empty($app) and file_exists(OC::$SERVERROOT . "/themes/$theme/$app/img/$image")) {
- return OC::$WEBROOT . "/themes/$theme/$app/img/$image";
- } elseif (!empty($app) and file_exists(OC::$SERVERROOT . "/$app/img/$image")) {
- return OC::$WEBROOT . "/$app/img/$image";
- } elseif (file_exists(OC::$SERVERROOT . "/themes/$theme/core/img/$image")) {
- return OC::$WEBROOT . "/themes/$theme/core/img/$image";
- } elseif (file_exists(OC::$SERVERROOT . "/core/img/$image")) {
- return OC::$WEBROOT . "/core/img/$image";
- } else {
- throw new RuntimeException('image not found: image:' . $image . ' webroot:' . OC::$WEBROOT . ' serverroot:' . OC::$SERVERROOT);
- }
+ return OC::$server->getURLGenerator()->imagePath($app, $image);
}
/**
$this->registerService('L10NFactory', function($c) {
return new \OC\L10N\Factory();
});
+ $this->registerService('URLGenerator', function($c) {
+ return new \OC\URLGenerator();
+ });
+ $this->registerService('AppHelper', function($c) {
+ return new \OC\AppHelper();
+ });
$this->registerService('UserCache', function($c) {
return new UserCache();
});
return $this->query('L10NFactory')->get($app);
}
+ /**
+ * @return \OC\URLGenerator
+ */
+ function getURLGenerator() {
+ return $this->query('URLGenerator');
+ }
+
+ /**
+ * @return \OC\Helper
+ */
+ function getHelper() {
+ return $this->query('AppHelper');
+ }
+
/**
* Returns an ICache instance
*
* @param string $url Url to get content
* @return string of the response or false on error
* This function get the content of a page via curl, if curl is enabled.
- * If not, file_get_element is used.
+ * If not, file_get_contents is used.
*/
- public static function getUrlContent($url){
+ public static function getUrlContent($url) {
if (function_exists('curl_init')) {
$curl = curl_init();
--- /dev/null
+<?php
+/**
+ * Copyright (c) 2013 Bart Visscher <bartv@thisnet.nl>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ *
+ */
+
+namespace OCP;
+
+/**
+ * Functions that don't have any specific interface to place
+ */
+interface IHelper {
+ /**
+ * Gets the content of an URL by using CURL or a fallback if it is not
+ * installed
+ * @param string $url the url that should be fetched
+ * @return string the content of the webpage
+ */
+ public function getUrlContent($url);
+}
*/
function getL10N($app);
+ /**
+ * @return \OCP\IURLGenerator
+ */
+ function getURLGenerator();
+
+ /**
+ * @return \OCP\IHelper
+ */
+ function getHelper();
+
/**
* Returns an ICache instance
*
--- /dev/null
+<?php
+/**
+ * Copyright (c) 2013 Bart Visscher <bartv@thisnet.nl>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ *
+ */
+
+namespace OCP;
+
+/**
+ * Class to generate URLs
+ */
+interface IURLGenerator {
+ /**
+ * 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
+ */
+ public function linkToRoute($routeName, $arguments = array());
+
+ /**
+ * Returns an URL for an image or file
+ * @param string $appName the name of the app
+ * @param string $file the name of the file
+ * @return string the url
+ */
+ public function linkTo($appName, $file);
+
+ /**
+ * Returns the link to an image, like linkTo but only with prepending img/
+ * @param string $appName the name of the app
+ * @param string $file the name of the file
+ * @return string the url
+ */
+ public function imagePath($appName, $file);
+
+
+ /**
+ * Makes an URL absolute
+ * @param string $url the url in the owncloud host
+ * @return string the absolute version of the url
+ */
+ public function getAbsoluteURL($url);
+}
--- /dev/null
+<?php
+/**
+ * Copyright (c) 2013 Bart Visscher <bartv@thisnet.nl>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ *
+ */
+
+namespace OC;
+
+/**
+ * Class to generate URLs
+ */
+class URLGenerator {
+ /**
+ * @brief Creates an url using a defined route
+ * @param $route
+ * @param array $parameters
+ * @return
+ * @internal param array $args with param=>value, will be appended to the returned url
+ * @returns the url
+ *
+ * Returns a url to the given app and file.
+ */
+ public function linkToRoute($route, $parameters = array()) {
+ $urlLinkTo = \OC::getRouter()->generate($route, $parameters);
+ return $urlLinkTo;
+ }
+
+ /**
+ * @brief Creates an url
+ * @param string $app app
+ * @param string $file file
+ * @param array $args array with param=>value, will be appended to the returned url
+ * The value of $args will be urlencoded
+ * @return string the url
+ *
+ * Returns a url to the given app and file.
+ */
+ public function linkTo( $app, $file, $args = array() ) {
+ if( $app != '' ) {
+ $app_path = \OC_App::getAppPath($app);
+ // Check if the app is in the app folder
+ if ($app_path && file_exists($app_path . '/' . $file)) {
+ if (substr($file, -3) == 'php' || substr($file, -3) == 'css') {
+ $urlLinkTo = \OC::$WEBROOT . '/index.php/apps/' . $app;
+ $urlLinkTo .= ($file != 'index.php') ? '/' . $file : '';
+ } else {
+ $urlLinkTo = \OC_App::getAppWebPath($app) . '/' . $file;
+ }
+ } else {
+ $urlLinkTo = \OC::$WEBROOT . '/' . $app . '/' . $file;
+ }
+ } else {
+ if (file_exists(\OC::$SERVERROOT . '/core/' . $file)) {
+ $urlLinkTo = \OC::$WEBROOT . '/core/' . $file;
+ } else {
+ $urlLinkTo = \OC::$WEBROOT . '/' . $file;
+ }
+ }
+
+ if ($args && $query = http_build_query($args, '', '&')) {
+ $urlLinkTo .= '?' . $query;
+ }
+
+ return $urlLinkTo;
+ }
+
+ /**
+ * @brief Creates path to an image
+ * @param string $app app
+ * @param string $image image name
+ * @return string the url
+ *
+ * Returns the path to the image.
+ */
+ public function imagePath($app, $image) {
+ // Read the selected theme from the config file
+ $theme = \OC_Util::getTheme();
+
+ // Check if the app is in the app folder
+ if (file_exists(\OC::$SERVERROOT . "/themes/$theme/apps/$app/img/$image")) {
+ return \OC::$WEBROOT . "/themes/$theme/apps/$app/img/$image";
+ } elseif (file_exists(\OC_App::getAppPath($app) . "/img/$image")) {
+ return \OC_App::getAppWebPath($app) . "/img/$image";
+ } elseif (!empty($app) and file_exists(\OC::$SERVERROOT . "/themes/$theme/$app/img/$image")) {
+ return \OC::$WEBROOT . "/themes/$theme/$app/img/$image";
+ } elseif (!empty($app) and file_exists(\OC::$SERVERROOT . "/$app/img/$image")) {
+ return \OC::$WEBROOT . "/$app/img/$image";
+ } elseif (file_exists(\OC::$SERVERROOT . "/themes/$theme/core/img/$image")) {
+ return \OC::$WEBROOT . "/themes/$theme/core/img/$image";
+ } elseif (file_exists(\OC::$SERVERROOT . "/core/img/$image")) {
+ return \OC::$WEBROOT . "/core/img/$image";
+ } else {
+ throw new RuntimeException('image not found: image:' . $image . ' webroot:' . \OC::$WEBROOT . ' serverroot:' . \OC::$SERVERROOT);
+ }
+ }
+
+ /**
+ * @brief Makes an $url absolute
+ * @param string $url the url
+ * @return string the absolute url
+ *
+ * Returns a absolute url to the given app and file.
+ */
+ public function makeURLAbsolute($url) {
+ return \OC_Request::serverProtocol() . '://' . \OC_Request::serverHost() . $url;
+ }
+
+}