class="hidden">t('Nothing in here. Your trash bin is empty!'))?>
diff --git a/core/command/app/disable.php b/core/command/app/disable.php
new file mode 100644
index 0000000000..dcdee92349
--- /dev/null
+++ b/core/command/app/disable.php
@@ -0,0 +1,37 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OC\Core\Command\App;
+
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class Disable extends Command {
+ protected function configure() {
+ $this
+ ->setName('app:disable')
+ ->setDescription('disable an app')
+ ->addArgument(
+ 'app-id',
+ InputArgument::REQUIRED,
+ 'disable the specified app'
+ );
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output) {
+ $appId = $input->getArgument('app-id');
+ if (\OC_App::isEnabled($appId)) {
+ \OC_App::disable($appId);
+ $output->writeln($appId . ' disabled');
+ } else {
+ $output->writeln('No such app enabled: ' . $appId);
+ }
+ }
+}
diff --git a/core/command/app/enable.php b/core/command/app/enable.php
new file mode 100644
index 0000000000..f08546602e
--- /dev/null
+++ b/core/command/app/enable.php
@@ -0,0 +1,39 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OC\Core\Command\App;
+
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class Enable extends Command {
+ protected function configure() {
+ $this
+ ->setName('app:enable')
+ ->setDescription('enable an app')
+ ->addArgument(
+ 'app-id',
+ InputArgument::REQUIRED,
+ 'enable the specified app'
+ );
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output) {
+ $appId = $input->getArgument('app-id');
+ if (\OC_App::isEnabled($appId)) {
+ $output->writeln($appId . ' is already enabled');
+ } else if (!\OC_App::getAppPath($appId)) {
+ $output->writeln($appId . ' not found');
+ } else {
+ \OC_App::enable($appId);
+ $output->writeln($appId . ' enabled');
+ }
+ }
+}
diff --git a/core/command/app/listapps.php b/core/command/app/listapps.php
new file mode 100644
index 0000000000..dc471c5453
--- /dev/null
+++ b/core/command/app/listapps.php
@@ -0,0 +1,47 @@
+
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OC\Core\Command\App;
+
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class ListApps extends Command {
+ protected function configure() {
+ $this
+ ->setName('app:list')
+ ->setDescription('List all available apps');
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output) {
+ $apps = \OC_App::getAllApps();
+ $enabledApps = array();
+ $disabledApps = array();
+
+ //sort enabled apps above disabled apps
+ foreach ($apps as $app) {
+ if (\OC_App::isEnabled($app)) {
+ $enabledApps[] = $app;
+ } else {
+ $disabledApps[] = $app;
+ }
+ }
+
+ sort($enabledApps);
+ sort($disabledApps);
+ $output->writeln('Enabled:');
+ foreach ($enabledApps as $app) {
+ $output->writeln(' - ' . $app);
+ }
+ $output->writeln('Disabled:');
+ foreach ($disabledApps as $app) {
+ $output->writeln(' - ' . $app);
+ }
+ }
+}
diff --git a/core/css/styles.css b/core/css/styles.css
index 938b522a90..5c0aa1fedc 100644
--- a/core/css/styles.css
+++ b/core/css/styles.css
@@ -561,7 +561,7 @@ label.infield { cursor:text !important; top:1.05em; left:.85em; }
/* NAVIGATION ------------------------------------------------------------- */
#navigation {
- position: absolute;
+ position: fixed;
top: 0;
bottom: 0;
left: 0;
diff --git a/core/register_command.php b/core/register_command.php
index 2f351b67a1..1e520e3882 100644
--- a/core/register_command.php
+++ b/core/register_command.php
@@ -11,3 +11,6 @@ $application->add(new OC\Core\Command\Status);
$application->add(new OC\Core\Command\Db\GenerateChangeScript());
$application->add(new OC\Core\Command\Upgrade());
$application->add(new OC\Core\Command\Maintenance\SingleUser());
+$application->add(new OC\Core\Command\App\Disable());
+$application->add(new OC\Core\Command\App\Enable());
+$application->add(new OC\Core\Command\App\ListApps());
diff --git a/lib/base.php b/lib/base.php
index b361ac3c71..2feedd81d8 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -178,11 +178,19 @@ class OC {
if (file_exists(OC::$SERVERROOT . "/config/config.php")
and !is_writable(OC::$SERVERROOT . "/config/config.php")) {
$defaults = new OC_Defaults();
- OC_Template::printErrorPage(
- "Can't write into config directory!",
- 'This can usually be fixed by '
- .'giving the webserver write access to the config directory.'
- );
+ if (self::$CLI) {
+ echo "Can't write into config directory!\n";
+ echo "This can usually be fixed by giving the webserver write access to the config directory\n";
+ echo "\n";
+ echo "See " . \OC_Helper::linkToDocs('admin-dir_permissions') . "\n";
+ exit;
+ } else {
+ OC_Template::printErrorPage(
+ "Can't write into config directory!",
+ 'This can usually be fixed by '
+ .'giving the webserver write access to the config directory.'
+ );
+ }
}
}
@@ -496,7 +504,14 @@ class OC {
$errors = OC_Util::checkServer();
if (count($errors) > 0) {
- OC_Template::printGuestPage('', 'error', array('errors' => $errors));
+ if (self::$CLI) {
+ foreach ($errors as $error) {
+ echo $error['error']."\n";
+ echo $error['hint'] . "\n\n";
+ }
+ } else {
+ OC_Template::printGuestPage('', 'error', array('errors' => $errors));
+ }
exit;
}
diff --git a/lib/private/connector/sabre/filesplugin.php b/lib/private/connector/sabre/filesplugin.php
index 1c80ebe804..65231040fb 100644
--- a/lib/private/connector/sabre/filesplugin.php
+++ b/lib/private/connector/sabre/filesplugin.php
@@ -78,7 +78,19 @@ class OC_Connector_Sabre_FilesPlugin extends Sabre_DAV_ServerPlugin
* @throws Sabre_DAV_Exception_BadRequest
*/
public function sendFileIdHeader($filePath, Sabre_DAV_INode $node = null) {
+ // chunked upload handling
+ if (isset($_SERVER['HTTP_OC_CHUNKED'])) {
+ list($path, $name) = \Sabre_DAV_URLUtil::splitPath($filePath);
+ $info = OC_FileChunking::decodeName($name);
+ if (!empty($info)) {
+ $filePath = $path . '/' . $info['name'];
+ }
+ }
+
// we get the node for the given $filePath here because in case of afterCreateFile $node is the parent folder
+ if (!$this->server->tree->nodeExists($filePath)) {
+ return;
+ }
$node = $this->server->tree->getNodeForPath($filePath);
if ($node instanceof OC_Connector_Sabre_Node) {
$fileId = $node->getFileId();
diff --git a/lib/private/defaults.php b/lib/private/defaults.php
index 4951c6f50a..cec9a65c7f 100644
--- a/lib/private/defaults.php
+++ b/lib/private/defaults.php
@@ -1,15 +1,13 @@
themeExist('getBaseUrl')) {
return $this->theme->getBaseUrl();
@@ -56,6 +58,10 @@ class OC_Defaults {
}
}
+ /**
+ * Returns the URL where the sync clients are listed
+ * @return string URL
+ */
public function getSyncClientUrl() {
if ($this->themeExist('getSyncClientUrl')) {
return $this->theme->getSyncClientUrl();
@@ -64,6 +70,10 @@ class OC_Defaults {
}
}
+ /**
+ * Returns the documentation URL
+ * @return string URL
+ */
public function getDocBaseUrl() {
if ($this->themeExist('getDocBaseUrl')) {
return $this->theme->getDocBaseUrl();
@@ -72,6 +82,10 @@ class OC_Defaults {
}
}
+ /**
+ * Returns the title
+ * @return string title
+ */
public function getTitle() {
if ($this->themeExist('getTitle')) {
return $this->theme->getTitle();
@@ -80,6 +94,10 @@ class OC_Defaults {
}
}
+ /**
+ * Returns the short name of the software
+ * @return string title
+ */
public function getName() {
if ($this->themeExist('getName')) {
return $this->theme->getName();
@@ -88,6 +106,10 @@ class OC_Defaults {
}
}
+ /**
+ * Returns entity (e.g. company name) - used for footer, copyright
+ * @return string entity name
+ */
public function getEntity() {
if ($this->themeExist('getEntity')) {
return $this->theme->getEntity();
@@ -96,6 +118,10 @@ class OC_Defaults {
}
}
+ /**
+ * Returns slogan
+ * @return string slogan
+ */
public function getSlogan() {
if ($this->themeExist('getSlogan')) {
return $this->theme->getSlogan();
@@ -104,6 +130,10 @@ class OC_Defaults {
}
}
+ /**
+ * Returns logo claim
+ * @return string logo claim
+ */
public function getLogoClaim() {
if ($this->themeExist('getLogoClaim')) {
return $this->theme->getLogoClaim();
@@ -112,6 +142,10 @@ class OC_Defaults {
}
}
+ /**
+ * Returns short version of the footer
+ * @return string short footer
+ */
public function getShortFooter() {
if ($this->themeExist('getShortFooter')) {
$footer = $this->theme->getShortFooter();
@@ -123,6 +157,10 @@ class OC_Defaults {
return $footer;
}
+ /**
+ * Returns long version of the footer
+ * @return string long footer
+ */
public function getLongFooter() {
if ($this->themeExist('getLongFooter')) {
$footer = $this->theme->getLongFooter();
diff --git a/lib/private/request.php b/lib/private/request.php
index d11e5b16cf..7a75bf2520 100755
--- a/lib/private/request.php
+++ b/lib/private/request.php
@@ -136,7 +136,18 @@ class OC_Request {
* @returns string Path info or false when not found
*/
public static function getRawPathInfo() {
- $path_info = substr($_SERVER['REQUEST_URI'], strlen($_SERVER['SCRIPT_NAME']));
+ $requestUri = $_SERVER['REQUEST_URI'];
+ // remove too many leading slashes - can be caused by reverse proxy configuration
+ if (strpos($requestUri, '/') === 0) {
+ $requestUri = '/' . ltrim($requestUri, '/');
+ }
+
+ $scriptName = $_SERVER['SCRIPT_NAME'];
+ // in case uri and script name don't match we better throw an exception
+ if (strpos($requestUri, $scriptName) !== 0) {
+ throw new Exception("REQUEST_URI($requestUri) does not start with the SCRIPT_NAME($scriptName)");
+ }
+ $path_info = substr($requestUri, strlen($scriptName));
// Remove the query string from REQUEST_URI
if ($pos = strpos($path_info, '?')) {
$path_info = substr($path_info, 0, $pos);
diff --git a/lib/public/activity/iconsumer.php b/lib/public/activity/iconsumer.php
index a0134a379d..9afacf4e74 100644
--- a/lib/public/activity/iconsumer.php
+++ b/lib/public/activity/iconsumer.php
@@ -20,6 +20,11 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Activity/IConsumer 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;
diff --git a/lib/public/activity/imanager.php b/lib/public/activity/imanager.php
index 90215d637c..086e430d67 100644
--- a/lib/public/activity/imanager.php
+++ b/lib/public/activity/imanager.php
@@ -20,6 +20,11 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Activity/IManager 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;
@@ -47,7 +52,6 @@ interface IManager {
*
* $callable has to return an instance of OCA\Activity\IConsumer
*
- * @param string $key
* @param \Closure $callable
*/
function registerConsumer(\Closure $callable);
diff --git a/lib/public/appframework/app.php b/lib/public/appframework/app.php
index 6ac48bf102..0ff6648c5d 100644
--- a/lib/public/appframework/app.php
+++ b/lib/public/appframework/app.php
@@ -20,6 +20,11 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * AppFramework/App class
+ */
+
namespace OCP\AppFramework;
diff --git a/lib/public/appframework/controller.php b/lib/public/appframework/controller.php
index 320e0cfebb..dc8da96787 100644
--- a/lib/public/appframework/controller.php
+++ b/lib/public/appframework/controller.php
@@ -20,6 +20,10 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * AppFramework\Controller class
+ */
namespace OCP\AppFramework;
@@ -34,16 +38,19 @@ use OCP\IRequest;
abstract class Controller {
/**
+ * app container for dependency injection
* @var \OCP\AppFramework\IAppContainer
*/
protected $app;
/**
+ * current request
* @var \OCP\IRequest
*/
protected $request;
/**
+ * constructor of the controller
* @param IAppContainer $app interface to the app
* @param IRequest $request an instance of the request
*/
diff --git a/lib/public/appframework/http.php b/lib/public/appframework/http.php
index c584d4ec67..60f314202c 100644
--- a/lib/public/appframework/http.php
+++ b/lib/public/appframework/http.php
@@ -20,10 +20,16 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * AppFramework\HTTP class
+ */
namespace OCP\AppFramework;
-
+/**
+ * Base class which contains constants for HTTP status codes
+ */
class Http {
const STATUS_CONTINUE = 100;
diff --git a/lib/public/appframework/http/jsonresponse.php b/lib/public/appframework/http/jsonresponse.php
index 7c2b609bc2..b54b23a34e 100644
--- a/lib/public/appframework/http/jsonresponse.php
+++ b/lib/public/appframework/http/jsonresponse.php
@@ -20,6 +20,10 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * AppFramework\HTTP\JSONResponse class
+ */
namespace OCP\AppFramework\Http;
@@ -30,10 +34,15 @@ use OCP\AppFramework\Http;
*/
class JSONResponse extends Response {
+ /**
+ * response data
+ * @var array|object
+ */
protected $data;
/**
+ * constructor of JSONResponse
* @param array|object $data the object or array that should be transformed
* @param int $statusCode the Http status code, defaults to 200
*/
@@ -55,7 +64,7 @@ class JSONResponse extends Response {
/**
* Sets values in the data json array
- * @param array|object $params an array or object which will be transformed
+ * @param array|object $data an array or object which will be transformed
* to JSON
*/
public function setData($data){
diff --git a/lib/public/appframework/http/response.php b/lib/public/appframework/http/response.php
index f776878a81..0f5a18ca4f 100644
--- a/lib/public/appframework/http/response.php
+++ b/lib/public/appframework/http/response.php
@@ -20,6 +20,10 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * AppFramework\HTTP\Response class
+ */
namespace OCP\AppFramework\Http;
diff --git a/lib/public/appframework/http/templateresponse.php b/lib/public/appframework/http/templateresponse.php
index 6156f8062f..2200a38bec 100644
--- a/lib/public/appframework/http/templateresponse.php
+++ b/lib/public/appframework/http/templateresponse.php
@@ -20,6 +20,10 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * AppFramework\HTTP\TemplateResponse class
+ */
namespace OCP\AppFramework\Http;
@@ -29,14 +33,34 @@ namespace OCP\AppFramework\Http;
*/
class TemplateResponse extends Response {
+ /**
+ * name of the template
+ * @var string
+ */
protected $templateName;
+
+ /**
+ * parameters
+ * @var array
+ */
protected $params;
+
+ /**
+ * rendering type (admin, user, blank)
+ * @var string
+ */
protected $renderAs;
+
+ /**
+ * app name
+ * @var string
+ */
protected $appName;
/**
- * @param string $templateName the name of the template
+ * constructor of TemplateResponse
* @param string $appName the name of the app to load the template from
+ * @param string $templateName the name of the template
*/
public function __construct($appName, $templateName) {
$this->templateName = $templateName;
diff --git a/lib/public/appframework/iapi.php b/lib/public/appframework/iapi.php
index a22b056635..963e870f79 100644
--- a/lib/public/appframework/iapi.php
+++ b/lib/public/appframework/iapi.php
@@ -20,6 +20,10 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * AppFramework/IApi interface
+ */
namespace OCP\AppFramework;
diff --git a/lib/public/appframework/middleware.php b/lib/public/appframework/middleware.php
index c4ee1c0dba..24f3193993 100644
--- a/lib/public/appframework/middleware.php
+++ b/lib/public/appframework/middleware.php
@@ -20,6 +20,10 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * AppFramework\Middleware class
+ */
namespace OCP\AppFramework;
diff --git a/lib/public/authentication/iapachebackend.php b/lib/public/authentication/iapachebackend.php
index 2d2f8c4e48..3979a14302 100644
--- a/lib/public/authentication/iapachebackend.php
+++ b/lib/public/authentication/iapachebackend.php
@@ -20,6 +20,11 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Authentication/IApacheBackend 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\Authentication;
diff --git a/lib/public/db.php b/lib/public/db.php
index b9424b5386..c9997c79c3 100644
--- a/lib/public/db.php
+++ b/lib/public/db.php
@@ -37,6 +37,8 @@ class DB {
/**
* Prepare a SQL query
* @param string $query Query string
+ * @param int $limit Limit of the SQL statement
+ * @param int $offset Offset of the SQL statement
* @return \MDB2_Statement_Common prepared SQL query
*
* SQL query via MDB2 prepare(), needs to be execute()'d!
diff --git a/lib/public/defaults.php b/lib/public/defaults.php
index 8f7853a86a..34b68903ee 100644
--- a/lib/public/defaults.php
+++ b/lib/public/defaults.php
@@ -30,19 +30,27 @@
// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP;
-/*
+/**
* public api to access default strings and urls for your templates
*/
class Defaults {
+ /**
+ * \OC_Defaults instance to retrieve the defaults
+ * @return string
+ */
private $defaults;
+ /**
+ * creates a \OC_Defaults instance which is used in all methods to retrieve the
+ * actual defaults
+ */
function __construct() {
$this->defaults = new \OC_Defaults();
}
/**
- * @breif get base URL for the organisation behind your ownCloud instance
+ * get base URL for the organisation behind your ownCloud instance
* @return string
*/
public function getBaseUrl() {
@@ -50,7 +58,7 @@ class Defaults {
}
/**
- * @breif link to the desktop sync client
+ * link to the desktop sync client
* @return string
*/
public function getSyncClientUrl() {
@@ -58,7 +66,7 @@ class Defaults {
}
/**
- * @breif base URL to the documentation of your ownCloud instance
+ * base URL to the documentation of your ownCloud instance
* @return string
*/
public function getDocBaseUrl() {
@@ -66,7 +74,7 @@ class Defaults {
}
/**
- * @breif name of your ownCloud instance
+ * name of your ownCloud instance
* @return string
*/
public function getName() {
@@ -74,7 +82,7 @@ class Defaults {
}
/**
- * @breif Entity behind your onwCloud instance
+ * Entity behind your onwCloud instance
* @return string
*/
public function getEntity() {
@@ -82,7 +90,7 @@ class Defaults {
}
/**
- * @breif ownCloud slogan
+ * ownCloud slogan
* @return string
*/
public function getSlogan() {
@@ -90,7 +98,7 @@ class Defaults {
}
/**
- * @breif logo claim
+ * logo claim
* @return string
*/
public function getLogoClaim() {
@@ -98,7 +106,7 @@ class Defaults {
}
/**
- * @breif footer, short version
+ * footer, short version
* @return string
*/
public function getShortFooter() {
@@ -106,7 +114,7 @@ class Defaults {
}
/**
- * @breif footer, long version
+ * footer, long version
* @return string
*/
public function getLongFooter() {
diff --git a/lib/public/files/alreadyexistsexception.php b/lib/public/files/alreadyexistsexception.php
index 3132e3b0c3..7bea947aef 100644
--- a/lib/public/files/alreadyexistsexception.php
+++ b/lib/public/files/alreadyexistsexception.php
@@ -20,8 +20,16 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Files/AlreadyExistsException class
+ */
+
// 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\Files;
+/**
+ * Exception for already existing files/folders
+ */
class AlreadyExistsException extends \Exception {}
diff --git a/lib/public/files/entitytoolargeexception.php b/lib/public/files/entitytoolargeexception.php
index e0d93ccbcd..eaa68a548b 100644
--- a/lib/public/files/entitytoolargeexception.php
+++ b/lib/public/files/entitytoolargeexception.php
@@ -20,8 +20,16 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Files/EntityTooLargeException class
+ */
+
// 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\Files;
+/**
+ * Exception for too large entity
+ */
class EntityTooLargeException extends \Exception {}
diff --git a/lib/public/files/file.php b/lib/public/files/file.php
index 730213039d..c6cda59f9b 100644
--- a/lib/public/files/file.php
+++ b/lib/public/files/file.php
@@ -20,6 +20,11 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Files/File 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\Files;
diff --git a/lib/public/files/folder.php b/lib/public/files/folder.php
index 5c9785db57..7fec1c529a 100644
--- a/lib/public/files/folder.php
+++ b/lib/public/files/folder.php
@@ -20,6 +20,11 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Files/Folder 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\Files;
diff --git a/lib/public/files/invalidcontentexception.php b/lib/public/files/invalidcontentexception.php
index 2e1356e2ba..3dfe7378c4 100644
--- a/lib/public/files/invalidcontentexception.php
+++ b/lib/public/files/invalidcontentexception.php
@@ -20,8 +20,16 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Files/InvalidContentException class
+ */
+
// 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\Files;
+/**
+ * Exception for invalid content
+ */
class InvalidContentException extends \Exception {}
diff --git a/lib/public/files/invalidpathexception.php b/lib/public/files/invalidpathexception.php
index 893eb1e43f..8ecfa7d89a 100644
--- a/lib/public/files/invalidpathexception.php
+++ b/lib/public/files/invalidpathexception.php
@@ -20,8 +20,16 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Files/InvalidPathException class
+ */
+
// 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\Files;
+/**
+ * Exception for invalid path
+ */
class InvalidPathException extends \Exception {}
diff --git a/lib/public/files/node.php b/lib/public/files/node.php
index e38bfa3b2e..972b1cfa49 100644
--- a/lib/public/files/node.php
+++ b/lib/public/files/node.php
@@ -20,6 +20,11 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Files/Node 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\Files;
diff --git a/lib/public/files/notenoughspaceexception.php b/lib/public/files/notenoughspaceexception.php
index 1597a4518b..17f91b31bf 100644
--- a/lib/public/files/notenoughspaceexception.php
+++ b/lib/public/files/notenoughspaceexception.php
@@ -20,8 +20,16 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Files/NotEnoughSpaceException class
+ */
+
// 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\Files;
+/**
+ * Exception for not enough space
+ */
class NotEnoughSpaceException extends \Exception {}
diff --git a/lib/public/files/notfoundexception.php b/lib/public/files/notfoundexception.php
index 489e43fc5f..cb35199220 100644
--- a/lib/public/files/notfoundexception.php
+++ b/lib/public/files/notfoundexception.php
@@ -20,8 +20,16 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Files/NotFoundException class
+ */
+
// 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\Files;
+/**
+ * Exception for not found entity
+ */
class NotFoundException extends \Exception {}
diff --git a/lib/public/files/notpermittedexception.php b/lib/public/files/notpermittedexception.php
index a5be43dbf5..e37bd6fad3 100644
--- a/lib/public/files/notpermittedexception.php
+++ b/lib/public/files/notpermittedexception.php
@@ -20,8 +20,16 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Files/NotPermittedException class
+ */
+
// 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\Files;
+/**
+ * Exception for not permitted action
+ */
class NotPermittedException extends \Exception {}
diff --git a/lib/public/files/storage.php b/lib/public/files/storage.php
index 7a7d5ec1ef..194b42a648 100644
--- a/lib/public/files/storage.php
+++ b/lib/public/files/storage.php
@@ -20,6 +20,11 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Files/Storage 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\Files;
diff --git a/lib/public/iaddressbook.php b/lib/public/iaddressbook.php
index 77e8750d9d..dcfe08012e 100644
--- a/lib/public/iaddressbook.php
+++ b/lib/public/iaddressbook.php
@@ -20,6 +20,11 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * IAddressBook 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 {
diff --git a/lib/public/icontainer.php b/lib/public/icontainer.php
index 6b7052cc4f..eaffa5d5a0 100644
--- a/lib/public/icontainer.php
+++ b/lib/public/icontainer.php
@@ -64,7 +64,7 @@ interface IContainer {
* In case the parameter is false the service will be recreated on every call.
*
* @param string $name
- * @param callable $closure
+ * @param \Closure $closure
* @param bool $shared
* @return void
*/
diff --git a/lib/public/idbconnection.php b/lib/public/idbconnection.php
index 17e3de0ffe..656b5e7e5b 100644
--- a/lib/public/idbconnection.php
+++ b/lib/public/idbconnection.php
@@ -45,7 +45,7 @@ interface IDBConnection {
/**
* Used to get the id of the just inserted element
- * @param string $tableName the name of the table where we inserted the item
+ * @param string $table the name of the table where we inserted the item
* @return int the id of the inserted element
*/
public function lastInsertId($table = null);
diff --git a/lib/public/share.php b/lib/public/share.php
index caa274b857..6178a5ae04 100644
--- a/lib/public/share.php
+++ b/lib/public/share.php
@@ -256,7 +256,7 @@ class Share {
/**
* Get the item of item type shared with the current user
* @param string $itemType
- * @param string $ItemTarget
+ * @param string $itemTarget
* @param int $format (optional) Format type must be defined by the backend
* @return Return depends on format
*/
@@ -268,8 +268,8 @@ class Share {
/**
* Get the item of item type shared with a given user by source
- * @param string $ItemType
- * @param string $ItemSource
+ * @param string $itemType
+ * @param string $itemSource
* @param string $user User user to whom the item was shared
* @return array Return list of items with file_target, permissions and expiration
*/
diff --git a/tests/lib/request.php b/tests/lib/request.php
index 2b2094a612..a740751f06 100644
--- a/tests/lib/request.php
+++ b/tests/lib/request.php
@@ -23,4 +23,46 @@ class Test_Request extends PHPUnit_Framework_TestCase {
$scriptName = OC_Request::scriptName();
$this->assertEquals('/domain.tld/ownCloud/tests/lib/request.php', $scriptName);
}
+
+ /**
+ * @dataProvider rawPathInfoProvider
+ * @param $expected
+ * @param $requestUri
+ * @param $scriptName
+ */
+ public function testRawPathInfo($expected, $requestUri, $scriptName) {
+ $_SERVER['REQUEST_URI'] = $requestUri;
+ $_SERVER['SCRIPT_NAME'] = $scriptName;
+ $rawPathInfo = OC_Request::getRawPathInfo();
+ $this->assertEquals($expected, $rawPathInfo);
+ }
+
+ function rawPathInfoProvider() {
+ return array(
+ array('/core/ajax/translations.php', 'index.php/core/ajax/translations.php', 'index.php'),
+ array('/core/ajax/translations.php', '/index.php/core/ajax/translations.php', '/index.php'),
+ array('/core/ajax/translations.php', '//index.php/core/ajax/translations.php', '/index.php'),
+ );
+ }
+
+ /**
+ * @dataProvider rawPathInfoThrowsExceptionProvider
+ * @expectedException Exception
+ *
+ * @param $requestUri
+ * @param $scriptName
+ */
+ public function testRawPathInfoThrowsException($requestUri, $scriptName) {
+ $_SERVER['REQUEST_URI'] = $requestUri;
+ $_SERVER['SCRIPT_NAME'] = $scriptName;
+ OC_Request::getRawPathInfo();
+ }
+
+ function rawPathInfoThrowsExceptionProvider() {
+ return array(
+ array('core/ajax/translations.php', '/index.php'),
+ array('/core/ajax/translations.php', '/index.php'),
+ array('//core/ajax/translations.php', '/index.php'),
+ );
+ }
}