Commit 61a9098b authored by Bart Visscher's avatar Bart Visscher
Browse files

Add Helper and URLGenerator interfaces to server container

parent ce9436c0
<?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);
}
}
......@@ -41,8 +41,7 @@ class OC_Helper {
* 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);
}
/**
......@@ -56,32 +55,7 @@ class OC_Helper {
* 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);
}
/**
......@@ -107,7 +81,7 @@ class OC_Helper {
* 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);
}
/**
......@@ -156,25 +130,7 @@ class OC_Helper {
* 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);
}
/**
......
......@@ -105,6 +105,12 @@ class Server extends SimpleContainer implements IServerContainer {
$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();
});
......@@ -229,6 +235,20 @@ class Server extends SimpleContainer implements IServerContainer {
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
*
......
......@@ -982,9 +982,9 @@ class OC_Util {
* @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();
......
<?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);
}
......@@ -108,6 +108,16 @@ interface IServerContainer {
*/
function getL10N($app);
/**
* @return \OCP\IURLGenerator
*/
function getURLGenerator();
/**
* @return \OCP\IHelper
*/
function getHelper();
/**
* Returns an ICache instance
*
......
<?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);
}
<?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;
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment