diff options
304 files changed, 2347 insertions, 9039 deletions
diff --git a/3rdparty b/3rdparty -Subproject 045dde529e050316788a63cd0067a38bbc6921b +Subproject 20066c9f65fe9237895461ff3af2ac81218382a diff --git a/apps/files/css/files.css b/apps/files/css/files.css index bf76682f03c..ecb58789f61 100644 --- a/apps/files/css/files.css +++ b/apps/files/css/files.css @@ -437,9 +437,9 @@ a.action>img { } #fileList a.action[data-action="Rename"] { - padding:18px 14px !important; + padding: 16px 14px 17px !important; position: relative; - top: -6px; + top: -21px; } #fileList tr:hover a.action, #fileList a.action.permanent { -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; diff --git a/apps/files/css/mobile.css b/apps/files/css/mobile.css index 04a9a3079e8..fe876899b4a 100644 --- a/apps/files/css/mobile.css +++ b/apps/files/css/mobile.css @@ -40,6 +40,12 @@ table td.filename .nametext { opacity: .2 !important; display: inline !important; } +/* show share action of shared items darker to distinguish from non-shared */ +#fileList a.action.permanent { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)" !important; + filter: alpha(opacity=70) !important; + opacity: .7 !important; +} /* do not show Rename or Versions on mobile */ #fileList .action.action-rename, #fileList .action.action-versions { diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index dd77b534f51..0477a657035 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -517,7 +517,6 @@ * This will refresh the file actions on the list. */ _onFileActionsUpdated: function() { - console.log('onFileActionsUpdated'); var self = this; this.$fileList.find('tr td.filename').each(function() { self.fileActions.display($(this), true, self); diff --git a/apps/files/l10n/pt_BR.php b/apps/files/l10n/pt_BR.php index 38bc6d86977..5f5ca62af77 100644 --- a/apps/files/l10n/pt_BR.php +++ b/apps/files/l10n/pt_BR.php @@ -13,7 +13,7 @@ $TRANSLATIONS = array( "Error when creating the file" => "Erro ao criar o arquivo", "Folder name cannot be empty." => "O nome da pasta não pode estar vazio.", "Error when creating the folder" => "Erro ao criar a pasta", -"Unable to set upload directory." => "Impossível configurar o diretório de upload", +"Unable to set upload directory." => "Impossível configurar o diretório de envio", "Invalid Token" => "Token inválido", "No file was uploaded. Unknown error" => "Nenhum arquivo foi enviado. Erro desconhecido", "There is no error, the file uploaded with success" => "Sem erros, o arquivo foi enviado com sucesso", @@ -34,7 +34,7 @@ $TRANSLATIONS = array( "Not enough free space, you are uploading {size1} but only {size2} is left" => "Não há espaço suficiente, você está enviando {size1} mas resta apenas {size2}", "Upload cancelled." => "Envio cancelado.", "Could not get result from server." => "Não foi possível obter o resultado do servidor.", -"File upload is in progress. Leaving the page now will cancel the upload." => "Upload em andamento. Sair da página agora resultará no cancelamento do envio.", +"File upload is in progress. Leaving the page now will cancel the upload." => "Envio de arquivo em andamento. Sair da página agora resultará no cancelamento do envio.", "URL cannot be empty" => "URL não pode estar vazia", "{new_name} already exists" => "{new_name} já existe", "Could not create file" => "Não foi possível criar o arquivo", @@ -60,16 +60,16 @@ $TRANSLATIONS = array( "\"{name}\" is an invalid file name." => "\"{name}\" é um nome de arquivo inválido.", "Your storage is full, files can not be updated or synced anymore!" => "Seu armazenamento está cheio, arquivos não podem mais ser atualizados ou sincronizados!", "Your storage is almost full ({usedSpacePercent}%)" => "Seu armazenamento está quase cheio ({usedSpacePercent}%)", -"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" => "App de encriptação está ativado, mas as chaves não estão inicializadas, por favor log-out e faça login novamente", -"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Chave do App de Encriptação é inválida. Por favor, atualize sua senha de chave privada em suas configurações pessoais para recuperar o acesso a seus arquivos criptografados.", -"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Encriptação foi desabilitada mas seus arquivos continuam encriptados. Por favor vá a suas configurações pessoais para descriptar seus arquivos.", +"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" => "App de criptografia está ativado, mas as chaves não estão inicializadas, por favor log-out e faça login novamente", +"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Chave do App de Criptografia é inválida. Por favor, atualize sua senha de chave privada em suas configurações pessoais para recuperar o acesso a seus arquivos criptografados.", +"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Criptografia foi desabilitada mas seus arquivos continuam criptografados. Por favor vá a suas configurações pessoais para descriptar seus arquivos.", "{dirs} and {files}" => "{dirs} e {files}", "%s could not be renamed" => "%s não pode ser renomeado", "Upload (max. %s)" => "Envio (max. %s)", "File handling" => "Tratamento de Arquivo", -"Maximum upload size" => "Tamanho máximo para carregar", +"Maximum upload size" => "Tamanho máximo para envio", "max. possible: " => "max. possível:", -"Save" => "Guardar", +"Save" => "Salvar", "WebDAV" => "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" => "Use este endereço <a href=\"%s\" target=\"_blank\">para ter acesso aos seus Arquivos via WebDAV</a>", "New" => "Novo", @@ -78,12 +78,12 @@ $TRANSLATIONS = array( "New folder" => "Nova pasta", "Folder" => "Pasta", "From link" => "Do link", -"Cancel upload" => "Cancelar upload", -"You don’t have permission to upload or create files here" => "Você não tem permissão para carregar ou criar arquivos aqui", +"Cancel upload" => "Cancelar envio", +"You don’t have permission to upload or create files here" => "Você não tem permissão para enviar ou criar arquivos aqui", "Nothing in here. Upload something!" => "Nada aqui. Carrege alguma coisa!", "Download" => "Baixar", -"Upload too large" => "Upload muito grande", -"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Os arquivos que você está tentando carregar excedeu o tamanho máximo para arquivos no servidor.", +"Upload too large" => "Arquivo muito grande para envio", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Os arquivos que você está tentando enviar excedeu o tamanho máximo para arquivos no servidor.", "Files are being scanned, please wait." => "Arquivos sendo escaneados, por favor aguarde.", "Currently scanning" => "Atualmente escaneando" ); diff --git a/apps/files_encryption/js/settings-personal.js b/apps/files_encryption/js/settings-personal.js index e16519c3c98..f857c2c9f05 100644 --- a/apps/files_encryption/js/settings-personal.js +++ b/apps/files_encryption/js/settings-personal.js @@ -24,7 +24,7 @@ function updatePrivateKeyPasswd() { $(document).ready(function(){ // Trigger ajax on recoveryAdmin status change - $( 'input:radio[name="userEnableRecovery"]' ).change( + $( 'input:radio[name="userEnableRecovery"]' ).change( function() { // Hide feedback messages in case they're already visible @@ -33,7 +33,7 @@ $(document).ready(function(){ var recoveryStatus = $( this ).val(); - $.post( + $.post( OC.filePath( 'files_encryption', 'ajax', 'userrecovery.php' ) , { userEnableRecovery: recoveryStatus } , function( data ) { @@ -49,7 +49,7 @@ $(document).ready(function(){ } ); - $("#encryptAll").click( + $("#encryptAll").click( function(){ // Hide feedback messages in case they're already visible @@ -59,7 +59,7 @@ $(document).ready(function(){ var userPassword = $( '#userPassword' ).val(); var encryptAll = $( '#encryptAll' ).val(); - $.post( + $.post( OC.filePath( 'files_encryption', 'ajax', 'encryptall.php' ) , { encryptAll: encryptAll, userPassword: userPassword } , function( data ) { diff --git a/apps/files_encryption/l10n/pt_BR.php b/apps/files_encryption/l10n/pt_BR.php index 1a829352daf..d1a95f7966a 100644 --- a/apps/files_encryption/l10n/pt_BR.php +++ b/apps/files_encryption/l10n/pt_BR.php @@ -34,7 +34,7 @@ $TRANSLATIONS = array( " If you don't remember your old password you can ask your administrator to recover your files." => "Se você não se lembra de sua antiga senha você pode pedir ao administrador que recupere seus arquivos.", "Old log-in password" => "Senha antiga de login", "Current log-in password" => "Senha de login atual", -"Update Private Key Password" => "Atualizar senha de chave privada", +"Update Private Key Password" => "Atualizar Senha de Chave Privada", "Enable password recovery:" => "Habilitar recuperação de senha:", "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" => "Habilitar essa opção vai permitir que você obtenha novamente acesso aos seus arquivos encriptados em caso de perda de senha", "File recovery settings updated" => "Configurações de recuperação de arquivo atualizado", diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index ea2b1b10d63..eb18507b4d5 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -1493,10 +1493,11 @@ class Util { * @return boolean */ public function isSystemWideMountPoint($path) { + $normalizedPath = ltrim($path, '/'); if (\OCP\App::isEnabled("files_external")) { $mount = \OC_Mount_Config::getSystemMountPoints(); foreach ($mount as $mountPoint => $data) { - if ($mountPoint == substr($path, 1, strlen($mountPoint))) { + if ($mountPoint == substr($normalizedPath, 0, strlen($mountPoint))) { return true; } } diff --git a/apps/files_external/3rdparty/php-opencloud/LICENSE b/apps/files_external/3rdparty/php-opencloud/LICENSE deleted file mode 100644 index f7c56967e6c..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/LICENSE +++ /dev/null @@ -1,16 +0,0 @@ - Copyright 2012-2013 Rackspace US, Inc. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - All contributions to this repository are covered under the same license, - terms, and conditions.
\ No newline at end of file diff --git a/apps/files_external/3rdparty/php-opencloud/lib/Autoload.php b/apps/files_external/3rdparty/php-opencloud/lib/Autoload.php deleted file mode 100644 index 32e9dc24b7e..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/Autoload.php +++ /dev/null @@ -1,296 +0,0 @@ -<?php - -// Copyright (c) 2004-2013 Fabien Potencier - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is furnished -// to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -class ClassLoader -{ - private $namespaces = array(); - private $prefixes = array(); - private $namespaceFallbacks = array(); - private $prefixFallbacks = array(); - private $useIncludePath = false; - - /** - * Turns on searching the include for class files. Allows easy loading - * of installed PEAR packages - * - * @param Boolean $useIncludePath - */ - public function useIncludePath($useIncludePath) - { - $this->useIncludePath = $useIncludePath; - } - - /** - * Can be used to check if the autoloader uses the include path to check - * for classes. - * - * @return Boolean - */ - public function getUseIncludePath() - { - return $this->useIncludePath; - } - - /** - * Gets the configured namespaces. - * - * @return array A hash with namespaces as keys and directories as values - */ - public function getNamespaces() - { - return $this->namespaces; - } - - /** - * Gets the configured class prefixes. - * - * @return array A hash with class prefixes as keys and directories as values - */ - public function getPrefixes() - { - return $this->prefixes; - } - - /** - * Gets the directory(ies) to use as a fallback for namespaces. - * - * @return array An array of directories - */ - public function getNamespaceFallbacks() - { - return $this->namespaceFallbacks; - } - - /** - * Gets the directory(ies) to use as a fallback for class prefixes. - * - * @return array An array of directories - */ - public function getPrefixFallbacks() - { - return $this->prefixFallbacks; - } - - /** - * Registers the directory to use as a fallback for namespaces. - * - * @param array $dirs An array of directories - * - * @api - */ - public function registerNamespaceFallbacks(array $dirs) - { - $this->namespaceFallbacks = $dirs; - } - - /** - * Registers a directory to use as a fallback for namespaces. - * - * @param string $dir A directory - */ - public function registerNamespaceFallback($dir) - { - $this->namespaceFallbacks[] = $dir; - } - - /** - * Registers directories to use as a fallback for class prefixes. - * - * @param array $dirs An array of directories - * - * @api - */ - public function registerPrefixFallbacks(array $dirs) - { - $this->prefixFallbacks = $dirs; - } - - /** - * Registers a directory to use as a fallback for class prefixes. - * - * @param string $dir A directory - */ - public function registerPrefixFallback($dir) - { - $this->prefixFallbacks[] = $dir; - } - - /** - * Registers an array of namespaces - * - * @param array $namespaces An array of namespaces (namespaces as keys and locations as values) - * - * @api - */ - public function registerNamespaces(array $namespaces) - { - foreach ($namespaces as $namespace => $locations) { - $this->namespaces[$namespace] = (array) $locations; - } - } - - /** - * Registers a namespace. - * - * @param string $namespace The namespace - * @param array|string $paths The location(s) of the namespace - * - * @api - */ - public function registerNamespace($namespace, $paths) - { - $this->namespaces[$namespace] = (array) $paths; - } - - /** - * Registers an array of classes using the PEAR naming convention. - * - * @param array $classes An array of classes (prefixes as keys and locations as values) - * - * @api - */ - public function registerPrefixes(array $classes) - { - foreach ($classes as $prefix => $locations) { - $this->prefixes[$prefix] = (array) $locations; - } - } - - /** - * Registers a set of classes using the PEAR naming convention. - * - * @param string $prefix The classes prefix - * @param array|string $paths The location(s) of the classes - * - * @api - */ - public function registerPrefix($prefix, $paths) - { - $this->prefixes[$prefix] = (array) $paths; - } - - /** - * Registers this instance as an autoloader. - * - * @param Boolean $prepend Whether to prepend the autoloader or not - * - * @api - */ - public function register($prepend = false) - { - spl_autoload_register(array($this, 'loadClass'), true, $prepend); - } - - /** - * Fix for certain versions of PHP that have trouble with - * namespaces with leading separators. - * - * @access private - * @param mixed $className - * @return void - */ - private function makeBackwardsCompatible($className) - { - return (phpversion() < '5.3.3') ? ltrim($className, '\\') : $className; - } - - /** - * Loads the given class or interface. - * - * @param string $class The name of the class - * - * @return Boolean|null True, if loaded - */ - public function loadClass($class) - { - $class = $this->makeBackwardsCompatible($class); - - if ($file = $this->findFile($class)) { - require $file; - - return true; - } - } - - /** - * Finds the path to the file where the class is defined. - * - * @param string $class The name of the class - * - * @return string|null The path, if found - */ - public function findFile($class) - { - if (false !== $pos = strrpos($class, '\\')) { - // namespaced class name - $namespace = substr($class, 0, $pos); - $className = substr($class, $pos + 1); - $normalizedClass = str_replace('\\', DIRECTORY_SEPARATOR, $namespace).DIRECTORY_SEPARATOR.str_replace('_', DIRECTORY_SEPARATOR, $className).'.php'; - foreach ($this->namespaces as $ns => $dirs) { - if (0 !== strpos($namespace, $ns)) { - continue; - } - - foreach ($dirs as $dir) { - $file = $dir.DIRECTORY_SEPARATOR.$normalizedClass; - if (is_file($file)) { - return $file; - } - } - } - - foreach ($this->namespaceFallbacks as $dir) { - $file = $dir.DIRECTORY_SEPARATOR.$normalizedClass; - if (is_file($file)) { - return $file; - } - } - - } else { - // PEAR-like class name - $normalizedClass = str_replace('_', DIRECTORY_SEPARATOR, $class).'.php'; - foreach ($this->prefixes as $prefix => $dirs) { - if (0 !== strpos($class, $prefix)) { - continue; - } - - foreach ($dirs as $dir) { - $file = $dir.DIRECTORY_SEPARATOR.$normalizedClass; - if (is_file($file)) { - return $file; - } - } - } - - foreach ($this->prefixFallbacks as $dir) { - $file = $dir.DIRECTORY_SEPARATOR.$normalizedClass; - if (is_file($file)) { - return $file; - } - } - } - - if ($this->useIncludePath && $file = stream_resolve_include_path($normalizedClass)) { - return $file; - } - } -} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Base.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Base.php deleted file mode 100644 index f80c9320e2a..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Base.php +++ /dev/null @@ -1,301 +0,0 @@ -<?php -/** - * @copyright 2012-2013 Rackspace Hosting, Inc. - * See COPYING for licensing information - * @package phpOpenCloud - * @version 1.0 - * @author Glen Campbell <glen.campbell@rackspace.com> - * @author Jamie Hannaford <jamie.hannaford@rackspace.com> - */ - -namespace OpenCloud\Common; - -use OpenCloud\Common\Lang; -use OpenCloud\Common\Exceptions\AttributeError; -use OpenCloud\Common\Exceptions\JsonError; -use OpenCloud\Common\Exceptions\UrlError; - -/** - * The root class for all other objects used or defined by this SDK. - * - * It contains common code for error handling as well as service functions that - * are useful. Because it is an abstract class, it cannot be called directly, - * and it has no publicly-visible properties. - */ -abstract class Base -{ - - private $http_headers = array(); - private $_errors = array(); - - /** - * Debug status. - * - * @var LoggerInterface - * @access private - */ - private $logger; - - /** - * Sets the Logger object. - * - * @param \OpenCloud\Common\Log\LoggerInterface $logger - */ - public function setLogger(Log\LoggerInterface $logger) - { - $this->logger = $logger; - } - - /** - * Returns the Logger object. - * - * @return \OpenCloud\Common\Log\AbstractLogger - */ - public function getLogger() - { - if (null === $this->logger) { - $this->setLogger(new Log\Logger); - } - return $this->logger; - } - - /** - * Returns the URL of the service/object - * - * The assumption is that nearly all objects will have a URL; at this - * base level, it simply throws an exception to enforce the idea that - * subclasses need to define this method. - * - * @throws UrlError - */ - public function url($subresource = '') - { - throw new UrlError(Lang::translate( - 'URL method must be overridden in class definition' - )); - } - -/** - * Populates the current object based on an unknown data type. - * - * @param array|object|string|integer $info - * @throws Exceptions\InvalidArgumentError - */ - public function populate($info, $setObjects = true) - { - if (is_string($info) || is_integer($info)) { - - // If the data type represents an ID, the primary key is set - // and we retrieve the full resource from the API - $this->{$this->primaryKeyField()} = (string) $info; - $this->refresh($info); - - } elseif (is_object($info) || is_array($info)) { - - foreach($info as $key => $value) { - - if ($key == 'metadata' || $key == 'meta') { - - if (empty($this->metadata) || !$this->metadata instanceof Metadata) { - $this->metadata = new Metadata; - } - - // Metadata - $this->$key->setArray($value); - - } elseif (!empty($this->associatedResources[$key]) && $setObjects === true) { - - // Associated resource - try { - $resource = $this->service()->resource($this->associatedResources[$key], $value); - $resource->setParent($this); - $this->$key = $resource; - } catch (Exception\ServiceException $e) {} - - } elseif (!empty($this->associatedCollections[$key]) && $setObjects === true) { - - // Associated collection - try { - $this->$key = $this->service()->resourceList($this->associatedCollections[$key], null, $this); - } catch (Exception\ServiceException $e) {} - - } else { - - // Normal key/value pair - $this->$key = $value; - } - } - } elseif (null !== $info) { - throw new Exceptions\InvalidArgumentError(sprintf( - Lang::translate('Argument for [%s] must be string or object'), - get_class() - )); - } - } - - /** - * Sets extended attributes on an object and validates them - * - * This function is provided to ensure that attributes cannot - * arbitrarily added to an object. If this function is called, it - * means that the attribute is not defined on the object, and thus - * an exception is thrown. - * - * @codeCoverageIgnore - * - * @param string $property the name of the attribute - * @param mixed $value the value of the attribute - * @return void - */ - public function __set($property, $value) - { - $this->setProperty($property, $value); - } - - /** - * Sets an extended (unrecognized) property on the current object - * - * If RAXSDK_STRICT_PROPERTY_CHECKS is TRUE, then the prefix of the - * property name must appear in the $prefixes array, or else an - * exception is thrown. - * - * @param string $property the property name - * @param mixed $value the value of the property - * @param array $prefixes optional list of supported prefixes - * @throws \OpenCloud\AttributeError if strict checks are on and - * the property prefix is not in the list of prefixes. - */ - public function setProperty($property, $value, array $prefixes = array()) - { - // if strict checks are off, go ahead and set it - if (!RAXSDK_STRICT_PROPERTY_CHECKS - || $this->checkAttributePrefix($property, $prefixes) - ) { - $this->$property = $value; - } else { - // if that fails, then throw the exception - throw new AttributeError(sprintf( - Lang::translate('Unrecognized attribute [%s] for [%s]'), - $property, - get_class($this) - )); - } - } - - /** - * Converts an array of key/value pairs into a single query string - * - * For example, array('A'=>1,'B'=>2) would become 'A=1&B=2'. - * - * @param array $arr array of key/value pairs - * @return string - */ - public function makeQueryString($array) - { - $queryString = ''; - - foreach($array as $key => $value) { - if ($queryString) { - $queryString .= '&'; - } - $queryString .= urlencode($key) . '=' . urlencode($this->to_string($value)); - } - - return $queryString; - } - - /** - * Checks the most recent JSON operation for errors - * - * This function should be called after any `json_*()` function call. - * This ensures that nasty JSON errors are detected and the proper - * exception thrown. - * - * Example: - * `$obj = json_decode($string);` - * `if (check_json_error()) do something ...` - * - * @return boolean TRUE if an error occurred, FALSE if none - * @throws JsonError - * - * @codeCoverageIgnore - */ - public function checkJsonError() - { - switch (json_last_error()) { - case JSON_ERROR_NONE: - return; - case JSON_ERROR_DEPTH: - $jsonError = 'JSON error: The maximum stack depth has been exceeded'; - break; - case JSON_ERROR_STATE_MISMATCH: - $jsonError = 'JSON error: Invalid or malformed JSON'; - break; - case JSON_ERROR_CTRL_CHAR: - $jsonError = 'JSON error: Control character error, possibly incorrectly encoded'; - break; - case JSON_ERROR_SYNTAX: - $jsonError = 'JSON error: Syntax error'; - break; - case JSON_ERROR_UTF8: - $jsonError = 'JSON error: Malformed UTF-8 characters, possibly incorrectly encoded'; - break; - default: - $jsonError = 'Unexpected JSON error'; - break; - } - - if (isset($jsonError)) { - throw new JsonError(Lang::translate($jsonError)); - } - } - - /** - * Returns a class that implements the HttpRequest interface. - * - * This can be stubbed out for unit testing and avoid making live calls. - */ - public function getHttpRequestObject($url, $method = 'GET', array $options = array()) - { - return new Request\Curl($url, $method, $options); - } - - /** - * Checks the attribute $property and only permits it if the prefix is - * in the specified $prefixes array - * - * This is to support extension namespaces in some services. - * - * @param string $property the name of the attribute - * @param array $prefixes a list of prefixes - * @return boolean TRUE if valid; FALSE if not - */ - private function checkAttributePrefix($property, array $prefixes = array()) - { - $prefix = strstr($property, ':', true); - - if (in_array($prefix, $prefixes)) { - return true; - } else { - return false; - } - } - - /** - * Converts a value to an HTTP-displayable string form - * - * @param mixed $x a value to convert - * @return string - */ - private function to_string($x) - { - if (is_bool($x) && $x) { - return 'True'; - } elseif (is_bool($x)) { - return 'False'; - } else { - return (string) $x; - } - } - -} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Collection.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Collection.php deleted file mode 100644 index e1bf80376e0..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Collection.php +++ /dev/null @@ -1,320 +0,0 @@ -<?php - -namespace OpenCloud\Common; - -/** - * Provides an abstraction for working with ordered sets of objects - * - * Collection objects are used whenever there are multiples; for example, - * multiple objects in a container, or multiple servers in a service. - * - * @since 1.0 - * @author Glen Campbell <glen.campbell@rackspace.com> - * @author Jamie Hannaford <jamie.hannaford@rackspace.com> - */ -class Collection extends Base -{ - - private $service; - private $itemclass; - private $itemlist = array(); - private $pointer = 0; - private $sortkey; - private $next_page_class; - private $next_page_callback; - private $next_page_url; - - /** - * A Collection is an array of objects - * - * Some assumptions: - * * The `Collection` class assumes that there exists on its service - * a factory method with the same name of the class. For example, if - * you create a Collection of class `Foobar`, it will attempt to call - * the method `parent::Foobar()` to create instances of that class. - * * It assumes that the factory method can take an array of values, and - * it passes that to the method. - * - * @param Service $service - the service associated with the collection - * @param string $itemclass - the Class of each item in the collection - * (assumed to be the name of the factory method) - * @param array $arr - the input array - */ - public function __construct($service, $itemclass, $array) - { - $this->service = $service; - - $this->getLogger()->info( - 'Collection:service={class}, class={itemClass}, array={array}', - array( - 'class' => get_class($service), - 'itemClass' => $itemclass, - 'array' => print_r($array, true) - ) - ); - - $this->next_page_class = $itemclass; - - if (false !== ($classNamePos = strrpos($itemclass, '\\'))) { - $this->itemclass = substr($itemclass, $classNamePos + 1); - } else { - $this->itemclass = $itemclass; - } - - if (!is_array($array)) { - throw new Exceptions\CollectionError( - Lang::translate('Cannot create a Collection without an array') - ); - } - - // save the array of items - $this->setItemList($array); - } - - /** - * Set the entire data array. - * - * @param array $array - */ - public function setItemList(array $array) - { - $this->itemlist = $array; - } - - /** - * Retrieve the entire data array. - * - * @return array - */ - public function getItemList() - { - return $this->itemlist; - } - - /** - * Returns the number of items in the collection - * - * For most services, this is the total number of items. If the Collection - * is paginated, however, this only returns the count of items in the - * current page of data. - * - * @return int - */ - public function count() - { - return count($this->itemlist); - } - - /** - * Pseudonym for count() - * - * @codeCoverageIgnore - */ - public function size() - { - return $this->count(); - } - - /** - * Retrieves the service associated with the Collection - * - * @return Service - */ - public function service() - { - return $this->service; - } - - /** - * Resets the pointer to the beginning, but does NOT return the first item - * - * @api - * @return void - */ - public function reset() - { - $this->pointer = 0; - } - - /** - * Resets the collection pointer back to the first item in the page - * and returns it - * - * This is useful if you're only interested in the first item in the page. - * - * @api - * @return Base the first item in the set - */ - public function first() - { - $this->reset(); - return $this->next(); - } - - /** - * Returns the next item in the page - * - * @api - * @return Base the next item or FALSE if at the end of the page - */ - public function next() - { - if ($this->pointer >= $this->count()) { - return false; - } - - $service = $this->service(); - - if (method_exists($service, $this->itemclass)) { - return $service->{$this->itemclass}($this->itemlist[$this->pointer++]); - } elseif (method_exists($service, 'resource')) { - return $service->resource($this->itemclass, $this->itemlist[$this->pointer++]); - } - // @codeCoverageIgnoreStart - return false; - // @codeCoverageIgnoreEnd - } - - /** - * sorts the collection on a specified key - * - * Note: only top-level keys can be used as the sort key. Note that this - * only sorts the data in the current page of the Collection (for - * multi-page data). - * - * @api - * @param string $keyname the name of the field to use as the sort key - * @return void - */ - public function sort($keyname = 'id') - { - $this->sortkey = $keyname; - usort($this->itemlist, array($this, 'sortCompare')); - } - - /** - * selects only specified items from the Collection - * - * This provides a simple form of filtering on Collections. For each item - * in the collection, it calls the callback function, passing it the item. - * If the callback returns `TRUE`, then the item is retained; if it returns - * `FALSE`, then the item is deleted from the collection. - * - * Note that this should not supersede server-side filtering; the - * `Collection::Select()` method requires that *all* of the data for the - * Collection be retrieved from the server before the filtering is - * performed; this can be very inefficient, especially for large data - * sets. This method is mostly useful on smaller-sized sets. - * - * Example: - * <code> - * $services = $connection->ServiceList(); - * $services->Select(function($item){ return $item->region=='ORD';}); - * // now the $services Collection only has items from the ORD region - * </code> - * - * `Select()` is *destructive*; that is, it actually removes entries from - * the collection. For example, if you use `Select()` to find items with - * the ID > 10, then use it again to find items that are <= 10, it will - * return an empty list. - * - * @api - * @param callable $testfunc a callback function that is passed each item - * in turn. Note that `Select()` performs an explicit test for - * `FALSE`, so functions like `strpos()` need to be cast into a - * boolean value (and not just return the integer). - * @returns void - * @throws DomainError if callback doesn't return a boolean value - */ - public function select($testfunc) - { - foreach ($this->getItemList() as $index => $item) { - $test = call_user_func($testfunc, $item); - if (!is_bool($test)) { - throw new Exceptions\DomainError( - Lang::translate('Callback function for Collection::Select() did not return boolean') - ); - } - if ($test === false) { - unset($this->itemlist[$index]); - } - } - } - - /** - * returns the Collection object for the next page of results, or - * FALSE if there are no more pages - * - * Generally, the structure for a multi-page collection will look like - * this: - * - * $coll = $obj->Collection(); - * do { - * while($item = $coll->Next()) { - * // do something with the item - * } - * } while ($coll = $coll->NextPage()); - * - * @api - * @return Collection if there are more pages of results, otherwise FALSE - */ - public function nextPage() - { - if (isset($this->next_page_url)) { - return call_user_func( - $this->next_page_callback, - $this->next_page_class, - $this->next_page_url - ); - } - // @codeCoverageIgnoreStart - return false; - // @codeCoverageIgnoreEnd - } - - /** - * for paginated collection, sets the callback function and URL for - * the next page - * - * The callback function should have the signature: - * - * function Whatever($class, $url, $parent) - * - * and the `$url` should be the URL of the next page of results - * - * @param callable $callback the name of the function (or array of - * object, function name) - * @param string $url the URL of the next page of results - * @return void - */ - public function setNextPageCallback($callback, $url) - { - $this->next_page_callback = $callback; - $this->next_page_url = $url; - } - - /** - * Compares two values of sort keys - */ - private function sortCompare($a, $b) - { - $key = $this->sortkey; - - // handle strings with strcmp() - if (is_string($a->$key)) { - return strcmp($a->$key, $b->$key); - } - - // handle others with logical comparisons - if ($a->$key == $b->$key) { - return 0; - } - - if ($a->$key < $b->$key) { - return -1; - } else { - return 1; - } - } - -} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/AsyncError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/AsyncError.php deleted file mode 100644 index cbbacff38bd..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/AsyncError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class AsyncError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/AsyncHttpError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/AsyncHttpError.php deleted file mode 100644 index dc7b2d7e3a7..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/AsyncHttpError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class AsyncHttpError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/AsyncTimeoutError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/AsyncTimeoutError.php deleted file mode 100644 index bba5f09f64f..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/AsyncTimeoutError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class AsyncTimeoutError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/AttributeError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/AttributeError.php deleted file mode 100644 index 7d09ceb0147..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/AttributeError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class AttributeError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/AuthenticationError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/AuthenticationError.php deleted file mode 100644 index 091e4602ec0..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/AuthenticationError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class AuthenticationError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/BaseException.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/BaseException.php deleted file mode 100644 index 0bc967adf67..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/BaseException.php +++ /dev/null @@ -1,7 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class BaseException extends \Exception -{ -}
\ No newline at end of file diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/CdnError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/CdnError.php deleted file mode 100644 index 0f972e9c5c7..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/CdnError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class CdnError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/CdnHttpError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/CdnHttpError.php deleted file mode 100644 index f1e2722f158..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/CdnHttpError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class CdnHttpError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/CdnNotAvailableError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/CdnNotAvailableError.php deleted file mode 100644 index 853b17c7127..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/CdnNotAvailableError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class CdnNotAvailableError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/CdnTtlError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/CdnTtlError.php deleted file mode 100644 index b4364f93467..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/CdnTtlError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class CdnTtlError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/CollectionError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/CollectionError.php deleted file mode 100644 index 9d5030403f6..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/CollectionError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class CollectionError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ContainerCreateError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ContainerCreateError.php deleted file mode 100644 index afc8119bd5a..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ContainerCreateError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class ContainerCreateError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ContainerDeleteError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ContainerDeleteError.php deleted file mode 100644 index c212bfbaffd..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ContainerDeleteError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class ContainerDeleteError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ContainerError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ContainerError.php deleted file mode 100644 index c9716fef075..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ContainerError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class ContainerError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ContainerNameError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ContainerNameError.php deleted file mode 100644 index e0b9592835e..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ContainerNameError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class ContainerNameError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ContainerNotEmptyError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ContainerNotEmptyError.php deleted file mode 100644 index e987449d444..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ContainerNotEmptyError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class ContainerNotEmptyError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ContainerNotFoundError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ContainerNotFoundError.php deleted file mode 100644 index 2e700dbe039..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ContainerNotFoundError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class ContainerNotFoundError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/CreateError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/CreateError.php deleted file mode 100644 index bb2030373fb..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/CreateError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class CreateError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/CreateUpdateError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/CreateUpdateError.php deleted file mode 100644 index 8aa651a76d9..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/CreateUpdateError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class CreateUpdateError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/CredentialError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/CredentialError.php deleted file mode 100644 index 2769edaf378..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/CredentialError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class CredentialError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/DatabaseCreateError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/DatabaseCreateError.php deleted file mode 100644 index eb19198c2fe..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/DatabaseCreateError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class DatabaseCreateError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/DatabaseDeleteError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/DatabaseDeleteError.php deleted file mode 100644 index 41f397529fe..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/DatabaseDeleteError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class DatabaseDeleteError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/DatabaseListError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/DatabaseListError.php deleted file mode 100644 index 04a7fb9e835..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/DatabaseListError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class DatabaseListError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/DatabaseNameError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/DatabaseNameError.php deleted file mode 100644 index 17a987a03b0..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/DatabaseNameError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class DatabaseNameError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/DatabaseUpdateError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/DatabaseUpdateError.php deleted file mode 100644 index c891c173787..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/DatabaseUpdateError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class DatabaseUpdateError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/DeleteError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/DeleteError.php deleted file mode 100644 index 27c4b2a4894..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/DeleteError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class DeleteError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/DocumentError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/DocumentError.php deleted file mode 100644 index d501e3594b6..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/DocumentError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class DocumentError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/DomainError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/DomainError.php deleted file mode 100644 index b4eac2ae1d3..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/DomainError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class DomainError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/EmptyResponseError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/EmptyResponseError.php deleted file mode 100644 index c7863c09b01..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/EmptyResponseError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class EmptyResponseError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/EndpointError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/EndpointError.php deleted file mode 100644 index a686a6456e9..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/EndpointError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class EndpointError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/FlavorError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/FlavorError.php deleted file mode 100644 index 469dc27e76c..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/FlavorError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class FlavorError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpError.php deleted file mode 100644 index 1b54b8a8253..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class HttpError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpForbiddenError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpForbiddenError.php deleted file mode 100644 index a5c64780516..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpForbiddenError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class HttpForbiddenError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpOverLimitError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpOverLimitError.php deleted file mode 100644 index 243e8df64fd..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpOverLimitError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class HttpOverLimitError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpRetryError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpRetryError.php deleted file mode 100644 index 78345840bba..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpRetryError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class HttpRetryError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpTimeoutError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpTimeoutError.php deleted file mode 100644 index 81bc9dda608..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpTimeoutError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class HttpTimeoutError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpUnauthorizedError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpUnauthorizedError.php deleted file mode 100644 index 9b1edb20333..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpUnauthorizedError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class HttpUnauthorizedError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpUrlError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpUrlError.php deleted file mode 100644 index fa2af82c564..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpUrlError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class HttpUrlError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/IOError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/IOError.php deleted file mode 100644 index df816336c6c..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/IOError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class IOError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/IdRequiredError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/IdRequiredError.php deleted file mode 100644 index 398b9f3fd85..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/IdRequiredError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class IdRequiredError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ImageError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ImageError.php deleted file mode 100644 index 3b846a7551f..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ImageError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class ImageError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InstanceCreateError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InstanceCreateError.php deleted file mode 100644 index 65caa154497..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InstanceCreateError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class InstanceCreateError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InstanceDeleteError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InstanceDeleteError.php deleted file mode 100644 index e4c6fdb7f57..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InstanceDeleteError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class InstanceDeleteError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InstanceError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InstanceError.php deleted file mode 100644 index 48152824862..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InstanceError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class InstanceError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InstanceFlavorError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InstanceFlavorError.php deleted file mode 100644 index e8a074eb9bf..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InstanceFlavorError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class InstanceFlavorError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InstanceNotFound.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InstanceNotFound.php deleted file mode 100644 index 4bc94797b3f..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InstanceNotFound.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class InstanceNotFound extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InstanceUpdateError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InstanceUpdateError.php deleted file mode 100644 index b15f3426013..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InstanceUpdateError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class InstanceUpdateError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InvalidArgumentError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InvalidArgumentError.php deleted file mode 100644 index a655f11a731..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InvalidArgumentError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class InvalidArgumentError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InvalidIdTypeError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InvalidIdTypeError.php deleted file mode 100644 index f329c748957..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InvalidIdTypeError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class InvalidIdTypeError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InvalidIpTypeError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InvalidIpTypeError.php deleted file mode 100644 index 370d8f650de..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InvalidIpTypeError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class InvalidIpTypeError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InvalidParameterError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InvalidParameterError.php deleted file mode 100644 index f13986ffc94..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InvalidParameterError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class InvalidParameterError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InvalidRequestError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InvalidRequestError.php deleted file mode 100644 index 0266d8f22bd..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/InvalidRequestError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class InvalidRequestError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/JsonError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/JsonError.php deleted file mode 100644 index 96f9102ed37..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/JsonError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class JsonError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/LoggingException.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/LoggingException.php deleted file mode 100644 index a5bdad705f4..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/LoggingException.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php -/** - * @copyright Copyright 2012-2013 Rackspace US, Inc. - See COPYING for licensing information. - * @license https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0 - * @version 1.5.9 - * @author Jamie Hannaford <jamie.hannaford@rackspace.com> - */ - -namespace OpenCloud\Common\Exceptions; - -use Exception; - -class LoggingException extends Exception -{ -}
\ No newline at end of file diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MetadataCreateError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MetadataCreateError.php deleted file mode 100644 index a119397392f..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MetadataCreateError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class MetadataCreateError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MetadataDeleteError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MetadataDeleteError.php deleted file mode 100644 index 4acd879afe9..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MetadataDeleteError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class MetadataDeleteError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MetadataError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MetadataError.php deleted file mode 100644 index 65f94975a44..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MetadataError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class MetadataError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MetadataJsonError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MetadataJsonError.php deleted file mode 100644 index a7a74ca9e13..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MetadataJsonError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class MetadataJsonError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MetadataKeyError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MetadataKeyError.php deleted file mode 100644 index 606f6d95874..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MetadataKeyError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class MetadataKeyError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MetadataPrefixError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MetadataPrefixError.php deleted file mode 100644 index 271e69010a7..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MetadataPrefixError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class MetadataPrefixError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MetadataUpdateError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MetadataUpdateError.php deleted file mode 100644 index 49db43d6f70..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MetadataUpdateError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class MetadataUpdateError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MisMatchedChecksumError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MisMatchedChecksumError.php deleted file mode 100644 index 75b4f926995..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MisMatchedChecksumError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class MisMatchedChecksumError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MissingValueError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MissingValueError.php deleted file mode 100644 index 0dd5b8ee737..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/MissingValueError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class MissingValueError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/NameError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/NameError.php deleted file mode 100644 index 6918120a56c..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/NameError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class NameError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/NetworkCreateError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/NetworkCreateError.php deleted file mode 100644 index a0c7640ffe8..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/NetworkCreateError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class NetworkCreateError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/NetworkDeleteError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/NetworkDeleteError.php deleted file mode 100644 index 0e2922babe2..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/NetworkDeleteError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class NetworkDeleteError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/NetworkError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/NetworkError.php deleted file mode 100644 index 4b30806c1bc..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/NetworkError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class NetworkError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/NetworkUpdateError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/NetworkUpdateError.php deleted file mode 100644 index f55f09d8ec2..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/NetworkUpdateError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class NetworkUpdateError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/NetworkUrlError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/NetworkUrlError.php deleted file mode 100644 index 666ec50482b..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/NetworkUrlError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class NetworkUrlError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/NoContentTypeError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/NoContentTypeError.php deleted file mode 100644 index 59a33088163..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/NoContentTypeError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class NoContentTypeError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/NoNameError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/NoNameError.php deleted file mode 100644 index 2d56f5fcd0d..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/NoNameError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class NoNameError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ObjFetchError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ObjFetchError.php deleted file mode 100644 index 9d7391823e8..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ObjFetchError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class ObjFetchError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ObjectCopyError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ObjectCopyError.php deleted file mode 100644 index ef7b3b39220..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ObjectCopyError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class ObjectCopyError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ObjectError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ObjectError.php deleted file mode 100644 index ea667ad25f6..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ObjectError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class ObjectError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/RebuildError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/RebuildError.php deleted file mode 100644 index 9ee6ab37fd9..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/RebuildError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class RebuildError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/RecordTypeError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/RecordTypeError.php deleted file mode 100644 index 718ce98574c..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/RecordTypeError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class RecordTypeError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServerActionError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServerActionError.php deleted file mode 100644 index d4ad6453281..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServerActionError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class ServerActionError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServerCreateError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServerCreateError.php deleted file mode 100644 index 69904111c61..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServerCreateError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class ServerCreateError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServerDeleteError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServerDeleteError.php deleted file mode 100644 index 94a1adc4f0b..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServerDeleteError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class ServerDeleteError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServerImageScheduleError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServerImageScheduleError.php deleted file mode 100644 index 19fbcbd279c..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServerImageScheduleError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class ServerImageScheduleError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServerIpsError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServerIpsError.php deleted file mode 100644 index 3e737c28614..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServerIpsError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class ServerIpsError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServerJsonError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServerJsonError.php deleted file mode 100644 index c10e67d645d..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServerJsonError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class ServerJsonError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServerUpdateError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServerUpdateError.php deleted file mode 100644 index d9d7b370808..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServerUpdateError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class ServerUpdateError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServerUrlError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServerUrlError.php deleted file mode 100644 index ba0308d04e7..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServerUrlError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class ServerUrlError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServiceValueError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServiceValueError.php deleted file mode 100644 index 7ce52c846a4..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/ServiceValueError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class ServiceValueError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/SnapshotError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/SnapshotError.php deleted file mode 100644 index 14d7614a9ee..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/SnapshotError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class SnapshotError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/TempUrlMethodError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/TempUrlMethodError.php deleted file mode 100644 index 61f4647d1b3..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/TempUrlMethodError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class TempUrlMethodError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UnknownError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UnknownError.php deleted file mode 100644 index 2b0772530fc..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UnknownError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class UnknownError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UnknownParameterError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UnknownParameterError.php deleted file mode 100644 index 704ee28c052..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UnknownParameterError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class UnknownParameterError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UnrecognizedServiceError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UnrecognizedServiceError.php deleted file mode 100644 index 396d451e131..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UnrecognizedServiceError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class UnrecognizedServiceError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UnsupportedExtensionError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UnsupportedExtensionError.php deleted file mode 100644 index 5ff5ae89c73..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UnsupportedExtensionError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class UnsupportedExtensionError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UnsupportedFeatureExtension.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UnsupportedFeatureExtension.php deleted file mode 100644 index 6d9143a1d91..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UnsupportedFeatureExtension.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class UnsupportedFeatureExtension extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UnsupportedVersionError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UnsupportedVersionError.php deleted file mode 100644 index 060733ad5b5..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UnsupportedVersionError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class UnsupportedVersionError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UpdateError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UpdateError.php deleted file mode 100644 index 23f0dbb6aa7..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UpdateError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class UpdateError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UrlError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UrlError.php deleted file mode 100644 index 6c4d9ab69aa..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UrlError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class UrlError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UserCreateError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UserCreateError.php deleted file mode 100644 index f87ee0d2fc9..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UserCreateError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class UserCreateError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UserDeleteError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UserDeleteError.php deleted file mode 100644 index 3196289aafc..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UserDeleteError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class UserDeleteError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UserListError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UserListError.php deleted file mode 100644 index 7d287ae0ecf..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UserListError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class UserListError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UserNameError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UserNameError.php deleted file mode 100644 index 51902f8e93c..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UserNameError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class UserNameError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UserUpdateError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UserUpdateError.php deleted file mode 100644 index 403b53420d0..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/UserUpdateError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class UserUpdateError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/VolumeError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/VolumeError.php deleted file mode 100644 index c19c4c2009d..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/VolumeError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class VolumeError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/VolumeTypeError.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/VolumeTypeError.php deleted file mode 100644 index a9cc1e3f64b..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Exceptions/VolumeTypeError.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - -namespace OpenCloud\Common\Exceptions; - -class VolumeTypeError extends \Exception {} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Identity/Role.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Identity/Role.php deleted file mode 100644 index b2c480d71b5..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Identity/Role.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php - -/** - * PHP OpenCloud library. - * - * @author Jamie Hannaford <jamie@limetree.org> - * @version 2.0.0 - * @copyright Copyright 2012-2013 Rackspace US, Inc. - * @license https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0 - */ - -/** - * Description of Role - * - * @link - * - * @codeCoverageIgnore - */ -class Role -{ -}
\ No newline at end of file diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Identity/Tenant.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Identity/Tenant.php deleted file mode 100644 index 62783613c2f..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Identity/Tenant.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php - -/** - * PHP OpenCloud library. - * - * @author Jamie Hannaford <jamie@limetree.org> - * @version 2.0.0 - * @copyright Copyright 2012-2013 Rackspace US, Inc. - * @license https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0 - */ - -/** - * Description of Tenant - * - * @link - * - * @codeCoverageIgnore - */ -class Tenant -{ - -}
\ No newline at end of file diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Identity/User.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Identity/User.php deleted file mode 100644 index 9e3862d1750..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Identity/User.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php -/** - * @copyright 2012-2013 Rackspace Hosting, Inc. - * See COPYING for licensing information - * @package phpOpenCloud - * @version 1.5.9 - * @author Glen Campbell <glen.campbell@rackspace.com> - * @author Jamie Hannaford <jamie.hannaford@rackspace.co.uk> - */ - -/** - * Represents a sub-user in Keystone. - * - * @link http://docs.rackspace.com/auth/api/v2.0/auth-client-devguide/content/User_Calls.html - * - * @codeCoverageIgnore - */ -class User extends PersistentObject -{ - - public static function factory($info) - { - $user = new self; - } - - /** - * Return detailed information about a specific user, by either user name or user ID. - * @param int|string $info - */ - public function get($info) - { - if (is_integer($info)) { - - } elseif (is_string($info)) { - - } else { - throw new Exception\IdentityException(sprintf( - 'A string-based username or an integer-based user ID is valid' - )); - } - } - - public function create() - { - - } - - public function update() - { - - } - - public function delete() - { - - } - - public function listAllCredentials() - { - - } - - public function getCredentials() - { - - } - - public function resetApiKey() - { - - } - -}
\ No newline at end of file diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Lang.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Lang.php deleted file mode 100644 index 7bb12859734..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Lang.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php - -namespace OpenCloud\Common; - -class Lang -{ - - public static function translate($word = null) - { - return $word; - } - - public static function noslash($str) - { - while ($str && (substr($str, -1) == '/')) { - $str = substr($str, 0, strlen($str) - 1); - } - return $str; - } - -} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Log/AbstractLogger.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Log/AbstractLogger.php deleted file mode 100644 index c7aea7f8767..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Log/AbstractLogger.php +++ /dev/null @@ -1,140 +0,0 @@ -<?php - -// Copyright (c) 2012 PHP Framework Interoperability Group -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -namespace OpenCloud\Common\Log; - -/** - * This is a simple Logger implementation that other Loggers can inherit from. - * - * It simply delegates all log-level-specific methods to the `log` method to - * reduce boilerplate code that a simple Logger that does the same thing with - * messages regardless of the error level has to implement. - */ -abstract class AbstractLogger implements LoggerInterface -{ - /** - * System is unusable. - * - * @param string $message - * @param array $context - * @return null - */ - public function emergency($message, array $context = array()) - { - $this->log(LogLevel::EMERGENCY, $message, $context); - } - - /** - * Action must be taken immediately. - * - * Example: Entire website down, database unavailable, etc. This should - * trigger the SMS alerts and wake you up. - * - * @param string $message - * @param array $context - * @return null - */ - public function alert($message, array $context = array()) - { - $this->log(LogLevel::ALERT, $message, $context); - } - - /** - * Critical conditions. - * - * Example: Application component unavailable, unexpected exception. - * - * @param string $message - * @param array $context - * @return null - */ - public function critical($message, array $context = array()) - { - $this->log(LogLevel::CRITICAL, $message, $context); - } - - /** - * Runtime errors that do not require immediate action but should typically - * be logged and monitored. - * - * @param string $message - * @param array $context - * @return null - */ - public function error($message, array $context = array()) - { - $this->log(LogLevel::ERROR, $message, $context); - } - - /** - * Exceptional occurrences that are not errors. - * - * Example: Use of deprecated APIs, poor use of an API, undesirable things - * that are not necessarily wrong. - * - * @param string $message - * @param array $context - * @return null - */ - public function warning($message, array $context = array()) - { - $this->log(LogLevel::WARNING, $message, $context); - } - - /** - * Normal but significant events. - * - * @param string $message - * @param array $context - * @return null - */ - public function notice($message, array $context = array()) - { - $this->log(LogLevel::NOTICE, $message, $context); - } - - /** - * Interesting events. - * - * Example: User logs in, SQL logs. - * - * @param string $message - * @param array $context - * @return null - */ - public function info($message, array $context = array()) - { - $this->log(LogLevel::INFO, $message, $context); - } - - /** - * Detailed debug information. - * - * @param string $message - * @param array $context - * @return null - */ - public function debug($message, array $context = array()) - { - $this->log(LogLevel::DEBUG, $message, $context); - } -}
\ No newline at end of file diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Log/LogLevel.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Log/LogLevel.php deleted file mode 100644 index 64b0169b507..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Log/LogLevel.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -// Copyright (c) 2012 PHP Framework Interoperability Group -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -namespace OpenCloud\Common\Log; - -/** - * Describes log levels - */ -class LogLevel -{ - const EMERGENCY = 'emergency'; - const ALERT = 'alert'; - const CRITICAL = 'critical'; - const ERROR = 'error'; - const WARNING = 'warning'; - const NOTICE = 'notice'; - const INFO = 'info'; - const DEBUG = 'debug'; -}
\ No newline at end of file diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Log/Logger.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Log/Logger.php deleted file mode 100644 index e11d3fbb7ca..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Log/Logger.php +++ /dev/null @@ -1,220 +0,0 @@ -<?php -/** - * @copyright Copyright 2012-2013 Rackspace US, Inc. - See COPYING for licensing information. - * @license https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0 - * @version 1.5.9 - * @author Jamie Hannaford <jamie.hannaford@rackspace.com> - */ - -namespace OpenCloud\Common\Log; - -use OpenCloud\Common\Exceptions\LoggingException; - -/** - * Basic logger for OpenCloud which extends FIG's PSR-3 standard logger. - * - * @link https://github.com/php-fig/log - */ -class Logger extends AbstractLogger -{ - /** - * Is this debug class enabled or not? - * - * @var bool - */ - private $enabled = false; - - /** - * These are the levels which will always be outputted - regardless of - * user-imposed settings. - * - * @var array - */ - private $urgentLevels = array( - LogLevel::EMERGENCY, - LogLevel::ALERT, - LogLevel::CRITICAL - ); - - /** - * Logging options. - * - * @var array - */ - private $options = array( - 'outputToFile' => false, - 'logFile' => null, - 'dateFormat' => 'd/m/y H:I', - 'delimeter' => ' - ' - ); - - /** - * Determines whether a log level needs to be outputted. - * - * @param string $logLevel - * @return bool - */ - private function outputIsUrgent($logLevel) - { - return in_array($logLevel, $this->urgentLevels); - } - - /** - * Interpolates context values into the message placeholders. - * - * @param string $message - * @param array $context - * @return type - */ - private function interpolate($message, array $context = array()) - { - // build a replacement array with braces around the context keys - $replace = array(); - foreach ($context as $key => $val) { - $replace['{' . $key . '}'] = $val; - } - - // interpolate replacement values into the message and return - return strtr($message, $replace); - } - - /** - * Enable or disable the debug class. - * - * @param bool $enabled - * @return self - */ - public function setEnabled($enabled) - { - $this->enabled = $enabled; - return $this; - } - - /** - * Is the debug class enabled? - * - * @return bool - */ - public function getEnabled() - { - return $this->enabled; - } - - /** - * Set an array of options. - * - * @param array $options - */ - public function setOptions(array $options = array()) - { - foreach ($options as $key => $value) { - $this->setOption($key, $value); - } - } - - /** - * Get all options. - * - * @return array - */ - public function getOptions() - { - return $this->options; - } - - /** - * Set an individual option. - * - * @param string $key - * @param string $value - */ - public function setOption($key, $value) - { - if ($this->optionExists($key)) { - $this->options[$key] = $value; - } - } - - /** - * Get an individual option. - * - * @param string $key - * @return string|null - */ - public function getOption($key) - { - if ($this->optionExists($key)) { - return $this->options[$key]; - } - } - - /** - * Check whether an individual option exists. - * - * @param string $key - * @return bool - */ - private function optionExists($key) - { - return array_key_exists($key, $this->getOptions()); - } - - /** - * Outputs a log message if necessary. - * - * @param string $logLevel - * @param string $message - * @param string $context - */ - public function log($level, $message, array $context = array()) - { - if ($this->outputIsUrgent($level) - || $this->getEnabled() === true - || RAXSDK_DEBUG === true - ) { - $this->dispatch($message, $context); - } - } - - /** - * Used to format the line outputted in the log file. - * - * @param string $string - * @return string - */ - private function formatFileLine($string) - { - $format = $this->getOption('dateFormat') . $this->getOption('delimeter'); - return date($format) . $string; - } - - /** - * Dispatch a log output message. - * - * @param string $message - * @param array $context - * @throws LoggingException - */ - private function dispatch($message, $context) - { - $output = $this->interpolate($message, $context) . PHP_EOL; - - if ($this->getOption('outputToFile') === true) { - $file = $this->getOption('logFile'); - - if (!is_writable($file)) { - throw new LoggingException( - 'The log file either does not exist or is not writeable' - ); - } - - // Output to file - file_put_contents($file, $this->formatFileLine($output)); - } else { - - echo $output; - } - } - -}
\ No newline at end of file diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Log/LoggerInterface.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Log/LoggerInterface.php deleted file mode 100644 index daef1b04dad..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Log/LoggerInterface.php +++ /dev/null @@ -1,134 +0,0 @@ -<?php - -// Copyright (c) 2012 PHP Framework Interoperability Group -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -namespace OpenCloud\Common\Log; - -/** - * Describes a logger instance - * - * The message MUST be a string or object implementing __toString(). - * - * The message MAY contain placeholders in the form: {foo} where foo - * will be replaced by the context data in key "foo". - * - * The context array can contain arbitrary data, the only assumption that - * can be made by implementors is that if an Exception instance is given - * to produce a stack trace, it MUST be in a key named "exception". - * - * See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md - * for the full interface specification. - */ -interface LoggerInterface -{ - /** - * System is unusable. - * - * @param string $message - * @param array $context - * @return null - */ - public function emergency($message, array $context = array()); - - /** - * Action must be taken immediately. - * - * Example: Entire website down, database unavailable, etc. This should - * trigger the SMS alerts and wake you up. - * - * @param string $message - * @param array $context - * @return null - */ - public function alert($message, array $context = array()); - - /** - * Critical conditions. - * - * Example: Application component unavailable, unexpected exception. - * - * @param string $message - * @param array $context - * @return null - */ - public function critical($message, array $context = array()); - - /** - * Runtime errors that do not require immediate action but should typically - * be logged and monitored. - * - * @param string $message - * @param array $context - * @return null - */ - public function error($message, array $context = array()); - - /** - * Exceptional occurrences that are not errors. - * - * Example: Use of deprecated APIs, poor use of an API, undesirable things - * that are not necessarily wrong. - * - * @param string $message - * @param array $context - * @return null - */ - public function warning($message, array $context = array()); - - /** - * Normal but significant events. - * - * @param string $message - * @param array $context - * @return null - */ - public function notice($message, array $context = array()); - - /** - * Interesting events. - * - * Example: User logs in, SQL logs. - * - * @param string $message - * @param array $context - * @return null - */ - public function info($message, array $context = array()); - - /** - * Detailed debug information. - * - * @param string $message - * @param array $context - * @return null - */ - public function debug($message, array $context = array()); - - /** - * Logs with an arbitrary level. - * - * @param mixed $level - * @param string $message - * @param array $context - * @return null - */ - public function log($level, $message, array $context = array()); -}
\ No newline at end of file diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Metadata.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Metadata.php deleted file mode 100644 index be6903e897e..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Metadata.php +++ /dev/null @@ -1,92 +0,0 @@ -<?php -/** - * A metadata object, used by other components in Compute and Object Storage - * - * @copyright 2012-2013 Rackspace Hosting, Inc. - * See COPYING for licensing information - * - * @package phpOpenCloud - * @version 1.0 - * @author Glen Campbell <glen.campbell@rackspace.com> - */ - -namespace OpenCloud\Common; - -/** - * The Metadata class represents either Server or Image metadata - * - * @api - * @author Glen Campbell <glen.campbell@rackspace.com> - */ -class Metadata extends Base -{ - - // array holding the names of keys that were set - private $_keylist = array(); - - /** - * This setter overrides the base one, since the metadata key can be - * anything - * - * @param string $key - * @param string $value - * @return void - */ - public function __set($key, $value) - { - // set the value and track the keys - if (!in_array($key, $this->_keylist)) { - $this->_keylist[] = $key; - } - - $this->$key = $value; - } - - /** - * Returns the list of keys defined - * - * @return array - */ - public function Keylist() - { - return $this->_keylist; - } - - /** - * Sets metadata values from an array, with optional prefix - * - * If $prefix is provided, then only array keys that match the prefix - * are set as metadata values, and $prefix is stripped from the key name. - * - * @param array $values an array of key/value pairs to set - * @param string $prefix if provided, a prefix that is used to identify - * metadata values. For example, you can set values from headers - * for a Container by using $prefix='X-Container-Meta-'. - * @return void - */ - public function setArray($values, $prefix = null) - { - if (empty($values)) { - return false; - } - - foreach ($values as $key => $value) { - if ($prefix) { - if (strpos($key, $prefix) === 0) { - $name = substr($key, strlen($prefix)); - $this->getLogger()->info( - Lang::translate('Setting [{name}] to [{value}]'), - array( - 'name' => $name, - 'value' => $value - ) - ); - $this->$name = $value; - } - } else { - $this->$key = $value; - } - } - } - -} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Nova.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Nova.php deleted file mode 100644 index fe4dcccc73f..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Nova.php +++ /dev/null @@ -1,140 +0,0 @@ -<?php - -/** - * An abstract class that defines shared components for products that use - * OpenStack Nova - * - * @copyright 2012-2013 Rackspace Hosting, Inc. - * See COPYING for licensing information - * - * @package phpOpenCloud - * @version 1.0 - * @author Glen Campbell <glen.campbell@rackspace.com> - */ - -namespace OpenCloud\Common; - -use OpenCloud\OpenStack; -use OpenCloud\Common\Lang; -use OpenCloud\Compute\Flavor; - -/** - * Nova is an abstraction layer for the OpenStack compute service. - * - * Nova is used as a basis for several products, including Compute services - * as well as Rackspace's Cloud Databases. This class is, in essence, a vehicle - * for sharing common code between those other classes. - */ -abstract class Nova extends Service -{ - - private $_url; - - /** - * Called when creating a new Compute service object - * - * _NOTE_ that the order of parameters for this is *different* from the - * parent Service class. This is because the earlier parameters are the - * ones that most typically change, whereas the later ones are not - * modified as often. - * - * @param \OpenCloud\Identity $conn - a connection object - * @param string $serviceRegion - identifies the region of this Compute - * service - * @param string $urltype - identifies the URL type ("publicURL", - * "privateURL") - * @param string $serviceName - identifies the name of the service in the - * catalog - */ - public function __construct( - OpenStack $conn, - $serviceType, - $serviceName, - $serviceRegion, - $urltype - ) { - parent::__construct( - $conn, - $serviceType, - $serviceName, - $serviceRegion, - $urltype - ); - - $this->_url = Lang::noslash(parent::Url()); - - $this->getLogger()->info(Lang::translate('Initializing Nova...')); - } - - /** - * Returns a flavor from the service - * - * This is a factory method and should generally be called instead of - * creating a Flavor object directly. - * - * @api - * @param string $id - if supplied, the Flavor identified by this is - * retrieved - * @return Compute\Flavor object - */ - public function Flavor($id = null) - { - return new Flavor($this, $id); - } - - /** - * Returns a list of Flavor objects - * - * This is a factory method and should generally be called instead of - * creating a FlavorList object directly. - * - * @api - * @param boolean $details - if TRUE (the default), returns full details. - * Set to FALSE to retrieve minimal details and possibly improve - * performance. - * @param array $filter - optional key/value pairs for creating query - * strings - * @return Collection (or FALSE on an error) - */ - public function FlavorList($details = true, array $filter = array()) - { - if ($details) { - $url = $this->Url(Flavor::ResourceName().'/detail', $filter); - } else { - $url = $this->Url(Flavor::ResourceName(), $filter); - } - return $this->Collection('\OpenCloud\Compute\Flavor', $url); - } - - /** - * Gets a request from an HTTP source and ensures that the - * content type is always "application/json" - * - * This is a simple subclass of the parent::Request() method that ensures - * that all Compute requests use application/json as the Content-Type: - * - * @param string $url - the URL of the request - * @param string $method - the HTTP method ("GET" by default) - * @param array $headers - an associative array of headers to pass to - * the request - * @param string $body - optional body for POST or PUT requests - * @return \Rackspace\HttpResult object - */ - public function Request($url, $method = 'GET', array $headers = array(), $body = null) - { - $headers['Content-Type'] = RAXSDK_CONTENT_TYPE_JSON; - return parent::Request($url, $method, $headers, $body); - } - - /** - * Loads the available namespaces from the /extensions resource - */ - protected function load_namespaces() - { - $ext = $this->Extensions(); - foreach($ext as $obj) { - $this->_namespaces[] = $obj->alias; - } - } - -} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/PersistentObject.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/PersistentObject.php deleted file mode 100644 index 0257526d709..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/PersistentObject.php +++ /dev/null @@ -1,939 +0,0 @@ -<?php -/** - * An abstraction that defines persistent objects associated with a service - * - * @copyright 2012-2013 Rackspace Hosting, Inc. - * See COPYING for licensing information - * - * @package phpOpenCloud - * @version 1.0 - * @author Glen Campbell <glen.campbell@rackspace.com> - * @author Jamie Hannaford <jamie.hannaford@rackspace.com> - */ - -namespace OpenCloud\Common; - -/** - * Represents an object that can be retrieved, created, updated and deleted. - * - * This class abstracts much of the common functionality between: - * - * * Nova servers; - * * Swift containers and objects; - * * DBAAS instances; - * * Cinder volumes; - * * and various other objects that: - * * have a URL; - * * can be created, updated, deleted, or retrieved; - * * use a standard JSON format with a top-level element followed by - * a child object with attributes. - * - * In general, you can create a persistent object class by subclassing this - * class and defining some protected, static variables: - * - * * $url_resource - the sub-resource value in the URL of the parent. For - * example, if the parent URL is `http://something/parent`, then setting this - * value to "another" would result in a URL for the persistent object of - * `http://something/parent/another`. - * - * * $json_name - the top-level JSON object name. For example, if the - * persistent object is represented by `{"foo": {"attr":value, ...}}`, then - * set $json_name to "foo". - * - * * $json_collection_name - optional; this value is the name of a collection - * of the persistent objects. If not provided, it defaults to `json_name` - * with an appended "s" (e.g., if `json_name` is "foo", then - * `json_collection_name` would be "foos"). Set this value if the collection - * name doesn't follow this pattern. - * - * * $json_collection_element - the common pattern for a collection is: - * `{"collection": [{"attr":"value",...}, {"attr":"value",...}, ...]}` - * That is, each element of the array is a \stdClass object containing the - * object's attributes. In rare instances, the objects in the array - * are named, and `json_collection_element` contains the name of the - * collection objects. For example, in this JSON response: - * `{"allowedDomain":[{"allowedDomain":{"name":"foo"}}]}`, - * `json_collection_element` would be set to "allowedDomain". - * - * The PersistentObject class supports the standard CRUD methods; if these are - * not needed (i.e. not supported by the service), the subclass should redefine - * these to call the `noCreate`, `noUpdate`, or `noDelete` methods, which will - * trigger an appropriate exception. For example, if an object cannot be created: - * - * function create($params = array()) - * { - * $this->noCreate(); - * } - */ -abstract class PersistentObject extends Base -{ - - private $service; - - private $parent; - - protected $id; - - /** - * Retrieves the instance from persistent storage - * - * @param mixed $service The service object for this resource - * @param mixed $info The ID or array/object of data - */ - public function __construct($service = null, $info = null) - { - if ($service instanceof Service) { - $this->setService($service); - } - - if (property_exists($this, 'metadata')) { - $this->metadata = new Metadata; - } - - $this->populate($info); - } - - /** - * Validates properties that have a namespace: prefix - * - * If the property prefix: appears in the list of supported extension - * namespaces, then the property is applied to the object. Otherwise, - * an exception is thrown. - * - * @param string $name the name of the property - * @param mixed $value the property's value - * @return void - * @throws AttributeError - */ - public function __set($name, $value) - { - $this->setProperty($name, $value, $this->getService()->namespaces()); - } - - /** - * Sets the service associated with this resource object. - * - * @param \OpenCloud\Common\Service $service - */ - public function setService(Service $service) - { - $this->service = $service; - return $this; - } - - /** - * Returns the service object for this resource; required for making - * requests, etc. because it has direct access to the Connection. - * - * @return \OpenCloud\Common\Service - */ - public function getService() - { - if (null === $this->service) { - throw new Exceptions\ServiceValueError( - 'No service defined' - ); - } - return $this->service; - } - - /** - * Legacy shortcut to getService - * - * @return \OpenCloud\Common\Service - */ - public function service() - { - return $this->getService(); - } - - /** - * Set the parent object for this resource. - * - * @param \OpenCloud\Common\PersistentObject $parent - */ - public function setParent(PersistentObject $parent) - { - $this->parent = $parent; - return $this; - } - - /** - * Returns the parent. - * - * @return \OpenCloud\Common\PersistentObject - */ - public function getParent() - { - if (null === $this->parent) { - $this->parent = $this->getService(); - } - return $this->parent; - } - - /** - * Legacy shortcut to getParent - * - * @return \OpenCloud\Common\PersistentObject - */ - public function parent() - { - return $this->getParent(); - } - - - - - /** - * API OPERATIONS (CRUD & CUSTOM) - */ - - /** - * Creates a new object - * - * @api - * @param array $params array of values to set when creating the object - * @return HttpResponse - * @throws VolumeCreateError if HTTP status is not Success - */ - public function create($params = array()) - { - // set parameters - if (!empty($params)) { - $this->populate($params, false); - } - - // debug - $this->getLogger()->info('{class}::Create({name})', array( - 'class' => get_class($this), - 'name' => $this->Name() - )); - - // construct the JSON - $object = $this->createJson(); - $json = json_encode($object); - $this->checkJsonError(); - - $this->getLogger()->info('{class}::Create JSON [{json}]', array( - 'class' => get_class($this), - 'json' => $json - )); - - // send the request - $response = $this->getService()->request( - $this->createUrl(), - 'POST', - array('Content-Type' => 'application/json'), - $json - ); - - // check the return code - // @codeCoverageIgnoreStart - if ($response->httpStatus() > 204) { - throw new Exceptions\CreateError(sprintf( - Lang::translate('Error creating [%s] [%s], status [%d] response [%s]'), - get_class($this), - $this->Name(), - $response->HttpStatus(), - $response->HttpBody() - )); - } - - if ($response->HttpStatus() == "201" && ($location = $response->Header('Location'))) { - // follow Location header - $this->refresh(null, $location); - } else { - // set values from response - $object = json_decode($response->httpBody()); - - if (!$this->checkJsonError()) { - $top = $this->jsonName(); - if (isset($object->$top)) { - $this->populate($object->$top); - } - } - } - // @codeCoverageIgnoreEnd - - return $response; - } - - /** - * Updates an existing object - * - * @api - * @param array $params array of values to set when updating the object - * @return HttpResponse - * @throws VolumeCreateError if HTTP status is not Success - */ - public function update($params = array()) - { - // set parameters - if (!empty($params)) { - $this->populate($params); - } - - // debug - $this->getLogger()->info('{class}::Update({name})', array( - 'class' => get_class($this), - 'name' => $this->Name() - )); - - // construct the JSON - $obj = $this->updateJson($params); - $json = json_encode($obj); - - $this->checkJsonError(); - - $this->getLogger()->info('{class}::Update JSON [{json}]', array( - 'class' => get_class($this), - 'json' => $json - )); - - // send the request - $response = $this->getService()->Request( - $this->url(), - 'PUT', - array(), - $json - ); - - // check the return code - // @codeCoverageIgnoreStart - if ($response->HttpStatus() > 204) { - throw new Exceptions\UpdateError(sprintf( - Lang::translate('Error updating [%s] with [%s], status [%d] response [%s]'), - get_class($this), - $json, - $response->HttpStatus(), - $response->HttpBody() - )); - } - // @codeCoverageIgnoreEnd - - return $response; - } - - /** - * Deletes an object - * - * @api - * @return HttpResponse - * @throws DeleteError if HTTP status is not Success - */ - public function delete() - { - $this->getLogger()->info('{class}::Delete()', array('class' => get_class($this))); - - // send the request - $response = $this->getService()->request($this->url(), 'DELETE'); - - // check the return code - // @codeCoverageIgnoreStart - if ($response->HttpStatus() > 204) { - throw new Exceptions\DeleteError(sprintf( - Lang::translate('Error deleting [%s] [%s], status [%d] response [%s]'), - get_class(), - $this->Name(), - $response->HttpStatus(), - $response->HttpBody() - )); - } - // @codeCoverageIgnoreEnd - - return $response; - } - - /** - * Returns an object for the Create() method JSON - * Must be overridden in a child class. - * - * @throws CreateError if not overridden - */ - protected function createJson() - { - throw new Exceptions\CreateError(sprintf( - Lang::translate('[%s] CreateJson() must be overridden'), - get_class($this) - )); - } - - /** - * Returns an object for the Update() method JSON - * Must be overridden in a child class. - * - * @throws UpdateError if not overridden - */ - protected function updateJson($params = array()) - { - throw new Exceptions\UpdateError(sprintf( - Lang::translate('[%s] UpdateJson() must be overridden'), - get_class($this) - )); - } - - /** - * throws a CreateError for subclasses that don't support Create - * - * @throws CreateError - */ - protected function noCreate() - { - throw new Exceptions\CreateError(sprintf( - Lang::translate('[%s] does not support Create()'), - get_class() - )); - } - - /** - * throws a DeleteError for subclasses that don't support Delete - * - * @throws DeleteError - */ - protected function noDelete() - { - throw new Exceptions\DeleteError(sprintf( - Lang::translate('[%s] does not support Delete()'), - get_class() - )); - } - - /** - * throws a UpdateError for subclasses that don't support Update - * - * @throws UpdateError - */ - protected function noUpdate() - { - throw new Exceptions\UpdateError(sprintf( - Lang::translate('[%s] does not support Update()'), - get_class() - )); - } - - /** - * Returns the default URL of the object - * - * This may have to be overridden in subclasses. - * - * @param string $subresource optional sub-resource string - * @param array $qstr optional k/v pairs for query strings - * @return string - * @throws UrlError if URL is not defined - */ - public function url($subresource = null, $queryString = array()) - { - // find the primary key attribute name - $primaryKey = $this->primaryKeyField(); - - // first, see if we have a [self] link - $url = $this->findLink('self'); - - /** - * Next, check to see if we have an ID - * Note that we use Parent() instead of Service(), since the parent - * object might not be a service. - */ - if (!$url && $this->$primaryKey) { - $url = Lang::noslash($this->getParent()->url($this->resourceName())) . '/' . $this->$primaryKey; - } - - // add the subresource - if ($url) { - $url .= $subresource ? "/$subresource" : ''; - if (count($queryString)) { - $url .= '?' . $this->makeQueryString($queryString); - } - return $url; - } - - // otherwise, we don't have a URL yet - throw new Exceptions\UrlError(sprintf( - Lang::translate('%s does not have a URL yet'), - get_class($this) - )); - } - - /** - * Waits for the server/instance status to change - * - * This function repeatedly polls the system for a change in server - * status. Once the status reaches the `$terminal` value (or 'ERROR'), - * then the function returns. - * - * The polling interval is set by the constant RAXSDK_POLL_INTERVAL. - * - * The function will automatically terminate after RAXSDK_SERVER_MAXTIMEOUT - * seconds elapse. - * - * @api - * @param string $terminal the terminal state to wait for - * @param integer $timeout the max time (in seconds) to wait - * @param callable $callback a callback function that is invoked with - * each repetition of the polling sequence. This can be used, for - * example, to update a status display or to permit other operations - * to continue - * @return void - */ - public function waitFor( - $terminal = 'ACTIVE', - $timeout = RAXSDK_SERVER_MAXTIMEOUT, - $callback = NULL, - $sleep = RAXSDK_POLL_INTERVAL - ) { - // find the primary key field - $primaryKey = $this->PrimaryKeyField(); - - // save stats - $startTime = time(); - - $states = array('ERROR', $terminal); - - while (true) { - - $this->refresh($this->$primaryKey); - - if ($callback) { - call_user_func($callback, $this); - } - - if (in_array($this->status(), $states) || (time() - $startTime) > $timeout) { - return; - } - // @codeCoverageIgnoreStart - sleep($sleep); - } - } - // @codeCoverageIgnoreEnd - - /** - * Refreshes the object from the origin (useful when the server is - * changing states) - * - * @return void - * @throws IdRequiredError - */ - public function refresh($id = null, $url = null) - { - $primaryKey = $this->PrimaryKeyField(); - - if (!$url) { - if ($id === null) { - $id = $this->$primaryKey; - } - - if (!$id) { - throw new Exceptions\IdRequiredError(sprintf( - Lang::translate('%s has no ID; cannot be refreshed'), - get_class()) - ); - } - - // retrieve it - $this->getLogger()->info(Lang::translate('{class} id [{id}]'), array( - 'class' => get_class($this), - 'id' => $id - )); - - $this->$primaryKey = $id; - $url = $this->url(); - } - - // reset status, if available - if (property_exists($this, 'status')) { - $this->status = null; - } - - // perform a GET on the URL - $response = $this->getService()->Request($url); - - // check status codes - // @codeCoverageIgnoreStart - if ($response->HttpStatus() == 404) { - throw new Exceptions\InstanceNotFound( - sprintf(Lang::translate('%s [%s] not found [%s]'), - get_class($this), - $this->$primaryKey, - $url - )); - } - - if ($response->HttpStatus() >= 300) { - throw new Exceptions\UnknownError( - sprintf(Lang::translate('Unexpected %s error [%d] [%s]'), - get_class($this), - $response->HttpStatus(), - $response->HttpBody() - )); - } - - // check for empty response - if (!$response->HttpBody()) { - throw new Exceptions\EmptyResponseError( - sprintf(Lang::translate('%s::Refresh() unexpected empty response, URL [%s]'), - get_class($this), - $url - )); - } - - // we're ok, reload the response - if ($json = $response->HttpBody()) { - - $this->getLogger()->info('refresh() JSON [{json}]', array('json' => $json)); - - $response = json_decode($json); - - if ($this->CheckJsonError()) { - throw new Exceptions\ServerJsonError(sprintf( - Lang::translate('JSON parse error on %s refresh'), - get_class($this) - )); - } - - $top = $this->JsonName(); - - if ($top && isset($response->$top)) { - $content = $response->$top; - } else { - $content = $response; - } - - $this->populate($content); - - } - // @codeCoverageIgnoreEnd - } - - - /** - * OBJECT INFORMATION - */ - - /** - * Returns the displayable name of the object - * - * Can be overridden by child objects; *must* be overridden by child - * objects if the object does not have a `name` attribute defined. - * - * @api - * @return string - * @throws NameError if attribute 'name' is not defined - */ - public function name() - { - if (property_exists($this, 'name')) { - return $this->name; - } else { - throw new Exceptions\NameError(sprintf( - Lang::translate('Name attribute does not exist for [%s]'), - get_class($this) - )); - } - } - - /** - * Sends the json string to the /action resource - * - * This is used for many purposes, such as rebooting the server, - * setting the root password, creating images, etc. - * Since it can only be used on a live server, it checks for a valid ID. - * - * @param $object - this will be encoded as json, and we handle all the JSON - * error-checking in one place - * @throws ServerIdError if server ID is not defined - * @throws ServerActionError on other errors - * @returns boolean; TRUE if successful, FALSE otherwise - */ - protected function action($object) - { - $primaryKey = $this->primaryKeyField(); - - if (!$this->$primaryKey) { - throw new Exceptions\IdRequiredError(sprintf( - Lang::translate('%s is not defined'), - get_class($this) - )); - } - - if (!is_object($object)) { - throw new Exceptions\ServerActionError(sprintf( - Lang::translate('%s::Action() requires an object as its parameter'), - get_class($this) - )); - } - - // convert the object to json - $json = json_encode($object); - $this->getLogger()->info('JSON [{string}]', array('json' => $json)); - - $this->checkJsonError(); - - // debug - save the request - $this->getLogger()->info(Lang::translate('{class}::action [{json}]'), array( - 'class' => get_class($this), - 'json' => $json - )); - - // get the URL for the POST message - $url = $this->url('action'); - - // POST the message - $response = $this->getService()->request($url, 'POST', array(), $json); - - // @codeCoverageIgnoreStart - if (!is_object($response)) { - throw new Exceptions\HttpError(sprintf( - Lang::translate('Invalid response for %s::Action() request'), - get_class($this) - )); - } - - // check for errors - if ($response->HttpStatus() >= 300) { - throw new Exceptions\ServerActionError(sprintf( - Lang::translate('%s::Action() [%s] failed; response [%s]'), - get_class($this), - $url, - $response->HttpBody() - )); - } - // @codeCoverageIgnoreStart - - return $response; - } - - /** - * Execute a custom resource request. - * - * @param string $path - * @param string $method - * @param string|array|object $body - * @return boolean - * @throws Exceptions\InvalidArgumentError - * @throws Exceptions\HttpError - * @throws Exceptions\ServerActionError - */ - public function customAction($url, $method = 'GET', $body = null) - { - if (is_string($body) && (json_decode($body) === null)) { - throw new Exceptions\InvalidArgumentError( - 'Please provide either a well-formed JSON string, or an object ' - . 'for JSON serialization' - ); - } else { - $body = json_encode($body); - } - - // POST the message - $response = $this->service()->request($url, $method, array(), $body); - - if (!is_object($response)) { - throw new Exceptions\HttpError(sprintf( - Lang::translate('Invalid response for %s::customAction() request'), - get_class($this) - )); - } - - // check for errors - // @codeCoverageIgnoreStart - if ($response->HttpStatus() >= 300) { - throw new Exceptions\ServerActionError(sprintf( - Lang::translate('%s::customAction() [%s] failed; response [%s]'), - get_class($this), - $url, - $response->HttpBody() - )); - } - // @codeCoverageIgnoreEnd - - $object = json_decode($response->httpBody()); - - $this->checkJsonError(); - - return $object; - } - - /** - * returns the object's status or `N/A` if not available - * - * @api - * @return string - */ - public function status() - { - return (isset($this->status)) ? $this->status : 'N/A'; - } - - /** - * returns the object's identifier - * - * Can be overridden by a child class if the identifier is not in the - * `$id` property. Use of this function permits the `$id` attribute to - * be protected or private to prevent unauthorized overwriting for - * security. - * - * @api - * @return string - */ - public function id() - { - return $this->id; - } - - /** - * checks for `$alias` in extensions and throws an error if not present - * - * @throws UnsupportedExtensionError - */ - public function checkExtension($alias) - { - if (!in_array($alias, $this->getService()->namespaces())) { - throw new Exceptions\UnsupportedExtensionError(sprintf( - Lang::translate('Extension [%s] is not installed'), - $alias - )); - } - - return true; - } - - /** - * returns the region associated with the object - * - * navigates to the parent service to determine the region. - * - * @api - */ - public function region() - { - return $this->getService()->Region(); - } - - /** - * Since each server can have multiple links, this returns the desired one - * - * @param string $type - 'self' is most common; use 'bookmark' for - * the version-independent one - * @return string the URL from the links block - */ - public function findLink($type = 'self') - { - if (empty($this->links)) { - return false; - } - - foreach ($this->links as $link) { - if ($link->rel == $type) { - return $link->href; - } - } - - return false; - } - - /** - * returns the URL used for Create - * - * @return string - */ - protected function createUrl() - { - return $this->getParent()->Url($this->ResourceName()); - } - - /** - * Returns the primary key field for the object - * - * The primary key is usually 'id', but this function is provided so that - * (in rare cases where it is not 'id'), it can be overridden. - * - * @return string - */ - protected function primaryKeyField() - { - return 'id'; - } - - /** - * Returns the top-level document identifier for the returned response - * JSON document; must be overridden in child classes - * - * For example, a server document is (JSON) `{"server": ...}` and an - * Instance document is `{"instance": ...}` - this function must return - * the top level document name (either "server" or "instance", in - * these examples). - * - * @throws DocumentError if not overridden - */ - public static function jsonName() - { - if (isset(static::$json_name)) { - return static::$json_name; - } - - throw new Exceptions\DocumentError(sprintf( - Lang::translate('No JSON object defined for class [%s] in JsonName()'), - get_class() - )); - } - - /** - * returns the collection JSON element name - * - * When an object is returned in a collection, it usually has a top-level - * object that is an array holding child objects of the object types. - * This static function returns the name of the top-level element. Usually, - * that top-level element is simply the JSON name of the resource.'s'; - * however, it can be overridden by specifying the $json_collection_name - * attribute. - * - * @return string - */ - public static function jsonCollectionName() - { - if (isset(static::$json_collection_name)) { - return static::$json_collection_name; - } else { - return static::$json_name . 's'; - } - } - - /** - * returns the JSON name for each element in a collection - * - * Usually, elements in a collection are anonymous; this function, however, - * provides for an element level name: - * - * `{ "collection" : [ { "element" : ... } ] }` - * - * @return string - */ - public static function jsonCollectionElement() - { - if (isset(static::$json_collection_element)) { - return static::$json_collection_element; - } - } - - /** - * Returns the resource name for the URL of the object; must be overridden - * in child classes - * - * For example, a server is `/servers/`, a database instance is - * `/instances/`. Must be overridden in child classes. - * - * @throws UrlError - */ - public static function resourceName() - { - if (isset(static::$url_resource)) { - return static::$url_resource; - } - - throw new Exceptions\UrlError(sprintf( - Lang::translate('No URL resource defined for class [%s] in ResourceName()'), - get_class() - )); - } - -}
\ No newline at end of file diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Request/Curl.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Request/Curl.php deleted file mode 100644 index bb829afc5f6..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Request/Curl.php +++ /dev/null @@ -1,308 +0,0 @@ -<?php - -namespace OpenCloud\Common\Request; - -use OpenCloud\Common\Base; -use OpenCloud\Common\Lang; -use OpenCloud\Common\Exceptions\HttpRetryError; -use OpenCloud\Common\Exceptions\HttpUrlError; -use OpenCloud\Common\Exceptions\HttpTimeoutError; -use OpenCloud\Common\Exceptions\HttpError; - -/** - * The CurlRequest class is a simple wrapper to CURL functions. Not only does - * this permit stubbing of the interface as described under the HttpRequest - * interface, it could potentially allow us to replace the interface methods - * with other function calls in the future. - * - * @api - * @author Glen Campbell <glen.campbell@rackspace.com> - */ -class Curl extends Base implements HttpRequestInterface -{ - - private $url; - private $method; - private $handle; - private $retries = 0; - private $headers = array(); - private $returnheaders = array(); - - /** - * Initializes the CURL handle and HTTP method - * - * The constructor also sets a number of default values for options. - * - * @param string $url the URL to connect to - * @param string $method the HTTP method (default "GET") - * @param array $options optional hashed array of options => value pairs - */ - public function __construct($url, $method = 'GET', array $options = array()) - { - $this->url = $url; - $this->method = $method; - $this->handle = curl_init($url); - - // set our options - $this->setOption(CURLOPT_CUSTOMREQUEST, $method); - - foreach($options as $opt => $value) { - $this->getLogger()->info(Lang::translate('Setting option {key}={val}'), array( - 'key' => $opt, - 'val' => $value - )); - $this->setOption($opt, $value); - } - - // @codeCoverageIgnoreStart - if (RAXSDK_SSL_VERIFYHOST != 2) { - $this->getLogger()->warning("WARNING: RAXSDK_SSL_VERIFYHOST has reduced security, value [{value}]", array( - 'value' => RAXSDK_SSL_VERIFYHOST - )); - } - - if (RAXSDK_SSL_VERIFYPEER !== true) { - $this->getLogger()->warning("WARNING: RAXSDK_SSL_VERIFYPEER has reduced security"); - } - // @codeCoverageIgnoreEnd - - $this->setOption(CURLOPT_SSL_VERIFYHOST, RAXSDK_SSL_VERIFYHOST); - $this->setOption(CURLOPT_SSL_VERIFYPEER, RAXSDK_SSL_VERIFYPEER); - - if (defined('RAXSDK_CACERTPEM') && file_exists(RAXSDK_CACERTPEM)) { - $this->setOption(CURLOPT_CAINFO, RAXSDK_CACERTPEM); - } - - // curl code [18] - // message [transfer closed with x bytes remaining to read] - if ($method === 'HEAD') { - $this->setOption(CURLOPT_NOBODY, true); - } - - // follow redirects - $this->setOption(CURLOPT_FOLLOWLOCATION, true); - - // don't return the headers in the request - $this->setOption(CURLOPT_HEADER, false); - - // retrieve headers via callback - $this->setOption(CURLOPT_HEADERFUNCTION, array($this, '_get_header_cb')); - - // return the entire request on curl_exec() - $this->setOption(CURLOPT_RETURNTRANSFER, true); - - // set default timeouts - $this->setConnectTimeout(RAXSDK_CONNECTTIMEOUT); - $this->setHttpTimeout(RAXSDK_TIMEOUT); - } - - /** - * Sets a CURL option - * - * @param const $name - a CURL named constant; e.g. CURLOPT_TIMEOUT - * @param mixed $value - the value for the option - */ - public function setOption($name, $value) - { - return curl_setopt($this->handle, $name, $value); - } - - /** - * Explicit method for setting the connect timeout - * - * The connect timeout is the time it takes for the initial connection - * request to be established. It is different than the HTTP timeout, which - * is the time for the entire request to be serviced. - * - * @param integer $value The connection timeout in seconds. - * Use 0 to wait indefinitely (NOT recommended) - */ - public function setConnectTimeout($value) - { - $this->setOption(CURLOPT_CONNECTTIMEOUT, $value); - } - - /** - * Explicit method for setting the HTTP timeout - * - * The HTTP timeout is the time it takes for the HTTP request to be - * serviced. This value is usually larger than the connect timeout - * value. - * - * @param integer $value - the number of seconds to wait before timing out - * the HTTP request. - */ - public function setHttpTimeout($value) - { - $this->setOption(CURLOPT_TIMEOUT, $value); - } - - /** - * Sets the number of retries - * - * If you set this to a non-zero value, then it will repeat the request - * up to that number. - */ - public function setRetries($value) - { - $this->retries = $value; - } - - /** - * Simplified method for setting lots of headers at once - * - * This method takes an associative array of header/value pairs and calls - * the setheader() method on each of them. - * - * @param array $arr an associative array of headers - */ - public function setheaders($array) - { - if (!is_array($array)) { - throw new HttpError(Lang::translate( - 'Value passed to CurlRequest::setheaders() must be array' - )); - } - - foreach ($array as $name => $value) { - $this->setHeader($name, $value); - } - } - - /** - * Sets a single header - * - * For example, to set the content type to JSON: - * `$request->SetHeader('Content-Type','application/json');` - * - * @param string $name The name of the header - * @param mixed $value The value of the header - */ - public function setHeader($name, $value) - { - $this->headers[$name] = $value; - } - - /** - * Executes the current request - * - * This method actually performs the request using the values set - * previously. It throws a OpenCloud\HttpError exception on - * any CURL error. - * - * @return OpenCloud\HttpResponse - * @throws OpenCloud\HttpError - * - * @codeCoverageIgnore - */ - public function execute() - { - // set all the headers - $headarr = array(); - - foreach ($this->headers as $name => $value) { - $headarr[] = $name.': '.$value; - } - - $this->setOption(CURLOPT_HTTPHEADER, $headarr); - - // set up to retry if necessary - $try_counter = 0; - - do { - $data = curl_exec($this->handle); - if (curl_errno($this->handle) && ($try_counter<$this->retries)) { - $this->getLogger()->info(Lang::translate('Curl error [%d]; retrying [%s]'), array( - 'error' => curl_errno($this->handle), - 'url' => $this->url - )); - } - - } while((++$try_counter <= $this->retries) && (curl_errno($this->handle) != 0)); - - // log retries error - if ($this->retries && curl_errno($this->handle)) { - throw new HttpRetryError(sprintf( - Lang::translate('No more retries available, last error [%d]'), - curl_errno($this->handle) - )); - } - - // check for CURL errors - switch(curl_errno($this->handle)) { - case 0: - // everything's ok - break; - case 3: - throw new HttpUrlError(sprintf(Lang::translate('Malformed URL [%s]'), $this->url)); - break; - case 28: - // timeout - throw new HttpTimeoutError(Lang::translate('Operation timed out; check RAXSDK_TIMEOUT value')); - break; - default: - throw new HttpError(sprintf( - Lang::translate('HTTP error on [%s], curl code [%d] message [%s]'), - $this->url, - curl_errno($this->handle), - curl_error($this->handle) - )); - } - - // otherwise, return the HttpResponse - return new Response\Http($this, $data); - } - - /** - * returns an array of information about the request - */ - public function info() - { - return curl_getinfo($this->handle); - } - - /** - * returns the most recent CURL error number - */ - public function errno() - { - return curl_errno($this->handle); - } - - /** - * returns the most recent CURL error string - */ - public function error() - { - return curl_error($this->handle); - } - - /** - * Closes the HTTP request - */ - public function close() - { - return curl_close($this->handle); - } - - /** - * Returns the headers as an array - */ - public function returnHeaders() - { - return $this->returnheaders; - } - - /** - * This is a callback method used to handle the returned HTTP headers - * - * @param mixed $ch a CURL handle - * @param string $header the header string in its entirety - */ - public function _get_header_cb($ch, $header) - { - $this->returnheaders[] = $header; - return strlen($header); - } - -} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Request/HttpRequestInterface.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Request/HttpRequestInterface.php deleted file mode 100644 index cbe3b5412a1..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Request/HttpRequestInterface.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php - -namespace OpenCloud\Common\Request; - -/** - * The HttpRequest interface defines methods for wrapping CURL; this allows - * those methods to be stubbed out for unit testing, thus allowing us to - * test without actually making live calls. - */ -interface HttpRequestInterface -{ - - public function SetOption($name, $value); - - public function setheaders($arr); - - public function SetHeader($header, $value); - - public function Execute(); - - public function close(); - -} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Request/Response/Blank.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Request/Response/Blank.php deleted file mode 100644 index 0c79adcef3a..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Request/Response/Blank.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php - -namespace OpenCloud\Common\Request\Response; - -class Blank extends Http -{ - public $errno; - public $error; - public $info; - public $body; - public $headers = array(); - public $status = 200; - public $rawdata; - - public function __construct(array $values = array()) - { - foreach($values as $name => $value) { - $this->$name = $value; - } - } - - public function httpStatus() - { - return $this->status; - } - -}
\ No newline at end of file diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Request/Response/Http.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Request/Response/Http.php deleted file mode 100644 index a7cb9e96346..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Request/Response/Http.php +++ /dev/null @@ -1,140 +0,0 @@ -<?php - -namespace OpenCloud\Common\Request\Response; - -use OpenCloud\Common\Base; - -/** - * The HttpResponse returns an object with status information, separated - * headers, and any response body necessary. - * - * @api - * @author Glen Campbell <glen.campbell@rackspace.com> - */ - -class Http extends Base -{ - - private $errno; - private $error; - private $info = array(); - protected $body; - protected $headers = array(); - - /** - * The constructor parses everything necessary - */ - public function __construct($request, $data) - { - // save the raw data (who knows? we might need it) - $this->setBody($data); - - // and split each line into name: value pairs - foreach($request->returnHeaders() as $line) { - if (preg_match('/^([^:]+):\s+(.+?)\s*$/', $line, $matches)) { - $this->headers[$matches[1]] = $matches[2]; - } else { - $this->headers[$line] = trim($line); - } - } - - // @codeCoverageIgnoreStart - if (isset($this->headers['Cache-Control'])) { - $this->getLogger()->info('Cache-Control: {header}', array( - 'headers' => $this->headers['Cache-Control'] - )); - } - if (isset($this->headers['Expires'])) { - $this->getLogger()->info('Expires: {header}', array( - 'headers' => $this->headers['Expires'] - )); - } - // @codeCoverageIgnoreEnd - - // set some other data - $this->info = $request->info(); - $this->errno = $request->errno(); - $this->error = $request->error(); - } - - /** - * Returns the full body of the request - * - * @return string - */ - public function httpBody() - { - return $this->body; - } - - /** - * Sets the body. - * - * @param string $body - */ - public function setBody($body) - { - $this->body = $body; - } - - /** - * Returns an array of headers - * - * @return associative array('header'=>value) - */ - public function headers() - { - return $this->headers; - } - - /** - * Returns a single header - * - * @return string with the value of the requested header, or NULL - */ - public function header($name) - { - return isset($this->headers[$name]) ? $this->headers[$name] : null; - } - - /** - * Returns an array of information - * - * @return array - */ - public function info() - { - return $this->info; - } - - /** - * Returns the most recent error number - * - * @return integer - */ - public function errno() - { - return $this->errno; - } - - /** - * Returns the most recent error message - * - * @return string - */ - public function error() - { - return $this->error; - } - - /** - * Returns the HTTP status code - * - * @return integer - */ - public function httpStatus() - { - return $this->info['http_code']; - } - -} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Service.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Service.php deleted file mode 100644 index 5b3aa729a97..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/Service.php +++ /dev/null @@ -1,489 +0,0 @@ -<?php -/** - * PHP OpenCloud library. - * - * @copyright Copyright 2013 Rackspace US, Inc. See COPYING for licensing information. - * @license https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0 - * @version 1.6.0 - * @author Jamie Hannaford <jamie.hannaford@rackspace.com> - */ - -namespace OpenCloud\Common; - -use OpenCloud\Common\Base; -use OpenCloud\Common\Lang; -use OpenCloud\OpenStack; -use OpenCloud\Common\Exceptions; - -/** - * This class defines a cloud service; a relationship between a specific OpenStack - * and a provided service, represented by a URL in the service catalog. - * - * Because Service is an abstract class, it cannot be called directly. Provider - * services such as Rackspace Cloud Servers or OpenStack Swift are each - * subclassed from Service. - * - * @author Glen Campbell <glen.campbell@rackspace.com> - */ - -abstract class Service extends Base -{ - - protected $conn; - private $service_type; - private $service_name; - private $service_region; - private $service_url; - - protected $_namespaces = array(); - - /** - * Creates a service on the specified connection - * - * Usage: `$x = new Service($conn, $type, $name, $region, $urltype);` - * The service's URL is defined in the OpenStack's serviceCatalog; it - * uses the $type, $name, $region, and $urltype to find the proper URL - * and set it. If it cannot find a URL in the service catalog that matches - * the criteria, then an exception is thrown. - * - * @param OpenStack $conn - a Connection object - * @param string $type - the service type (e.g., "compute") - * @param string $name - the service name (e.g., "cloudServersOpenStack") - * @param string $region - the region (e.g., "ORD") - * @param string $urltype - the specified URL from the catalog - * (e.g., "publicURL") - */ - public function __construct( - OpenStack $conn, - $type, - $name, - $region, - $urltype = RAXSDK_URL_PUBLIC, - $customServiceUrl = null - ) { - $this->setConnection($conn); - $this->service_type = $type; - $this->service_name = $name; - $this->service_region = $region; - $this->service_url = $customServiceUrl ?: $this->getEndpoint($type, $name, $region, $urltype); - } - - /** - * Set this service's connection. - * - * @param type $connection - */ - public function setConnection($connection) - { - $this->conn = $connection; - } - - /** - * Get this service's connection. - * - * @return type - */ - public function getConnection() - { - return $this->conn; - } - - /** - * Returns the URL for the Service - * - * @param string $resource optional sub-resource - * @param array $query optional k/v pairs for query strings - * @return string - */ - public function url($resource = '', array $param = array()) - { - $baseurl = $this->service_url; - - // use strlen instead of boolean test because '0' is a valid name - if (strlen($resource) > 0) { - $baseurl = Lang::noslash($baseurl).'/'.$resource; - } - - if (!empty($param)) { - $baseurl .= '?'.$this->MakeQueryString($param); - } - - return $baseurl; - } - - /** - * Returns the /extensions for the service - * - * @api - * @return array of objects - */ - public function extensions() - { - $ext = $this->getMetaUrl('extensions'); - return (is_object($ext) && isset($ext->extensions)) ? $ext->extensions : array(); - } - - /** - * Returns the /limits for the service - * - * @api - * @return array of limits - */ - public function limits() - { - $limits = $this->getMetaUrl('limits'); - return (is_object($limits)) ? $limits->limits : array(); - } - - /** - * Performs an authenticated request - * - * This method handles the addition of authentication headers to each - * request. It always adds the X-Auth-Token: header and will add the - * X-Auth-Project-Id: header if there is a tenant defined on the - * connection. - * - * @param string $url The URL of the request - * @param string $method The HTTP method (defaults to "GET") - * @param array $headers An associative array of headers - * @param string $body An optional body for POST/PUT requests - * @return \OpenCloud\HttpResult - */ - public function request( - $url, - $method = 'GET', - array $headers = array(), - $body = null - ) { - - $headers['X-Auth-Token'] = $this->conn->Token(); - - if ($tenant = $this->conn->Tenant()) { - $headers['X-Auth-Project-Id'] = $tenant; - } - - return $this->conn->request($url, $method, $headers, $body); - } - - /** - * returns a collection of objects - * - * @param string $class the class of objects to fetch - * @param string $url (optional) the URL to retrieve - * @param mixed $parent (optional) the parent service/object - * @return OpenCloud\Common\Collection - */ - public function collection($class, $url = null, $parent = null) - { - // Set the element names - $collectionName = $class::JsonCollectionName(); - $elementName = $class::JsonCollectionElement(); - - // Set the parent if empty - if (!$parent) { - $parent = $this; - } - - // Set the URL if empty - if (!$url) { - $url = $parent->url($class::ResourceName()); - } - - // Save debug info - $this->getLogger()->info( - '{class}:Collection({url}, {collectionClass}, {collectionName})', - array( - 'class' => get_class($this), - 'url' => $url, - 'collectionClass' => $class, - 'collectionName' => $collectionName - ) - ); - - // Fetch the list - $response = $this->request($url); - - $this->getLogger()->info('Response {status} [{body}]', array( - 'status' => $response->httpStatus(), - 'body' => $response->httpBody() - )); - - // Check return code - if ($response->httpStatus() > 204) { - throw new Exceptions\CollectionError(sprintf( - Lang::translate('Unable to retrieve [%s] list from [%s], status [%d] response [%s]'), - $class, - $url, - $response->httpStatus(), - $response->httpBody() - )); - } - - // Handle empty response - if (strlen($response->httpBody()) == 0) { - return new Collection($parent, $class, array()); - } - - // Parse the return - $object = json_decode($response->httpBody()); - $this->checkJsonError(); - - // See if there's a "next" link - // Note: not sure if the current API offers links as top-level structures; - // might have to refactor to allow $nextPageUrl as method argument - // @codeCoverageIgnoreStart - if (isset($object->links) && is_array($object->links)) { - foreach($object->links as $link) { - if (isset($link->rel) && $link->rel == 'next') { - if (isset($link->href)) { - $nextPageUrl = $link->href; - } else { - $this->getLogger()->warning( - 'Unexpected [links] found with no [href]' - ); - } - } - } - } - // @codeCoverageIgnoreEnd - - // How should we populate the collection? - $data = array(); - - if (!$collectionName) { - // No element name, just a plain object - // @codeCoverageIgnoreStart - $data = $object; - // @codeCoverageIgnoreEnd - } elseif (isset($object->$collectionName)) { - if (!$elementName) { - // The object has a top-level collection name only - $data = $object->$collectionName; - } else { - // The object has element levels which need to be iterated over - $data = array(); - foreach($object->$collectionName as $item) { - $subValues = $item->$elementName; - unset($item->$elementName); - $data[] = array_merge((array)$item, (array)$subValues); - } - } - } - - $collectionObject = new Collection($parent, $class, $data); - - // if there's a $nextPageUrl, then we need to establish a callback - // @codeCoverageIgnoreStart - if (!empty($nextPageUrl)) { - $collectionObject->setNextPageCallback(array($this, 'Collection'), $nextPageUrl); - } - // @codeCoverageIgnoreEnd - - return $collectionObject; - } - - /** - * returns the Region associated with the service - * - * @api - * @return string - */ - public function region() - { - return $this->service_region; - } - - /** - * returns the serviceName associated with the service - * - * This is used by DNS for PTR record lookups - * - * @api - * @return string - */ - public function name() - { - return $this->service_name; - } - - /** - * Returns a list of supported namespaces - * - * @return array - */ - public function namespaces() - { - return (isset($this->_namespaces) && is_array($this->_namespaces)) ? $this->_namespaces : array(); - } - - /** - * Given a service type, name, and region, return the url - * - * This function ensures that services are represented by an entry in the - * service catalog, and NOT by an arbitrarily-constructed URL. - * - * Note that it will always return the first match found in the - * service catalog (there *should* be only one, but you never know...) - * - * @param string $type The OpenStack service type ("compute" or - * "object-store", for example - * @param string $name The name of the service in the service catlog - * @param string $region The region of the service - * @param string $urltype The URL type; defaults to "publicURL" - * @return string The URL of the service - */ - private function getEndpoint($type, $name, $region, $urltype = 'publicURL') - { - $catalog = $this->getConnection()->serviceCatalog(); - - // Search each service to find The One - foreach ($catalog as $service) { - // Find the service by comparing the type ("compute") and name ("openstack") - if (!strcasecmp($service->type, $type) && !strcasecmp($service->name, $name)) { - foreach($service->endpoints as $endpoint) { - // Only set the URL if: - // a. It is a regionless service (i.e. no region key set) - // b. The region matches the one we want - if (isset($endpoint->$urltype) && - (!isset($endpoint->region) || !strcasecmp($endpoint->region, $region)) - ) { - $url = $endpoint->$urltype; - } - } - } - } - - // error if not found - if (empty($url)) { - throw new Exceptions\EndpointError(sprintf( - 'No endpoints for service type [%s], name [%s], region [%s] and urlType [%s]', - $type, - $name, - $region, - $urltype - )); - } - - return $url; - } - - /** - * Constructs a specified URL from the subresource - * - * Given a subresource (e.g., "extensions"), this constructs the proper - * URL and retrieves the resource. - * - * @param string $resource The resource requested; should NOT have slashes - * at the beginning or end - * @return \stdClass object - */ - private function getMetaUrl($resource) - { - $urlBase = $this->getEndpoint( - $this->service_type, - $this->service_name, - $this->service_region, - RAXSDK_URL_PUBLIC - ); - - $url = Lang::noslash($urlBase) . '/' . $resource; - - $response = $this->request($url); - - // check for NOT FOUND response - if ($response->httpStatus() == 404) { - return array(); - } - - // @codeCoverageIgnoreStart - if ($response->httpStatus() >= 300) { - throw new Exceptions\HttpError(sprintf( - Lang::translate('Error accessing [%s] - status [%d], response [%s]'), - $urlBase, - $response->httpStatus(), - $response->httpBody() - )); - } - // @codeCoverageIgnoreEnd - - // we're good; proceed - $object = json_decode($response->httpBody()); - - $this->checkJsonError(); - - return $object; - } - - /** - * Get all associated resources for this service. - * - * @access public - * @return void - */ - public function getResources() - { - return $this->resources; - } - - /** - * Internal method for accessing child namespace from parent scope. - * - * @return type - */ - protected function getCurrentNamespace() - { - $namespace = get_class($this); - return substr($namespace, 0, strrpos($namespace, '\\')); - } - - /** - * Resolves fully-qualified classname for associated local resource. - * - * @param string $resourceName - * @return string - */ - protected function resolveResourceClass($resourceName) - { - $className = substr_count($resourceName, '\\') - ? $resourceName - : $this->getCurrentNamespace() . '\\Resource\\' . ucfirst($resourceName); - - if (!class_exists($className)) { - throw new Exceptions\UnrecognizedServiceError(sprintf( - '%s resource does not exist, please try one of the following: %s', - $resourceName, - implode(', ', $this->getResources()) - )); - } - - return $className; - } - - /** - * Factory method for instantiating resource objects. - * - * @access public - * @param string $resourceName - * @param mixed $info (default: null) - * @return object - */ - public function resource($resourceName, $info = null) - { - $className = $this->resolveResourceClass($resourceName); - return new $className($this, $info); - } - - /** - * Factory method for instantiate a resource collection. - * - * @param string $resourceName - * @param string|null $url - * @return Collection - */ - public function resourceList($resourceName, $url = null, $service = null) - { - $className = $this->resolveResourceClass($resourceName); - return $this->collection($className, $url, $service); - } - -} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/ServiceCatalogItem.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/ServiceCatalogItem.php deleted file mode 100644 index 3e20bcbc7b9..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Common/ServiceCatalogItem.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -namespace OpenCloud\Common; - -/** - * Holds information on a single service from the Service Catalog - */ -class ServiceCatalogItem -{ - - public function __construct($info = array()) - { - foreach($info as $key => $value) { - $this->$key = $value; - } - } - -} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Globals.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Globals.php deleted file mode 100644 index fbdc4355e02..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Globals.php +++ /dev/null @@ -1,252 +0,0 @@ -<?php -/** - * Defines global constants and functions - * - * @copyright 2012-2013 Rackspace Hosting, Inc. - * See COPYING for licensing information - * - * @package phpOpenCloud - * @version 1.0 - * @author Glen Campbell <glen.campbell@rackspace.com> - */ - -namespace OpenCloud; - -/** - * This file contains only configuration data such as constants. - * You can override these constants by defining them BEFORE you including - * any of the top-level files from the SDK. - * - * Definitions: - * * RAXSDK_TIMEZONE - the default timezone for interpreting date/time requests - * * RAXSDK_STRICT_PROPERTY_CHECKS - if TRUE, the library will strictly enforce - * property names on objects; only properties that are pre-defined or - * appear in the extensions aliases for the service will be permitted. - * When FALSE (the default), then any property can be set on an object. - * * RAXSDK_COMPUTE_NAME - the default name for the compute service - * * RAXSDK_COMPUTE_REGION - the default region for the compute service - * * RAXSDK_COMPUTE_URLTYPE - the default URL type for the compute service - * * RAXSDK_OBJSTORE_NAME - the default name for the object storage service - * * RAXSDK_OBJSTORE_REGION - the default region for the object storage service - * * RAXSDK_OBJSTORE_URLTYPE - the default URL type for the object storage - * service - * * RAXSDK_DATABASE_NAME - the default name for the DbService service - * * RAXSDK_DATABASE_REGION - the default region for the DbService service - * * RAXSDK_DATABASE_URLTYPE - the default URL type for the DbService service - * * RAXSDK_CONNECTTIMEOUT - the time (in seconds) to wait for a connection - * to a service - * * RAXSDK_TIMEOUT - the max time (in seconds) to wait for an HTTP request - * to complete - * * RAXSDK_SERVER_MAXTIMEOUT - the max time (in seconds) that a server - * will wait for a change in status (Server::WaitFor() method) - * * RAXSDK_POLL_INTERVAL - how often (in seconds) the Server::WaitFor() method - * will poll for a status change - * * RAXSDK_DEFAULT_IP_VERSION - the default IP version (4 or 6) to return for - * the server's primary IP address - * * RAXSDK_OVERLIMIT_TIMEOUT - the max time (in seconds) to wait before - * retrying a request that has failed because of rate limits. If the - * next available time for the request is more than (X) seconds away, - * then the request will fail; otherwise, the request will sleep until - * available. - */ - -if (!defined('RAXSDK_TIMEZONE')) - define('RAXSDK_TIMEZONE', 'America/Chicago'); -if (!defined('RAXSDK_STRICT_PROPERTY_CHECKS')) - define('RAXSDK_STRICT_PROPERTY_CHECKS', FALSE); -if (!defined('RAXSDK_COMPUTE_NAME')) - define('RAXSDK_COMPUTE_NAME', 'cloudServersOpenStack'); -if (!defined('RAXSDK_COMPUTE_REGION')) - define('RAXSDK_COMPUTE_REGION', NULL); -if (!defined('RAXSDK_COMPUTE_URLTYPE')) - define('RAXSDK_COMPUTE_URLTYPE', 'publicURL'); -if (!defined('RAXSDK_MONITORING_NAME')) - define('RAXSDK_MONITORING_NAME', 'cloudMonitoring'); -if (!defined('RAXSDK_MONITORING_REGION')) - define('RAXSDK_MONITORING_REGION', '{ignore}'); -if (!defined('RAXSDK_MONITORING_URLTYPE')) - define('RAXSDK_MONITORING_URLTYPE', 'publicURL'); -if (!defined('RAXSDK_ORCHESTRATION_NAME')) - define('RAXSDK_ORCHESTRATION_NAME', 'cloudOrchestration'); -if (!defined('RAXSDK_ORCHESTRATION_REGION')) - define('RAXSDK_ORCHESTRATION_REGION', NULL); -if (!defined('RAXSDK_ORCHESTRATION_URLTYPE')) - define('RAXSDK_ORCHESTRATION_URLTYPE', 'publicURL'); -if (!defined('RAXSDK_OBJSTORE_NAME')) - define('RAXSDK_OBJSTORE_NAME', 'cloudFiles'); -if (!defined('RAXSDK_OBJSTORE_REGION')) - define('RAXSDK_OBJSTORE_REGION', NULL); -if (!defined('RAXSDK_OBJSTORE_URLTYPE')) - define('RAXSDK_OBJSTORE_URLTYPE', 'publicURL'); -if (!defined('RAXSDK_DATABASE_NAME')) - define('RAXSDK_DATABASE_NAME', 'cloudDatabases'); -if (!defined('RAXSDK_DATABASE_REGION')) - define('RAXSDK_DATABASE_REGION', NULL); -if (!defined('RAXSDK_DATABASE_URLTYPE')) - define('RAXSDK_DATABASE_URLTYPE', 'publicURL'); -if (!defined('RAXSDK_VOLUME_NAME')) - define('RAXSDK_VOLUME_NAME', 'cloudBlockStorage'); -if (!defined('RAXSDK_VOLUME_REGION')) - define('RAXSDK_VOLUME_REGION', NULL); -if (!defined('RAXSDK_VOLUME_URLTYPE')) - define('RAXSDK_VOLUME_URLTYPE', 'publicURL'); -if (!defined('RAXSDK_LBSERVICE_NAME')) - define('RAXSDK_LBSERVICE_NAME', 'cloudLoadBalancers'); -if (!defined('RAXSDK_LBSERVICE_REGION')) - define('RAXSDK_LBSERVICE_REGION', NULL); -if (!defined('RAXSDK_LBSERVICE_URLTYPE')) - define('RAXSDK_LBSERVICE_URLTYPE', 'publicURL'); -if (!defined('RAXSDK_DNS_NAME')) - define('RAXSDK_DNS_NAME', 'cloudDNS'); -if (!defined('RAXSDK_DNS_REGION')) - define('RAXSDK_DNS_REGION', '{ignore}'); // DNS is regionless -if (!defined('RAXSDK_DNS_URLTYPE')) - define('RAXSDK_DNS_URLTYPE', 'publicURL'); -if (!defined('RAXSDK_AUTOSCALE_NAME')) - define('RAXSDK_AUTOSCALE_NAME', 'autoscale'); -if (!defined('RAXSDK_AUTOSCALE_REGION')) - define('RAXSDK_AUTOSCALE_REGION', NULL); -if (!defined('RAXSDK_AUTOSCALE_URLTYPE')) - define('RAXSDK_AUTOSCALE_URLTYPE', 'publicURL'); -if (!defined('RAXSDK_DNS_ASYNC_TIMEOUT')) - define('RAXSDK_DNS_ASYNC_TIMEOUT', 60); -if (!defined('RAXSDK_DNS_ASYNC_INTERVAL')) - define('RAXSDK_DNS_ASYNC_INTERVAL', 1); -if (!defined('RAXSDK_CONNECTTIMEOUT')) - define('RAXSDK_CONNECTTIMEOUT', 5); -if (!defined('RAXSDK_TIMEOUT')) - define('RAXSDK_TIMEOUT', 60); -if (!defined('RAXSDK_SERVER_MAXTIMEOUT')) - define('RAXSDK_SERVER_MAXTIMEOUT', 3600); -if (!defined('RAXSDK_POLL_INTERVAL')) - define('RAXSDK_POLL_INTERVAL', 10); -if (!defined('RAXSDK_DEFAULT_IP_VERSION')) - define('RAXSDK_DEFAULT_IP_VERSION', 4); -if (!defined('RAXSDK_OVERLIMIT_TIMEOUT')) - define('RAXSDK_OVERLIMIT_TIMEOUT', 300); -/** - * sets default (highly secure) value for CURLOPT_SSL_VERIFYHOST. If you - * are using a self-signed SSL certificate, you can reduce this setting, but - * you do so at your own risk. - */ -if (!defined('RAXSDK_SSL_VERIFYHOST')) - define('RAXSDK_SSL_VERIFYHOST', 2); -/** - * sets default (highly secure) value for CURLOPT_SSL_VERIFYPEER. If you - * are using a self-signed SSL certificate, you can reduce this setting, but - * you do so at your own risk. - */ -if (!defined('RAXSDK_SSL_VERIFYPEER')) - define('RAXSDK_SSL_VERIFYPEER', TRUE); - -/** - * edit and uncomment this to set the default location of cacert.pem file - */ -//define('RAXSDK_CACERTPEM', __DIR__ . DIRECTORY_SEPARATOR . 'cacert.pem'); - -/* these should not be overridden */ -define('RAXSDK_VERSION', '1.5.10'); -define('RAXSDK_USER_AGENT', 'php-opencloud/'.RAXSDK_VERSION.' (Rackspace)'); -define('RAXSDK_ERROR', 'Error:'); -define('RAXSDK_FATAL', 'FATAL ERROR:'); -define('RAXSDK_TERMINATED', '*** PROCESSING HALTED ***'); -define('RAXSDK_CONTENT_TYPE_JSON', 'application/json'); -define('RAXSDK_URL_PUBLIC', 'publicURL'); -define('RAXSDK_URL_INTERNAL', 'internalURL'); -define('RAXSDK_URL_VERSION_INFO', 'versionInfo'); -define('RAXSDK_URL_VERSION_LIST', 'versionList'); - -/** - * definitions for Rackspace authentication endpoints - */ -define('RACKSPACE_US', 'https://identity.api.rackspacecloud.com/v2.0/'); -define('RACKSPACE_UK', 'https://lon.identity.api.rackspacecloud.com/v2.0/'); - -/** - * We can re-authenticate this many seconds before the token expires - * - * Set this to a higher value if your service does not cache tokens; if - * it *does* cache them, then this value is not required. - */ -define('RAXSDK_FUDGE', 0); - -/** - * Readable constants - */ -define('RAXSDK_SOFT_REBOOT', 'soft'); -define('RAXSDK_HARD_REBOOT', 'hard'); -define('RAXSDK_DETAILS', TRUE); -define('RAXSDK_MAX_CONTAINER_NAME_LEN', 256); - -/** - * UUID of the Rackspace 'public' network - */ -define('RAX_PUBLIC','00000000-0000-0000-0000-000000000000'); -/** - * UUID of the Rackspace 'private' network - */ -define('RAX_PRIVATE','11111111-1111-1111-1111-111111111111'); - -// Turn off debug mode by default -define('RAXSDK_DEBUG', false); - -/********** TIMEZONE MAGIC **********/ - -/** - * This is called if there is an error getting the default timezone; - * that means that the default timezone isn't set. - * - * @codeCoverageIgnore - */ -function __raxsdk_timezone_set($errno, $errstr) { - if ($errno==2) - date_default_timezone_set(RAXSDK_TIMEZONE); - else - die(sprintf("Unknown error %d: %s\n", $errno, $errstr)); -} -set_error_handler('\OpenCloud\__raxsdk_timezone_set'); -@date_default_timezone_get(); -restore_error_handler(); - -/********** SOME GLOBAL FUNCTIONS **********/ - - /** - * \OpenCloud\Common\Lang::translate() - this function should be used to wrap all static strings. In the future, - * this may provide us with a hook for providing different language - * translations. - * - * @codeCoverageIgnore - */ - function define_gettext() { - function translate($str) { - return $str; - } - } - - if (!function_exists('_')) - define_gettext(); - - /** - * removes trailing slash(es) from a URL string - * - * Mainly, this is just for appearance's sake. I really hate to see - * URLs like .../servers//address, for some reason. - * - * @codeCoverageIgnore - */ - function noslash($str) { - while ($str && (substr($str, -1) == '/')) - $str = substr($str, 0, strlen($str)-1); - return $str; - } - - /** - * Turns debugging on or off - * - * @codeCoverageIgnore - */ - function setDebug($state=TRUE) { - global $RAXSDK_DEBUG; - $RAXSDK_DEBUG=$state; - } - diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/ObjectStore/AbstractService.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/ObjectStore/AbstractService.php deleted file mode 100644 index 4a2298d60ed..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/ObjectStore/AbstractService.php +++ /dev/null @@ -1,57 +0,0 @@ -<?php -/** - * PHP OpenCloud library. - * - * @copyright Copyright 2013 Rackspace US, Inc. See COPYING for licensing information. - * @license https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0 - * @version 1.6.0 - * @author Glen Campbell <glen.campbell@rackspace.com> - * @author Jamie Hannaford <jamie.hannaford@rackspace.com> - */ - -namespace OpenCloud\ObjectStore; - -use OpenCloud\Common\Service as CommonService; - -define('SWIFT_MAX_OBJECT_SIZE', 5 * 1024 * 1024 * 1024 + 1); - -/** - * An abstract base class for common code shared between ObjectStore\Service - * (container) and ObjectStore\CDNService (CDN containers). - * - * @todo Maybe we use Traits instead of this small abstract class? - */ -abstract class AbstractService extends CommonService -{ - - const MAX_CONTAINER_NAME_LEN = 256; - const MAX_OBJECT_NAME_LEN = 1024; - const MAX_OBJECT_SIZE = SWIFT_MAX_OBJECT_SIZE; - - /** - * Creates a Container resource object. - * - * @param mixed $cdata The name of the container or an object from which to set values - * @return OpenCloud\ObjectStore\Resource\Container - */ - public function container($cdata = null) - { - return new Resource\Container($this, $cdata); - } - - /** - * Returns a Collection of Container objects. - * - * @param array $filter An array to filter the results - * @return OpenCloud\Common\Collection - */ - public function containerList(array $filter = array()) - { - $filter['format'] = 'json'; - - return $this->collection( - 'OpenCloud\ObjectStore\Resource\Container', $this->url(null, $filter) - ); - } - -} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/ObjectStore/CDNService.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/ObjectStore/CDNService.php deleted file mode 100644 index 132d5f47ad6..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/ObjectStore/CDNService.php +++ /dev/null @@ -1,62 +0,0 @@ -<?php -/** - * PHP OpenCloud library. - * - * @copyright Copyright 2013 Rackspace US, Inc. See COPYING for licensing information. - * @license https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0 - * @version 1.6.0 - * @author Glen Campbell <glen.campbell@rackspace.com> - * @author Jamie Hannaford <jamie.hannaford@rackspace.com> - */ - -namespace OpenCloud\ObjectStore; - -use OpenCloud\OpenStack; -use OpenCloud\Common\Exceptions; - -/** - * This is the CDN version of the ObjectStore service. - */ -class CDNService extends AbstractService -{ - - /** - * Creates a new CDNService object. - * - * This is a simple wrapper function around the parent Service construct, - * but supplies defaults for the service type. - * - * @param OpenCloud\OpenStack $connection The connection object - * @param string $serviceName The name of the service - * @param string $serviceRegion The service's region - * @param string $urlType The type of URL (normally 'publicURL') - */ - public function __construct( - OpenStack $connection, - $serviceName = RAXSDK_OBJSTORE_NAME, - $serviceRegion = RAXSDK_OBJSTORE_REGION, - $urltype = RAXSDK_URL_PUBLIC - ) { - $this->getLogger()->info('Initializing CDN Service...'); - - parent::__construct( - $connection, - 'rax:object-cdn', - $serviceName, - $serviceRegion, - $urltype - ); - } - - /** - * Helps catch errors if someone calls the method on the - * wrong object - */ - public function CDN() - { - throw new Exceptions\CdnError( - 'Invalid method call; no CDN() on the CDN object' - ); - } - -} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/ObjectStore/Resource/AbstractStorageObject.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/ObjectStore/Resource/AbstractStorageObject.php deleted file mode 100644 index c6799b22b7e..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/ObjectStore/Resource/AbstractStorageObject.php +++ /dev/null @@ -1,170 +0,0 @@ -<?php -/** - * PHP OpenCloud library. - * - * @copyright Copyright 2013 Rackspace US, Inc. See COPYING for licensing information. - * @license https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0 - * @version 1.6.0 - * @author Glen Campbell <glen.campbell@rackspace.com> - * @author Jamie Hannaford <jamie.hannaford@rackspace.com> - */ - -namespace OpenCloud\ObjectStore\Resource; - -use OpenCloud\Common\Base; -use OpenCloud\Common\Metadata; -use OpenCloud\Common\Exceptions\NameError; -use OpenCloud\Common\Exceptions\MetadataPrefixError; -use OpenCloud\Common\Request\Response\Http; - -/** - * Abstract base class which implements shared functionality of ObjectStore - * resources. Provides support, for example, for metadata-handling and other - * features that are common to the ObjectStore components. - */ -abstract class AbstractStorageObject extends Base -{ - - const ACCOUNT_META_PREFIX = 'X-Account-'; - const CONTAINER_META_PREFIX = 'X-Container-Meta-'; - const OBJECT_META_PREFIX = 'X-Object-Meta-'; - const CDNCONTAINER_META_PREFIX = 'X-Cdn-'; - - /** - * Metadata belonging to a resource. - * - * @var OpenCloud\Common\Metadata - */ - public $metadata; - - /** - * Initializes the metadata component - */ - public function __construct() - { - $this->metadata = new Metadata; - } - - /** - * Given an Http response object, converts the appropriate headers - * to metadata - * - * @param OpenCloud\Common\Request\Response\Http - * @return void - */ - public function getMetadata(Http $response) - { - $this->metadata = new Metadata; - $this->metadata->setArray($response->headers(), $this->prefix()); - } - - /** - * If object has metadata, return an associative array of headers. - * - * For example, if a DataObject has a metadata item named 'FOO', - * then this would return array('X-Object-Meta-FOO'=>$value); - * - * @return array - */ - public function metadataHeaders() - { - $headers = array(); - - // only build if we have metadata - if (is_object($this->metadata)) { - foreach ($this->metadata as $key => $value) { - $headers[$this->prefix() . $key] = $value; - } - } - - return $headers; - } - - /** - * Returns the displayable name of the object - * - * Can be overridden by child objects; *must* be overridden by child - * objects if the object does not have a `name` attribute defined. - * - * @api - * @throws NameError if attribute 'name' is not defined - */ - public function name() - { - if (property_exists($this, 'name')) { - return $this->name; - } else { - throw new NameError(sprintf( - 'Name attribute does not exist for [%s]', - get_class($this) - )); - } - } - - /** - * Override parent method. - * - * @return null - */ - public static function jsonName() - { - return null; - } - - /** - * Override parent method. - * - * @return null - */ - public static function jsonCollectionName() - { - return null; - } - - /** - * Override parent method. - * - * @return null - */ - public static function jsonCollectionElement() - { - return null; - } - - /** - * Returns the proper prefix for the specified type of object - * - * @param string $type The type of object; derived from `get_class()` if not - * specified. - * @codeCoverageIgnore - */ - private function prefix($type = null) - { - if ($type === null) { - $parts = preg_split('/\\\/', get_class($this)); - $type = $parts[count($parts)-1]; - } - - switch($type) { - case 'Account': - $prefix = self::ACCOUNT_META_PREFIX; - break; - case 'CDNContainer': - $prefix = self::CDNCONTAINER_META_PREFIX; - break; - case 'Container': - $prefix = self::CONTAINER_META_PREFIX; - break; - case 'DataObject': - $prefix = self::OBJECT_META_PREFIX; - break; - default: - throw new MetadataPrefixError(sprintf( - 'Unrecognized metadata type [%s]', - $type - )); - } - - return $prefix; - } -} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/ObjectStore/Resource/CDNContainer.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/ObjectStore/Resource/CDNContainer.php deleted file mode 100644 index 9b6367c87e0..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/ObjectStore/Resource/CDNContainer.php +++ /dev/null @@ -1,298 +0,0 @@ -<?php -/** - * PHP OpenCloud library. - * - * @copyright Copyright 2013 Rackspace US, Inc. See COPYING for licensing information. - * @license https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0 - * @version 1.6.0 - * @author Glen Campbell <glen.campbell@rackspace.com> - * @author Jamie Hannaford <jamie.hannaford@rackspace.com> - */ - -namespace OpenCloud\ObjectStore\Resource; - -use OpenCloud\Common\Service as AbstractService; -use OpenCloud\Common\Lang; -use OpenCloud\Common\Exceptions; -use OpenCloud\ObjectStore\AbstractService as AbstractObjectService; - -/** - * A container that has been CDN-enabled. Each CDN-enabled container has a unique - * Uniform Resource Locator (URL) that can be combined with its object names and - * openly distributed in web pages, emails, or other applications. - */ -class CDNContainer extends AbstractStorageObject -{ - /** - * The name of the container. - * - * The only restrictions on container names is that they cannot contain a - * forward slash (/) and must be less than 256 bytes in length. Please note - * that the length restriction applies to the name after it has been URL - * encoded. For example, a container named Course Docs would be URL encoded - * as Course%20Docs - which is 13 bytes in length rather than the expected 11. - * - * @var string - */ - public $name; - - /** - * Count of how many objects exist in the container. - * - * @var int - */ - public $count = 0; - - /** - * The total bytes used in the container. - * - * @var int - */ - public $bytes = 0; - - /** - * The service object. - * - * @var AbstractService - */ - private $service; - - /** - * URL of the container. - * - * @var string - */ - private $containerUrl; - - /** - * Creates the container object - * - * Creates a new container object or, if the $cdata object is a string, - * retrieves the named container from the object store. If $cdata is an - * array or an object, then its values are used to set this object. - * - * @param OpenCloud\ObjectStore $service - the ObjectStore service - * @param mixed $cdata - if supplied, the name of the object - */ - public function __construct(AbstractService $service, $cdata = null) - { - $this->getLogger()->info('Initializing CDN Container Service...'); - - parent::__construct(); - - $this->service = $service; - - // Populate data if set - $this->populate($cdata); - } - - /** - * Allow other objects to know what the primary key is. - * - * @return string - */ - public function primaryKeyField() - { - return 'name'; - } - - /** - * Returns the Service associated with the Container - */ - public function getService() - { - return $this->service; - } - - /** - * Returns the URL of the container - * - * @return string - * @param string $subresource not used; required for compatibility - * @throws NoNameError - */ - public function url($subresource = '') - { - if (strlen($this->name) == 0) { - throw new Exceptions\NoNameError( - Lang::translate('Container does not have an identifier') - ); - } - - return Lang::noslash($this->getService()->url(rawurlencode($this->name))); - } - - /** - * Creates a new container with the specified attributes - * - * @param array $params array of parameters - * @return boolean TRUE on success; FALSE on failure - * @throws ContainerCreateError - */ - public function create($params = array()) - { - // Populate object and check container name - $this->populate($params); - $this->isValidName($this->name); - - // Dispatch - $this->containerUrl = $this->url(); - $response = $this->getService()->request($this->url(), 'PUT', $this->metadataHeaders()); - - // Check return code - // @codeCoverageIgnoreStart - if ($response->httpStatus() > 202) { - throw new Exceptions\ContainerCreateError(sprintf( - Lang::translate('Problem creating container [%s] status [%d] response [%s]'), - $this->url(), - $response->httpStatus(), - $response->httpBody() - )); - } - // @codeCoverageIgnoreEnd - - return true; - } - - /** - * Updates the metadata for a container - * - * @return boolean TRUE on success; FALSE on failure - * @throws ContainerCreateError - */ - public function update() - { - $response = $this->getService()->request($this->url(), 'POST', $this->metadataHeaders()); - - // check return code - // @codeCoverageIgnoreStart - if ($response->httpStatus() > 204) { - throw new Exceptions\ContainerCreateError(sprintf( - Lang::translate('Problem updating container [%s] status [%d] response [%s]'), - $this->Url(), - $response->httpStatus(), - $response->httpBody() - )); - } - // @codeCoverageIgnoreEnd - - return true; - } - - /** - * Deletes the specified container - * - * @return boolean TRUE on success; FALSE on failure - * @throws ContainerDeleteError - */ - public function delete() - { - $response = $this->getService()->request($this->url(), 'DELETE'); - - // validate the response code - // @codeCoverageIgnoreStart - if ($response->httpStatus() == 404) { - throw new Exceptions\ContainerNotFoundError(sprintf( - Lang::translate('Container [%s] not found'), - $this->name - )); - } - - if ($response->httpStatus() == 409) { - throw new Exceptions\ContainerNotEmptyError(sprintf( - Lang::translate('Container [%s] must be empty before deleting'), - $this->name - )); - } - - if ($response->httpStatus() >= 300) { - throw new Exceptions\ContainerDeleteError(sprintf( - Lang::translate('Problem deleting container [%s] status [%d] response [%s]'), - $this->url(), - $response->httpStatus(), - $response->httpBody() - )); - return false; - } - // @codeCoverageIgnoreEnd - - return true; - } - - /** - * Loads the object from the service - * - * @return void - */ - public function refresh($name = null, $url = null) - { - $response = $this->getService()->request( - $this->url($name), 'HEAD', array('Accept' => '*/*') - ); - - // validate the response code - // @codeCoverageIgnoreStart - if ($response->HttpStatus() == 404) { - throw new Exceptions\ContainerNotFoundError(sprintf( - 'Container [%s] (%s) not found', - $this->name, - $this->url() - )); - } - - if ($response->HttpStatus() >= 300) { - throw new Exceptions\HttpError(sprintf( - 'Error retrieving Container, status [%d] response [%s]', - $response->httpStatus(), - $response->httpBody() - )); - } - - // check for headers (not metadata) - foreach($response->headers() as $header => $value) { - switch($header) { - case 'X-Container-Object-Count': - $this->count = $value; - break; - case 'X-Container-Bytes-Used': - $this->bytes = $value; - break; - } - } - // @codeCoverageIgnoreEnd - - // parse the returned object - $this->getMetadata($response); - } - - /** - * Validates that the container name is acceptable - * - * @param string $name the container name to validate - * @return boolean TRUE if ok; throws an exception if not - * @throws ContainerNameError - */ - public function isValidName($name) - { - if (strlen($name) == 0) { - throw new Exceptions\ContainerNameError( - 'Container name cannot be blank' - ); - } - - if (strpos($name, '/') !== false) { - throw new Exceptions\ContainerNameError( - 'Container name cannot contain "/"' - ); - } - - if (strlen($name) > AbstractObjectService::MAX_CONTAINER_NAME_LEN) { - throw new Exceptions\ContainerNameError( - 'Container name is too long' - ); - } - - return true; - } - -} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/ObjectStore/Resource/Container.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/ObjectStore/Resource/Container.php deleted file mode 100644 index 3a56ebd9fca..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/ObjectStore/Resource/Container.php +++ /dev/null @@ -1,401 +0,0 @@ -<?php -/** - * PHP OpenCloud library. - * - * @copyright Copyright 2013 Rackspace US, Inc. See COPYING for licensing information. - * @license https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0 - * @version 1.6.0 - * @author Glen Campbell <glen.campbell@rackspace.com> - * @author Jamie Hannaford <jamie.hannaford@rackspace.com> - */ - -namespace OpenCloud\ObjectStore\Resource; - -use OpenCloud\Common\Exceptions; -use OpenCloud\Common\Lang; - -/** - * A container is a storage compartment for your data and provides a way for you - * to organize your data. You can think of a container as a folder in Windows® - * or a directory in UNIX®. The primary difference between a container and these - * other file system concepts is that containers cannot be nested. - * - * A container can also be CDN-enabled (for public access), in which case you - * will need to interact with a CDNContainer object instead of this one. - */ -class Container extends CDNContainer -{ - - /** - * CDN container (if set). - * - * @var CDNContainer|null - */ - private $cdn; - - /** - * Sets the CDN container. - * - * @param OpenCloud\ObjectStore\Resource\CDNContainer $cdn - */ - public function setCDN(CDNContainer $cdn) - { - $this->cdn = $cdn; - } - - /** - * Returns the CDN container. - * - * @returns CDNContainer - */ - public function getCDN() - { - if (!$this->cdn) { - throw new Exceptions\CdnNotAvailableError( - Lang::translate('CDN-enabled container is not available') - ); - } - - return $this->cdn; - } - - /** - * Backwards compatability. - */ - public function CDN() - { - return $this->getCDN(); - } - - /** - * Makes the container public via the CDN - * - * @api - * @param integer $TTL the Time-To-Live for the CDN container; if NULL, - * then the cloud's default value will be used for caching. - * @throws CDNNotAvailableError if CDN services are not available - * @return CDNContainer - */ - public function enableCDN($ttl = null) - { - $url = $this->getService()->CDN()->url() . '/' . rawurlencode($this->name); - - $headers = $this->metadataHeaders(); - - if ($ttl) { - - // Make sure we're dealing with a real figure - if (!is_integer($ttl)) { - throw new Exceptions\CdnTtlError(sprintf( - Lang::translate('TTL value [%s] must be an integer'), - $ttl - )); - } - - $headers['X-TTL'] = $ttl; - } - - $headers['X-Log-Retention'] = 'True'; - $headers['X-CDN-Enabled'] = 'True'; - - // PUT to the CDN container - $response = $this->getService()->request($url, 'PUT', $headers); - - // check the response status - // @codeCoverageIgnoreStart - if ($response->httpStatus() > 202) { - throw new Exceptions\CdnHttpError(sprintf( - Lang::translate('HTTP error publishing to CDN, status [%d] response [%s]'), - $response->httpStatus(), - $response->httpBody() - )); - } - // @codeCoverageIgnoreEnd - - // refresh the data - $this->refresh(); - - // return the CDN container object - $cdn = new CDNContainer($this->getService()->getCDNService(), $this->name); - $this->setCDN($cdn); - - return $cdn; - } - - /** - * Backwards compatability. - */ - public function publishToCDN($ttl = null) - { - return $this->enableCDN($ttl); - } - - /** - * Disables the containers CDN function. - * - * Note that the container will still be available on the CDN until - * its TTL expires. - * - * @api - * @return void - */ - public function disableCDN() - { - // Set necessary headers - $headers['X-Log-Retention'] = 'False'; - $headers['X-CDN-Enabled'] = 'False'; - - // PUT it to the CDN service - $response = $this->getService()->request($this->CDNURL(), 'PUT', $headers); - - // check the response status - // @codeCoverageIgnoreStart - if ($response->httpStatus() != 201) { - throw new Exceptions\CdnHttpError(sprintf( - Lang::translate('HTTP error disabling CDN, status [%d] response [%s]'), - $response->httpStatus(), - $response->httpBody() - )); - } - // @codeCoverageIgnoreEnd - - return true; - } - - /** - * Creates a static website from the container - * - * @api - * @link http://docs.rackspace.com/files/api/v1/cf-devguide/content/Create_Static_Website-dle4000.html - * @param string $index the index page (starting page) of the website - * @return \OpenCloud\HttpResponse - */ - public function createStaticSite($indexHtml) - { - $headers = array('X-Container-Meta-Web-Index' => $indexHtml); - $response = $this->getService()->request($this->url(), 'POST', $headers); - - // check return code - // @codeCoverageIgnoreStart - if ($response->HttpStatus() > 204) { - throw new Exceptions\ContainerError(sprintf( - Lang::translate('Error creating static website for [%s], status [%d] response [%s]'), - $this->name, - $response->httpStatus(), - $response->httpBody() - )); - } - // @codeCoverageIgnoreEnd - - return $response; - } - - /** - * Sets the error page(s) for the static website - * - * @api - * @link http://docs.rackspace.com/files/api/v1/cf-devguide/content/Set_Error_Pages_for_Static_Website-dle4005.html - * @param string $name the name of the error page - * @return \OpenCloud\HttpResponse - */ - public function staticSiteErrorPage($name) - { - $headers = array('X-Container-Meta-Web-Error' => $name); - $response = $this->getService()->request($this->url(), 'POST', $headers); - - // check return code - // @codeCoverageIgnoreStart - if ($response->httpStatus() > 204) { - throw new Exceptions\ContainerError(sprintf( - Lang::translate('Error creating static site error page for [%s], status [%d] response [%s]'), - $this->name, - $response->httpStatus(), - $response->httpBody() - )); - } - - return $response; - // @codeCoverageIgnoreEnd - } - - /** - * Returns the CDN URL of the container (if enabled) - * - * The CDNURL() is used to manage the container. Note that it is different - * from the PublicURL() of the container, which is the publicly-accessible - * URL on the network. - * - * @api - * @return string - */ - public function CDNURL() - { - return $this->getCDN()->url(); - } - - /** - * Returns the Public URL of the container (on the CDN network) - * - */ - public function publicURL() - { - return $this->CDNURI(); - } - - /** - * Returns the CDN info about the container - * - * @api - * @return stdClass - */ - public function CDNinfo($property = null) - { - // Not quite sure why this is here... - // @codeCoverageIgnoreStart - if ($this->getService() instanceof CDNService) { - return $this->metadata; - } - // @codeCoverageIgnoreEnd - - // return NULL if the CDN container is not enabled - if (!isset($this->getCDN()->metadata->Enabled) - || $this->getCDN()->metadata->Enabled == 'False' - ) { - return null; - } - - // check to see if it's set - if (isset($this->getCDN()->metadata->$property)) { - return trim($this->getCDN()->metadata->$property); - } elseif ($property !== null) { - return null; - } - - // otherwise, return the whole metadata object - return $this->getCDN()->metadata; - } - - /** - * Returns the CDN container URI prefix - * - * @api - * @return string - */ - public function CDNURI() - { - return $this->CDNinfo('Uri'); - } - - /** - * Returns the SSL URI for the container - * - * @api - * @return string - */ - public function SSLURI() - { - return $this->CDNinfo('Ssl-Uri'); - } - - /** - * Returns the streaming URI for the container - * - * @api - * @return string - */ - public function streamingURI() - { - return $this->CDNinfo('Streaming-Uri'); - } - - /** - * Returns the IOS streaming URI for the container - * - * @api - * @link http://docs.rackspace.com/files/api/v1/cf-devguide/content/iOS-Streaming-d1f3725.html - * @return string - */ - public function iosStreamingURI() - { - return $this->CDNinfo('Ios-Uri'); - } - - /** - * Creates a Collection of objects in the container - * - * @param array $params associative array of parameter values. - * * account/tenant - The unique identifier of the account/tenant. - * * container- The unique identifier of the container. - * * limit (Optional) - The number limit of results. - * * marker (Optional) - Value of the marker, that the object names - * greater in value than are returned. - * * end_marker (Optional) - Value of the marker, that the object names - * less in value than are returned. - * * prefix (Optional) - Value of the prefix, which the returned object - * names begin with. - * * format (Optional) - Value of the serialized response format, either - * json or xml. - * * delimiter (Optional) - Value of the delimiter, that all the object - * names nested in the container are returned. - * @link http://api.openstack.org for a list of possible parameter - * names and values - * @return OpenCloud\Collection - * @throws ObjFetchError - */ - public function objectList($params = array()) - { - // construct a query string out of the parameters - $params['format'] = 'json'; - - $queryString = $this->makeQueryString($params); - - // append the query string to the URL - $url = $this->url(); - if (strlen($queryString) > 0) { - $url .= '?' . $queryString; - } - - return $this->getService()->collection( - 'OpenCloud\ObjectStore\Resource\DataObject', $url, $this - ); - } - - /** - * Returns a new DataObject associated with this container - * - * @param string $name if supplied, the name of the object to return - * @return DataObject - */ - public function dataObject($name = null) - { - return new DataObject($this, $name); - } - - /** - * Refreshes, then associates the CDN container - */ - public function refresh($id = null, $url = null) - { - parent::refresh($id, $url); - - // @codeCoverageIgnoreStart - if ($this->getService() instanceof CDNService) { - return; - } - - - if (null !== ($cdn = $this->getService()->CDN())) { - try { - $this->cdn = new CDNContainer( - $cdn, - $this->name - ); - } catch (Exceptions\ContainerNotFoundError $e) { - $this->cdn = new CDNContainer($cdn); - $this->cdn->name = $this->name; - } - } - // @codeCoverageIgnoreEnd - } - -} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/ObjectStore/Resource/DataObject.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/ObjectStore/Resource/DataObject.php deleted file mode 100644 index 443df1f651f..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/ObjectStore/Resource/DataObject.php +++ /dev/null @@ -1,941 +0,0 @@ -<?php -/** - * PHP OpenCloud library. - * - * @copyright Copyright 2013 Rackspace US, Inc. See COPYING for licensing information. - * @license https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0 - * @version 1.6.0 - * @author Glen Campbell <glen.campbell@rackspace.com> - * @author Jamie Hannaford <jamie.hannaford@rackspace.com> - */ - -namespace OpenCloud\ObjectStore\Resource; - -use finfo as FileInfo; -use OpenCloud\Common\Lang; -use OpenCloud\Common\Exceptions; -use OpenCloud\ObjectStore\AbstractService; -use OpenCloud\Common\Request\Response\Http; - -/** - * Objects are the basic storage entities in Cloud Files. They represent the - * files and their optional metadata you upload to the system. When you upload - * objects to Cloud Files, the data is stored as-is (without compression or - * encryption) and consists of a location (container), the object's name, and - * any metadata you assign consisting of key/value pairs. - */ -class DataObject extends AbstractStorageObject -{ - /** - * Object name. The only restriction on object names is that they must be - * less than 1024 bytes in length after URL encoding. - * - * @var string - */ - public $name; - - /** - * Hash value of the object. - * - * @var string - */ - public $hash; - - /** - * Size of object in bytes. - * - * @var string - */ - public $bytes; - - /** - * Date of last modification. - * - * @var string - */ - public $last_modified; - - /** - * Object's content type. - * - * @var string - */ - public $content_type; - - /** - * Object's content length. - * - * @var string - */ - public $content_length; - - /** - * Other headers set for this object (e.g. Access-Control-Allow-Origin) - * - * @var array - */ - public $extra_headers = array(); - - /** - * Whether or not to calculate and send an ETag on create. - * - * @var bool - */ - public $send_etag = true; - - /** - * The data contained by the object. - * - * @var string - */ - private $data; - - /** - * The ETag value. - * - * @var string - */ - private $etag; - - /** - * The parent container of this object. - * - * @var CDNContainer - */ - private $container; - - /** - * Is this data object a pseudo directory? - * - * @var bool - */ - private $directory = false; - - /** - * Used to translate header values (returned by requests) into properties. - * - * @var array - */ - private $headerTranslate = array( - 'Etag' => 'hash', - 'ETag' => 'hash', - 'Last-Modified' => 'last_modified', - 'Content-Length' => array('bytes', 'content_length'), - ); - - /** - * These properties can be freely set by the user for CRUD operations. - * - * @var array - */ - private $allowedProperties = array( - 'name', - 'content_type', - 'extra_headers', - 'send_etag' - ); - - /** - * Option for clearing the status cache when objects are uploaded to API. - * By default, it is set to FALSE for performance; but if you have files - * that are rapidly and very often updated, you might want to clear the status - * cache so PHP reads the files directly, instead of relying on the cache. - * - * @link http://php.net/manual/en/function.clearstatcache.php - * @var bool - */ - public $clearStatusCache = false; - - /** - * A DataObject is related to a container and has a name - * - * If `$name` is specified, then it attempts to retrieve the object from the - * object store. - * - * @param Container $container the container holding this object - * @param mixed $cdata if an object or array, it is treated as values - * with which to populate the object. If it is a string, it is - * treated as a name and the object's info is retrieved from - * the service. - * @return void - */ - public function __construct($container, $cdata = null) - { - parent::__construct(); - - $this->container = $container; - - // For pseudo-directories, we need to ensure the name is set - if (!empty($cdata->subdir)) { - $this->name = $cdata->subdir; - $this->directory = true; - } else { - $this->populate($cdata); - } - } - - /** - * Is this data object a pseudo-directory? - * - * @return bool - */ - public function isDirectory() - { - return $this->directory; - } - - /** - * Allow other objects to know what the primary key is. - * - * @return string - */ - public function primaryKeyField() - { - return 'name'; - } - - /** - * Is this a real file? - * - * @param string $filename - * @return bool - */ - private function isRealFile($filename) - { - return $filename != '/dev/null' && $filename != 'NUL'; - } - - /** - * Set this file's content type. - * - * @param string $contentType - */ - public function setContentType($contentType) - { - $this->content_type = $contentType; - } - - /** - * Return the content type. - * - * @return string - */ - public function getContentType() - { - return $this->content_type; - } - - /** - * Returns the URL of the data object - * - * If the object is new and doesn't have a name, then an exception is - * thrown. - * - * @param string $subresource Not used - * @return string - * @throws NoNameError - */ - public function url($subresource = '') - { - if (!$this->name) { - throw new Exceptions\NoNameError(Lang::translate('Object has no name')); - } - - return Lang::noslash( - $this->container->url()) . '/' . str_replace('%2F', '/', rawurlencode($this->name) - ); - } - - /** - * Creates (or updates; both the same) an instance of the object - * - * @api - * @param array $params an optional associative array that can contain the - * 'name' and 'content_type' of the object - * @param string $filename if provided, then the object is loaded from the - * specified file - * @return boolean - * @throws CreateUpdateError - */ - public function create($params = array(), $filename = null, $extractArchive = null) - { - // Set and validate params - $this->setParams($params); - - // assume no file upload - $fp = false; - - // if the filename is provided, process it - if ($filename) { - - if (!$fp = @fopen($filename, 'r')) { - throw new Exceptions\IOError(sprintf( - Lang::translate('Could not open file [%s] for reading'), - $filename - )); - } - - // @todo Maybe, for performance, we could set the "clear status cache" - // feature to false by default - but allow users to set to true if required - clearstatcache($this->clearStatusCache === true, $filename); - - // Cast filesize as a floating point - $filesize = (float) filesize($filename); - - // Check it's below a reasonable size, and set - // @codeCoverageIgnoreStart - if ($filesize > AbstractService::MAX_OBJECT_SIZE) { - throw new Exceptions\ObjectError("File size exceeds maximum object size."); - } - // @codeCoverageIgnoreEnd - $this->content_length = $filesize; - - // Guess the content type if necessary - if (!$this->getContentType() && $this->isRealFile($filename)) { - $this->setContentType($this->inferContentType($filename)); - } - - // Send ETag checksum if necessary - if ($this->send_etag) { - $this->etag = md5_file($filename); - } - - // Announce to the world - $this->getLogger()->info('Uploading {size} bytes from {name}', array( - 'size' => $filesize, - 'name' => $filename - )); - - } else { - // compute the length - $this->content_length = strlen($this->data); - - if ($this->send_etag) { - $this->etag = md5($this->data); - } - } - - // Only allow supported archive types - // http://docs.rackspace.com/files/api/v1/cf-devguide/content/Extract_Archive-d1e2338.html - $extractArchiveUrlArg = ''; - - if ($extractArchive) { - if ($extractArchive !== "tar.gz" && $extractArchive !== "tar.bz2") { - throw new Exceptions\ObjectError( - "Extract Archive only supports tar.gz and tar.bz2" - ); - } else { - $extractArchiveUrlArg = "?extract-archive=" . $extractArchive; - $this->etag = null; - $this->setContentType(''); - } - } - - // Set headers - $headers = $this->metadataHeaders(); - - if (!empty($this->etag)) { - $headers['ETag'] = $this->etag; - } - - // Content-Type is no longer required; if not specified, it will - // attempt to guess based on the file extension. - if (!$this->getContentType()) { - $headers['Content-Type'] = $this->getContentType(); - } - - $headers['Content-Length'] = $this->content_length; - - // Merge in extra headers - if (!empty($this->extra_headers)) { - $headers = $this->extra_headers + $headers; - } - - // perform the request - $response = $this->getService()->request( - $this->url() . $extractArchiveUrlArg, - 'PUT', - $headers, - $fp ? $fp : $this->data - ); - - // check the status - // @codeCoverageIgnoreStart - if (($status = $response->httpStatus()) >= 300) { - throw new Exceptions\CreateUpdateError(sprintf( - Lang::translate('Problem saving/updating object [%s] HTTP status [%s] response [%s]'), - $this->url() . $extractArchiveUrlArg, - $status, - $response->httpBody() - )); - } - // @codeCoverageIgnoreEnd - - // set values from response - $this->saveResponseHeaders($response); - - // close the file handle - if ($fp) { - fclose($fp); - } - - return $response; - } - - /** - * Update() is provided as an alias for the Create() method - * - * Since update and create both use a PUT request, the different functions - * may allow the developer to distinguish between the semantics in his or - * her application. - * - * @api - * @param array $params an optional associative array that can contain the - * 'name' and 'type' of the object - * @param string $filename if provided, the object is loaded from the file - * @return boolean - */ - public function update($params = array(), $filename = '') - { - return $this->create($params, $filename); - } - - /** - * UpdateMetadata() - updates headers - * - * Updates metadata headers - * - * @api - * @param array $params an optional associative array that can contain the - * 'name' and 'type' of the object - * @return boolean - */ - public function updateMetadata($params = array()) - { - $this->setParams($params); - - // set the headers - $headers = $this->metadataHeaders(); - $headers['Content-Type'] = $this->getContentType(); - - $response = $this->getService()->request( - $this->url(), - 'POST', - $headers - ); - - // check the status - // @codeCoverageIgnoreStart - if (($stat = $response->httpStatus()) >= 204) { - throw new Exceptions\UpdateError(sprintf( - Lang::translate('Problem updating object [%s] HTTP status [%s] response [%s]'), - $this->url(), - $stat, - $response->httpBody() - )); - } - // @codeCoverageIgnoreEnd - - return $response; - } - - /** - * Deletes an object from the Object Store - * - * Note that we can delete without retrieving by specifying the name in the - * parameter array. - * - * @api - * @param array $params an array of parameters - * @return HttpResponse if successful; FALSE if not - * @throws DeleteError - */ - public function delete($params = array()) - { - $this->setParams($params); - - $response = $this->getService()->request($this->url(), 'DELETE'); - - // check the status - // @codeCoverageIgnoreStart - if (($stat = $response->httpStatus()) >= 300) { - throw new Exceptions\DeleteError(sprintf( - Lang::translate('Problem deleting object [%s] HTTP status [%s] response [%s]'), - $this->url(), - $stat, - $response->httpBody() - )); - } - // @codeCoverageIgnoreEnd - - return $response; - } - - /** - * Copies the object to another container/object - * - * Note that this function, because it operates within the Object Store - * itself, is much faster than downloading the object and re-uploading it - * to a new object. - * - * @param DataObject $target the target of the COPY command - */ - public function copy(DataObject $target) - { - $uri = sprintf('/%s/%s', $target->container()->name(), $target->name()); - - $this->getLogger()->info('Copying object to [{uri}]', array('uri' => $uri)); - - $response = $this->getService()->request( - $this->url(), - 'COPY', - array('Destination' => $uri) - ); - - // check response code - // @codeCoverageIgnoreStart - if ($response->httpStatus() > 202) { - throw new Exceptions\ObjectCopyError(sprintf( - Lang::translate('Error copying object [%s], status [%d] response [%s]'), - $this->url(), - $response->httpStatus(), - $response->httpBody() - )); - } - // @codeCoverageIgnoreEnd - - return $response; - } - - /** - * Returns the container of the object - * - * @return Container - */ - public function container() - { - return $this->container; - } - - /** - * returns the TEMP_URL for the object - * - * Some notes: - * * The `$secret` value is arbitrary; it must match the value set for - * the `X-Account-Meta-Temp-URL-Key` on the account level. This can be - * set by calling `$service->SetTempUrlSecret($secret)`. - * * The `$expires` value is the number of seconds you want the temporary - * URL to be valid for. For example, use `60` to make it valid for a - * minute - * * The `$method` must be either GET or PUT. No other methods are - * supported. - * - * @param string $secret the shared secret - * @param integer $expires the expiration time (in seconds) - * @param string $method either GET or PUT - * @return string the temporary URL - */ - public function tempUrl($secret, $expires, $method) - { - $method = strtoupper($method); - $expiry_time = time() + $expires; - - // check for proper method - if ($method != 'GET' && $method != 'PUT') { - throw new Exceptions\TempUrlMethodError(sprintf( - Lang::translate( - 'Bad method [%s] for TempUrl; only GET or PUT supported'), - $method - )); - } - - // construct the URL - $url = $this->url(); - $path = urldecode(parse_url($url, PHP_URL_PATH)); - - $hmac_body = "$method\n$expiry_time\n$path"; - $hash = hash_hmac('sha1', $hmac_body, $secret); - - $this->getLogger()->info('URL [{url}]; SIG [{sig}]; HASH [{hash}]', array( - 'url' => $url, - 'sig' => $hmac_body, - 'hash' => $hash - )); - - $temp_url = sprintf('%s?temp_url_sig=%s&temp_url_expires=%d', $url, $hash, $expiry_time); - - // debug that stuff - $this->getLogger()->info('TempUrl generated [{url}]', array( - 'url' => $temp_url - )); - - return $temp_url; - } - - /** - * Sets object data from string - * - * This is a convenience function to permit the use of other technologies - * for setting an object's content. - * - * @param string $data - * @return void - */ - public function setData($data) - { - $this->data = (string) $data; - } - - /** - * Return object's data as a string - * - * @return string the entire object - */ - public function saveToString() - { - return $this->getService()->request($this->url())->httpBody(); - } - - /** - * Saves the object's data to local filename - * - * Given a local filename, the Object's data will be written to the newly - * created file. - * - * Example: - * <code> - * # ... authentication/connection/container code excluded - * # ... see previous examples - * - * # Whoops! I deleted my local README, let me download/save it - * # - * $my_docs = $conn->get_container("documents"); - * $doc = $my_docs->get_object("README"); - * - * $doc->SaveToFilename("/home/ej/cloudfiles/readme.restored"); - * </code> - * - * @param string $filename name of local file to write data to - * @return boolean <kbd>TRUE</kbd> if successful - * @throws IOException error opening file - * @throws InvalidResponseException unexpected response - */ - public function saveToFilename($filename) - { - if (!$fp = @fopen($filename, "wb")) { - throw new Exceptions\IOError(sprintf( - Lang::translate('Could not open file [%s] for writing'), - $filename - )); - } - - $result = $this->getService()->request($this->url(), 'GET', array(), $fp); - - fclose($fp); - - return $result; - } - - /** - * Saves the object's to a stream filename - * - * Given a local filename, the Object's data will be written to the stream - * - * Example: - * <code> - * # ... authentication/connection/container code excluded - * # ... see previous examples - * - * # If I want to write the README to a temporary memory string I - * # do : - * # - * $my_docs = $conn->get_container("documents"); - * $doc = $my_docs->DataObject(array("name"=>"README")); - * - * $fp = fopen('php://temp', 'r+'); - * $doc->SaveToStream($fp); - * fclose($fp); - * </code> - * - * @param string $filename name of local file to write data to - * @return boolean <kbd>TRUE</kbd> if successful - * @throws IOException error opening file - * @throws InvalidResponseException unexpected response - */ - public function saveToStream($resource) - { - if (!is_resource($resource)) { - throw new Exceptions\ObjectError( - Lang::translate("Resource argument not a valid PHP resource." - )); - } - - return $this->getService()->request($this->url(), 'GET', array(), $resource); - } - - - /** - * Returns the object's MD5 checksum - * - * Accessor method for reading Object's private ETag attribute. - * - * @api - * @return string MD5 checksum hexidecimal string - */ - public function getETag() - { - return $this->etag; - } - - /** - * Purges the object from the CDN - * - * Note that the object will still be served up to the time of its - * TTL value. - * - * @api - * @param string $email An email address that will be notified when - * the object is purged. - * @return void - * @throws CdnError if the container is not CDN-enabled - * @throws CdnHttpError if there is an HTTP error in the transaction - */ - public function purgeCDN($email) - { - // @codeCoverageIgnoreStart - if (!$cdn = $this->Container()->CDNURL()) { - throw new Exceptions\CdnError(Lang::translate('Container is not CDN-enabled')); - } - // @codeCoverageIgnoreEnd - - $url = $cdn . '/' . $this->name; - $headers['X-Purge-Email'] = $email; - $response = $this->getService()->request($url, 'DELETE', $headers); - - // check the status - // @codeCoverageIgnoreStart - if ($response->httpStatus() > 204) { - throw new Exceptions\CdnHttpError(sprintf( - Lang::translate('Error purging object, status [%d] response [%s]'), - $response->httpStatus(), - $response->httpBody() - )); - } - // @codeCoverageIgnoreEnd - - return true; - } - - /** - * Returns the CDN URL (for managing the object) - * - * Note that the DataObject::PublicURL() method is used to return the - * publicly-available URL of the object, while the CDNURL() is used - * to manage the object. - * - * @return string - */ - public function CDNURL() - { - return $this->container()->CDNURL() . '/' . $this->name; - } - - /** - * Returns the object's Public CDN URL, if available - * - * @api - * @param string $type can be 'streaming', 'ssl', 'ios-streaming', - * or anything else for the - * default URL. For example, `$object->PublicURL('ios-streaming')` - * @return string - */ - public function publicURL($type = null) - { - if (!$prefix = $this->container()->CDNURI()) { - return null; - } - - switch(strtoupper($type)) { - case 'SSL': - $url = $this->container()->SSLURI().'/'.$this->name; - break; - case 'STREAMING': - $url = $this->container()->streamingURI().'/'.$this->name; - break; - case 'IOS': - case 'IOS-STREAMING': - $url = $this->container()->iosStreamingURI().'/'.$this->name; - break; - default: - $url = $prefix.'/'.$this->name; - break; - } - - return $url; - } - - /** - * Sets parameters from an array and validates them. - * - * @param array $params Associative array of parameters - * @return void - */ - private function setParams(array $params = array()) - { - // Inspect the user's array for any unapproved keys, and unset if necessary - foreach (array_diff(array_keys($params), $this->allowedProperties) as $key) { - $this->getLogger()->warning('You cannot use the {keyName} key when creating an object', array( - 'keyName' => $key - )); - unset($params[$key]); - } - - $this->populate($params); - } - - /** - * Retrieves a single object, parses headers - * - * @return void - * @throws NoNameError, ObjFetchError - */ - private function fetch() - { - if (!$this->name) { - throw new Exceptions\NoNameError(Lang::translate('Cannot retrieve an unnamed object')); - } - - $response = $this->getService()->request($this->url(), 'HEAD', array('Accept' => '*/*')); - - // check for errors - // @codeCoverageIgnoreStart - if ($response->httpStatus() >= 300) { - throw new Exceptions\ObjFetchError(sprintf( - Lang::translate('Problem retrieving object [%s]'), - $this->url() - )); - } - // @codeCoverageIgnoreEnd - - // set headers as metadata? - $this->saveResponseHeaders($response); - - // parse the metadata - $this->getMetadata($response); - } - - /** - * Extracts the headers from the response, and saves them as object - * attributes. Additional name conversions are done where necessary. - * - * @param Http $response - */ - private function saveResponseHeaders(Http $response, $fillExtraIfNotFound = true) - { - foreach ($response->headers() as $header => $value) { - if (isset($this->headerTranslate[$header])) { - // This header needs to be translated - $property = $this->headerTranslate[$header]; - // Are there multiple properties that need to be set? - if (is_array($property)) { - foreach ($property as $subProperty) { - $this->$subProperty = $value; - } - } else { - $this->$property = $value; - } - } elseif ($fillExtraIfNotFound === true) { - // Otherwise, stock extra headers - $this->extra_headers[$header] = $value; - } - } - } - - /** - * Compatability. - */ - public function refresh() - { - return $this->fetch(); - } - - /** - * Returns the service associated with this object - * - * It's actually the object's container's service, so this method will - * simplify things a bit. - */ - private function getService() - { - return $this->container->getService(); - } - - /** - * Performs an internal check to get the proper MIME type for an object - * - * This function would go over the available PHP methods to get - * the MIME type. - * - * By default it will try to use the PHP fileinfo library which is - * available from PHP 5.3 or as an PECL extension - * (http://pecl.php.net/package/Fileinfo). - * - * It will get the magic file by default from the system wide file - * which is usually available in /usr/share/magic on Unix or try - * to use the file specified in the source directory of the API - * (share directory). - * - * if fileinfo is not available it will try to use the internal - * mime_content_type function. - * - * @param string $handle name of file or buffer to guess the type from - * @return boolean <kbd>TRUE</kbd> if successful - * @throws BadContentTypeException - * @codeCoverageIgnore - */ - private function inferContentType($handle) - { - if ($contentType = $this->getContentType()) { - return $contentType; - } - - $contentType = false; - - $filePath = (is_string($handle)) ? $handle : (string) $handle; - - if (function_exists("finfo_open")) { - - $magicPath = dirname(__FILE__) . "/share/magic"; - $finfo = new FileInfo(FILEINFO_MIME, file_exists($magicPath) ? $magicPath : null); - - if ($finfo) { - - $contentType = is_file($filePath) - ? $finfo->file($handle) - : $finfo->buffer($handle); - - /** - * PHP 5.3 fileinfo display extra information like charset so we - * remove everything after the ; since we are not into that stuff - */ - if (null !== ($extraInfo = strpos($contentType, "; "))) { - $contentType = substr($contentType, 0, $extraInfo); - } - } - - //unset($finfo); - } - - if (!$contentType) { - // Try different native function instead - if (is_file((string) $handle) && function_exists("mime_content_type")) { - $contentType = mime_content_type($handle); - } else { - $this->getLogger()->error('Content-Type cannot be found'); - } - } - - return $contentType; - } - -} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/ObjectStore/Service.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/ObjectStore/Service.php deleted file mode 100644 index 571b33378ac..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/ObjectStore/Service.php +++ /dev/null @@ -1,115 +0,0 @@ -<?php -/** - * PHP OpenCloud library. - * - * @copyright Copyright 2013 Rackspace US, Inc. See COPYING for licensing information. - * @license https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0 - * @version 1.6.0 - * @author Glen Campbell <glen.campbell@rackspace.com> - * @author Jamie Hannaford <jamie.hannaford@rackspace.com> - */ - -namespace OpenCloud\ObjectStore; - -use OpenCloud\OpenStack; -use OpenCloud\Common\Exceptions; -use OpenCloud\Common\Lang; - -/** - * The ObjectStore (Cloud Files) service. - */ -class Service extends AbstractService -{ - - /** - * This holds the associated CDN service (for Rackspace public cloud) - * or is NULL otherwise. The existence of an object here is - * indicative that the CDN service is available. - */ - private $cdn; - - /** - * Creates a new ObjectStore service object. - * - * @param OpenCloud\OpenStack $connection The connection object - * @param string $serviceName The name of the service - * @param string $serviceRegion The service's region - * @param string $urlType The type of URL (normally 'publicURL') - */ - public function __construct( - OpenStack $connection, - $serviceName = RAXSDK_OBJSTORE_NAME, - $serviceRegion = RAXSDK_OBJSTORE_REGION, - $urltype = RAXSDK_OBJSTORE_URLTYPE - ) { - $this->getLogger()->info('Initializing Container Service...'); - - parent::__construct( - $connection, - 'object-store', - $serviceName, - $serviceRegion, - $urltype - ); - - // establish the CDN container, if available - try { - $this->cdn = new CDNService( - $connection, - $serviceName . 'CDN', - $serviceRegion, - $urltype - ); - } catch (Exceptions\EndpointError $e) { - // If we have an endpoint error, then the CDN functionality is not - // available. In this case, we silently ignore it. - } - } - - /** - * Sets the shared secret value for the TEMP_URL - * - * @param string $secret the shared secret - * @return HttpResponse - */ - public function setTempUrlSecret($secret) - { - $response = $this->request( - $this->url(), - 'POST', - array('X-Account-Meta-Temp-Url-Key' => $secret) - ); - - // @codeCoverageIgnoreStart - if ($response->httpStatus() > 204) { - throw new Exceptions\HttpError(sprintf( - Lang::translate('Error in request, status [%d] for URL [%s] [%s]'), - $response->httpStatus(), - $this->url(), - $response->httpBody() - )); - } - // @codeCoverageIgnoreEnd - - return $response; - } - - /** - * Get the CDN service. - * - * @return null|CDNService - */ - public function getCDNService() - { - return $this->cdn; - } - - /** - * Backwards compability. - */ - public function CDN() - { - return $this->getCDNService(); - } - -} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/OpenStack.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/OpenStack.php deleted file mode 100644 index c3e645a5406..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/OpenStack.php +++ /dev/null @@ -1,1198 +0,0 @@ -<?php -/** - * PHP OpenCloud library. - * - * @copyright Copyright 2013 Rackspace US, Inc. See COPYING for licensing information. - * @license https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0 - * @version 1.6.0 - * @author Glen Campbell <glen.campbell@rackspace.com> - * @author Jamie Hannaford <jamie.hannaford@rackspace.com> - */ - -namespace OpenCloud; - -require_once __DIR__ . '/Globals.php'; - -use OpenCloud\Common\Base; -use OpenCloud\Common\Lang; -use OpenCloud\Common\Exceptions; -use OpenCloud\Common\ServiceCatalogItem; - -/** - * The OpenStack class represents a relationship (or "connection") - * between a user and a service. - * - * This is the primary entry point into an OpenStack system, and the only one - * where the developer is required to know and provide the endpoint URL (in - * all other cases, the endpoint is derived from the Service Catalog provided - * by the authentication system). - * - * Since various providers have different mechanisms for authentication, users - * will often use a subclass of OpenStack. For example, the Rackspace - * class is provided for users of Rackspace's cloud services, and other cloud - * providers are welcome to add their own subclasses as well. - * - * General usage example: - * <code> - * $username = 'My Username'; - * $secret = 'My Secret'; - * $connection = new OpenCloud\OpenStack($username, $secret); - * // having established the connection, we can set some defaults - * // this sets the default name and region of the Compute service - * $connection->SetDefaults('Compute', 'cloudServersOpenStack', 'ORD'); - * // access a Compute service - * $chicago = $connection->Compute(); - * // if we want to access a different service, we can: - * $dallas = $connection->Compute('cloudServersOpenStack', 'DFW'); - * </code> - */ -class OpenStack extends Base -{ - - /** - * This holds the HTTP User-Agent: used for all requests to the services. It - * is public so that, if necessary, it can be entirely overridden by the - * developer. However, it's strongly recomended that you use the - * appendUserAgent() method to APPEND your own User Agent identifier to the - * end of this string; the user agent information can be very valuable to - * service providers to track who is using their service. - * - * @var string - */ - public $useragent = RAXSDK_USER_AGENT; - - protected $url; - protected $secret = array(); - protected $token; - protected $expiration = 0; - protected $tenant; - protected $catalog; - protected $connectTimeout = RAXSDK_CONNECTTIMEOUT; - protected $httpTimeout = RAXSDK_TIMEOUT; - protected $overlimitTimeout = RAXSDK_OVERLIMIT_TIMEOUT; - - /** - * This associative array holds default values used to identify each - * service (and to select it from the Service Catalog). Use the - * Compute::SetDefaults() method to change the default values, or - * define the global constants (for example, RAXSDK_COMPUTE_NAME) - * BEFORE loading the OpenCloud library: - * - * <code> - * define('RAXSDK_COMPUTE_NAME', 'cloudServersOpenStack'); - * include('openstack.php'); - * </code> - */ - protected $defaults = array( - 'Compute' => array( - 'name' => RAXSDK_COMPUTE_NAME, - 'region' => RAXSDK_COMPUTE_REGION, - 'urltype' => RAXSDK_COMPUTE_URLTYPE - ), - 'ObjectStore' => array( - 'name' => RAXSDK_OBJSTORE_NAME, - 'region' => RAXSDK_OBJSTORE_REGION, - 'urltype' => RAXSDK_OBJSTORE_URLTYPE - ), - 'Database' => array( - 'name' => RAXSDK_DATABASE_NAME, - 'region' => RAXSDK_DATABASE_REGION, - 'urltype' => RAXSDK_DATABASE_URLTYPE - ), - 'Volume' => array( - 'name' => RAXSDK_VOLUME_NAME, - 'region' => RAXSDK_VOLUME_REGION, - 'urltype' => RAXSDK_VOLUME_URLTYPE - ), - 'LoadBalancer' => array( - 'name' => RAXSDK_LBSERVICE_NAME, - 'region' => RAXSDK_LBSERVICE_REGION, - 'urltype' => RAXSDK_LBSERVICE_URLTYPE - ), - 'DNS' => array( - 'name' => RAXSDK_DNS_NAME, - 'region' => RAXSDK_DNS_REGION, - 'urltype' => RAXSDK_DNS_URLTYPE - ), - 'Orchestration' => array( - 'name' => RAXSDK_ORCHESTRATION_NAME, - 'region' => RAXSDK_ORCHESTRATION_REGION, - 'urltype' => RAXSDK_ORCHESTRATION_URLTYPE - ), - 'CloudMonitoring' => array( - 'name' => RAXSDK_MONITORING_NAME, - 'region' => RAXSDK_MONITORING_REGION, - 'urltype' => RAXSDK_MONITORING_URLTYPE - ), - 'Autoscale' => array( - 'name' => RAXSDK_AUTOSCALE_NAME, - 'region' => RAXSDK_AUTOSCALE_REGION, - 'urltype' => RAXSDK_AUTOSCALE_URLTYPE - ) - ); - - private $_user_write_progress_callback_func; - private $_user_read_progress_callback_func; - - /** - * Tracks file descriptors used by streaming downloads - * - * This will permit multiple simultaneous streaming downloads; the - * key is the URL of the object, and the value is its file descriptor. - * - * To prevent memory overflows, each array element is deleted when - * the end of the file is reached. - */ - private $fileDescriptors = array(); - - /** - * array of options to pass to the CURL request object - */ - private $curlOptions = array(); - - /** - * list of attributes to export/import - */ - private $exportItems = array( - 'token', - 'expiration', - 'tenant', - 'catalog' - ); - - /** - * Creates a new OpenStack object - * - * The OpenStack object needs two bits of information: the URL to - * authenticate against, and a "secret", which is an associative array - * of name/value pairs. Usually, the secret will be a username and a - * password, but other values may be required by different authentication - * systems. For example, OpenStack Keystone requires a username and - * password, but Rackspace uses a username, tenant ID, and API key. - * (See OpenCloud\Rackspace for that.) - * - * @param string $url - the authentication endpoint URL - * @param array $secret - an associative array of auth information: - * * username - * * password - * @param array $options - CURL options to pass to the HttpRequest object - */ - public function __construct($url, array $secret, array $options = array()) - { - // check for supported version - // @codeCoverageIgnoreStart - $version = phpversion(); - if ($version < '5.3.1') { - throw new Exceptions\UnsupportedVersionError(sprintf( - Lang::translate('PHP version [%s] is not supported'), - $version - )); - } - // @codeCoverageIgnoreEnd - - // Start processing - $this->getLogger()->info(Lang::translate('Initializing OpenStack client')); - - // Set properties - $this->setUrl($url); - $this->setSecret($secret); - $this->setCurlOptions($options); - } - - /** - * Set user agent. - * - * @param string $useragent - * @return OpenCloud\OpenStack - */ - public function setUserAgent($useragent) - { - $this->useragent = $useragent; - - return $this; - } - - /** - * Allows the user to append a user agent string - * - * Programs that are using these bindings are encouraged to add their - * user agent to the one supplied by this SDK. This will permit cloud - * providers to track users so that they can provide better service. - * - * @param string $agent an arbitrary user-agent string; e.g. "My Cloud App" - * @return OpenCloud\OpenStack - */ - public function appendUserAgent($useragent) - { - $this->useragent .= ';' . $useragent; - - return $this; - } - - /** - * Get user agent. - * - * @return string - */ - public function getUserAgent() - { - return $this->useragent; - } - - /** - * Sets the URL which the client will access. - * - * @param string $url - * @return OpenCloud\OpenStack - */ - public function setUrl($url) - { - $this->url = $url; - - return $this; - } - - /** - * Get the URL. - * - * @return string - */ - public function getUrl() - { - return $this->url; - } - - /** - * Set the secret for the client. - * - * @param array $secret - * @return OpenCloud\OpenStack - */ - public function setSecret(array $secret = array()) - { - $this->secret = $secret; - - return $this; - } - - /** - * Get the secret. - * - * @return array - */ - public function getSecret() - { - return $this->secret; - } - - /** - * Set the token for this client. - * - * @param string $token - * @return OpenCloud\OpenStack - */ - public function setToken($token) - { - $this->token = $token; - - return $this; - } - - /** - * Get the token for this client. - * - * @return string - */ - public function getToken() - { - return $this->token; - } - - /** - * Set the expiration for this token. - * - * @param int $expiration - * @return OpenCloud\OpenStack - */ - public function setExpiration($expiration) - { - $this->expiration = $expiration; - - return $this; - } - - /** - * Get the expiration time. - * - * @return int - */ - public function getExpiration() - { - return $this->expiration; - } - - /** - * Set the tenant for this client. - * - * @param string $tenant - * @return OpenCloud\OpenStack - */ - public function setTenant($tenant) - { - $this->tenant = $tenant; - - return $this; - } - - /** - * Get the tenant for this client. - * - * @return string - */ - public function getTenant() - { - return $this->tenant; - } - - /** - * Set the service catalog. - * - * @param mixed $catalog - * @return OpenCloud\OpenStack - */ - public function setCatalog($catalog) - { - $this->catalog = $catalog; - - return $this; - } - - /** - * Get the service catalog. - * - * @return array - */ - public function getCatalog() - { - return $this->catalog; - } - - /** - * Set (all) the cURL options. - * - * @param array $options - * @return OpenCloud\OpenStack - */ - public function setCurlOptions(array $options) - { - $this->curlOptions = $options; - - return $this; - } - - /** - * Get the cURL options. - * - * @return array - */ - public function getCurlOptions() - { - return $this->curlOptions; - } - - /** - * Set a specific file descriptor (associated with a URL) - * - * @param string $key - * @param resource $value - * @return OpenCloud\OpenStack - */ - public function setFileDescriptor($key, $value) - { - $this->descriptors[$key] = $value; - - return $this; - } - - /** - * Get a specific file descriptor (associated with a URL) - * - * @param string $key - * @return resource|false - */ - public function getFileDescriptor($key) - { - return (!isset($this->descriptors[$key])) ? false : $this->descriptors[$key]; - } - - /** - * Get the items to be exported. - * - * @return array - */ - public function getExportItems() - { - return $this->exportItems; - } - - /** - * Sets the connect timeout. - * - * @param int $timeout - * @return OpenCloud\OpenStack - */ - public function setConnectTimeout($timeout) - { - $this->connectTimeout = $timeout; - - return $this; - } - - /** - * Get the connect timeout. - * - * @return int - */ - public function getConnectTimeout() - { - return $this->connectTimeout; - } - - /** - * Set the HTTP timeout. - * - * @param int $timeout - * @return OpenCloud\OpenStack - */ - public function setHttpTimeout($timeout) - { - $this->httpTimeout = $timeout; - - return $this; - } - - /** - * Get the HTTP timeout. - * - * @return int - */ - public function getHttpTimeout() - { - return $this->httpTimeout; - } - - /** - * Set the overlimit timeout. - * - * @param int $timeout - * @return OpenCloud\OpenStack - */ - public function setOverlimitTimeout($timeout) - { - $this->overlimitTimeout = $timeout; - - return $this; - } - - /** - * Get the overlimit timeout. - * - * @return int - */ - public function getOverlimitTimeout() - { - return $this->overlimitTimeout; - } - - /** - * Sets default values (an array) for a service. Each array must contain a - * "name", "region" and "urltype" key. - * - * @param string $service - * @param array $value - * @return OpenCloud\OpenStack - */ - public function setDefault($service, array $value = array()) - { - if (isset($value['name']) && isset($value['region']) && isset($value['urltype'])) { - $this->defaults[$service] = $value; - } - - return $this; - } - - /** - * Get a specific default value for a service. If none exist, return FALSE. - * - * @param string $service - * @return array|false - */ - public function getDefault($service) - { - return (!isset($this->defaults[$service])) ? false : $this->defaults[$service]; - } - -/** - * Sets the timeouts for the current connection - * - * @api - * @param integer $t_http the HTTP timeout value (the max period that - * the OpenStack object will wait for any HTTP request to complete). - * Value is in seconds. - * @param integer $t_conn the Connect timeout value (the max period - * that the OpenStack object will wait to establish an HTTP - * connection). Value is in seconds. - * @param integer $t_overlimit the overlimit timeout value (the max period - * that the OpenStack object will wait to retry on an overlimit - * condition). Value is in seconds. - * @return void - */ - public function setTimeouts($httpTimeout, $connectTimeout = null, $overlimitTimeout = null) - { - $this->setHttpTimeout($httpTimeout); - - if (isset($connectTimeout)) { - $this->setConnectTimeout($connectTimeout); - } - - if (isset($overlimitTimeout)) { - $this->setOverlimitTimeout($overlimitTimeout); - } - } - - /** - * Returns the URL of this object - * - * @api - * @param string $subresource specified subresource - * @return string - */ - public function url($subresource='tokens') - { - return Lang::noslash($this->url) . '/' . $subresource; - } - - /** - * Returns the stored secret - * - * @return array - */ - public function secret() - { - return $this->getSecret(); - } - - /** - * Re-authenticates session if expired. - */ - public function checkExpiration() - { - if ($this->hasExpired()) { - $this->authenticate(); - } - } - - /** - * Checks whether token has expired. - * - * @return bool - */ - public function hasExpired() - { - return time() > ($this->getExpiration() - RAXSDK_FUDGE); - } - - /** - * Returns the cached token; if it has expired, then it re-authenticates - * - * @api - * @return string - */ - public function token() - { - $this->checkExpiration(); - - return $this->getToken(); - } - - /** - * Returns the cached expiration time; - * if it has expired, then it re-authenticates - * - * @api - * @return string - */ - public function expiration() - { - $this->checkExpiration(); - - return $this->getExpiration(); - } - - /** - * Returns the tenant ID, re-authenticating if necessary - * - * @api - * @return string - */ - public function tenant() - { - $this->checkExpiration(); - - return $this->getTenant(); - } - - /** - * Returns the service catalog object from the auth service - * - * @return \stdClass - */ - public function serviceCatalog() - { - $this->checkExpiration(); - - return $this->getCatalog(); - } - - /** - * Returns a Collection of objects with information on services - * - * Note that these are informational (read-only) and are not actually - * 'Service'-class objects. - */ - public function serviceList() - { - return new Common\Collection($this, 'ServiceCatalogItem', $this->serviceCatalog()); - } - - /** - * Creates and returns the formatted credentials to POST to the auth - * service. - * - * @return string - */ - public function credentials() - { - if (isset($this->secret['username']) && isset($this->secret['password'])) { - - $credentials = array( - 'auth' => array( - 'passwordCredentials' => array( - 'username' => $this->secret['username'], - 'password' => $this->secret['password'] - ) - ) - ); - - if (isset($this->secret['tenantName'])) { - $credentials['auth']['tenantName'] = $this->secret['tenantName']; - } - - return json_encode($credentials); - - } else { - throw new Exceptions\CredentialError( - Lang::translate('Unrecognized credential secret') - ); - } - } - - /** - * Authenticates using the supplied credentials - * - * @api - * @return void - * @throws AuthenticationError - */ - public function authenticate() - { - // try to auth - $response = $this->request( - $this->url(), - 'POST', - array('Content-Type'=>'application/json'), - $this->credentials() - ); - - $json = $response->httpBody(); - - // check for errors - if ($response->HttpStatus() >= 400) { - throw new Exceptions\AuthenticationError(sprintf( - Lang::translate('Authentication failure, status [%d], response [%s]'), - $response->httpStatus(), - $json - )); - } - - // Decode and check - $object = json_decode($json); - $this->checkJsonError(); - - // Save the token information as well as the ServiceCatalog - $this->setToken($object->access->token->id); - $this->setExpiration(strtotime($object->access->token->expires)); - $this->setCatalog($object->access->serviceCatalog); - - /** - * In some cases, the tenant name/id is not returned - * as part of the auth token, so we check for it before - * we set it. This occurs with pure Keystone, but not - * with the Rackspace auth. - */ - if (isset($object->access->token->tenant)) { - $this->setTenant($object->access->token->tenant->id); - } - } - - /** - * Performs a single HTTP request - * - * The request() method is one of the most frequently-used in the entire - * library. It performs an HTTP request using the specified URL, method, - * and with the supplied headers and body. It handles error and - * exceptions for the request. - * - * @api - * @param string url - the URL of the request - * @param string method - the HTTP method (defaults to GET) - * @param array headers - an associative array of headers - * @param string data - either a string or a resource (file pointer) to - * use as the request body (for PUT or POST) - * @return HttpResponse object - * @throws HttpOverLimitError, HttpUnauthorizedError, HttpForbiddenError - */ - public function request($url, $method = 'GET', $headers = array(), $data = null) - { - $this->getLogger()->info('Resource [{url}] method [{method}] body [{body}]', array( - 'url' => $url, - 'method' => $method, - 'data' => $data - )); - - // get the request object - $http = $this->getHttpRequestObject($url, $method, $this->getCurlOptions()); - - // set various options - $this->getLogger()->info('Headers: [{headers}]', array( - 'headers' => print_r($headers, true) - )); - - $http->setheaders($headers); - $http->setHttpTimeout($this->getHttpTimeout()); - $http->setConnectTimeout($this->getConnectTimeout()); - $http->setOption(CURLOPT_USERAGENT, $this->getUserAgent()); - - // data can be either a resource or a string - if (is_resource($data)) { - // loading from or writing to a file - // set the appropriate callback functions - switch($method) { - // @codeCoverageIgnoreStart - case 'GET': - // need to save the file descriptor - $this->setFileDescriptor($url, $data); - // set the CURL options - $http->setOption(CURLOPT_FILE, $data); - $http->setOption(CURLOPT_WRITEFUNCTION, array($this, '_write_cb')); - break; - // @codeCoverageIgnoreEnd - case 'PUT': - case 'POST': - // need to save the file descriptor - $this->setFileDescriptor($url, $data); - if (!isset($headers['Content-Length'])) { - throw new Exceptions\HttpError( - Lang::translate('The Content-Length: header must be specified for file uploads') - ); - } - $http->setOption(CURLOPT_UPLOAD, TRUE); - $http->setOption(CURLOPT_INFILE, $data); - $http->setOption(CURLOPT_INFILESIZE, $headers['Content-Length']); - $http->setOption(CURLOPT_READFUNCTION, array($this, '_read_cb')); - break; - default: - // do nothing - break; - } - } elseif (is_string($data)) { - $http->setOption(CURLOPT_POSTFIELDS, $data); - } elseif (isset($data)) { - throw new Exceptions\HttpError( - Lang::translate('Unrecognized data type for PUT/POST body, must be string or resource') - ); - } - - // perform the HTTP request; returns an HttpResult object - $response = $http->execute(); - - // handle and retry on overlimit errors - if ($response->httpStatus() == 413) { - - $object = json_decode($response->httpBody()); - $this->checkJsonError(); - - // @codeCoverageIgnoreStart - if (isset($object->overLimit)) { - /** - * @TODO(glen) - The documentation says "retryAt", but - * the field returned is "retryAfter". If the doc changes, - * then there's no problem, but we'll need to fix this if - * they change the code to match the docs. - */ - $retryAfter = $object->overLimit->retryAfter; - $sleepInterval = strtotime($retryAfter) - time(); - - if ($sleepInterval && $sleepInterval <= $this->getOverlimitTimeout()) { - sleep($sleepInterval); - $response = $http->Execute(); - } else { - throw new Exceptions\HttpOverLimitError(sprintf( - Lang::translate('Over limit; next available request [%s][%s] is not for [%d] seconds at [%s]'), - $method, - $url, - $sleepInterval, - $retryAfter - )); - } - } - // @codeCoverageIgnoreEnd - } - - // do some common error checking - switch ($response->httpStatus()) { - case 401: - throw new Exceptions\HttpUnauthorizedError(sprintf( - Lang::translate('401 Unauthorized for [%s] [%s]'), - $url, - $response->HttpBody() - )); - break; - case 403: - throw new Exceptions\HttpForbiddenError(sprintf( - Lang::translate('403 Forbidden for [%s] [%s]'), - $url, - $response->HttpBody() - )); - break; - case 413: // limit - throw new Exceptions\HttpOverLimitError(sprintf( - Lang::translate('413 Over limit for [%s] [%s]'), - $url, - $response->HttpBody() - )); - break; - default: - // everything is fine here, we're fine, how are you? - break; - } - - // free the handle - $http->close(); - - // return the HttpResponse object - $this->getLogger()->info('HTTP STATUS [{code}]', array( - 'code' => $response->httpStatus() - )); - - return $response; - } - - /** - * Sets default values for name, region, URL type for a service - * - * Once these are set (and they can also be set by defining global - * constants), then you do not need to specify these values when - * creating new service objects. - * - * @api - * @param string $service the name of a supported service; e.g. 'Compute' - * @param string $name the service name; e.g., 'cloudServersOpenStack' - * @param string $region the region name; e.g., 'LON' - * @param string $urltype the type of URL to use; e.g., 'internalURL' - * @return void - * @throws UnrecognizedServiceError - */ - public function setDefaults( - $service, - $name = null, - $region = null, - $urltype = null - ) { - - if (!isset($this->defaults[$service])) { - throw new Exceptions\UnrecognizedServiceError(sprintf( - Lang::translate('Service [%s] is not recognized'), $service - )); - } - - if (isset($name)) { - $this->defaults[$service]['name'] = $name; - } - - if (isset($region)) { - $this->defaults[$service]['region'] = $region; - } - - if (isset($urltype)) { - $this->defaults[$service]['urltype'] = $urltype; - } - } - - /** - * Allows the user to define a function for tracking uploads - * - * This can be used to implement a progress bar or similar function. The - * callback function is called with a single parameter, the length of the - * data that is being uploaded on this call. - * - * @param callable $callback the name of a global callback function, or an - * array($object, $functionname) - * @return void - */ - public function setUploadProgressCallback($callback) - { - $this->_user_write_progress_callback_func = $callback; - } - - /** - * Allows the user to define a function for tracking downloads - * - * This can be used to implement a progress bar or similar function. The - * callback function is called with a single parameter, the length of the - * data that is being downloaded on this call. - * - * @param callable $callback the name of a global callback function, or an - * array($object, $functionname) - * @return void - */ - public function setDownloadProgressCallback($callback) - { - $this->_user_read_progress_callback_func = $callback; - } - - /** - * Callback function to handle reads for file uploads - * - * Internal function for handling file uploads. Note that, although this - * function's visibility is public, this is only because it must be called - * from the HttpRequest interface. This should NOT be called by users - * directly. - * - * @param resource $ch a CURL handle - * @param resource $fd a file descriptor - * @param integer $length the amount of data to read - * @return string the data read - * @codeCoverageIgnore - */ - public function _read_cb($ch, $fd, $length) - { - $data = fread($fd, $length); - $len = strlen($data); - if (isset($this->_user_write_progress_callback_func)) { - call_user_func($this->_user_write_progress_callback_func, $len); - } - return $data; - } - - /** - * Callback function to handle writes for file downloads - * - * Internal function for handling file downloads. Note that, although this - * function's visibility is public, this is only because it must be called - * via the HttpRequest interface. This should NOT be called by users - * directly. - * - * @param resource $ch a CURL handle - * @param string $data the data to be written to a file - * @return integer the number of bytes written - * @codeCoverageIgnore - */ - public function _write_cb($ch, $data) - { - $url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); - - if (false === ($fp = $this->getFileDescriptor($url))) { - throw new Exceptions\HttpUrlError(sprintf( - Lang::translate('Cannot find file descriptor for URL [%s]'), $url) - ); - } - - $dlen = strlen($data); - fwrite($fp, $data, $dlen); - - // call used callback function - if (isset($this->_user_read_progress_callback_func)) { - call_user_func($this->_user_read_progress_callback_func, $dlen); - } - - // MUST return the length to CURL - return $dlen; - } - - /** - * exports saved token, expiration, tenant, and service catalog as an array - * - * This could be stored in a cache (APC or disk file) and reloaded using - * ImportCredentials() - * - * @return array - */ - public function exportCredentials() - { - $this->authenticate(); - - $array = array(); - - foreach ($this->getExportItems() as $key) { - $array[$key] = $this->$key; - } - - return $array; - } - - /** - * imports credentials from an array - * - * Takes the same values as ExportCredentials() and reuses them. - * - * @return void - */ - public function importCredentials(array $values) - { - foreach ($this->getExportItems() as $item) { - $this->$item = $values[$item]; - } - } - - /********** FACTORY METHODS ********** - * - * These methods are provided to permit easy creation of services - * (for example, Nova or Swift) from a connection object. As new - * services are supported, factory methods should be provided here. - */ - - /** - * Creates a new ObjectStore object (Swift/Cloud Files) - * - * @api - * @param string $name the name of the Object Storage service to attach to - * @param string $region the name of the region to use - * @param string $urltype the URL type (normally "publicURL") - * @return ObjectStore - */ - public function objectStore($name = null, $region = null, $urltype = null) - { - return $this->service('ObjectStore', $name, $region, $urltype); - } - - /** - * Creates a new Compute object (Nova/Cloud Servers) - * - * @api - * @param string $name the name of the Compute service to attach to - * @param string $region the name of the region to use - * @param string $urltype the URL type (normally "publicURL") - * @return Compute - */ - public function compute($name = null, $region = null, $urltype = null) - { - return $this->service('Compute', $name, $region, $urltype); - } - - /** - * Creates a new Orchestration (heat) service object - * - * @api - * @param string $name the name of the Compute service to attach to - * @param string $region the name of the region to use - * @param string $urltype the URL type (normally "publicURL") - * @return Orchestration\Service - * @codeCoverageIgnore - */ - public function orchestration($name = null, $region = null, $urltype = null) - { - return $this->service('Orchestration', $name, $region, $urltype); - } - - /** - * Creates a new VolumeService (cinder) service object - * - * This is a factory method that is Rackspace-only (NOT part of OpenStack). - * - * @param string $name the name of the service (e.g., 'cloudBlockStorage') - * @param string $region the region (e.g., 'DFW') - * @param string $urltype the type of URL (e.g., 'publicURL'); - */ - public function volumeService($name = null, $region = null, $urltype = null) - { - return $this->service('Volume', $name, $region, $urltype); - } - - /** - * Generic Service factory method - * - * Contains code reused by the other service factory methods. - * - * @param string $class the name of the Service class to produce - * @param string $name the name of the Compute service to attach to - * @param string $region the name of the region to use - * @param string $urltype the URL type (normally "publicURL") - * @return Service (or subclass such as Compute, ObjectStore) - * @throws ServiceValueError - */ - public function service($class, $name = null, $region = null, $urltype = null) - { - // debug message - $this->getLogger()->info('Factory for class [{class}] [{name}/{region}/{urlType}]', array( - 'class' => $class, - 'name' => $name, - 'region' => $region, - 'urlType' => $urltype - )); - - // Strips off base namespace - $class = preg_replace('#\\\?OpenCloud\\\#', '', $class); - - // check for defaults - $default = $this->getDefault($class); - - // report errors - if (!$name = $name ?: $default['name']) { - throw new Exceptions\ServiceValueError(sprintf( - Lang::translate('No value for %s name'), - $class - )); - } - - if (!$region = $region ?: $default['region']) { - throw new Exceptions\ServiceValueError(sprintf( - Lang::translate('No value for %s region'), - $class - )); - } - - if (!$urltype = $urltype ?: $default['urltype']) { - throw new Exceptions\ServiceValueError(sprintf( - Lang::translate('No value for %s URL type'), - $class - )); - } - - // return the object - $fullclass = 'OpenCloud\\' . $class . '\\Service'; - - return new $fullclass($this, $name, $region, $urltype); - } - - /** - * returns a service catalog item - * - * This is a helper function used to list service catalog items easily - */ - public function serviceCatalogItem($info = array()) - { - return new ServiceCatalogItem($info); - } - -} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Rackspace.php b/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Rackspace.php deleted file mode 100644 index 41be608b347..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/OpenCloud/Rackspace.php +++ /dev/null @@ -1,132 +0,0 @@ -<?php -/** - * The Rackspace cloud/connection class (which uses different authentication - * than the pure OpenStack class) - * - * @copyright 2012-2013 Rackspace Hosting, Inc. - * See COPYING for licensing information - * - * @package phpOpenCloud - * @version 1.0 - * @author Glen Campbell <glen.campbell@rackspace.com> - */ - -namespace OpenCloud; - -/** - * Rackspace extends the OpenStack class with support for Rackspace's - * API key and tenant requirements. - * - * The only difference between Rackspace and OpenStack is that the - * Rackspace class generates credentials using the username - * and API key, as required by the Rackspace authentication - * service. - * - * Example: - * <code> - * $username = 'FRED'; - * $apiKey = '0900af093093788912388fc09dde090ffee09'; - * $conn = new Rackspace( - * 'https://identity.api.rackspacecloud.com/v2.0/', - * array( - * 'username' => $username, - * 'apiKey' => $apiKey - * )); - * </code> - */ -class Rackspace extends OpenStack -{ - - //this is the JSON string for our new credentials -const APIKEYTEMPLATE = <<<ENDCRED -{ "auth": { "RAX-KSKEY:apiKeyCredentials": { "username": "%s", - "apiKey": "%s" - } - } -} -ENDCRED; - - /** - * Generates Rackspace API key credentials - * - * @return string - */ - public function Credentials() - { - $sec = $this->Secret(); - if (isset($sec['username']) - && isset($sec['apiKey']) - ) { - return sprintf( - self::APIKEYTEMPLATE, - $sec['username'], - $sec['apiKey'] - ); - } else { - return parent::Credentials(); - } - } - - /** - * Creates a new DbService (Database as a Service) object - * - * This is a factory method that is Rackspace-only (NOT part of OpenStack). - * - * @param string $name the name of the service (e.g., 'Cloud Databases') - * @param string $region the region (e.g., 'DFW') - * @param string $urltype the type of URL (e.g., 'publicURL'); - */ - public function DbService($name = null, $region = null, $urltype = null) - { - return $this->Service('Database', $name, $region, $urltype); - } - - /** - * Creates a new LoadBalancerService object - * - * This is a factory method that is Rackspace-only (NOT part of OpenStack). - * - * @param string $name the name of the service - * (e.g., 'Cloud Load Balancers') - * @param string $region the region (e.g., 'DFW') - * @param string $urltype the type of URL (e.g., 'publicURL'); - */ - public function LoadBalancerService($name = null, $region = null, $urltype = null) - { - return $this->Service('LoadBalancer', $name, $region, $urltype); - } - - /** - * creates a new DNS service object - * - * This is a factory method that is currently Rackspace-only - * (not available via the OpenStack class) - */ - public function DNS($name = null, $region = null, $urltype = null) - { - return $this->Service('DNS', $name, $region, $urltype); - } - - /** - * creates a new CloudMonitoring service object - * - * This is a factory method that is currently Rackspace-only - * (not available via the OpenStack class) - */ - public function CloudMonitoring($name=null, $region=null, $urltype=null) - { - return $this->Service('CloudMonitoring', $name, $region, $urltype); - } - - /** - * creates a new Autoscale service object - * - * This is a factory method that is currently Rackspace-only - * (not available via the OpenStack class) - */ - public function Autoscale($name=null, $region=null, $urltype=null) - { - return $this->Service('Autoscale', $name, $region, $urltype); - } - -} diff --git a/apps/files_external/3rdparty/php-opencloud/lib/openstack.php b/apps/files_external/3rdparty/php-opencloud/lib/openstack.php deleted file mode 100644 index 738902d244e..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/openstack.php +++ /dev/null @@ -1,8 +0,0 @@ -<?php -/** - * provided for backwards compatibility - * - * @copyright 2013 Rackspace Hosting, Inc. - * @license http://www.apache.org/licenses/LICENSE-2.0 - */ -require_once __DIR__.'/php-opencloud.php'; diff --git a/apps/files_external/3rdparty/php-opencloud/lib/php-opencloud.php b/apps/files_external/3rdparty/php-opencloud/lib/php-opencloud.php deleted file mode 100644 index 15ff034b92d..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/php-opencloud.php +++ /dev/null @@ -1,15 +0,0 @@ -<?php -/** - * entry point for PHP-OpenCloud library - * - * @copyright 2013 Rackspace Hosting, Inc. - * @license http://www.apache.org/licenses/LICENSE-2.0 - */ -require_once(__DIR__ . '/Autoload.php'); -require_once(__DIR__ . '/OpenCloud/Globals.php'); - -$classLoader = new ClassLoader; -$classLoader->registerNamespaces(array( - 'OpenCloud' => array(__DIR__, __DIR__ . '/../tests') -)); -$classLoader->register();
\ No newline at end of file diff --git a/apps/files_external/3rdparty/php-opencloud/lib/rackspace.php b/apps/files_external/3rdparty/php-opencloud/lib/rackspace.php deleted file mode 100644 index 738902d244e..00000000000 --- a/apps/files_external/3rdparty/php-opencloud/lib/rackspace.php +++ /dev/null @@ -1,8 +0,0 @@ -<?php -/** - * provided for backwards compatibility - * - * @copyright 2013 Rackspace Hosting, Inc. - * @license http://www.apache.org/licenses/LICENSE-2.0 - */ -require_once __DIR__.'/php-opencloud.php'; diff --git a/apps/files_external/ajax/dropbox.php b/apps/files_external/ajax/dropbox.php index 91c465500d0..bbedf8e9cac 100644 --- a/apps/files_external/ajax/dropbox.php +++ b/apps/files_external/ajax/dropbox.php @@ -5,6 +5,7 @@ require_once __DIR__ . '/../3rdparty/Dropbox/autoload.php'; OCP\JSON::checkAppEnabled('files_external'); OCP\JSON::checkLoggedIn(); OCP\JSON::callCheck(); +$l = OC_L10N::get('files_external'); if (isset($_POST['app_key']) && isset($_POST['app_secret'])) { $oauth = new Dropbox_OAuth_Curl($_POST['app_key'], $_POST['app_secret']); @@ -23,7 +24,7 @@ if (isset($_POST['app_key']) && isset($_POST['app_secret'])) { 'request_token_secret' => $token['token_secret']))); } catch (Exception $exception) { OCP\JSON::error(array('data' => array('message' => - 'Fetching request tokens failed. Verify that your Dropbox app key and secret are correct.') + $l->t('Fetching request tokens failed. Verify that your Dropbox app key and secret are correct.')) )); } break; @@ -36,7 +37,7 @@ if (isset($_POST['app_key']) && isset($_POST['app_secret'])) { 'access_token_secret' => $token['token_secret'])); } catch (Exception $exception) { OCP\JSON::error(array('data' => array('message' => - 'Fetching access tokens failed. Verify that your Dropbox app key and secret are correct.') + $l->t('Fetching access tokens failed. Verify that your Dropbox app key and secret are correct.')) )); } } @@ -44,5 +45,5 @@ if (isset($_POST['app_key']) && isset($_POST['app_secret'])) { } } } else { - OCP\JSON::error(array('data' => array('message' => 'Please provide a valid Dropbox app key and secret.'))); + OCP\JSON::error(array('data' => array('message' => $l->t('Please provide a valid Dropbox app key and secret.')))); } diff --git a/apps/files_external/ajax/google.php b/apps/files_external/ajax/google.php index 2594a1780b3..13e74071846 100644 --- a/apps/files_external/ajax/google.php +++ b/apps/files_external/ajax/google.php @@ -6,6 +6,7 @@ require_once 'Google_Client.php'; OCP\JSON::checkAppEnabled('files_external'); OCP\JSON::checkLoggedIn(); OCP\JSON::callCheck(); +$l = OC_L10N::get('files_external'); if (isset($_POST['client_id']) && isset($_POST['client_secret']) && isset($_POST['redirect'])) { $client = new Google_Client(); @@ -23,7 +24,7 @@ if (isset($_POST['client_id']) && isset($_POST['client_secret']) && isset($_POST ))); } catch (Exception $exception) { OCP\JSON::error(array('data' => array( - 'message' => 'Step 1 failed. Exception: '.$exception->getMessage() + 'message' => $l->t('Step 1 failed. Exception: %s', array($exception->getMessage())) ))); } } else if ($step == 2 && isset($_POST['code'])) { @@ -34,7 +35,7 @@ if (isset($_POST['client_id']) && isset($_POST['client_secret']) && isset($_POST ))); } catch (Exception $exception) { OCP\JSON::error(array('data' => array( - 'message' => 'Step 2 failed. Exception: '.$exception->getMessage() + 'message' => $l->t('Step 2 failed. Exception: %s', array($exception->getMessage())) ))); } } diff --git a/apps/files_external/l10n/pt_BR.php b/apps/files_external/l10n/pt_BR.php index be5e8fcda8d..14add7fed9e 100644 --- a/apps/files_external/l10n/pt_BR.php +++ b/apps/files_external/l10n/pt_BR.php @@ -2,10 +2,10 @@ $TRANSLATIONS = array( "External storage" => "Armazenamento Externo", "Local" => "Local", -"Location" => "Local", +"Location" => "Localização", "Amazon S3" => "Amazon S3", "Key" => "Chave", -"Secret" => "Secreta", +"Secret" => "Segredo", "Bucket" => "Cesta", "Amazon S3 and compliant" => "Amazon S3 e compatível", "Access Key" => "Chave de Acesso", @@ -17,7 +17,7 @@ $TRANSLATIONS = array( "Enable Path Style" => "Habilitar Estilo do Caminho", "App key" => "Chave do Aplicativo", "App secret" => "Segredo da Aplicação", -"Host" => "Servidor", +"Host" => "Host", "Username" => "Nome de Usuário", "Password" => "Senha", "Root" => "Raiz", @@ -35,7 +35,7 @@ $TRANSLATIONS = array( "URL of identity endpoint (required for OpenStack Object Storage)" => "Ponto final de identidade da URL (obrigatório para armazenamento de objetos OpenStack)", "Timeout of HTTP requests in seconds (optional)" => "Tempo limite de solicitações HTTP em segundos (opcional)", "Share" => "Compartilhar", -"SMB / CIFS using OC login" => "SMB / CIFS usando OC logon", +"SMB / CIFS using OC login" => "SMB / CIFS usando OC login", "Username as share" => "Nome de usuário como compartilhado", "URL" => "URL", "Secure https://" => "https:// segura", @@ -43,7 +43,7 @@ $TRANSLATIONS = array( "Access granted" => "Acesso concedido", "Error configuring Dropbox storage" => "Erro ao configurar armazenamento do Dropbox", "Grant access" => "Permitir acesso", -"Please provide a valid Dropbox app key and secret." => "Por favor forneça um app key e secret válido do Dropbox", +"Please provide a valid Dropbox app key and secret." => "Por favor forneça uma chave de aplicativo e segurança válidos para o Dropbox", "Error configuring Google Drive storage" => "Erro ao configurar armazenamento do Google Drive", "Personal" => "Pessoal", "System" => "Sistema", diff --git a/apps/files_external/lib/config.php b/apps/files_external/lib/config.php index 6f78e569b64..ec908fb068d 100755 --- a/apps/files_external/lib/config.php +++ b/apps/files_external/lib/config.php @@ -107,6 +107,10 @@ class OC_Mount_Config { $loader = \OC\Files\Filesystem::getLoader(); $manager = \OC\Files\Filesystem::getMountManager(); foreach ($mountPoints as $mountPoint => $options) { + if (isset($options['options']['objectstore'])) { + $objectClass = $options['options']['objectstore']['class']; + $options['options']['objectstore'] = new $objectClass($options['options']['objectstore']); + } if ($options['personal']){ $mount = new \OCA\Files_External\PersonalMount($options['class'], $mountPoint, $options['options'], $loader); } else{ diff --git a/apps/files_external/lib/swift.php b/apps/files_external/lib/swift.php index 03364867b0c..47ab3294673 100644 --- a/apps/files_external/lib/swift.php +++ b/apps/files_external/lib/swift.php @@ -22,21 +22,21 @@ namespace OC\Files\Storage; -set_include_path(get_include_path() . PATH_SEPARATOR . - \OC_App::getAppPath('files_external') . '/3rdparty/php-opencloud/lib'); -require_once 'openstack.php'; - -use \OpenCloud; -use \OpenCloud\Common\Exceptions; +use Guzzle\Http\Exception\ClientErrorResponseException; +use OpenCloud; +use OpenCloud\Common\Exceptions; +use OpenCloud\OpenStack; +use OpenCloud\ObjectStore\Resource\DataObject; +use OpenCloud\ObjectStore\Exception; class Swift extends \OC\Files\Storage\Common { /** - * @var \OpenCloud\ObjectStore + * @var \OpenCloud\ObjectStore\Service */ private $connection; /** - * @var \OpenCloud\ObjectStore\Container + * @var \OpenCloud\ObjectStore\Resource\Container */ private $container; /** @@ -62,6 +62,8 @@ class Swift extends \OC\Files\Storage\Common { $path = '.'; } + $path = str_replace('#', '%23', $path); + return $path; } @@ -82,12 +84,9 @@ class Swift extends \OC\Files\Storage\Common { */ private function doesObjectExist($path) { try { - $object = $this->container->DataObject($path); + $this->container->getPartialObject($path); return true; - } catch (Exceptions\ObjFetchError $e) { - \OCP\Util::writeLog('files_external', $e->getMessage(), \OCP\Util::ERROR); - return false; - } catch (Exceptions\HttpError $e) { + } catch (ClientErrorResponseException $e) { \OCP\Util::writeLog('files_external', $e->getMessage(), \OCP\Util::ERROR); return false; } @@ -113,7 +112,6 @@ class Swift extends \OC\Files\Storage\Common { $settings = array( 'username' => $params['user'], - ); if (isset($params['password'])) { @@ -126,19 +124,18 @@ class Swift extends \OC\Files\Storage\Common { $settings['tenantName'] = $params['tenant']; } - $this->anchor = new \OpenCloud\OpenStack($params['url'], $settings); - if (isset($params['timeout'])) { - $this->anchor->setHttpTimeout($params['timeout']); + $settings['timeout'] = $params['timeout']; } - $this->connection = $this->anchor->ObjectStore($params['service_name'], $params['region'], 'publicURL'); + $this->anchor = new OpenStack($params['url'], $settings); + + $this->connection = $this->anchor->objectStoreService($params['service_name'], $params['region']); try { - $this->container = $this->connection->Container($this->bucket); - } catch (Exceptions\ContainerNotFoundError $e) { - $this->container = $this->connection->Container(); - $this->container->Create(array('name' => $this->bucket)); + $this->container = $this->connection->getContainer($this->bucket); + } catch (ClientErrorResponseException $e) { + $this->container = $this->connection->createContainer($this->bucket); } if (!$this->file_exists('.')) { @@ -158,11 +155,10 @@ class Swift extends \OC\Files\Storage\Common { } try { - $object = $this->container->DataObject(); - $object->Create(array( - 'name' => $path, - 'content_type' => 'httpd/unix-directory' - )); + $customHeaders = array('content-type' => 'httpd/unix-directory'); + $metadataHeaders = DataObject::stockHeaders(array()); + $allHeaders = $customHeaders + $metadataHeaders; + $this->container->uploadObject($path, '', $allHeaders); } catch (Exceptions\CreateUpdateError $e) { \OCP\Util::writeLog('files_external', $e->getMessage(), \OCP\Util::ERROR); return false; @@ -202,8 +198,7 @@ class Swift extends \OC\Files\Storage\Common { } try { - $object = $this->container->DataObject($path . '/'); - $object->Delete(); + $this->container->dataObject()->setName($path . '/')->delete(); } catch (Exceptions\DeleteError $e) { \OCP\Util::writeLog('files_external', $e->getMessage(), \OCP\Util::ERROR); return false; @@ -221,15 +216,19 @@ class Swift extends \OC\Files\Storage\Common { $path .= '/'; } + $path = str_replace('%23', '#', $path); // the prefix is sent as a query param, so revert the encoding of # + try { $files = array(); - $objects = $this->container->ObjectList(array( + /** @var OpenCloud\Common\Collection $objects */ + $objects = $this->container->objectList(array( 'prefix' => $path, 'delimiter' => '/' )); - while ($object = $objects->Next()) { - $file = basename($object->Name()); + /** @var OpenCloud\ObjectStore\Resource\DataObject $object */ + foreach ($objects as $object) { + $file = basename($object->getName()); if ($file !== basename($path)) { $files[] = $file; } @@ -252,15 +251,22 @@ class Swift extends \OC\Files\Storage\Common { } try { - $object = $this->container->DataObject($path); - } catch (Exceptions\ObjFetchError $e) { + $object = $this->container->getPartialObject($path); + } catch (ClientErrorResponseException $e) { \OCP\Util::writeLog('files_external', $e->getMessage(), \OCP\Util::ERROR); return false; } - $mtime = $object->extra_headers['X-Timestamp']; - if (isset($object->extra_headers['X-Object-Meta-Timestamp'])) { - $mtime = $object->extra_headers['X-Object-Meta-Timestamp']; + $dateTime = \DateTime::createFromFormat(\DateTime::RFC1123, $object->getLastModified()); + if ($dateTime !== false) { + $mtime = $dateTime->getTimestamp(); + } else { + $mtime = null; + } + $objectMetadata = $object->getMetadata(); + $metaTimestamp = $objectMetadata->getProperty('timestamp'); + if (isset($metaTimestamp)) { + $mtime = $metaTimestamp; } if (!empty($mtime)) { @@ -268,7 +274,7 @@ class Swift extends \OC\Files\Storage\Common { } $stat = array(); - $stat['size'] = $object->content_length; + $stat['size'] = (int) $object->getContentLength(); $stat['mtime'] = $mtime; $stat['atime'] = time(); return $stat; @@ -293,13 +299,13 @@ class Swift extends \OC\Files\Storage\Common { public function unlink($path) { $path = $this->normalizePath($path); + if ($this->is_dir($path)) { + return $this->rmdir($path); + } + try { - $object = $this->container->DataObject($path); - $object->Delete(); - } catch (Exceptions\DeleteError $e) { - \OCP\Util::writeLog('files_external', $e->getMessage(), \OCP\Util::ERROR); - return false; - } catch (Exceptions\ObjFetchError $e) { + $this->container->dataObject()->setName($path)->delete(); + } catch (ClientErrorResponseException $e) { \OCP\Util::writeLog('files_external', $e->getMessage(), \OCP\Util::ERROR); return false; } @@ -316,13 +322,19 @@ class Swift extends \OC\Files\Storage\Common { $tmpFile = \OC_Helper::tmpFile(); self::$tmpFiles[$tmpFile] = $path; try { - $object = $this->container->DataObject($path); - } catch (Exceptions\ObjFetchError $e) { + $object = $this->container->getObject($path); + } catch (ClientErrorResponseException $e) { + \OCP\Util::writeLog('files_external', $e->getMessage(), \OCP\Util::ERROR); + return false; + } catch (Exception\ObjectNotFoundException $e) { \OCP\Util::writeLog('files_external', $e->getMessage(), \OCP\Util::ERROR); return false; } try { - $object->SaveToFilename($tmpFile); + $objectContent = $object->getContent(); + $objectContent->rewind(); + $stream = $objectContent->getStream(); + file_put_contents($tmpFile, $stream); } catch (Exceptions\IOError $e) { \OCP\Util::writeLog('files_external', $e->getMessage(), \OCP\Util::ERROR); return false; @@ -363,43 +375,32 @@ class Swift extends \OC\Files\Storage\Common { if ($this->is_dir($path)) { return 'httpd/unix-directory'; } else if ($this->file_exists($path)) { - $object = $this->container->DataObject($path); - return $object->extra_headers["Content-Type"]; + $object = $this->container->getPartialObject($path); + return $object->getContentType(); } return false; } public function touch($path, $mtime = null) { $path = $this->normalizePath($path); + if (is_null($mtime)) { + $mtime = time(); + } + $metadata = array('timestamp' => $mtime); if ($this->file_exists($path)) { if ($this->is_dir($path) && $path != '.') { $path .= '/'; } - $object = $this->container->DataObject($path); - if( is_null($mtime)) { - $mtime = time(); - } - $settings = array( - 'name' => $path, - 'extra_headers' => array( - 'X-Object-Meta-Timestamp' => $mtime - ) - ); - return $object->UpdateMetadata($settings); + $object = $this->container->getPartialObject($path); + $object->saveMetadata($metadata); + return true; } else { - $object = $this->container->DataObject(); - if (is_null($mtime)) { - $mtime = time(); - } - $settings = array( - 'name' => $path, - 'content_type' => 'text/plain', - 'extra_headers' => array( - 'X-Object-Meta-Timestamp' => $mtime - ) - ); - return $object->Create($settings); + $customHeaders = array('content-type' => 'text/plain'); + $metadataHeaders = DataObject::stockHeaders($metadata); + $allHeaders = $customHeaders + $metadataHeaders; + $this->container->uploadObject($path, '', $allHeaders); + return true; } } @@ -407,31 +408,29 @@ class Swift extends \OC\Files\Storage\Common { $path1 = $this->normalizePath($path1); $path2 = $this->normalizePath($path2); - if ($this->is_file($path1)) { + $fileType = $this->filetype($path1); + if ($fileType === 'file') { + + // make way + $this->unlink($path2); + try { - $source = $this->container->DataObject($path1); - $target = $this->container->DataObject(); - $target->Create(array( - 'name' => $path2, - )); - $source->Copy($target); - } catch (Exceptions\ObjectCopyError $e) { + $source = $this->container->getPartialObject($path1); + $source->copy($this->bucket.'/'.$path2); + } catch (ClientErrorResponseException $e) { \OCP\Util::writeLog('files_external', $e->getMessage(), \OCP\Util::ERROR); return false; } - } else { - if ($this->file_exists($path2)) { - return false; - } + + } else if ($fileType === 'dir') { + + // make way + $this->unlink($path2); try { - $source = $this->container->DataObject($path1 . '/'); - $target = $this->container->DataObject(); - $target->Create(array( - 'name' => $path2 . '/', - )); - $source->Copy($target); - } catch (Exceptions\ObjectCopyError $e) { + $source = $this->container->getPartialObject($path1 . '/'); + $source->copy($this->bucket.'/'.$path2 . '/'); + } catch (ClientErrorResponseException $e) { \OCP\Util::writeLog('files_external', $e->getMessage(), \OCP\Util::ERROR); return false; } @@ -446,6 +445,10 @@ class Swift extends \OC\Files\Storage\Common { $target = $path2 . '/' . $file; $this->copy($source, $target); } + + } else { + //file does not exist + return false; } return true; @@ -455,31 +458,28 @@ class Swift extends \OC\Files\Storage\Common { $path1 = $this->normalizePath($path1); $path2 = $this->normalizePath($path2); - if ($this->is_file($path1)) { + $fileType = $this->filetype($path1); + + if ($fileType === 'dir' || $fileType === 'file') { + + // make way + $this->unlink($path2); + + // copy if ($this->copy($path1, $path2) === false) { return false; } + // cleanup if ($this->unlink($path1) === false) { $this->unlink($path2); return false; } - } else { - if ($this->file_exists($path2)) { - return false; - } - - if ($this->copy($path1, $path2) === false) { - return false; - } - if ($this->rmdir($path1) === false) { - $this->rmdir($path2); - return false; - } + return true; } - return true; + return false; } public function getId() { @@ -494,12 +494,8 @@ class Swift extends \OC\Files\Storage\Common { if (!isset(self::$tmpFiles[$tmpFile])) { return false; } - - $object = $this->container->DataObject(); - $object->Create(array( - 'name' => self::$tmpFiles[$tmpFile], - 'content_type' => \OC_Helper::getMimeType($tmpFile) - ), $tmpFile); + $fileData = fopen($tmpFile, 'r'); + $this->container->uploadObject(self::$tmpFiles[$tmpFile], $fileData); unlink($tmpFile); } diff --git a/apps/files_external/tests/swift.php b/apps/files_external/tests/swift.php index bdfdbdeebe9..3918497ebfa 100644 --- a/apps/files_external/tests/swift.php +++ b/apps/files_external/tests/swift.php @@ -38,14 +38,15 @@ class Swift extends Storage { public function tearDown() { if ($this->instance) { $connection = $this->instance->getConnection(); - $container = $connection->Container($this->config['swift']['bucket']); + $container = $connection->getContainer($this->config['swift']['bucket']); - $objects = $container->ObjectList(); - while($object = $objects->Next()) { - $object->Delete(); + $objects = $container->objectList(); + while($object = $objects->next()) { + $object->setName(str_replace('#','%23',$object->getName())); + $object->delete(); } - $container->Delete(); + $container->delete(); } } } diff --git a/apps/files_sharing/js/external.js b/apps/files_sharing/js/external.js index a142819b112..1eb447da896 100644 --- a/apps/files_sharing/js/external.js +++ b/apps/files_sharing/js/external.js @@ -43,10 +43,10 @@ }; if (!passwordProtected) { OC.dialogs.confirm(t('files_sharing', 'Add {name} from {owner}@{remote}', {name: name, owner: owner, remote: remoteClean}) - , 'Add Share', callback, true); + , t('files_sharing','Add Share'), callback, true); } else { OC.dialogs.prompt(t('files_sharing', 'Add {name} from {owner}@{remote}', {name: name, owner: owner, remote: remoteClean}) - , 'Add Share', callback, true, 'Password', true); + , t('files_sharing','Add Share'), callback, true, t('files_sharing','Password'), true); } }; })(); diff --git a/apps/files_sharing/js/public.js b/apps/files_sharing/js/public.js index 1d633a655d5..f911f3689eb 100644 --- a/apps/files_sharing/js/public.js +++ b/apps/files_sharing/js/public.js @@ -33,6 +33,10 @@ OCA.Sharing.PublicApp = { // regular actions fileActions.merge(OCA.Files.fileActions); + // in case apps would decide to register file actions later, + // replace the global object with this one + OCA.Files.fileActions = fileActions; + this._initialized = true; this.initialDir = $('#dir').val(); diff --git a/apps/files_sharing/l10n/de.php b/apps/files_sharing/l10n/de.php index ecf7f175800..ec443bf5b43 100644 --- a/apps/files_sharing/l10n/de.php +++ b/apps/files_sharing/l10n/de.php @@ -30,6 +30,7 @@ $TRANSLATIONS = array( "Download" => "Herunterladen", "Download %s" => "Download %s", "Direct link" => "Direkter Link", +"Remote Shares" => "Entfernte Freigaben", "Allow other instances to mount public links shared from this server" => "Andere Instanzen zum Hinzufügen von öffentlichen Links, die über diesen Server Freigegeben werden, erlauben", "Allow users to mount public link shares" => "Erlaube Nutzern das Hinzufügen von freigegebenen öffentlichen Links" ); diff --git a/apps/files_sharing/l10n/de_DE.php b/apps/files_sharing/l10n/de_DE.php index c0488b4988b..636156c6fe5 100644 --- a/apps/files_sharing/l10n/de_DE.php +++ b/apps/files_sharing/l10n/de_DE.php @@ -30,6 +30,7 @@ $TRANSLATIONS = array( "Download" => "Herunterladen", "Download %s" => "Download %s", "Direct link" => "Direkte Verlinkung", +"Remote Shares" => "Entfernte Freigaben", "Allow other instances to mount public links shared from this server" => "Andere Instanzen zum Hinzufügen von öffentlichen Links, die über diesen Server Freigegeben werden, erlauben", "Allow users to mount public link shares" => "Erlaube Nutzern das Hinzufügen von freigegebenen öffentlichen Links" ); diff --git a/apps/files_sharing/l10n/en_GB.php b/apps/files_sharing/l10n/en_GB.php index 04a5bb5e1b2..ff2b032b0dd 100644 --- a/apps/files_sharing/l10n/en_GB.php +++ b/apps/files_sharing/l10n/en_GB.php @@ -30,6 +30,7 @@ $TRANSLATIONS = array( "Download" => "Download", "Download %s" => "Download %s", "Direct link" => "Direct link", +"Remote Shares" => "Remote Shares", "Allow other instances to mount public links shared from this server" => "Allow other instances to mount public links shared from this server", "Allow users to mount public link shares" => "Allow users to mount public link shares" ); diff --git a/apps/files_sharing/l10n/et_EE.php b/apps/files_sharing/l10n/et_EE.php index 422adf39a58..2867d87fb5f 100644 --- a/apps/files_sharing/l10n/et_EE.php +++ b/apps/files_sharing/l10n/et_EE.php @@ -30,6 +30,7 @@ $TRANSLATIONS = array( "Download" => "Lae alla", "Download %s" => "Laadi alla %s", "Direct link" => "Otsene link", +"Remote Shares" => "Eemalolevad jagamised", "Allow other instances to mount public links shared from this server" => "Luba teistel instantsidel ühendada sellest serverist jagatud avalikke linke", "Allow users to mount public link shares" => "Luba kasutajatel ühendada jagatud avalikke linke" ); diff --git a/apps/files_sharing/l10n/fi_FI.php b/apps/files_sharing/l10n/fi_FI.php index 16694632ec2..c5db10aff73 100644 --- a/apps/files_sharing/l10n/fi_FI.php +++ b/apps/files_sharing/l10n/fi_FI.php @@ -30,6 +30,7 @@ $TRANSLATIONS = array( "Download" => "Lataa", "Download %s" => "Lataa %s", "Direct link" => "Suora linkki", +"Remote Shares" => "Etäjaot", "Allow other instances to mount public links shared from this server" => "Salli muiden instanssien liittää tältä palvelimelta jaettuja julkisia linkkejä", "Allow users to mount public link shares" => "Salli käyttäjien liittää julkisia linkkijakoja" ); diff --git a/apps/files_sharing/l10n/gl.php b/apps/files_sharing/l10n/gl.php index d2f690e7729..33e2005b731 100644 --- a/apps/files_sharing/l10n/gl.php +++ b/apps/files_sharing/l10n/gl.php @@ -30,6 +30,7 @@ $TRANSLATIONS = array( "Download" => "Descargar", "Download %s" => "Descargar %s", "Direct link" => "Ligazón directa", +"Remote Shares" => "Comparticións remotas", "Allow other instances to mount public links shared from this server" => "Permitir que outras instancias monten ligazóns públicas compartidas desde este servidor", "Allow users to mount public link shares" => "Permitirlle aos usuarios montar ligazóns públicas compartidas" ); diff --git a/apps/files_sharing/l10n/id.php b/apps/files_sharing/l10n/id.php index 841169a3980..7dbd9ac427e 100644 --- a/apps/files_sharing/l10n/id.php +++ b/apps/files_sharing/l10n/id.php @@ -1,19 +1,34 @@ <?php $TRANSLATIONS = array( +"Server to server sharing is not enabled on this server" => "Berbagi server ke server tidaj diaktifkan pada server ini", +"Shared with you" => "Dibagikan dengan Anda", +"Shared with others" => "Dibagikan dengan lainnya", +"Shared by link" => "Dibagikan dengan tautan", +"No files have been shared with you yet." => "Tidak ada berkas yang dibagikan kepada Anda.", +"You haven't shared any files yet." => "Anda belum berbagi berkas apapun.", +"You haven't shared any files by link yet." => "Anda belum berbagi berkas dengan tautan satupun.", +"Add {name} from {owner}@{remote}" => "Tambah {name} dari {owner}@{remote}", +"No ownCloud installation found at {remote}" => "Tidak ada instalasi ownCloud yang ditemukan di {remote}", +"Invalid ownCloud url" => "URL ownCloud tidak sah", "Shared by {owner}" => "Dibagikan oleh {owner}", "Shared by" => "Dibagikan oleh", "This share is password-protected" => "Berbagi ini dilindungi sandi", "The password is wrong. Try again." => "Sandi salah. Coba lagi", "Password" => "Sandi", "Name" => "Nama", +"Share time" => "Bagikan waktu", "Sorry, this link doesn’t seem to work anymore." => "Maaf, tautan ini tampaknya tidak berfungsi lagi.", "Reasons might be:" => "Alasan mungkin:", "the item was removed" => "item telah dihapus", "the link expired" => "tautan telah kadaluarsa", "sharing is disabled" => "berbagi dinonaktifkan", "For more info, please ask the person who sent this link." => "Untuk info lebih lanjut, silakan tanyakan orang yang mengirim tautan ini.", +"Save to ownCloud" => "Simpan ke ownCloud", +"example.com/owncloud" => "contoh.com/owncloud", "Save" => "Simpan", "Download" => "Unduh", -"Direct link" => "Tautan langsung" +"Download %s" => "Unduh %s", +"Direct link" => "Tautan langsung", +"Allow users to mount public link shares" => "Izinkan pengguna untuk mengaitkan tautan berbagi publik" ); $PLURAL_FORMS = "nplurals=1; plural=0;"; diff --git a/apps/files_sharing/l10n/it.php b/apps/files_sharing/l10n/it.php index 4aa95730aa1..aa00f1b9bd2 100644 --- a/apps/files_sharing/l10n/it.php +++ b/apps/files_sharing/l10n/it.php @@ -30,6 +30,7 @@ $TRANSLATIONS = array( "Download" => "Scarica", "Download %s" => "Scarica %s", "Direct link" => "Collegamento diretto", +"Remote Shares" => "Condivisioni Remote", "Allow other instances to mount public links shared from this server" => "Permetti ad altre istanze di montare collegamenti pubblici condivisi da questo server", "Allow users to mount public link shares" => "Permetti agli utenti di montare condivisioni con collegamento pubblico" ); diff --git a/apps/files_sharing/l10n/nl.php b/apps/files_sharing/l10n/nl.php index 4f01b2e79d8..276b7d64368 100644 --- a/apps/files_sharing/l10n/nl.php +++ b/apps/files_sharing/l10n/nl.php @@ -30,6 +30,7 @@ $TRANSLATIONS = array( "Download" => "Downloaden", "Download %s" => "Download %s", "Direct link" => "Directe link", +"Remote Shares" => "Externe shares", "Allow other instances to mount public links shared from this server" => "Toestaan dat andere oanClouds openbaar gedeelde links mounten vanaf deze server", "Allow users to mount public link shares" => "Toestaan dat gebruikers openbaar gedeelde links mounten" ); diff --git a/apps/files_sharing/l10n/pt_BR.php b/apps/files_sharing/l10n/pt_BR.php index 7d6f036d2a0..df8c397c13b 100644 --- a/apps/files_sharing/l10n/pt_BR.php +++ b/apps/files_sharing/l10n/pt_BR.php @@ -12,7 +12,7 @@ $TRANSLATIONS = array( "No ownCloud installation found at {remote}" => "Nenhuma instalação ownCloud encontrada em {remote}", "Invalid ownCloud url" => "Url invalida para ownCloud", "Shared by {owner}" => "Compartilhado por {owner}", -"Shared by" => "Compartilhada por", +"Shared by" => "Compartilhado por", "This share is password-protected" => "Este compartilhamento esta protegido por senha", "The password is wrong. Try again." => "Senha incorreta. Tente novamente.", "Password" => "Senha", @@ -22,7 +22,7 @@ $TRANSLATIONS = array( "Reasons might be:" => "As razões podem ser:", "the item was removed" => "o item foi removido", "the link expired" => "o link expirou", -"sharing is disabled" => "compartilhamento está desativada", +"sharing is disabled" => "o compartilhamento está desativado", "For more info, please ask the person who sent this link." => "Para mais informações, por favor, pergunte a pessoa que enviou este link.", "Save to ownCloud" => "Salvar em ownCloud", "example.com/owncloud" => "example.com/owncloud", @@ -30,6 +30,7 @@ $TRANSLATIONS = array( "Download" => "Baixar", "Download %s" => "Baixar %s", "Direct link" => "Link direto", +"Remote Shares" => "Compartilhamentos Remoto", "Allow other instances to mount public links shared from this server" => "Permitir que outras instâncias montem links de compartilhamentos públicos a partir desde servidor", "Allow users to mount public link shares" => "Permitir aos usuários montar links públicos de compartilhamentos" ); diff --git a/apps/files_sharing/l10n/tr.php b/apps/files_sharing/l10n/tr.php index acf1620a6a1..f9cd7258112 100644 --- a/apps/files_sharing/l10n/tr.php +++ b/apps/files_sharing/l10n/tr.php @@ -30,6 +30,7 @@ $TRANSLATIONS = array( "Download" => "İndir", "Download %s" => "İndir: %s", "Direct link" => "Doğrudan bağlantı", +"Remote Shares" => "Uzak Paylaşımlar", "Allow other instances to mount public links shared from this server" => "Diğer örneklerin, bu sunucudan paylaşılmış herkese açık bağlantıları bağlamasına izin ver", "Allow users to mount public link shares" => "Kullanıcıların herkese açık bağlantı paylaşımlarını bağlamasına izin ver" ); diff --git a/apps/files_sharing/lib/external/storage.php b/apps/files_sharing/lib/external/storage.php index 2771f974614..454196f15ae 100644 --- a/apps/files_sharing/lib/external/storage.php +++ b/apps/files_sharing/lib/external/storage.php @@ -33,6 +33,8 @@ class Storage extends DAV implements ISharedStorage { */ private $token; + private $updateChecked = false; + public function __construct($options) { $this->remote = $options['remote']; $this->remoteUser = $options['owner']; @@ -100,4 +102,21 @@ class Storage extends DAV implements ISharedStorage { } return $this->scanner; } + + /** + * check if a file or folder has been updated since $time + * + * @param string $path + * @param int $time + * @return bool + */ + public function hasUpdated($path, $time) { + // since for owncloud webdav servers we can rely on etag propagation we only need to check the root of the storage + // because of that we only do one check for the entire storage per request + if ($this->updateChecked) { + return false; + } + $this->updateChecked = true; + return parent::hasUpdated('', $time); + } } diff --git a/apps/files_sharing/tests/js/appSpec.js b/apps/files_sharing/tests/js/appSpec.js index d0480ad1aa4..5fb269da75e 100644 --- a/apps/files_sharing/tests/js/appSpec.js +++ b/apps/files_sharing/tests/js/appSpec.js @@ -55,7 +55,7 @@ describe('OCA.Sharing.App tests', function() { describe('initialization', function() { it('inits sharing-in list on show', function() { - expect(fileListIn._sharedWithUser).toEqual(true); + expect(fileListIn._sharedWithUser).toEqual(true); }); it('inits sharing-out list on show', function() { expect(fileListOut._sharedWithUser).toBeFalsy(); diff --git a/config/config.sample.php b/config/config.sample.php index 6da00fc12a5..59e1f3890ce 100755 --- a/config/config.sample.php +++ b/config/config.sample.php @@ -304,4 +304,32 @@ $CONFIG = array( /* If true, prevent owncloud from changing the cache due to changes in the filesystem for all storage */ 'filesystem_cache_readonly' => false, + +/* + * The example below shows how to configure ownCloud to store all files in a swift object storage + * + * It is important to note that ownCloud in object store mode will expect exclusive access + * to the object store container because it only stores the binary data for each file. The + * metadata is currently kept in the local database for performance reasons. + * + * WARNING: The current implementation is incompatible with any app that uses direct file IO and circumvents our + * virtual filesystem. That includes Encryption and Gallery. Gallery will store thumbnails directly in the filesystem + * and encryption will cause severe overhead because key files need to be fetched in addition to any requested file. + * + * One way to test is applying for a trystack account at http://trystack.org/ + */ +'objectstore' => array( + 'class' => 'OC\\Files\\ObjectStore\\Swift', + 'arguments' => array( + 'username' => 'facebook100000123456789', // trystack will user your facebook id as the user name + 'password' => 'Secr3tPaSSWoRdt7', // in the trystack dashboard go to user -> settings -> API Password to generate a password + 'container' => 'owncloud', // must already exist in the objectstore, name can be different + 'autocreate' => true, // create the container if it does not exist. default is false + 'region' => 'RegionOne', //required, dev-/trystack defaults to 'RegionOne' + 'url' => 'http://8.21.28.222:5000/v2.0', // The Identity / Keystone endpoint + 'tenantName' => 'facebook100000123456789', // required on dev-/trystack + 'serviceName' => 'swift', //dev-/trystack uses swift by default, the lib defaults to 'cloudFiles' if omitted + ), +), + ); diff --git a/core/js/share.js b/core/js/share.js index 1c59524939c..aab41cf76da 100644 --- a/core/js/share.js +++ b/core/js/share.js @@ -374,7 +374,7 @@ OC.Share={ if (data.shares) { $.each(data.shares, function(index, share) { if (share.share_type == OC.Share.SHARE_TYPE_LINK) { - if ( !('file_target' in share) ) { + if (itemSource === share.file_source || itemSource === share.item_source) { OC.Share.showLink(share.token, share.share_with, itemSource); } } else { @@ -620,6 +620,7 @@ OC.Share={ var file = $('#dir').val() + '/' + filename; } file = '/'+OC.currentUser+'/files'+file; + // TODO: use oc webroot ? var link = parent.location.protocol+'//'+location.host+OC.linkTo('', 'public.php')+'?service=files&'+type+'='+encodeURIComponent(file); } else { //TODO add path param when showing a link to file in a subfolder of a public link share @@ -630,6 +631,7 @@ OC.Share={ service=linkSharetype; } + // TODO: use oc webroot ? var link = parent.location.protocol+'//'+location.host+OC.linkTo('', 'public.php')+'?service='+service+'&t='+token; } diff --git a/core/js/tests/specs/shareSpec.js b/core/js/tests/specs/shareSpec.js index 458bc41b6a1..588e51036e4 100644 --- a/core/js/tests/specs/shareSpec.js +++ b/core/js/tests/specs/shareSpec.js @@ -96,7 +96,6 @@ describe('OC.Share tests', function() { describe('Share with link', function() { // TODO: test ajax calls // TODO: test password field visibility (whenever enforced or not) - // TODO: check public upload visibility based on config it('shows share with link checkbox when allowed', function() { $('#allowShareWithLink').val('yes'); OC.Share.showDropDown( @@ -121,6 +120,151 @@ describe('OC.Share tests', function() { ); expect($('#dropdown #linkCheckbox').length).toEqual(0); }); + it('shows populated link share when a link share exists', function() { + loadItemStub.returns({ + reshare: [], + /* jshint camelcase: false */ + shares: [{ + displayname_owner: 'root', + expiration: null, + file_source: 123, + file_target: '/folder', + id: 20, + item_source: '123', + item_type: 'folder', + mail_send: '0', + parent: null, + path: '/folder', + permissions: OC.PERMISSION_READ, + share_type: OC.Share.SHARE_TYPE_LINK, + share_with: null, + stime: 1403884258, + storage: 1, + token: 'tehtoken', + uid_owner: 'root' + }] + }); + OC.Share.showDropDown( + 'file', + 123, + $container, + 'http://localhost/dummylink', + 31, + 'folder' + ); + expect($('#dropdown #linkCheckbox').prop('checked')).toEqual(true); + // this is how the OC.Share class does it... + var link = parent.location.protocol + '//' + location.host + + OC.linkTo('', 'public.php')+'?service=files&t=tehtoken'; + expect($('#dropdown #linkText').val()).toEqual(link); + }); + it('does not show populated link share when a link share exists for a different file', function() { + loadItemStub.returns({ + reshare: [], + /* jshint camelcase: false */ + shares: [{ + displayname_owner: 'root', + expiration: null, + file_source: 123, + file_target: '/folder', + id: 20, + item_source: '123', + item_type: 'folder', + mail_send: '0', + parent: null, + path: '/folder', + permissions: OC.PERMISSION_READ, + share_type: OC.Share.SHARE_TYPE_LINK, + share_with: null, + stime: 1403884258, + storage: 1, + token: 'tehtoken', + uid_owner: 'root' + }] + }); + OC.Share.showDropDown( + 'file', + 456, // another file + $container, + 'http://localhost/dummylink', + 31, + 'folder' + ); + expect($('#dropdown #linkCheckbox').prop('checked')).toEqual(false); + }); + it('shows correct link share when a nest link share exists along with parent one', function() { + loadItemStub.returns({ + reshare: [], + /* jshint camelcase: false */ + shares: [{ + displayname_owner: 'root', + expiration: null, + file_source: 123, + file_target: '/folder', + id: 20, + item_source: '123', + item_type: 'file', + mail_send: '0', + parent: null, + path: '/folder', + permissions: OC.PERMISSION_READ, + share_type: OC.Share.SHARE_TYPE_LINK, + share_with: null, + stime: 1403884258, + storage: 1, + token: 'tehtoken', + uid_owner: 'root' + }, { + displayname_owner: 'root', + expiration: null, + file_source: 456, + file_target: '/file_in_folder.txt', + id: 21, + item_source: '456', + item_type: 'file', + mail_send: '0', + parent: null, + path: '/folder/file_in_folder.txt', + permissions: OC.PERMISSION_READ, + share_type: OC.Share.SHARE_TYPE_LINK, + share_with: null, + stime: 1403884509, + storage: 1, + token: 'anothertoken', + uid_owner: 'root' + }] + }); + + // parent one + OC.Share.showDropDown( + 'folder', + 123, + $container, + 'http://localhost/dummylink', + 31, + 'folder' + ); + expect($('#dropdown #linkCheckbox').prop('checked')).toEqual(true); + // this is how the OC.Share class does it... + var link = parent.location.protocol + '//' + location.host + + OC.linkTo('', 'public.php')+'?service=files&t=tehtoken'; + expect($('#dropdown #linkText').val()).toEqual(link); + + // nested one + OC.Share.showDropDown( + 'file', + 456, + $container, + 'http://localhost/dummylink', + 31, + 'file_in_folder.txt' + ); + expect($('#dropdown #linkCheckbox').prop('checked')).toEqual(true); + // this is how the OC.Share class does it... + link = parent.location.protocol + '//' + location.host + + OC.linkTo('', 'public.php')+'?service=files&t=anothertoken'; + expect($('#dropdown #linkText').val()).toEqual(link); + }); }); describe('"sharesChanged" event', function() { var autocompleteOptions; diff --git a/core/l10n/ar.php b/core/l10n/ar.php index c19f7fed8cb..f20fb164bbf 100644 --- a/core/l10n/ar.php +++ b/core/l10n/ar.php @@ -69,6 +69,7 @@ $TRANSLATIONS = array( "Resharing is not allowed" => "لا يسمح بعملية إعادة المشاركة", "Shared in {item} with {user}" => "شورك في {item} مع {user}", "Unshare" => "إلغاء مشاركة", +"can share" => "يمكن المشاركة", "can edit" => "التحرير مسموح", "access control" => "ضبط الوصول", "create" => "إنشاء", diff --git a/core/l10n/ast.php b/core/l10n/ast.php index 23f7e63d8ae..fe575a69e38 100644 --- a/core/l10n/ast.php +++ b/core/l10n/ast.php @@ -103,6 +103,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Compartíu en {item} con {user}", "Unshare" => "Dexar de compartir", "notify by email" => "notificar per corréu", +"can share" => "pue compartir", "can edit" => "pue editar", "access control" => "control d'accesu", "create" => "crear", diff --git a/core/l10n/ca.php b/core/l10n/ca.php index d91b4321aef..17528bee940 100644 --- a/core/l10n/ca.php +++ b/core/l10n/ca.php @@ -103,6 +103,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Compartit en {item} amb {user}", "Unshare" => "Deixa de compartir", "notify by email" => "notifica per correu electrònic", +"can share" => "pot compartir", "can edit" => "pot editar", "access control" => "control d'accés", "create" => "crea", diff --git a/core/l10n/cs_CZ.php b/core/l10n/cs_CZ.php index 85f6acbd8a6..ed2dfad8366 100644 --- a/core/l10n/cs_CZ.php +++ b/core/l10n/cs_CZ.php @@ -102,6 +102,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Sdíleno v {item} s {user}", "Unshare" => "Zrušit sdílení", "notify by email" => "upozornit e-mailem", +"can share" => "může sdílet", "can edit" => "lze upravovat", "access control" => "řízení přístupu", "create" => "vytvořit", diff --git a/core/l10n/da.php b/core/l10n/da.php index 2f2932a0b1d..b8a0d32b6f2 100644 --- a/core/l10n/da.php +++ b/core/l10n/da.php @@ -101,6 +101,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Delt i {item} med {user}", "Unshare" => "Fjern deling", "notify by email" => "Giv besked med mail", +"can share" => "kan dele", "can edit" => "kan redigere", "access control" => "Adgangskontrol", "create" => "opret", diff --git a/core/l10n/de.php b/core/l10n/de.php index 603929d87f6..632fcc8ce3d 100644 --- a/core/l10n/de.php +++ b/core/l10n/de.php @@ -103,6 +103,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Für {user} in {item} freigegeben", "Unshare" => "Freigabe aufheben", "notify by email" => "Per E-Mail informieren", +"can share" => "Kann teilen", "can edit" => "kann bearbeiten", "access control" => "Zugriffskontrolle", "create" => "erstellen", diff --git a/core/l10n/de_AT.php b/core/l10n/de_AT.php index 18a4adb948e..b213a756785 100644 --- a/core/l10n/de_AT.php +++ b/core/l10n/de_AT.php @@ -29,6 +29,7 @@ $TRANSLATIONS = array( "Share" => "Freigeben", "group" => "Gruppe", "Unshare" => "Teilung zurücknehmen", +"can share" => "Kann teilen", "can edit" => "kann bearbeiten", "Delete" => "Löschen", "Personal" => "Persönlich", diff --git a/core/l10n/de_DE.php b/core/l10n/de_DE.php index a126e3dcdfc..32e613862cd 100644 --- a/core/l10n/de_DE.php +++ b/core/l10n/de_DE.php @@ -103,6 +103,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Freigegeben in {item} von {user}", "Unshare" => "Freigabe aufheben", "notify by email" => "Per E-Mail informieren", +"can share" => "kann geteilt werden", "can edit" => "kann bearbeiten", "access control" => "Zugriffskontrolle", "create" => "erstellen", diff --git a/core/l10n/el.php b/core/l10n/el.php index 4720ad96322..520e7bcacb1 100644 --- a/core/l10n/el.php +++ b/core/l10n/el.php @@ -103,6 +103,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Διαμοιρασμός του {item} με τον {user}", "Unshare" => "Διακοπή διαμοιρασμού", "notify by email" => "ειδοποίηση με email", +"can share" => "δυνατότητα διαμοιρασμού", "can edit" => "δυνατότητα αλλαγής", "access control" => "έλεγχος πρόσβασης", "create" => "δημιουργία", diff --git a/core/l10n/en_GB.php b/core/l10n/en_GB.php index e41d00fcae6..8c477442699 100644 --- a/core/l10n/en_GB.php +++ b/core/l10n/en_GB.php @@ -103,6 +103,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Shared in {item} with {user}", "Unshare" => "Unshare", "notify by email" => "notify by email", +"can share" => "can share", "can edit" => "can edit", "access control" => "access control", "create" => "create", diff --git a/core/l10n/eo.php b/core/l10n/eo.php index ce44645151b..2f2bac8fe47 100644 --- a/core/l10n/eo.php +++ b/core/l10n/eo.php @@ -78,6 +78,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Kunhavigita en {item} kun {user}", "Unshare" => "Malkunhavigi", "notify by email" => "avizi per retpoŝto", +"can share" => "kunhavebla", "can edit" => "povas redakti", "access control" => "alirkontrolo", "create" => "krei", diff --git a/core/l10n/es.php b/core/l10n/es.php index 34447fcccb2..8cf5edfc107 100644 --- a/core/l10n/es.php +++ b/core/l10n/es.php @@ -103,6 +103,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Compartido en {item} con {user}", "Unshare" => "Dejar de compartir", "notify by email" => "notificar por correo electrónico", +"can share" => "puede compartir", "can edit" => "puede editar", "access control" => "control de acceso", "create" => "crear", diff --git a/core/l10n/es_AR.php b/core/l10n/es_AR.php index 95bef493e2f..7ebac19d107 100644 --- a/core/l10n/es_AR.php +++ b/core/l10n/es_AR.php @@ -89,6 +89,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Compartido en {item} con {user}", "Unshare" => "Dejar de compartir", "notify by email" => "notificar por correo", +"can share" => "puede compartir", "can edit" => "podés editar", "access control" => "control de acceso", "create" => "crear", diff --git a/core/l10n/es_MX.php b/core/l10n/es_MX.php index 97658d7da16..55a043a26c9 100644 --- a/core/l10n/es_MX.php +++ b/core/l10n/es_MX.php @@ -82,6 +82,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Compartido en {item} con {user}", "Unshare" => "Dejar de compartir", "notify by email" => "notificar al usuario por correo electrónico", +"can share" => "puede compartir", "can edit" => "puede editar", "access control" => "control de acceso", "create" => "crear", diff --git a/core/l10n/et_EE.php b/core/l10n/et_EE.php index a56e63a4a22..af3bc1e83ef 100644 --- a/core/l10n/et_EE.php +++ b/core/l10n/et_EE.php @@ -103,6 +103,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Jagatud {item} kasutajaga {user}", "Unshare" => "Lõpeta jagamine", "notify by email" => "teavita e-postiga", +"can share" => "saab jagada", "can edit" => "saab muuta", "access control" => "ligipääsukontroll", "create" => "loo", diff --git a/core/l10n/eu.php b/core/l10n/eu.php index 4e4a74b4b57..25b3c8186d6 100644 --- a/core/l10n/eu.php +++ b/core/l10n/eu.php @@ -98,6 +98,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "{user}ekin {item}-n elkarbanatuta", "Unshare" => "Ez elkarbanatu", "notify by email" => "jakinarazi eposta bidez", +"can share" => "elkarbana dezake", "can edit" => "editatu dezake", "access control" => "sarrera kontrola", "create" => "sortu", diff --git a/core/l10n/fa.php b/core/l10n/fa.php index ef00a56a1cb..ab251a0294f 100644 --- a/core/l10n/fa.php +++ b/core/l10n/fa.php @@ -69,6 +69,7 @@ $TRANSLATIONS = array( "Resharing is not allowed" => "اشتراک گذاری مجدد مجاز نمی باشد", "Shared in {item} with {user}" => "به اشتراک گذاشته شده در {بخش} با {کاربر}", "Unshare" => "لغو اشتراک", +"can share" => "قابل به اشتراک گذاری", "can edit" => "می توان ویرایش کرد", "access control" => "کنترل دسترسی", "create" => "ایجاد", diff --git a/core/l10n/fi_FI.php b/core/l10n/fi_FI.php index 18fe3b382ac..cea884cac7c 100644 --- a/core/l10n/fi_FI.php +++ b/core/l10n/fi_FI.php @@ -100,6 +100,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "{item} on jaettu {user} kanssa", "Unshare" => "Peru jakaminen", "notify by email" => "ilmoita sähköpostitse", +"can share" => "jaa", "can edit" => "voi muokata", "access control" => "Pääsyn hallinta", "create" => "luo", diff --git a/core/l10n/fr.php b/core/l10n/fr.php index 125ba35de9b..9723ec427bd 100644 --- a/core/l10n/fr.php +++ b/core/l10n/fr.php @@ -103,6 +103,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Partagé dans {item} avec {user}", "Unshare" => "Ne plus partager", "notify by email" => "Notifier par email", +"can share" => "peut partager", "can edit" => "édition autorisée", "access control" => "contrôle des accès", "create" => "créer", diff --git a/core/l10n/gl.php b/core/l10n/gl.php index 5facbd5f709..af868e6c4d6 100644 --- a/core/l10n/gl.php +++ b/core/l10n/gl.php @@ -103,6 +103,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Compartido en {item} con {user}", "Unshare" => "Deixar de compartir", "notify by email" => "notificar por correo", +"can share" => "pode compartir", "can edit" => "pode editar", "access control" => "control de acceso", "create" => "crear", diff --git a/core/l10n/he.php b/core/l10n/he.php index cc5c3641631..95df6201f7d 100644 --- a/core/l10n/he.php +++ b/core/l10n/he.php @@ -60,6 +60,7 @@ $TRANSLATIONS = array( "Resharing is not allowed" => "אסור לעשות שיתוף מחדש", "Shared in {item} with {user}" => "שותף תחת {item} עם {user}", "Unshare" => "הסר שיתוף", +"can share" => "ניתן לשתף", "can edit" => "ניתן לערוך", "access control" => "בקרת גישה", "create" => "יצירה", diff --git a/core/l10n/hu_HU.php b/core/l10n/hu_HU.php index 82fc07d7248..b857120798a 100644 --- a/core/l10n/hu_HU.php +++ b/core/l10n/hu_HU.php @@ -98,6 +98,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Megosztva {item}-ben {user}-rel", "Unshare" => "A megosztás visszavonása", "notify by email" => "email értesítés", +"can share" => "megosztható", "can edit" => "módosíthat", "access control" => "jogosultság", "create" => "létrehoz", diff --git a/core/l10n/ia.php b/core/l10n/ia.php index 65cff076a72..47cdaf0805b 100644 --- a/core/l10n/ia.php +++ b/core/l10n/ia.php @@ -80,6 +80,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Compartite in {item} con {user}", "Unshare" => "Leva compartir", "notify by email" => "notificar per message de e-posta", +"can share" => "pote compartir", "can edit" => "pote modificar", "access control" => "controlo de accesso", "create" => "crear", diff --git a/core/l10n/it.php b/core/l10n/it.php index 59320286865..106a4af2a56 100644 --- a/core/l10n/it.php +++ b/core/l10n/it.php @@ -103,6 +103,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Condiviso in {item} con {user}", "Unshare" => "Rimuovi condivisione", "notify by email" => "notifica tramite email", +"can share" => "può condividere", "can edit" => "può modificare", "access control" => "controllo d'accesso", "create" => "creare", diff --git a/core/l10n/ja.php b/core/l10n/ja.php index f612eec193c..1c887e8b072 100644 --- a/core/l10n/ja.php +++ b/core/l10n/ja.php @@ -103,6 +103,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "{item} 内で {user} と共有中", "Unshare" => "共有解除", "notify by email" => "メールで通知", +"can share" => "共有可", "can edit" => "編集を許可", "access control" => "アクセス権限", "create" => "作成", diff --git a/core/l10n/km.php b/core/l10n/km.php index bb959ce98bf..ab9e79e9023 100644 --- a/core/l10n/km.php +++ b/core/l10n/km.php @@ -71,6 +71,7 @@ $TRANSLATIONS = array( "Resharing is not allowed" => "មិនអនុញ្ញាតឲ្យមានការចែករំលែកឡើងវិញ", "Shared in {item} with {user}" => "បានចែករំលែកក្នុង {item} ជាមួយ {user}", "Unshare" => "លែងចែករំលែក", +"can share" => "អាចចែករំលែក", "can edit" => "អាចកែប្រែ", "access control" => "សិទ្ធិបញ្ជា", "create" => "បង្កើត", diff --git a/core/l10n/ko.php b/core/l10n/ko.php index bd52e5eb277..d99cb7b3133 100644 --- a/core/l10n/ko.php +++ b/core/l10n/ko.php @@ -87,6 +87,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "{user} 님과 {item}에서 공유 중", "Unshare" => "공유 해제", "notify by email" => "이메일로 알림", +"can share" => "공유 가능", "can edit" => "편집 가능", "access control" => "접근 제어", "create" => "생성", diff --git a/core/l10n/lb.php b/core/l10n/lb.php index 8123c8fe865..e0d774fb062 100644 --- a/core/l10n/lb.php +++ b/core/l10n/lb.php @@ -72,6 +72,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Gedeelt an {item} mat {user}", "Unshare" => "Net méi deelen", "notify by email" => "via e-mail Bescheed ginn", +"can share" => "kann deelen", "can edit" => "kann änneren", "access control" => "Zougrëffskontroll", "create" => "erstellen", diff --git a/core/l10n/lt_LT.php b/core/l10n/lt_LT.php index 278df5ef460..6b05a085721 100644 --- a/core/l10n/lt_LT.php +++ b/core/l10n/lt_LT.php @@ -82,6 +82,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Pasidalino {item} su {user}", "Unshare" => "Nebesidalinti", "notify by email" => "pranešti el. paštu", +"can share" => "gali dalintis", "can edit" => "gali redaguoti", "access control" => "priėjimo kontrolė", "create" => "sukurti", diff --git a/core/l10n/nb_NO.php b/core/l10n/nb_NO.php index 3dace79ab7c..28e07c5b2b1 100644 --- a/core/l10n/nb_NO.php +++ b/core/l10n/nb_NO.php @@ -103,6 +103,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Delt i {item} med {user}", "Unshare" => "Avslutt deling", "notify by email" => "Varsle på email", +"can share" => "kan dele", "can edit" => "kan endre", "access control" => "tilgangskontroll", "create" => "opprett", diff --git a/core/l10n/nl.php b/core/l10n/nl.php index 7d297073222..df1af1ecab6 100644 --- a/core/l10n/nl.php +++ b/core/l10n/nl.php @@ -103,6 +103,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Gedeeld in {item} met {user}", "Unshare" => "Stop met delen", "notify by email" => "melden per e-mail", +"can share" => "kan delen", "can edit" => "kan wijzigen", "access control" => "toegangscontrole", "create" => "creëer", diff --git a/core/l10n/pl.php b/core/l10n/pl.php index eb6bf8eea09..bc22a87122b 100644 --- a/core/l10n/pl.php +++ b/core/l10n/pl.php @@ -101,6 +101,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Współdzielone w {item} z {user}", "Unshare" => "Zatrzymaj współdzielenie", "notify by email" => "powiadom przez emaila", +"can share" => "może współdzielić", "can edit" => "może edytować", "access control" => "kontrola dostępu", "create" => "utwórz", diff --git a/core/l10n/pt_BR.php b/core/l10n/pt_BR.php index bffe14ecddb..7c40d498795 100644 --- a/core/l10n/pt_BR.php +++ b/core/l10n/pt_BR.php @@ -103,6 +103,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Compartilhado em {item} com {user}", "Unshare" => "Descompartilhar", "notify by email" => "notificar por e-mail", +"can share" => "pode compartilhar", "can edit" => "pode editar", "access control" => "controle de acesso", "create" => "criar", diff --git a/core/l10n/pt_PT.php b/core/l10n/pt_PT.php index 73c738b55f9..6288ec464e9 100644 --- a/core/l10n/pt_PT.php +++ b/core/l10n/pt_PT.php @@ -103,6 +103,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Partilhado em {item} com {user}", "Unshare" => "Deixar de partilhar", "notify by email" => "Notificar por email", +"can share" => "pode partilhar", "can edit" => "pode editar", "access control" => "Controlo de acesso", "create" => "criar", diff --git a/core/l10n/ro.php b/core/l10n/ro.php index c6ffc2ce684..033290b34f9 100644 --- a/core/l10n/ro.php +++ b/core/l10n/ro.php @@ -69,6 +69,7 @@ $TRANSLATIONS = array( "Resharing is not allowed" => "Repartajarea nu este permisă", "Shared in {item} with {user}" => "Distribuie in {item} si {user}", "Unshare" => "Anulare partajare", +"can share" => "se poate partaja", "can edit" => "poate edita", "access control" => "control acces", "create" => "creare", diff --git a/core/l10n/ru.php b/core/l10n/ru.php index 2adde7f9ba4..77e7764d2b3 100644 --- a/core/l10n/ru.php +++ b/core/l10n/ru.php @@ -103,6 +103,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Общий доступ к {item} с {user}", "Unshare" => "Закрыть общий доступ", "notify by email" => "уведомить по почте", +"can share" => "можно дать доступ", "can edit" => "может редактировать", "access control" => "контроль доступа", "create" => "создать", diff --git a/core/l10n/sk_SK.php b/core/l10n/sk_SK.php index 09336bfe5a6..7a274e648ac 100644 --- a/core/l10n/sk_SK.php +++ b/core/l10n/sk_SK.php @@ -103,6 +103,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Zdieľané v {item} s {user}", "Unshare" => "Zrušiť zdieľanie", "notify by email" => "informovať emailom", +"can share" => "môže zdieľať", "can edit" => "môže upraviť", "access control" => "prístupové práva", "create" => "vytvoriť", diff --git a/core/l10n/sl.php b/core/l10n/sl.php index 35a3c378555..cfe2063624c 100644 --- a/core/l10n/sl.php +++ b/core/l10n/sl.php @@ -93,6 +93,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "V souporabi v {item} z uporabnikom {user}", "Unshare" => "Prekliči souporabo", "notify by email" => "obvesti po elektronski pošti", +"can share" => "lahko omogoči souporabo", "can edit" => "lahko ureja", "access control" => "nadzor dostopa", "create" => "ustvari", diff --git a/core/l10n/sq.php b/core/l10n/sq.php index 2479d69a4cf..8c4303eca59 100644 --- a/core/l10n/sq.php +++ b/core/l10n/sq.php @@ -62,6 +62,7 @@ $TRANSLATIONS = array( "Resharing is not allowed" => "Rindarja nuk lejohet", "Shared in {item} with {user}" => "Ndarë në {item} me {user}", "Unshare" => "Hiq ndarjen", +"can share" => "mund të ndajnë", "can edit" => "mund të ndryshosh", "access control" => "kontrollimi i hyrjeve", "create" => "krijo", diff --git a/core/l10n/sv.php b/core/l10n/sv.php index e8ea85e09b4..67f8f1cd7ec 100644 --- a/core/l10n/sv.php +++ b/core/l10n/sv.php @@ -96,6 +96,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Delad i {item} med {user}", "Unshare" => "Sluta dela", "notify by email" => "informera via e-post", +"can share" => "får dela", "can edit" => "kan redigera", "access control" => "åtkomstkontroll", "create" => "skapa", diff --git a/core/l10n/th_TH.php b/core/l10n/th_TH.php index f195dce509b..93bbb8c0b38 100644 --- a/core/l10n/th_TH.php +++ b/core/l10n/th_TH.php @@ -61,6 +61,7 @@ $TRANSLATIONS = array( "Resharing is not allowed" => "ไม่อนุญาตให้แชร์ข้อมูลซ้ำได้", "Shared in {item} with {user}" => "ได้แชร์ {item} ให้กับ {user}", "Unshare" => "ยกเลิกการแชร์", +"can share" => "สามารถแชร์ได้", "can edit" => "สามารถแก้ไข", "access control" => "ระดับควบคุมการเข้าใช้งาน", "create" => "สร้าง", diff --git a/core/l10n/tr.php b/core/l10n/tr.php index f75de2cb1ee..20e06cea359 100644 --- a/core/l10n/tr.php +++ b/core/l10n/tr.php @@ -103,6 +103,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "{item} içinde {user} ile paylaşılanlar", "Unshare" => "Paylaşmayı Kaldır", "notify by email" => "e-posta ile bildir", +"can share" => "paylaşabilir", "can edit" => "düzenleyebilir", "access control" => "erişim kontrolü", "create" => "oluştur", diff --git a/core/l10n/uk.php b/core/l10n/uk.php index a9773127951..3d7d3dffac9 100644 --- a/core/l10n/uk.php +++ b/core/l10n/uk.php @@ -88,6 +88,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Опубліковано {item} для {user}", "Unshare" => "Закрити доступ", "notify by email" => "повідомити по Email", +"can share" => "можна поділитися", "can edit" => "може редагувати", "access control" => "контроль доступу", "create" => "створити", diff --git a/core/l10n/vi.php b/core/l10n/vi.php index 27f2daac596..229d51f6d55 100644 --- a/core/l10n/vi.php +++ b/core/l10n/vi.php @@ -82,6 +82,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "Đã được chia sẽ trong {item} với {user}", "Unshare" => "Bỏ chia sẻ", "notify by email" => "Thông báo qua email", +"can share" => "có thể chia sẽ", "can edit" => "có thể chỉnh sửa", "access control" => "quản lý truy cập", "create" => "tạo", diff --git a/core/l10n/zh_CN.php b/core/l10n/zh_CN.php index 17b3a82ea66..4cf679658c2 100644 --- a/core/l10n/zh_CN.php +++ b/core/l10n/zh_CN.php @@ -94,6 +94,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "在 {item} 与 {user} 共享。", "Unshare" => "取消共享", "notify by email" => "以邮件通知", +"can share" => "可共享", "can edit" => "可以修改", "access control" => "访问控制", "create" => "创建", diff --git a/core/l10n/zh_TW.php b/core/l10n/zh_TW.php index d0ba680c042..1657609dec5 100644 --- a/core/l10n/zh_TW.php +++ b/core/l10n/zh_TW.php @@ -88,6 +88,7 @@ $TRANSLATIONS = array( "Shared in {item} with {user}" => "已和 {user} 分享 {item}", "Unshare" => "取消分享", "notify by email" => "以 email 通知", +"can share" => "可分享", "can edit" => "可編輯", "access control" => "存取控制", "create" => "建立", diff --git a/l10n/ar/core.po b/l10n/ar/core.po index ad88829c9a1..ddc50ac41a7 100644 --- a/l10n/ar/core.po +++ b/l10n/ar/core.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" @@ -377,12 +377,12 @@ msgstr "" msgid "Share" msgstr "شارك" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "خطأ" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "حصل خطأ عند عملية المشاركة" @@ -477,7 +477,7 @@ msgstr "" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "يمكن المشاركة" #: js/share.js:576 msgid "can edit" @@ -499,27 +499,27 @@ msgstr "تحديث" msgid "delete" msgstr "حذف" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "محمي بكلمة السر" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "حصل خطأ عند عملية إزالة تاريخ إنتهاء الصلاحية" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "حصل خطأ عند عملية تعيين تاريخ إنتهاء الصلاحية" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "جاري الارسال ..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "تم ارسال البريد الالكتروني" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "تحذير" diff --git a/l10n/ast/core.po b/l10n/ast/core.po index 858f2aa6a57..b291e6193f3 100644 --- a/l10n/ast/core.po +++ b/l10n/ast/core.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Asturian (http://www.transifex.com/projects/p/owncloud/language/ast/)\n" "MIME-Version: 1.0\n" @@ -358,12 +358,12 @@ msgstr "Compartío con {recipients}" msgid "Share" msgstr "Compartir" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Fallu" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Fallu mientres la compartición" @@ -458,7 +458,7 @@ msgstr "notificar per corréu" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "pue compartir" #: js/share.js:576 msgid "can edit" @@ -480,27 +480,27 @@ msgstr "xubir" msgid "delete" msgstr "desaniciar" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Contraseña protexida" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Fallu desafitando la data de caducidá" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Fallu afitando la fecha de caducidá" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Unviando ..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "Corréu unviáu" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Avisu" diff --git a/l10n/ca/core.po b/l10n/ca/core.po index e3bb368bbfa..d2ba2e0b572 100644 --- a/l10n/ca/core.po +++ b/l10n/ca/core.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" @@ -357,12 +357,12 @@ msgstr "Compartit amb {recipients}" msgid "Share" msgstr "Comparteix" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Error" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Error en compartir" @@ -457,7 +457,7 @@ msgstr "notifica per correu electrònic" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "pot compartir" #: js/share.js:576 msgid "can edit" @@ -479,27 +479,27 @@ msgstr "actualitza" msgid "delete" msgstr "elimina" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Protegeix amb contrasenya" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Error en eliminar la data de venciment" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Error en establir la data de venciment" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Enviant..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "El correu electrónic s'ha enviat" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Avís" diff --git a/l10n/cs_CZ/core.po b/l10n/cs_CZ/core.po index 9448374dc41..b4cb74e1e67 100644 --- a/l10n/cs_CZ/core.po +++ b/l10n/cs_CZ/core.po @@ -17,8 +17,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" @@ -369,12 +369,12 @@ msgstr "Sdíleno s {recipients}" msgid "Share" msgstr "Sdílet" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Chyba" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Chyba při sdílení" @@ -469,7 +469,7 @@ msgstr "upozornit e-mailem" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "může sdílet" #: js/share.js:576 msgid "can edit" @@ -491,27 +491,27 @@ msgstr "aktualizovat" msgid "delete" msgstr "smazat" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Chráněno heslem" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Chyba při odstraňování data vypršení platnosti" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Chyba při nastavení data vypršení platnosti" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Odesílám ..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "E-mail odeslán" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Varování" diff --git a/l10n/da/core.po b/l10n/da/core.po index ccb6f6fdb9b..100b691774e 100644 --- a/l10n/da/core.po +++ b/l10n/da/core.po @@ -16,8 +16,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" @@ -363,12 +363,12 @@ msgstr "Delt med {recipients}" msgid "Share" msgstr "Del" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Fejl" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Fejl under deling" @@ -463,7 +463,7 @@ msgstr "Giv besked med mail" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "kan dele" #: js/share.js:576 msgid "can edit" @@ -485,27 +485,27 @@ msgstr "opdater" msgid "delete" msgstr "slet" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Beskyttet med adgangskode" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Fejl ved fjernelse af udløbsdato" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Fejl under sætning af udløbsdato" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Sender ..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "E-mail afsendt" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Advarsel" diff --git a/l10n/de/core.po b/l10n/de/core.po index bbbc2bcdb7d..2c56b2061b8 100644 --- a/l10n/de/core.po +++ b/l10n/de/core.po @@ -18,8 +18,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" "MIME-Version: 1.0\n" @@ -365,12 +365,12 @@ msgstr "Geteilt mit {recipients}" msgid "Share" msgstr "Teilen" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Fehler" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Fehler beim Teilen" @@ -465,7 +465,7 @@ msgstr "Per E-Mail informieren" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "Kann teilen" #: js/share.js:576 msgid "can edit" @@ -487,27 +487,27 @@ msgstr "aktualisieren" msgid "delete" msgstr "löschen" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Durch ein Passwort geschützt" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Fehler beim Entfernen des Ablaufdatums" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Fehler beim Setzen des Ablaufdatums" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Sende ..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "E-Mail wurde verschickt" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Warnung" diff --git a/l10n/de/files_sharing.po b/l10n/de/files_sharing.po index 4c238c5b728..7a79a5d6269 100644 --- a/l10n/de/files_sharing.po +++ b/l10n/de/files_sharing.po @@ -13,9 +13,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" -"Last-Translator: I Robot\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 07:11+0000\n" +"Last-Translator: Mario Siegmann <mario_siegmann@web.de>\n" "Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -59,11 +59,11 @@ msgstr "Du hast bis jetzt keine Dateien über einen Link mit anderen geteilt." msgid "Add {name} from {owner}@{remote}" msgstr "{name} wird von {owner}@{remote} hinzugefügt" -#: js/public.js:200 +#: js/public.js:204 msgid "No ownCloud installation found at {remote}" msgstr "Keine OwnCloud-Installation auf {remote} gefunden" -#: js/public.js:201 +#: js/public.js:205 msgid "Invalid ownCloud url" msgstr "Ungültige OwnCloud-URL" @@ -146,7 +146,7 @@ msgstr "Direkter Link" #: templates/settings-admin.php:3 msgid "Remote Shares" -msgstr "" +msgstr "Entfernte Freigaben" #: templates/settings-admin.php:7 msgid "Allow other instances to mount public links shared from this server" diff --git a/l10n/de_AT/core.po b/l10n/de_AT/core.po index c9e57b05cea..de3ac735fdc 100644 --- a/l10n/de_AT/core.po +++ b/l10n/de_AT/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: German (Austria) (http://www.transifex.com/projects/p/owncloud/language/de_AT/)\n" "MIME-Version: 1.0\n" @@ -355,12 +355,12 @@ msgstr "" msgid "Share" msgstr "Freigeben" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "" @@ -455,7 +455,7 @@ msgstr "" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "Kann teilen" #: js/share.js:576 msgid "can edit" @@ -477,27 +477,27 @@ msgstr "" msgid "delete" msgstr "" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "" -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "" diff --git a/l10n/de_DE/core.po b/l10n/de_DE/core.po index 06f773f1dea..54d41deb292 100644 --- a/l10n/de_DE/core.po +++ b/l10n/de_DE/core.po @@ -18,8 +18,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: German (Germany) (http://www.transifex.com/projects/p/owncloud/language/de_DE/)\n" "MIME-Version: 1.0\n" @@ -365,12 +365,12 @@ msgstr "Geteilt mit {recipients}" msgid "Share" msgstr "Teilen" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Fehler" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Fehler beim Teilen" @@ -465,7 +465,7 @@ msgstr "Per E-Mail informieren" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "kann geteilt werden" #: js/share.js:576 msgid "can edit" @@ -487,27 +487,27 @@ msgstr "aktualisieren" msgid "delete" msgstr "löschen" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Passwortgeschützt" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Fehler beim Entfernen des Ablaufdatums" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Fehler beim Setzen des Ablaufdatums" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Sende ..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "Email gesendet" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Warnung" diff --git a/l10n/de_DE/files_sharing.po b/l10n/de_DE/files_sharing.po index 22d95c85d4a..b54e24dad83 100644 --- a/l10n/de_DE/files_sharing.po +++ b/l10n/de_DE/files_sharing.po @@ -12,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" -"Last-Translator: I Robot\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 07:11+0000\n" +"Last-Translator: Mario Siegmann <mario_siegmann@web.de>\n" "Language-Team: German (Germany) (http://www.transifex.com/projects/p/owncloud/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -58,11 +58,11 @@ msgstr "Sie haben bis jetzt keine Dateien über einen Link mit anderen geteilt." msgid "Add {name} from {owner}@{remote}" msgstr "{name} wird von {owner}@{remote} hinzugefügt" -#: js/public.js:200 +#: js/public.js:204 msgid "No ownCloud installation found at {remote}" msgstr "Keine OwnCloud-Installation auf {remote} gefunden" -#: js/public.js:201 +#: js/public.js:205 msgid "Invalid ownCloud url" msgstr "Ungültige OwnCloud-URL" @@ -145,7 +145,7 @@ msgstr "Direkte Verlinkung" #: templates/settings-admin.php:3 msgid "Remote Shares" -msgstr "" +msgstr "Entfernte Freigaben" #: templates/settings-admin.php:7 msgid "Allow other instances to mount public links shared from this server" diff --git a/l10n/el/core.po b/l10n/el/core.po index adb74f6fa66..eb1d70a9b1c 100644 --- a/l10n/el/core.po +++ b/l10n/el/core.po @@ -18,8 +18,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" @@ -365,12 +365,12 @@ msgstr "Διαμοιράστηκε με {recipients}" msgid "Share" msgstr "Διαμοιρασμός" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Σφάλμα" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Σφάλμα κατά τον διαμοιρασμό" @@ -465,7 +465,7 @@ msgstr "ειδοποίηση με email" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "δυνατότητα διαμοιρασμού" #: js/share.js:576 msgid "can edit" @@ -487,27 +487,27 @@ msgstr "ενημέρωση" msgid "delete" msgstr "διαγραφή" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Προστασία με συνθηματικό" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Σφάλμα κατά την διαγραφή της ημ. λήξης" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Σφάλμα κατά τον ορισμό ημ. λήξης" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Αποστολή..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "Το Email απεστάλη " -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Προειδοποίηση" diff --git a/l10n/en_GB/core.po b/l10n/en_GB/core.po index a81fb0710a2..0d14bcf6bfe 100644 --- a/l10n/en_GB/core.po +++ b/l10n/en_GB/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/en_GB/)\n" "MIME-Version: 1.0\n" @@ -355,12 +355,12 @@ msgstr "Shared with {recipients}" msgid "Share" msgstr "Share" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Error" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Error whilst sharing" @@ -455,7 +455,7 @@ msgstr "notify by email" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "can share" #: js/share.js:576 msgid "can edit" @@ -477,27 +477,27 @@ msgstr "update" msgid "delete" msgstr "delete" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Password protected" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Error unsetting expiration date" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Error setting expiration date" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Sending ..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "Email sent" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Warning" diff --git a/l10n/en_GB/files_sharing.po b/l10n/en_GB/files_sharing.po index f6c7b07f517..36f1da9e1fb 100644 --- a/l10n/en_GB/files_sharing.po +++ b/l10n/en_GB/files_sharing.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" -"Last-Translator: I Robot\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 12:00+0000\n" +"Last-Translator: Darren Richardson <transifex@mnestis.net>\n" "Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/en_GB/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -54,11 +54,11 @@ msgstr "You haven't shared any files by link yet." msgid "Add {name} from {owner}@{remote}" msgstr "Add {name} from {owner}@{remote}" -#: js/public.js:200 +#: js/public.js:204 msgid "No ownCloud installation found at {remote}" msgstr "No ownCloud installation found at {remote}" -#: js/public.js:201 +#: js/public.js:205 msgid "Invalid ownCloud url" msgstr "Invalid ownCloud URL" @@ -141,7 +141,7 @@ msgstr "Direct link" #: templates/settings-admin.php:3 msgid "Remote Shares" -msgstr "" +msgstr "Remote Shares" #: templates/settings-admin.php:7 msgid "Allow other instances to mount public links shared from this server" diff --git a/l10n/eo/core.po b/l10n/eo/core.po index 801050be3d0..f68ec02caf0 100644 --- a/l10n/eo/core.po +++ b/l10n/eo/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" @@ -356,12 +356,12 @@ msgstr "" msgid "Share" msgstr "Kunhavigi" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Eraro" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Eraro dum kunhavigo" @@ -456,7 +456,7 @@ msgstr "avizi per retpoŝto" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "kunhavebla" #: js/share.js:576 msgid "can edit" @@ -478,27 +478,27 @@ msgstr "ĝisdatigi" msgid "delete" msgstr "forigi" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Protektita per pasvorto" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Eraro dum malagordado de limdato" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Eraro dum agordado de limdato" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Sendante..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "La retpoŝtaĵo sendiĝis" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Averto" diff --git a/l10n/es/core.po b/l10n/es/core.po index 7b50de05bc2..f6116f68167 100644 --- a/l10n/es/core.po +++ b/l10n/es/core.po @@ -24,8 +24,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" @@ -371,12 +371,12 @@ msgstr "Compartido con {recipients}" msgid "Share" msgstr "Compartir" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Error" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Error al compartir" @@ -471,7 +471,7 @@ msgstr "notificar por correo electrónico" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "puede compartir" #: js/share.js:576 msgid "can edit" @@ -493,27 +493,27 @@ msgstr "actualizar" msgid "delete" msgstr "eliminar" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Protegido con contraseña" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Error eliminando fecha de caducidad" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Error estableciendo fecha de caducidad" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Enviando..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "Correo electrónico enviado" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Precaución" diff --git a/l10n/es_AR/core.po b/l10n/es_AR/core.po index fcc88aea856..ad9cc452d6b 100644 --- a/l10n/es_AR/core.po +++ b/l10n/es_AR/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" @@ -356,12 +356,12 @@ msgstr "" msgid "Share" msgstr "Compartir" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Error" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Error al compartir" @@ -456,7 +456,7 @@ msgstr "notificar por correo" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "puede compartir" #: js/share.js:576 msgid "can edit" @@ -478,27 +478,27 @@ msgstr "actualizar" msgid "delete" msgstr "borrar" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Protegido por contraseña" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Error al remover la fecha de vencimiento" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Error al asignar fecha de vencimiento" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Mandando..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "e-mail mandado" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Atención" diff --git a/l10n/es_MX/core.po b/l10n/es_MX/core.po index 995eb38d1d9..6351243c6dc 100644 --- a/l10n/es_MX/core.po +++ b/l10n/es_MX/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/owncloud/language/es_MX/)\n" "MIME-Version: 1.0\n" @@ -354,12 +354,12 @@ msgstr "" msgid "Share" msgstr "Compartir" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Error" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Error al compartir" @@ -454,7 +454,7 @@ msgstr "notificar al usuario por correo electrónico" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "puede compartir" #: js/share.js:576 msgid "can edit" @@ -476,27 +476,27 @@ msgstr "actualizar" msgid "delete" msgstr "eliminar" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Protegido con contraseña" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Error eliminando fecha de caducidad" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Error estableciendo fecha de caducidad" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Enviando..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "Correo electrónico enviado" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Precaución" diff --git a/l10n/et_EE/core.po b/l10n/et_EE/core.po index 021126939a3..2490adc5cf5 100644 --- a/l10n/et_EE/core.po +++ b/l10n/et_EE/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" @@ -356,12 +356,12 @@ msgstr "Jagatud {recipients}" msgid "Share" msgstr "Jaga" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Viga" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Viga jagamisel" @@ -456,7 +456,7 @@ msgstr "teavita e-postiga" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "saab jagada" #: js/share.js:576 msgid "can edit" @@ -478,27 +478,27 @@ msgstr "uuenda" msgid "delete" msgstr "kustuta" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Parooliga kaitstud" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Viga aegumise kuupäeva eemaldamisel" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Viga aegumise kuupäeva määramisel" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Saatmine ..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "E-kiri on saadetud" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Hoiatus" diff --git a/l10n/et_EE/files_sharing.po b/l10n/et_EE/files_sharing.po index 269c5d28687..847a3a29260 100644 --- a/l10n/et_EE/files_sharing.po +++ b/l10n/et_EE/files_sharing.po @@ -4,14 +4,14 @@ # # Translators: # Pisike Sipelgas <pisike.sipelgas@gmail.com>, 2013-2014 -# Rivo Zängov <eraser@eraser.ee>, 2013 +# Rivo Zängov <eraser@eraser.ee>, 2013-2014 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" -"Last-Translator: I Robot\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 22:50+0000\n" +"Last-Translator: Rivo Zängov <eraser@eraser.ee>\n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -55,11 +55,11 @@ msgstr "Sa pole lingiga jaganud veel ühtegi faili." msgid "Add {name} from {owner}@{remote}" msgstr "Lisa {name} kohast {owner}@{remote}" -#: js/public.js:200 +#: js/public.js:204 msgid "No ownCloud installation found at {remote}" msgstr "Ei leitud ownCloud paigaldust asukohas {remote}" -#: js/public.js:201 +#: js/public.js:205 msgid "Invalid ownCloud url" msgstr "Vigane ownCloud url" @@ -142,7 +142,7 @@ msgstr "Otsene link" #: templates/settings-admin.php:3 msgid "Remote Shares" -msgstr "" +msgstr "Eemalolevad jagamised" #: templates/settings-admin.php:7 msgid "Allow other instances to mount public links shared from this server" diff --git a/l10n/eu/core.po b/l10n/eu/core.po index 74ff0ec9775..e7ded8de87e 100644 --- a/l10n/eu/core.po +++ b/l10n/eu/core.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" @@ -358,12 +358,12 @@ msgstr "{recipients}-rekin partekatua." msgid "Share" msgstr "Elkarbanatu" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Errorea" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Errore bat egon da elkarbanatzean" @@ -458,7 +458,7 @@ msgstr "jakinarazi eposta bidez" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "elkarbana dezake" #: js/share.js:576 msgid "can edit" @@ -480,27 +480,27 @@ msgstr "eguneratu" msgid "delete" msgstr "ezabatu" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Pasahitzarekin babestuta" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Errorea izan da muga data kentzean" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Errore bat egon da muga data ezartzean" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Bidaltzen ..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "Eposta bidalia" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Abisua" diff --git a/l10n/fa/core.po b/l10n/fa/core.po index 48aebdcdf8d..0bf15975943 100644 --- a/l10n/fa/core.po +++ b/l10n/fa/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" @@ -351,12 +351,12 @@ msgstr "" msgid "Share" msgstr "اشتراکگذاری" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "خطا" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "خطا درحال به اشتراک گذاشتن" @@ -451,7 +451,7 @@ msgstr "" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "قابل به اشتراک گذاری" #: js/share.js:576 msgid "can edit" @@ -473,27 +473,27 @@ msgstr "به روز" msgid "delete" msgstr "پاک کردن" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "نگهداری از رمز عبور" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "خطا در تنظیم نکردن تاریخ انقضا " -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "خطا در تنظیم تاریخ انقضا" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "درحال ارسال ..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "ایمیل ارسال شد" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "اخطار" diff --git a/l10n/fi_FI/core.po b/l10n/fi_FI/core.po index 76b2a4ad4c8..20f8533882c 100644 --- a/l10n/fi_FI/core.po +++ b/l10n/fi_FI/core.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" @@ -357,12 +357,12 @@ msgstr "Jaettu henkilöiden {recipients} kanssa" msgid "Share" msgstr "Jaa" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Virhe" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Virhe jaettaessa" @@ -457,7 +457,7 @@ msgstr "ilmoita sähköpostitse" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "jaa" #: js/share.js:576 msgid "can edit" @@ -479,27 +479,27 @@ msgstr "päivitä" msgid "delete" msgstr "poista" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Salasanasuojattu" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Virhe purettaessa eräpäivää" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Virhe päättymispäivää asettaessa" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Lähetetään..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "Sähköposti lähetetty" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Varoitus" diff --git a/l10n/fi_FI/files_sharing.po b/l10n/fi_FI/files_sharing.po index 573a02fb60f..c7eb969d322 100644 --- a/l10n/fi_FI/files_sharing.po +++ b/l10n/fi_FI/files_sharing.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" -"Last-Translator: I Robot\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 07:00+0000\n" +"Last-Translator: Jiri Grönroos <jiri.gronroos@iki.fi>\n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -54,11 +54,11 @@ msgstr "Et ole vielä jakanut yhtäkään tiedostoa linkin kautta." msgid "Add {name} from {owner}@{remote}" msgstr "Lisää {name} käyttäjältä {owner}@{remote}" -#: js/public.js:200 +#: js/public.js:204 msgid "No ownCloud installation found at {remote}" msgstr "ownCloud-asennusta ei löytynyt kohteesta {remote}" -#: js/public.js:201 +#: js/public.js:205 msgid "Invalid ownCloud url" msgstr "Virheellinen ownCloud-osoite" @@ -141,7 +141,7 @@ msgstr "Suora linkki" #: templates/settings-admin.php:3 msgid "Remote Shares" -msgstr "" +msgstr "Etäjaot" #: templates/settings-admin.php:7 msgid "Allow other instances to mount public links shared from this server" diff --git a/l10n/fr/core.po b/l10n/fr/core.po index c47ef8e7743..59d27585a0d 100644 --- a/l10n/fr/core.po +++ b/l10n/fr/core.po @@ -18,8 +18,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" @@ -365,12 +365,12 @@ msgstr "Partagé avec {recipients}" msgid "Share" msgstr "Partager" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Erreur" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Erreur lors de la mise en partage" @@ -465,7 +465,7 @@ msgstr "Notifier par email" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "peut partager" #: js/share.js:576 msgid "can edit" @@ -487,27 +487,27 @@ msgstr "mettre à jour" msgid "delete" msgstr "supprimer" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Protégé par un mot de passe" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Une erreur est survenue pendant la suppression de la date d'expiration" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Erreur lors de la spécification de la date d'expiration" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "En cours d'envoi ..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "Email envoyé" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Attention" diff --git a/l10n/gl/core.po b/l10n/gl/core.po index 7c3296820fd..f9ea4cd09f9 100644 --- a/l10n/gl/core.po +++ b/l10n/gl/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" @@ -356,12 +356,12 @@ msgstr "Compartido con {recipients}" msgid "Share" msgstr "Compartir" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Erro" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Produciuse un erro ao compartir" @@ -456,7 +456,7 @@ msgstr "notificar por correo" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "pode compartir" #: js/share.js:576 msgid "can edit" @@ -478,27 +478,27 @@ msgstr "actualizar" msgid "delete" msgstr "eliminar" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Protexido con contrasinal" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Produciuse un erro ao retirar a data de caducidade" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Produciuse un erro ao definir a data de caducidade" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Enviando..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "Correo enviado" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Aviso" diff --git a/l10n/gl/files_sharing.po b/l10n/gl/files_sharing.po index 96d9b396914..8bac45dd149 100644 --- a/l10n/gl/files_sharing.po +++ b/l10n/gl/files_sharing.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" -"Last-Translator: I Robot\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 08:11+0000\n" +"Last-Translator: Miguel Anxo Bouzada <mbouzada@gmail.com>\n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -55,11 +55,11 @@ msgstr "Aínda non compartiu ningún ficheiro por ligazón." msgid "Add {name} from {owner}@{remote}" msgstr "Engadir {name} desde {owner}@{remote}" -#: js/public.js:200 +#: js/public.js:204 msgid "No ownCloud installation found at {remote}" msgstr "Non se atopou unha instalación do ownCloud en {remote}" -#: js/public.js:201 +#: js/public.js:205 msgid "Invalid ownCloud url" msgstr "URL incorrecta do ownCloud" @@ -142,7 +142,7 @@ msgstr "Ligazón directa" #: templates/settings-admin.php:3 msgid "Remote Shares" -msgstr "" +msgstr "Comparticións remotas" #: templates/settings-admin.php:7 msgid "Allow other instances to mount public links shared from this server" diff --git a/l10n/he/core.po b/l10n/he/core.po index 67b0bf6c94e..eaaff662f1b 100644 --- a/l10n/he/core.po +++ b/l10n/he/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" @@ -356,12 +356,12 @@ msgstr "" msgid "Share" msgstr "שתף" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "שגיאה" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "שגיאה במהלך השיתוף" @@ -456,7 +456,7 @@ msgstr "" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "ניתן לשתף" #: js/share.js:576 msgid "can edit" @@ -478,27 +478,27 @@ msgstr "עדכון" msgid "delete" msgstr "מחיקה" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "מוגן בססמה" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "אירעה שגיאה בביטול תאריך התפוגה" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "אירעה שגיאה בעת הגדרת תאריך התפוגה" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "מתבצעת שליחה ..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "הודעת הדוא״ל נשלחה" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "אזהרה" diff --git a/l10n/hu_HU/core.po b/l10n/hu_HU/core.po index 54ccc79da19..2e3be93fb3c 100644 --- a/l10n/hu_HU/core.po +++ b/l10n/hu_HU/core.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" @@ -358,12 +358,12 @@ msgstr "Megosztva ővelük: {recipients}" msgid "Share" msgstr "Megosztás" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Hiba" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Nem sikerült létrehozni a megosztást" @@ -458,7 +458,7 @@ msgstr "email értesítés" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "megosztható" #: js/share.js:576 msgid "can edit" @@ -480,27 +480,27 @@ msgstr "szerkeszt" msgid "delete" msgstr "töröl" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Jelszóval van védve" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Nem sikerült a lejárati időt törölni" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Nem sikerült a lejárati időt beállítani" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Küldés ..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "Az emailt elküldtük" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Figyelmeztetés" diff --git a/l10n/ia/core.po b/l10n/ia/core.po index edcfc1ad6d0..758b6e7c98a 100644 --- a/l10n/ia/core.po +++ b/l10n/ia/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" @@ -355,12 +355,12 @@ msgstr "" msgid "Share" msgstr "Compartir" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Error" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Error quando on compartiva" @@ -455,7 +455,7 @@ msgstr "notificar per message de e-posta" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "pote compartir" #: js/share.js:576 msgid "can edit" @@ -477,27 +477,27 @@ msgstr "actualisar" msgid "delete" msgstr "deler" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Proteger con contrasigno" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Error quando on levava le data de expiration" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Error quando on fixava le data de expiration" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Inviante ..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "Message de e-posta inviate" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Aviso" diff --git a/l10n/id/files_sharing.po b/l10n/id/files_sharing.po index a2a99ced31c..6aa1b2d56d4 100644 --- a/l10n/id/files_sharing.po +++ b/l10n/id/files_sharing.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" -"Last-Translator: I Robot\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 09:31+0000\n" +"Last-Translator: Arif Budiman <arifpedia@gmail.com>\n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,7 +20,7 @@ msgstr "" #: ajax/external.php:20 msgid "Server to server sharing is not enabled on this server" -msgstr "" +msgstr "Berbagi server ke server tidaj diaktifkan pada server ini" #: ajax/external.php:50 msgid "Couldn't add remote share" @@ -28,39 +28,39 @@ msgstr "" #: appinfo/app.php:33 js/app.js:34 msgid "Shared with you" -msgstr "" +msgstr "Dibagikan dengan Anda" #: appinfo/app.php:42 js/app.js:53 msgid "Shared with others" -msgstr "" +msgstr "Dibagikan dengan lainnya" #: appinfo/app.php:51 js/app.js:72 msgid "Shared by link" -msgstr "" +msgstr "Dibagikan dengan tautan" #: js/app.js:35 msgid "No files have been shared with you yet." -msgstr "" +msgstr "Tidak ada berkas yang dibagikan kepada Anda." #: js/app.js:54 msgid "You haven't shared any files yet." -msgstr "" +msgstr "Anda belum berbagi berkas apapun." #: js/app.js:73 msgid "You haven't shared any files by link yet." -msgstr "" +msgstr "Anda belum berbagi berkas dengan tautan satupun." #: js/external.js:45 js/external.js:48 msgid "Add {name} from {owner}@{remote}" -msgstr "" +msgstr "Tambah {name} dari {owner}@{remote}" -#: js/public.js:200 +#: js/public.js:204 msgid "No ownCloud installation found at {remote}" -msgstr "" +msgstr "Tidak ada instalasi ownCloud yang ditemukan di {remote}" -#: js/public.js:201 +#: js/public.js:205 msgid "Invalid ownCloud url" -msgstr "" +msgstr "URL ownCloud tidak sah" #: js/share.js:60 msgid "Shared by {owner}" @@ -88,7 +88,7 @@ msgstr "Nama" #: templates/list.php:20 msgid "Share time" -msgstr "" +msgstr "Bagikan waktu" #: templates/part.404.php:3 msgid "Sorry, this link doesn’t seem to work anymore." @@ -116,11 +116,11 @@ msgstr "Untuk info lebih lanjut, silakan tanyakan orang yang mengirim tautan ini #: templates/public.php:20 msgid "Save to ownCloud" -msgstr "" +msgstr "Simpan ke ownCloud" #: templates/public.php:22 msgid "example.com/owncloud" -msgstr "" +msgstr "contoh.com/owncloud" #: templates/public.php:23 msgid "Save" @@ -133,7 +133,7 @@ msgstr "Unduh" #: templates/public.php:59 #, php-format msgid "Download %s" -msgstr "" +msgstr "Unduh %s" #: templates/public.php:63 msgid "Direct link" @@ -149,4 +149,4 @@ msgstr "" #: templates/settings-admin.php:11 msgid "Allow users to mount public link shares" -msgstr "" +msgstr "Izinkan pengguna untuk mengaitkan tautan berbagi publik" diff --git a/l10n/it/core.po b/l10n/it/core.po index 32be86c304e..c645ceb1829 100644 --- a/l10n/it/core.po +++ b/l10n/it/core.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" @@ -358,12 +358,12 @@ msgstr "Condiviso con {recipients}" msgid "Share" msgstr "Condividi" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Errore" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Errore durante la condivisione" @@ -458,7 +458,7 @@ msgstr "notifica tramite email" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "può condividere" #: js/share.js:576 msgid "can edit" @@ -480,27 +480,27 @@ msgstr "aggiornare" msgid "delete" msgstr "elimina" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Protetta da password" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Errore durante la rimozione della data di scadenza" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Errore durante l'impostazione della data di scadenza" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Invio in corso..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "Messaggio inviato" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Avviso" diff --git a/l10n/it/files_sharing.po b/l10n/it/files_sharing.po index 660a0b0a3af..428c5fc721f 100644 --- a/l10n/it/files_sharing.po +++ b/l10n/it/files_sharing.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" -"Last-Translator: I Robot\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 17:02+0000\n" +"Last-Translator: Paolo Velati <paolo.velati@gmail.com>\n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -56,11 +56,11 @@ msgstr "Non hai ancora condiviso alcun file tramite collegamento." msgid "Add {name} from {owner}@{remote}" msgstr "Aggiungi {name} da {owner}@{remote}" -#: js/public.js:200 +#: js/public.js:204 msgid "No ownCloud installation found at {remote}" msgstr "Nessuna installazione di ownCloud trovata su {remote}" -#: js/public.js:201 +#: js/public.js:205 msgid "Invalid ownCloud url" msgstr "URL di ownCloud non valido" @@ -143,7 +143,7 @@ msgstr "Collegamento diretto" #: templates/settings-admin.php:3 msgid "Remote Shares" -msgstr "" +msgstr "Condivisioni Remote" #: templates/settings-admin.php:7 msgid "Allow other instances to mount public links shared from this server" diff --git a/l10n/ja/core.po b/l10n/ja/core.po index 1d486b8aa63..f4989b20b75 100644 --- a/l10n/ja/core.po +++ b/l10n/ja/core.po @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" @@ -356,12 +356,12 @@ msgstr "{recipients} と共有" msgid "Share" msgstr "共有" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "エラー" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "共有でエラー発生" @@ -456,7 +456,7 @@ msgstr "メールで通知" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "共有可" #: js/share.js:576 msgid "can edit" @@ -478,27 +478,27 @@ msgstr "アップデート" msgid "delete" msgstr "削除" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "パスワード保護" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "有効期限の未設定エラー" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "有効期限の設定でエラー発生" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "送信中..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "メールを送信しました" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "警告" diff --git a/l10n/km/core.po b/l10n/km/core.po index c6968584136..6fba9e5444d 100644 --- a/l10n/km/core.po +++ b/l10n/km/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Khmer (http://www.transifex.com/projects/p/owncloud/language/km/)\n" "MIME-Version: 1.0\n" @@ -350,12 +350,12 @@ msgstr "" msgid "Share" msgstr "ចែករំលែក" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "កំហុស" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "កំហុសពេលចែករំលែក" @@ -450,7 +450,7 @@ msgstr "" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "អាចចែករំលែក" #: js/share.js:576 msgid "can edit" @@ -472,27 +472,27 @@ msgstr "ធ្វើបច្ចុប្បន្នភាព" msgid "delete" msgstr "លុប" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "បានការពារដោយពាក្យសម្ងាត់" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "កំពុងផ្ញើ ..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "បានផ្ញើអ៊ីមែល" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "បម្រាម" diff --git a/l10n/ko/core.po b/l10n/ko/core.po index 7fb3d095159..5f161ee1759 100644 --- a/l10n/ko/core.po +++ b/l10n/ko/core.po @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" @@ -356,12 +356,12 @@ msgstr "" msgid "Share" msgstr "공유" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "오류" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "공유하는 중 오류 발생" @@ -456,7 +456,7 @@ msgstr "이메일로 알림" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "공유 가능" #: js/share.js:576 msgid "can edit" @@ -478,27 +478,27 @@ msgstr "업데이트" msgid "delete" msgstr "삭제" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "암호로 보호됨" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "만료 날짜 해제 오류" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "만료 날짜 설정 오류" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "전송 중..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "이메일 발송됨" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "경고" diff --git a/l10n/lb/core.po b/l10n/lb/core.po index 0fd841a370a..36d2180e990 100644 --- a/l10n/lb/core.po +++ b/l10n/lb/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" @@ -356,12 +356,12 @@ msgstr "" msgid "Share" msgstr "Deelen" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Feeler" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Feeler beim Deelen" @@ -456,7 +456,7 @@ msgstr "via e-mail Bescheed ginn" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "kann deelen" #: js/share.js:576 msgid "can edit" @@ -478,27 +478,27 @@ msgstr "aktualiséieren" msgid "delete" msgstr "läschen" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Passwuertgeschützt" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Feeler beim Läsche vum Verfallsdatum" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Feeler beim Setze vum Verfallsdatum" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Gëtt geschéckt..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "Email geschéckt" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Warnung" diff --git a/l10n/lt_LT/core.po b/l10n/lt_LT/core.po index 78943c3fb9f..955358a13cd 100644 --- a/l10n/lt_LT/core.po +++ b/l10n/lt_LT/core.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" @@ -364,12 +364,12 @@ msgstr "" msgid "Share" msgstr "Dalintis" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Klaida" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Klaida, dalijimosi metu" @@ -464,7 +464,7 @@ msgstr "pranešti el. paštu" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "gali dalintis" #: js/share.js:576 msgid "can edit" @@ -486,27 +486,27 @@ msgstr "atnaujinti" msgid "delete" msgstr "ištrinti" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Apsaugota slaptažodžiu" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Klaida nuimant galiojimo laiką" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Klaida nustatant galiojimo laiką" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Siunčiama..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "Laiškas išsiųstas" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Įspėjimas" diff --git a/l10n/nb_NO/core.po b/l10n/nb_NO/core.po index be53e02e9ab..d890c710d4d 100644 --- a/l10n/nb_NO/core.po +++ b/l10n/nb_NO/core.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" @@ -358,12 +358,12 @@ msgstr "Delt med {recipients}" msgid "Share" msgstr "Del" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Feil" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Feil under deling" @@ -458,7 +458,7 @@ msgstr "Varsle på email" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "kan dele" #: js/share.js:576 msgid "can edit" @@ -480,27 +480,27 @@ msgstr "oppdater" msgid "delete" msgstr "slett" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Passordbeskyttet" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Feil ved nullstilling av utløpsdato" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Kan ikke sette utløpsdato" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Sender..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "E-post sendt" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Advarsel" diff --git a/l10n/nl/core.po b/l10n/nl/core.po index 3866ca5b813..f635b28e3bd 100644 --- a/l10n/nl/core.po +++ b/l10n/nl/core.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" @@ -357,12 +357,12 @@ msgstr "Gedeeld met {recipients}" msgid "Share" msgstr "Delen" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Fout" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Fout tijdens het delen" @@ -457,7 +457,7 @@ msgstr "melden per e-mail" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "kan delen" #: js/share.js:576 msgid "can edit" @@ -479,27 +479,27 @@ msgstr "bijwerken" msgid "delete" msgstr "verwijderen" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Wachtwoord beveiligd" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Fout tijdens het verwijderen van de vervaldatum" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Fout tijdens het instellen van de vervaldatum" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Versturen ..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "E-mail verzonden" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Waarschuwing" diff --git a/l10n/nl/files_sharing.po b/l10n/nl/files_sharing.po index 14d526a63a5..1f9f7dd7684 100644 --- a/l10n/nl/files_sharing.po +++ b/l10n/nl/files_sharing.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" -"Last-Translator: I Robot\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 17:11+0000\n" +"Last-Translator: André Koot <meneer@tken.net>\n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -55,11 +55,11 @@ msgstr "U hebt nog geen bestanden via een link gedeeld." msgid "Add {name} from {owner}@{remote}" msgstr "Toevoegen {name} van {owner}@{remote}" -#: js/public.js:200 +#: js/public.js:204 msgid "No ownCloud installation found at {remote}" msgstr "Geen ownCloud installatie gevonden op {remote}" -#: js/public.js:201 +#: js/public.js:205 msgid "Invalid ownCloud url" msgstr "Ongeldige ownCloud url" @@ -142,7 +142,7 @@ msgstr "Directe link" #: templates/settings-admin.php:3 msgid "Remote Shares" -msgstr "" +msgstr "Externe shares" #: templates/settings-admin.php:7 msgid "Allow other instances to mount public links shared from this server" diff --git a/l10n/pl/core.po b/l10n/pl/core.po index 3b50a31f055..26ccfad1b1f 100644 --- a/l10n/pl/core.po +++ b/l10n/pl/core.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" @@ -363,12 +363,12 @@ msgstr "Współdzielony z {recipients}" msgid "Share" msgstr "Udostępnij" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Błąd" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Błąd podczas współdzielenia" @@ -463,7 +463,7 @@ msgstr "powiadom przez emaila" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "może współdzielić" #: js/share.js:576 msgid "can edit" @@ -485,27 +485,27 @@ msgstr "uaktualnij" msgid "delete" msgstr "usuń" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Zabezpieczone hasłem" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Błąd podczas usuwania daty wygaśnięcia" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Błąd podczas ustawiania daty wygaśnięcia" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Wysyłanie..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "E-mail wysłany" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Ostrzeżenie" diff --git a/l10n/pt_BR/core.po b/l10n/pt_BR/core.po index cad61f2b119..a0b1246ab9d 100644 --- a/l10n/pt_BR/core.po +++ b/l10n/pt_BR/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -356,12 +356,12 @@ msgstr "Compartilhado com {recipients}" msgid "Share" msgstr "Compartilhar" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Erro" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Erro ao compartilhar" @@ -456,7 +456,7 @@ msgstr "notificar por e-mail" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "pode compartilhar" #: js/share.js:576 msgid "can edit" @@ -478,27 +478,27 @@ msgstr "atualizar" msgid "delete" msgstr "remover" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Protegido com senha" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Erro ao remover data de expiração" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Erro ao definir data de expiração" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Enviando ..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "E-mail enviado" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Aviso" diff --git a/l10n/pt_BR/files.po b/l10n/pt_BR/files.po index 6c1890c0248..c3524b22326 100644 --- a/l10n/pt_BR/files.po +++ b/l10n/pt_BR/files.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-26 01:54-0400\n" -"PO-Revision-Date: 2014-06-25 15:21+0000\n" -"Last-Translator: I Robot\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 12:41+0000\n" +"Last-Translator: Flávio Veras <flaviove@gmail.com>\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -86,7 +86,7 @@ msgstr "Erro ao criar a pasta" #: ajax/upload.php:19 ajax/upload.php:57 msgid "Unable to set upload directory." -msgstr "Impossível configurar o diretório de upload" +msgstr "Impossível configurar o diretório de envio" #: ajax/upload.php:33 msgid "Invalid Token" @@ -151,123 +151,123 @@ msgstr "Arquivos" msgid "All files" msgstr "Todos os arquivos" -#: js/file-upload.js:257 +#: js/file-upload.js:268 msgid "Unable to upload {filename} as it is a directory or has 0 bytes" msgstr "Incapaz de fazer o envio de {filename}, pois é um diretório ou tem 0 bytes" -#: js/file-upload.js:270 +#: js/file-upload.js:281 msgid "Total file size {size1} exceeds upload limit {size2}" msgstr "O tamanho total do arquivo {size1} excede o limite de envio {size2}" -#: js/file-upload.js:281 +#: js/file-upload.js:292 msgid "" "Not enough free space, you are uploading {size1} but only {size2} is left" msgstr "Não há espaço suficiente, você está enviando {size1} mas resta apenas {size2}" -#: js/file-upload.js:358 +#: js/file-upload.js:369 msgid "Upload cancelled." msgstr "Envio cancelado." -#: js/file-upload.js:404 +#: js/file-upload.js:415 msgid "Could not get result from server." msgstr "Não foi possível obter o resultado do servidor." -#: js/file-upload.js:490 +#: js/file-upload.js:499 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." -msgstr "Upload em andamento. Sair da página agora resultará no cancelamento do envio." +msgstr "Envio de arquivo em andamento. Sair da página agora resultará no cancelamento do envio." -#: js/file-upload.js:555 +#: js/file-upload.js:564 msgid "URL cannot be empty" msgstr "URL não pode estar vazia" -#: js/file-upload.js:559 js/filelist.js:1192 +#: js/file-upload.js:568 js/filelist.js:1228 msgid "{new_name} already exists" msgstr "{new_name} já existe" -#: js/file-upload.js:614 +#: js/file-upload.js:623 msgid "Could not create file" msgstr "Não foi possível criar o arquivo" -#: js/file-upload.js:630 +#: js/file-upload.js:639 msgid "Could not create folder" msgstr "Não foi possível criar a pasta" -#: js/file-upload.js:677 +#: js/file-upload.js:686 msgid "Error fetching URL" msgstr "Erro ao buscar URL" -#: js/fileactions.js:213 +#: js/fileactions.js:257 msgid "Share" msgstr "Compartilhar" -#: js/fileactions.js:226 +#: js/fileactions.js:270 msgid "Delete permanently" msgstr "Excluir permanentemente" -#: js/fileactions.js:228 templates/list.php:78 templates/list.php:79 +#: js/fileactions.js:272 templates/list.php:78 templates/list.php:79 msgid "Delete" msgstr "Excluir" -#: js/fileactions.js:264 +#: js/fileactions.js:308 msgid "Rename" msgstr "Renomear" -#: js/filelist.js:314 +#: js/filelist.js:339 msgid "" "Your download is being prepared. This might take some time if the files are " "big." msgstr "Seu download está sendo preparado. Isto pode levar algum tempo se os arquivos forem grandes." -#: js/filelist.js:623 js/filelist.js:1713 +#: js/filelist.js:659 js/filelist.js:1752 msgid "Pending" msgstr "Pendente" -#: js/filelist.js:1143 +#: js/filelist.js:1179 msgid "Error moving file." msgstr "Erro movendo o arquivo." -#: js/filelist.js:1151 +#: js/filelist.js:1187 msgid "Error moving file" msgstr "Erro movendo o arquivo" -#: js/filelist.js:1151 +#: js/filelist.js:1187 msgid "Error" msgstr "Erro" -#: js/filelist.js:1240 +#: js/filelist.js:1276 msgid "Could not rename file" msgstr "Não foi possível renomear o arquivo" -#: js/filelist.js:1358 +#: js/filelist.js:1394 msgid "Error deleting file." msgstr "Erro eliminando o arquivo." -#: js/filelist.js:1461 templates/list.php:62 +#: js/filelist.js:1497 templates/list.php:62 msgid "Name" msgstr "Nome" -#: js/filelist.js:1462 templates/list.php:73 +#: js/filelist.js:1498 templates/list.php:73 msgid "Size" msgstr "Tamanho" -#: js/filelist.js:1463 templates/list.php:76 +#: js/filelist.js:1499 templates/list.php:76 msgid "Modified" msgstr "Modificado" -#: js/filelist.js:1473 js/filesummary.js:141 js/filesummary.js:168 +#: js/filelist.js:1509 js/filesummary.js:141 js/filesummary.js:168 msgid "%n folder" msgid_plural "%n folders" msgstr[0] "%n pasta" msgstr[1] "%n pastas" -#: js/filelist.js:1479 js/filesummary.js:142 js/filesummary.js:169 +#: js/filelist.js:1515 js/filesummary.js:142 js/filesummary.js:169 msgid "%n file" msgid_plural "%n files" msgstr[0] "%n arquivo" msgstr[1] "%n arquivos" -#: js/filelist.js:1606 js/filelist.js:1645 +#: js/filelist.js:1645 js/filelist.js:1684 msgid "Uploading %n file" msgid_plural "Uploading %n files" msgstr[0] "Enviando %n arquivo" @@ -289,20 +289,20 @@ msgstr "Seu armazenamento está quase cheio ({usedSpacePercent}%)" msgid "" "Encryption App is enabled but your keys are not initialized, please log-out " "and log-in again" -msgstr "App de encriptação está ativado, mas as chaves não estão inicializadas, por favor log-out e faça login novamente" +msgstr "App de criptografia está ativado, mas as chaves não estão inicializadas, por favor log-out e faça login novamente" #: js/files.js:144 msgid "" "Invalid private key for Encryption App. Please update your private key " "password in your personal settings to recover access to your encrypted " "files." -msgstr "Chave do App de Encriptação é inválida. Por favor, atualize sua senha de chave privada em suas configurações pessoais para recuperar o acesso a seus arquivos criptografados." +msgstr "Chave do App de Criptografia é inválida. Por favor, atualize sua senha de chave privada em suas configurações pessoais para recuperar o acesso a seus arquivos criptografados." #: js/files.js:148 msgid "" "Encryption was disabled but your files are still encrypted. Please go to " "your personal settings to decrypt your files." -msgstr "Encriptação foi desabilitada mas seus arquivos continuam encriptados. Por favor vá a suas configurações pessoais para descriptar seus arquivos." +msgstr "Criptografia foi desabilitada mas seus arquivos continuam criptografados. Por favor vá a suas configurações pessoais para descriptar seus arquivos." #: js/filesummary.js:182 msgid "{dirs} and {files}" @@ -324,7 +324,7 @@ msgstr "Tratamento de Arquivo" #: templates/admin.php:7 msgid "Maximum upload size" -msgstr "Tamanho máximo para carregar" +msgstr "Tamanho máximo para envio" #: templates/admin.php:10 msgid "max. possible: " @@ -332,7 +332,7 @@ msgstr "max. possível:" #: templates/admin.php:15 msgid "Save" -msgstr "Guardar" +msgstr "Salvar" #: templates/appnavigation.php:12 msgid "WebDAV" @@ -371,11 +371,11 @@ msgstr "Do link" #: templates/list.php:42 msgid "Cancel upload" -msgstr "Cancelar upload" +msgstr "Cancelar envio" #: templates/list.php:48 msgid "You don’t have permission to upload or create files here" -msgstr "Você não tem permissão para carregar ou criar arquivos aqui" +msgstr "Você não tem permissão para enviar ou criar arquivos aqui" #: templates/list.php:53 msgid "Nothing in here. Upload something!" @@ -387,13 +387,13 @@ msgstr "Baixar" #: templates/list.php:92 msgid "Upload too large" -msgstr "Upload muito grande" +msgstr "Arquivo muito grande para envio" #: templates/list.php:94 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." -msgstr "Os arquivos que você está tentando carregar excedeu o tamanho máximo para arquivos no servidor." +msgstr "Os arquivos que você está tentando enviar excedeu o tamanho máximo para arquivos no servidor." #: templates/list.php:99 msgid "Files are being scanned, please wait." diff --git a/l10n/pt_BR/files_encryption.po b/l10n/pt_BR/files_encryption.po index 59d9ffac8a4..95ae2aaf93e 100644 --- a/l10n/pt_BR/files_encryption.po +++ b/l10n/pt_BR/files_encryption.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-15 01:54-0400\n" -"PO-Revision-Date: 2014-06-14 17:30+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 12:21+0000\n" "Last-Translator: Flávio Veras <flaviove@gmail.com>\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -180,7 +180,7 @@ msgstr "Senha de login atual" #: templates/settings-personal.php:32 msgid "Update Private Key Password" -msgstr "Atualizar senha de chave privada" +msgstr "Atualizar Senha de Chave Privada" #: templates/settings-personal.php:41 msgid "Enable password recovery:" diff --git a/l10n/pt_BR/files_external.po b/l10n/pt_BR/files_external.po index 617cffeae37..c92b96e3a2a 100644 --- a/l10n/pt_BR/files_external.po +++ b/l10n/pt_BR/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-26 01:54-0400\n" -"PO-Revision-Date: 2014-06-25 15:01+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 11:41+0000\n" "Last-Translator: Flávio Veras <flaviove@gmail.com>\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -18,167 +18,167 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: appinfo/app.php:36 js/app.js:32 templates/settings.php:9 +#: appinfo/app.php:35 js/app.js:32 templates/settings.php:9 msgid "External storage" msgstr "Armazenamento Externo" -#: appinfo/app.php:45 +#: appinfo/app.php:44 msgid "Local" msgstr "Local" -#: appinfo/app.php:48 +#: appinfo/app.php:47 msgid "Location" -msgstr "Local" +msgstr "Localização" -#: appinfo/app.php:51 +#: appinfo/app.php:50 msgid "Amazon S3" msgstr "Amazon S3" -#: appinfo/app.php:54 +#: appinfo/app.php:53 msgid "Key" msgstr "Chave" -#: appinfo/app.php:55 +#: appinfo/app.php:54 msgid "Secret" -msgstr "Secreta" +msgstr "Segredo" -#: appinfo/app.php:56 appinfo/app.php:65 +#: appinfo/app.php:55 appinfo/app.php:64 msgid "Bucket" msgstr "Cesta" -#: appinfo/app.php:60 +#: appinfo/app.php:59 msgid "Amazon S3 and compliant" msgstr "Amazon S3 e compatível" -#: appinfo/app.php:63 +#: appinfo/app.php:62 msgid "Access Key" msgstr "Chave de Acesso" -#: appinfo/app.php:64 +#: appinfo/app.php:63 msgid "Secret Key" msgstr "Chave Secreta" -#: appinfo/app.php:66 +#: appinfo/app.php:65 msgid "Hostname (optional)" msgstr "Nome do Host (opcional)" -#: appinfo/app.php:67 +#: appinfo/app.php:66 msgid "Port (optional)" msgstr "Porta (opcional)" -#: appinfo/app.php:68 +#: appinfo/app.php:67 msgid "Region (optional)" msgstr "Região (opcional)" -#: appinfo/app.php:69 +#: appinfo/app.php:68 msgid "Enable SSL" msgstr "Habilitar SSL" -#: appinfo/app.php:70 +#: appinfo/app.php:69 msgid "Enable Path Style" msgstr "Habilitar Estilo do Caminho" -#: appinfo/app.php:78 +#: appinfo/app.php:77 msgid "App key" msgstr "Chave do Aplicativo" -#: appinfo/app.php:79 +#: appinfo/app.php:78 msgid "App secret" msgstr "Segredo da Aplicação" -#: appinfo/app.php:89 appinfo/app.php:130 appinfo/app.php:141 -#: appinfo/app.php:174 +#: appinfo/app.php:88 appinfo/app.php:129 appinfo/app.php:140 +#: appinfo/app.php:173 msgid "Host" -msgstr "Servidor" +msgstr "Host" -#: appinfo/app.php:90 appinfo/app.php:131 appinfo/app.php:153 -#: appinfo/app.php:164 appinfo/app.php:175 +#: appinfo/app.php:89 appinfo/app.php:130 appinfo/app.php:152 +#: appinfo/app.php:163 appinfo/app.php:174 msgid "Username" msgstr "Nome de Usuário" -#: appinfo/app.php:91 appinfo/app.php:132 appinfo/app.php:154 -#: appinfo/app.php:165 appinfo/app.php:176 +#: appinfo/app.php:90 appinfo/app.php:131 appinfo/app.php:153 +#: appinfo/app.php:164 appinfo/app.php:175 msgid "Password" msgstr "Senha" -#: appinfo/app.php:92 appinfo/app.php:134 appinfo/app.php:144 -#: appinfo/app.php:155 appinfo/app.php:177 +#: appinfo/app.php:91 appinfo/app.php:133 appinfo/app.php:143 +#: appinfo/app.php:154 appinfo/app.php:176 msgid "Root" msgstr "Raiz" -#: appinfo/app.php:93 +#: appinfo/app.php:92 msgid "Secure ftps://" msgstr "Seguro ftps://" -#: appinfo/app.php:101 +#: appinfo/app.php:100 msgid "Client ID" msgstr "ID do Cliente" -#: appinfo/app.php:102 +#: appinfo/app.php:101 msgid "Client secret" msgstr "Segredo do cliente" -#: appinfo/app.php:109 +#: appinfo/app.php:108 msgid "OpenStack Object Storage" msgstr "Armazenamento de Objetos OpenStack" -#: appinfo/app.php:112 +#: appinfo/app.php:111 msgid "Username (required)" msgstr "Nome do Usuário (requerido)" -#: appinfo/app.php:113 +#: appinfo/app.php:112 msgid "Bucket (required)" msgstr "Cesta (requerido)" -#: appinfo/app.php:114 +#: appinfo/app.php:113 msgid "Region (optional for OpenStack Object Storage)" msgstr "Região (opcional para armazenamento de objetos OpenStack)" -#: appinfo/app.php:115 +#: appinfo/app.php:114 msgid "API Key (required for Rackspace Cloud Files)" msgstr "Chave API (necessário para Rackspace Cloud File)" -#: appinfo/app.php:116 +#: appinfo/app.php:115 msgid "Tenantname (required for OpenStack Object Storage)" msgstr "Nome Tenant (necessário para armazenamento de objetos OpenStack)" -#: appinfo/app.php:117 +#: appinfo/app.php:116 msgid "Password (required for OpenStack Object Storage)" msgstr "Senha (necessário para armazenamento de objetos OpenStack)" -#: appinfo/app.php:118 +#: appinfo/app.php:117 msgid "Service Name (required for OpenStack Object Storage)" msgstr "Nome do Serviço (necessário para armazenamento de objetos OpenStack)" -#: appinfo/app.php:119 +#: appinfo/app.php:118 msgid "URL of identity endpoint (required for OpenStack Object Storage)" msgstr "Ponto final de identidade da URL (obrigatório para armazenamento de objetos OpenStack)" -#: appinfo/app.php:120 +#: appinfo/app.php:119 msgid "Timeout of HTTP requests in seconds (optional)" msgstr "Tempo limite de solicitações HTTP em segundos (opcional)" -#: appinfo/app.php:133 appinfo/app.php:143 +#: appinfo/app.php:132 appinfo/app.php:142 msgid "Share" msgstr "Compartilhar" -#: appinfo/app.php:138 +#: appinfo/app.php:137 msgid "SMB / CIFS using OC login" -msgstr "SMB / CIFS usando OC logon" +msgstr "SMB / CIFS usando OC login" -#: appinfo/app.php:142 +#: appinfo/app.php:141 msgid "Username as share" msgstr "Nome de usuário como compartilhado" -#: appinfo/app.php:152 appinfo/app.php:163 +#: appinfo/app.php:151 appinfo/app.php:162 msgid "URL" msgstr "URL" -#: appinfo/app.php:156 appinfo/app.php:167 +#: appinfo/app.php:155 appinfo/app.php:166 msgid "Secure https://" msgstr "https:// segura" -#: appinfo/app.php:166 +#: appinfo/app.php:165 msgid "Remote subfolder" msgstr "Subpasta remota" @@ -196,7 +196,7 @@ msgstr "Permitir acesso" #: js/dropbox.js:102 msgid "Please provide a valid Dropbox app key and secret." -msgstr "Por favor forneça um app key e secret válido do Dropbox" +msgstr "Por favor forneça uma chave de aplicativo e segurança válidos para o Dropbox" #: js/google.js:45 js/google.js:122 msgid "Error configuring Google Drive storage" @@ -214,29 +214,29 @@ msgstr "Sistema" msgid "Saved" msgstr "Salvo" -#: lib/config.php:703 +#: lib/config.php:707 msgid "<b>Note:</b> " msgstr "<b>Nota:</b>" -#: lib/config.php:713 +#: lib/config.php:717 msgid " and " msgstr "e" -#: lib/config.php:735 +#: lib/config.php:739 #, php-format msgid "" "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting " "of %s is not possible. Please ask your system administrator to install it." msgstr "<b>Nota:</b> O suporte cURL do PHP não está habilitado ou instalado. Montagem de %s não é possível. Por favor, solicite ao seu administrador do sistema para instalá-lo." -#: lib/config.php:737 +#: lib/config.php:741 #, php-format msgid "" "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of" " %s is not possible. Please ask your system administrator to install it." msgstr "<b>Nota:</b> O suporte FTP no PHP não está habilitado ou instalado. Montagem de %s não é possível. Por favor, solicite ao seu administrador do sistema para instalá-lo." -#: lib/config.php:739 +#: lib/config.php:743 #, php-format msgid "" "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please" diff --git a/l10n/pt_BR/files_sharing.po b/l10n/pt_BR/files_sharing.po index 3e3e6acda04..1f0b984650c 100644 --- a/l10n/pt_BR/files_sharing.po +++ b/l10n/pt_BR/files_sharing.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" -"Last-Translator: I Robot\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 12:31+0000\n" +"Last-Translator: Flávio Veras <flaviove@gmail.com>\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -54,11 +54,11 @@ msgstr "Você ainda não compartilhou nenhum arquivo por link." msgid "Add {name} from {owner}@{remote}" msgstr "Adicionar {name} de {owner}@{remote}" -#: js/public.js:200 +#: js/public.js:204 msgid "No ownCloud installation found at {remote}" msgstr "Nenhuma instalação ownCloud encontrada em {remote}" -#: js/public.js:201 +#: js/public.js:205 msgid "Invalid ownCloud url" msgstr "Url invalida para ownCloud" @@ -68,7 +68,7 @@ msgstr "Compartilhado por {owner}" #: js/sharedfilelist.js:128 msgid "Shared by" -msgstr "Compartilhada por" +msgstr "Compartilhado por" #: templates/authenticate.php:4 msgid "This share is password-protected" @@ -108,7 +108,7 @@ msgstr "o link expirou" #: templates/part.404.php:8 msgid "sharing is disabled" -msgstr "compartilhamento está desativada" +msgstr "o compartilhamento está desativado" #: templates/part.404.php:10 msgid "For more info, please ask the person who sent this link." @@ -141,7 +141,7 @@ msgstr "Link direto" #: templates/settings-admin.php:3 msgid "Remote Shares" -msgstr "" +msgstr "Compartilhamentos Remoto" #: templates/settings-admin.php:7 msgid "Allow other instances to mount public links shared from this server" diff --git a/l10n/pt_BR/user_ldap.po b/l10n/pt_BR/user_ldap.po index 4d6af9e24e5..afcb9ccf91b 100644 --- a/l10n/pt_BR/user_ldap.po +++ b/l10n/pt_BR/user_ldap.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-26 01:54-0400\n" -"PO-Revision-Date: 2014-06-25 15:21+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 12:31+0000\n" "Last-Translator: Flávio Veras <flaviove@gmail.com>\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_BR/user_webdavauth.po b/l10n/pt_BR/user_webdavauth.po index f0bbdf1f424..047ea9a0100 100644 --- a/l10n/pt_BR/user_webdavauth.po +++ b/l10n/pt_BR/user_webdavauth.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-26 01:54-0400\n" -"PO-Revision-Date: 2014-06-25 15:21+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 12:31+0000\n" "Last-Translator: Flávio Veras <flaviove@gmail.com>\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/core.po b/l10n/pt_PT/core.po index f4fce5235d9..972685fd727 100644 --- a/l10n/pt_PT/core.po +++ b/l10n/pt_PT/core.po @@ -19,8 +19,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" @@ -366,12 +366,12 @@ msgstr "Partilhado com {recipients}" msgid "Share" msgstr "Partilhar" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Erro" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Erro ao partilhar" @@ -466,7 +466,7 @@ msgstr "Notificar por email" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "pode partilhar" #: js/share.js:576 msgid "can edit" @@ -488,27 +488,27 @@ msgstr "actualizar" msgid "delete" msgstr "apagar" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Protegido com palavra-passe" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Erro ao retirar a data de expiração" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Erro ao aplicar a data de expiração" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "A Enviar..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "E-mail enviado" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Aviso" diff --git a/l10n/ro/core.po b/l10n/ro/core.po index 7bf19da6549..ff984652f4d 100644 --- a/l10n/ro/core.po +++ b/l10n/ro/core.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" @@ -363,12 +363,12 @@ msgstr "" msgid "Share" msgstr "Partajează" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Eroare" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Eroare la partajare" @@ -463,7 +463,7 @@ msgstr "" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "se poate partaja" #: js/share.js:576 msgid "can edit" @@ -485,27 +485,27 @@ msgstr "actualizare" msgid "delete" msgstr "ștergere" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Protejare cu parolă" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Eroare la anularea datei de expirare" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Eroare la specificarea datei de expirare" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Se expediază..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "Mesajul a fost expediat" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Atenție" diff --git a/l10n/ru/core.po b/l10n/ru/core.po index 85b3b3bf46b..65610fddf4d 100644 --- a/l10n/ru/core.po +++ b/l10n/ru/core.po @@ -32,8 +32,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" @@ -384,12 +384,12 @@ msgstr "Доступ открыт {recipients}" msgid "Share" msgstr "Открыть доступ" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Ошибка" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Ошибка при открытии доступа" @@ -484,7 +484,7 @@ msgstr "уведомить по почте" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "можно дать доступ" #: js/share.js:576 msgid "can edit" @@ -506,27 +506,27 @@ msgstr "обновить" msgid "delete" msgstr "удалить" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Защищено паролем" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Ошибка при отмене срока доступа" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Ошибка при установке срока доступа" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Отправляется ..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "Письмо отправлено" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Предупреждение" diff --git a/l10n/ru/files.po b/l10n/ru/files.po index 5e28f82e06f..91583ab1575 100644 --- a/l10n/ru/files.po +++ b/l10n/ru/files.po @@ -23,8 +23,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-26 10:50+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 09:51+0000\n" "Last-Translator: Михаил Маслиёв <misha.masliev@yandex.ru>\n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" @@ -163,125 +163,125 @@ msgstr "Файлы" msgid "All files" msgstr "Все файлы" -#: js/file-upload.js:257 +#: js/file-upload.js:268 msgid "Unable to upload {filename} as it is a directory or has 0 bytes" msgstr "Невозможно загрузить {filename}, так как это либо каталог, либо файл нулевого размера" -#: js/file-upload.js:270 +#: js/file-upload.js:281 msgid "Total file size {size1} exceeds upload limit {size2}" msgstr "Полный размер файла {size1} превышает лимит по загрузке {size2}" -#: js/file-upload.js:281 +#: js/file-upload.js:292 msgid "" "Not enough free space, you are uploading {size1} but only {size2} is left" msgstr "Не достаточно свободного места, Вы загружаете {size1} но осталось только {size2}" -#: js/file-upload.js:358 +#: js/file-upload.js:369 msgid "Upload cancelled." msgstr "Загрузка отменена." -#: js/file-upload.js:404 +#: js/file-upload.js:415 msgid "Could not get result from server." msgstr "Не удалось получить ответ от сервера." -#: js/file-upload.js:490 +#: js/file-upload.js:499 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "Идёт загрузка файла. Покинув страницу, вы прервёте загрузку." -#: js/file-upload.js:555 +#: js/file-upload.js:564 msgid "URL cannot be empty" msgstr "Ссылка не может быть пустой." -#: js/file-upload.js:559 js/filelist.js:1192 +#: js/file-upload.js:568 js/filelist.js:1228 msgid "{new_name} already exists" msgstr "{new_name} уже существует" -#: js/file-upload.js:614 +#: js/file-upload.js:623 msgid "Could not create file" msgstr "Не удалось создать файл" -#: js/file-upload.js:630 +#: js/file-upload.js:639 msgid "Could not create folder" msgstr "Не удалось создать каталог" -#: js/file-upload.js:677 +#: js/file-upload.js:686 msgid "Error fetching URL" msgstr "Ошибка получения URL" -#: js/fileactions.js:213 +#: js/fileactions.js:257 msgid "Share" msgstr "Открыть доступ" -#: js/fileactions.js:226 +#: js/fileactions.js:270 msgid "Delete permanently" msgstr "Удалить окончательно" -#: js/fileactions.js:228 templates/list.php:78 templates/list.php:79 +#: js/fileactions.js:272 templates/list.php:78 templates/list.php:79 msgid "Delete" msgstr "Удалить" -#: js/fileactions.js:264 +#: js/fileactions.js:308 msgid "Rename" msgstr "Переименовать" -#: js/filelist.js:314 +#: js/filelist.js:339 msgid "" "Your download is being prepared. This might take some time if the files are " "big." msgstr "Идёт подготовка к скачиванию. Это может занять некоторое время, если файлы большого размера." -#: js/filelist.js:623 js/filelist.js:1713 +#: js/filelist.js:659 js/filelist.js:1752 msgid "Pending" msgstr "Ожидание" -#: js/filelist.js:1143 +#: js/filelist.js:1179 msgid "Error moving file." msgstr "Ошибка перемещения файла." -#: js/filelist.js:1151 +#: js/filelist.js:1187 msgid "Error moving file" msgstr "Ошибка при перемещении файла" -#: js/filelist.js:1151 +#: js/filelist.js:1187 msgid "Error" msgstr "Ошибка" -#: js/filelist.js:1240 +#: js/filelist.js:1276 msgid "Could not rename file" msgstr "Не удалось переименовать файл" -#: js/filelist.js:1358 +#: js/filelist.js:1394 msgid "Error deleting file." msgstr "Ошибка при удалении файла." -#: js/filelist.js:1461 templates/list.php:62 +#: js/filelist.js:1497 templates/list.php:62 msgid "Name" msgstr "Имя" -#: js/filelist.js:1462 templates/list.php:73 +#: js/filelist.js:1498 templates/list.php:73 msgid "Size" msgstr "Размер" -#: js/filelist.js:1463 templates/list.php:76 +#: js/filelist.js:1499 templates/list.php:76 msgid "Modified" msgstr "Изменён" -#: js/filelist.js:1473 js/filesummary.js:141 js/filesummary.js:168 +#: js/filelist.js:1509 js/filesummary.js:141 js/filesummary.js:168 msgid "%n folder" msgid_plural "%n folders" msgstr[0] "%n каталог" msgstr[1] "%n каталога" msgstr[2] "%n каталогов" -#: js/filelist.js:1479 js/filesummary.js:142 js/filesummary.js:169 +#: js/filelist.js:1515 js/filesummary.js:142 js/filesummary.js:169 msgid "%n file" msgid_plural "%n files" msgstr[0] "%n файл" msgstr[1] "%n файла" msgstr[2] "%n файлов" -#: js/filelist.js:1606 js/filelist.js:1645 +#: js/filelist.js:1645 js/filelist.js:1684 msgid "Uploading %n file" msgid_plural "Uploading %n files" msgstr[0] "Закачка %n файла" diff --git a/l10n/ru/settings.po b/l10n/ru/settings.po index dae2644404e..1afd37ff359 100644 --- a/l10n/ru/settings.po +++ b/l10n/ru/settings.po @@ -13,6 +13,7 @@ # Evgenij Spitsyn <evgeniy@spitsyn.net>, 2013 # jekader <jekader@gmail.com>, 2013 # Михаил Маслиёв <misha.masliev@yandex.ru>, 2014 +# Glosshead <o44ehb@gmail.com>, 2014 # Serge Shpikin <rkfg@rkfg.me>, 2013 # anshibanov <shibanovan@yandex.ru>, 2014 # Simon Tushev, 2014 @@ -28,9 +29,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-26 15:02+0000\n" -"Last-Translator: Михаил Маслиёв <misha.masliev@yandex.ru>\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-28 05:00+0000\n" +"Last-Translator: Glosshead <o44ehb@gmail.com>\n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -420,7 +421,7 @@ msgstr "Логин" #: templates/admin.php:18 msgid "Plain" -msgstr "" +msgstr "Простой" #: templates/admin.php:19 msgid "NT LAN Manager" @@ -591,7 +592,7 @@ msgstr "Позволить приложениям использовать API � #: templates/admin.php:243 msgid "Allow users to share via link" -msgstr "" +msgstr "Разрешить пользователям публикации через ссылки" #: templates/admin.php:249 msgid "Enforce password protection" @@ -623,7 +624,7 @@ msgstr "Разрешить переоткрытие общего доступа" #: templates/admin.php:276 msgid "Restrict users to only share with users in their groups" -msgstr "" +msgstr "Разрешить пользователям публикации только внутри их групп" #: templates/admin.php:281 msgid "Allow users to send mail notification for shared files" @@ -980,7 +981,7 @@ msgstr "Квота" #: templates/users/part.userlist.php:15 msgid "Storage Location" -msgstr "" +msgstr "Место хранилища" #: templates/users/part.userlist.php:16 msgid "Last Login" diff --git a/l10n/sk_SK/core.po b/l10n/sk_SK/core.po index cbb696bc198..1f818866191 100644 --- a/l10n/sk_SK/core.po +++ b/l10n/sk_SK/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" @@ -361,12 +361,12 @@ msgstr "Zdieľa s {recipients}" msgid "Share" msgstr "Zdieľať" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Chyba" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Chyba počas zdieľania" @@ -461,7 +461,7 @@ msgstr "informovať emailom" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "môže zdieľať" #: js/share.js:576 msgid "can edit" @@ -483,27 +483,27 @@ msgstr "aktualizovať" msgid "delete" msgstr "vymazať" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Chránené heslom" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Chyba pri odstraňovaní dátumu expirácie" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Chyba pri nastavení dátumu expirácie" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Odosielam ..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "Email odoslaný" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Varovanie" diff --git a/l10n/sl/core.po b/l10n/sl/core.po index bbd94efc59d..842501f087a 100644 --- a/l10n/sl/core.po +++ b/l10n/sl/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" @@ -366,12 +366,12 @@ msgstr "" msgid "Share" msgstr "Souporaba" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Napaka" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Napaka med souporabo" @@ -466,7 +466,7 @@ msgstr "obvesti po elektronski pošti" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "lahko omogoči souporabo" #: js/share.js:576 msgid "can edit" @@ -488,27 +488,27 @@ msgstr "posodobi" msgid "delete" msgstr "izbriše" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Zaščiteno z geslom" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Napaka brisanja datuma preteka" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Napaka nastavljanja datuma preteka" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Pošiljanje ..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "Elektronska pošta je poslana" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Opozorilo" diff --git a/l10n/sq/core.po b/l10n/sq/core.po index b6a8caf4075..0a77913c5d5 100644 --- a/l10n/sq/core.po +++ b/l10n/sq/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" @@ -356,12 +356,12 @@ msgstr "" msgid "Share" msgstr "Nda" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Veprim i gabuar" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Veprim i gabuar gjatë ndarjes" @@ -456,7 +456,7 @@ msgstr "" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "mund të ndajnë" #: js/share.js:576 msgid "can edit" @@ -478,27 +478,27 @@ msgstr "azhurno" msgid "delete" msgstr "elimino" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Mbrojtur me kod" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Veprim i gabuar gjatë heqjes së datës së përfundimit" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Veprim i gabuar gjatë caktimit të datës së përfundimit" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Duke dërguar..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "Email-i u dërgua" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "" diff --git a/l10n/sv/core.po b/l10n/sv/core.po index 580cacc7185..13aaac06d9b 100644 --- a/l10n/sv/core.po +++ b/l10n/sv/core.po @@ -16,8 +16,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" @@ -363,12 +363,12 @@ msgstr "Delad med {recipients}" msgid "Share" msgstr "Dela" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Fel" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Fel vid delning" @@ -463,7 +463,7 @@ msgstr "informera via e-post" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "får dela" #: js/share.js:576 msgid "can edit" @@ -485,27 +485,27 @@ msgstr "uppdatera" msgid "delete" msgstr "radera" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Lösenordsskyddad" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Fel vid borttagning av utgångsdatum" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Fel vid sättning av utgångsdatum" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Skickar ..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "E-post skickat" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Varning" diff --git a/l10n/templates/core.pot b/l10n/templates/core.pot index 264a31c8a2e..6c28d9d3886 100644 --- a/l10n/templates/core.pot +++ b/l10n/templates/core.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 6.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -355,12 +355,12 @@ msgstr "" msgid "Share" msgstr "" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "" @@ -477,27 +477,27 @@ msgstr "" msgid "delete" msgstr "" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "" -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "" diff --git a/l10n/templates/files.pot b/l10n/templates/files.pot index c5c4a1c3000..97c4d10862d 100644 --- a/l10n/templates/files.pot +++ b/l10n/templates/files.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 6.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -147,123 +147,123 @@ msgstr "" msgid "All files" msgstr "" -#: js/file-upload.js:257 +#: js/file-upload.js:268 msgid "Unable to upload {filename} as it is a directory or has 0 bytes" msgstr "" -#: js/file-upload.js:270 +#: js/file-upload.js:281 msgid "Total file size {size1} exceeds upload limit {size2}" msgstr "" -#: js/file-upload.js:281 +#: js/file-upload.js:292 msgid "" "Not enough free space, you are uploading {size1} but only {size2} is left" msgstr "" -#: js/file-upload.js:358 +#: js/file-upload.js:369 msgid "Upload cancelled." msgstr "" -#: js/file-upload.js:404 +#: js/file-upload.js:415 msgid "Could not get result from server." msgstr "" -#: js/file-upload.js:490 +#: js/file-upload.js:499 msgid "" "File upload is in progress. Leaving the page now will cancel the upload." msgstr "" -#: js/file-upload.js:555 +#: js/file-upload.js:564 msgid "URL cannot be empty" msgstr "" -#: js/file-upload.js:559 js/filelist.js:1192 +#: js/file-upload.js:568 js/filelist.js:1228 msgid "{new_name} already exists" msgstr "" -#: js/file-upload.js:614 +#: js/file-upload.js:623 msgid "Could not create file" msgstr "" -#: js/file-upload.js:630 +#: js/file-upload.js:639 msgid "Could not create folder" msgstr "" -#: js/file-upload.js:677 +#: js/file-upload.js:686 msgid "Error fetching URL" msgstr "" -#: js/fileactions.js:213 +#: js/fileactions.js:257 msgid "Share" msgstr "" -#: js/fileactions.js:226 +#: js/fileactions.js:270 msgid "Delete permanently" msgstr "" -#: js/fileactions.js:228 templates/list.php:78 templates/list.php:79 +#: js/fileactions.js:272 templates/list.php:78 templates/list.php:79 msgid "Delete" msgstr "" -#: js/fileactions.js:264 +#: js/fileactions.js:308 msgid "Rename" msgstr "" -#: js/filelist.js:314 +#: js/filelist.js:339 msgid "" "Your download is being prepared. This might take some time if the files are " "big." msgstr "" -#: js/filelist.js:623 js/filelist.js:1713 +#: js/filelist.js:659 js/filelist.js:1752 msgid "Pending" msgstr "" -#: js/filelist.js:1143 +#: js/filelist.js:1179 msgid "Error moving file." msgstr "" -#: js/filelist.js:1151 +#: js/filelist.js:1187 msgid "Error moving file" msgstr "" -#: js/filelist.js:1151 +#: js/filelist.js:1187 msgid "Error" msgstr "" -#: js/filelist.js:1240 +#: js/filelist.js:1276 msgid "Could not rename file" msgstr "" -#: js/filelist.js:1358 +#: js/filelist.js:1394 msgid "Error deleting file." msgstr "" -#: js/filelist.js:1461 templates/list.php:62 +#: js/filelist.js:1497 templates/list.php:62 msgid "Name" msgstr "" -#: js/filelist.js:1462 templates/list.php:73 +#: js/filelist.js:1498 templates/list.php:73 msgid "Size" msgstr "" -#: js/filelist.js:1463 templates/list.php:76 +#: js/filelist.js:1499 templates/list.php:76 msgid "Modified" msgstr "" -#: js/filelist.js:1473 js/filesummary.js:141 js/filesummary.js:168 +#: js/filelist.js:1509 js/filesummary.js:141 js/filesummary.js:168 msgid "%n folder" msgid_plural "%n folders" msgstr[0] "" msgstr[1] "" -#: js/filelist.js:1479 js/filesummary.js:142 js/filesummary.js:169 +#: js/filelist.js:1515 js/filesummary.js:142 js/filesummary.js:169 msgid "%n file" msgid_plural "%n files" msgstr[0] "" msgstr[1] "" -#: js/filelist.js:1606 js/filelist.js:1645 +#: js/filelist.js:1645 js/filelist.js:1684 msgid "Uploading %n file" msgid_plural "Uploading %n files" msgstr[0] "" diff --git a/l10n/templates/files_encryption.pot b/l10n/templates/files_encryption.pot index 07735900cf2..d2b5c139083 100644 --- a/l10n/templates/files_encryption.pot +++ b/l10n/templates/files_encryption.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 6.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/files_external.pot b/l10n/templates/files_external.pot index cf1f64511ed..34f26664730 100644 --- a/l10n/templates/files_external.pot +++ b/l10n/templates/files_external.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 6.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -17,167 +17,167 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: appinfo/app.php:36 js/app.js:32 templates/settings.php:9 +#: appinfo/app.php:35 js/app.js:32 templates/settings.php:9 msgid "External storage" msgstr "" -#: appinfo/app.php:45 +#: appinfo/app.php:44 msgid "Local" msgstr "" -#: appinfo/app.php:48 +#: appinfo/app.php:47 msgid "Location" msgstr "" -#: appinfo/app.php:51 +#: appinfo/app.php:50 msgid "Amazon S3" msgstr "" -#: appinfo/app.php:54 +#: appinfo/app.php:53 msgid "Key" msgstr "" -#: appinfo/app.php:55 +#: appinfo/app.php:54 msgid "Secret" msgstr "" -#: appinfo/app.php:56 appinfo/app.php:65 +#: appinfo/app.php:55 appinfo/app.php:64 msgid "Bucket" msgstr "" -#: appinfo/app.php:60 +#: appinfo/app.php:59 msgid "Amazon S3 and compliant" msgstr "" -#: appinfo/app.php:63 +#: appinfo/app.php:62 msgid "Access Key" msgstr "" -#: appinfo/app.php:64 +#: appinfo/app.php:63 msgid "Secret Key" msgstr "" -#: appinfo/app.php:66 +#: appinfo/app.php:65 msgid "Hostname (optional)" msgstr "" -#: appinfo/app.php:67 +#: appinfo/app.php:66 msgid "Port (optional)" msgstr "" -#: appinfo/app.php:68 +#: appinfo/app.php:67 msgid "Region (optional)" msgstr "" -#: appinfo/app.php:69 +#: appinfo/app.php:68 msgid "Enable SSL" msgstr "" -#: appinfo/app.php:70 +#: appinfo/app.php:69 msgid "Enable Path Style" msgstr "" -#: appinfo/app.php:78 +#: appinfo/app.php:77 msgid "App key" msgstr "" -#: appinfo/app.php:79 +#: appinfo/app.php:78 msgid "App secret" msgstr "" -#: appinfo/app.php:89 appinfo/app.php:130 appinfo/app.php:141 -#: appinfo/app.php:174 +#: appinfo/app.php:88 appinfo/app.php:129 appinfo/app.php:140 +#: appinfo/app.php:173 msgid "Host" msgstr "" -#: appinfo/app.php:90 appinfo/app.php:131 appinfo/app.php:153 -#: appinfo/app.php:164 appinfo/app.php:175 +#: appinfo/app.php:89 appinfo/app.php:130 appinfo/app.php:152 +#: appinfo/app.php:163 appinfo/app.php:174 msgid "Username" msgstr "" -#: appinfo/app.php:91 appinfo/app.php:132 appinfo/app.php:154 -#: appinfo/app.php:165 appinfo/app.php:176 +#: appinfo/app.php:90 appinfo/app.php:131 appinfo/app.php:153 +#: appinfo/app.php:164 appinfo/app.php:175 msgid "Password" msgstr "" -#: appinfo/app.php:92 appinfo/app.php:134 appinfo/app.php:144 -#: appinfo/app.php:155 appinfo/app.php:177 +#: appinfo/app.php:91 appinfo/app.php:133 appinfo/app.php:143 +#: appinfo/app.php:154 appinfo/app.php:176 msgid "Root" msgstr "" -#: appinfo/app.php:93 +#: appinfo/app.php:92 msgid "Secure ftps://" msgstr "" -#: appinfo/app.php:101 +#: appinfo/app.php:100 msgid "Client ID" msgstr "" -#: appinfo/app.php:102 +#: appinfo/app.php:101 msgid "Client secret" msgstr "" -#: appinfo/app.php:109 +#: appinfo/app.php:108 msgid "OpenStack Object Storage" msgstr "" -#: appinfo/app.php:112 +#: appinfo/app.php:111 msgid "Username (required)" msgstr "" -#: appinfo/app.php:113 +#: appinfo/app.php:112 msgid "Bucket (required)" msgstr "" -#: appinfo/app.php:114 +#: appinfo/app.php:113 msgid "Region (optional for OpenStack Object Storage)" msgstr "" -#: appinfo/app.php:115 +#: appinfo/app.php:114 msgid "API Key (required for Rackspace Cloud Files)" msgstr "" -#: appinfo/app.php:116 +#: appinfo/app.php:115 msgid "Tenantname (required for OpenStack Object Storage)" msgstr "" -#: appinfo/app.php:117 +#: appinfo/app.php:116 msgid "Password (required for OpenStack Object Storage)" msgstr "" -#: appinfo/app.php:118 +#: appinfo/app.php:117 msgid "Service Name (required for OpenStack Object Storage)" msgstr "" -#: appinfo/app.php:119 +#: appinfo/app.php:118 msgid "URL of identity endpoint (required for OpenStack Object Storage)" msgstr "" -#: appinfo/app.php:120 +#: appinfo/app.php:119 msgid "Timeout of HTTP requests in seconds (optional)" msgstr "" -#: appinfo/app.php:133 appinfo/app.php:143 +#: appinfo/app.php:132 appinfo/app.php:142 msgid "Share" msgstr "" -#: appinfo/app.php:138 +#: appinfo/app.php:137 msgid "SMB / CIFS using OC login" msgstr "" -#: appinfo/app.php:142 +#: appinfo/app.php:141 msgid "Username as share" msgstr "" -#: appinfo/app.php:152 appinfo/app.php:163 +#: appinfo/app.php:151 appinfo/app.php:162 msgid "URL" msgstr "" -#: appinfo/app.php:156 appinfo/app.php:167 +#: appinfo/app.php:155 appinfo/app.php:166 msgid "Secure https://" msgstr "" -#: appinfo/app.php:166 +#: appinfo/app.php:165 msgid "Remote subfolder" msgstr "" @@ -213,29 +213,29 @@ msgstr "" msgid "Saved" msgstr "" -#: lib/config.php:703 +#: lib/config.php:707 msgid "<b>Note:</b> " msgstr "" -#: lib/config.php:713 +#: lib/config.php:717 msgid " and " msgstr "" -#: lib/config.php:735 +#: lib/config.php:739 #, php-format msgid "" "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting " "of %s is not possible. Please ask your system administrator to install it." msgstr "" -#: lib/config.php:737 +#: lib/config.php:741 #, php-format msgid "" "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of " "%s is not possible. Please ask your system administrator to install it." msgstr "" -#: lib/config.php:739 +#: lib/config.php:743 #, php-format msgid "" "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please " diff --git a/l10n/templates/files_sharing.pot b/l10n/templates/files_sharing.pot index fc1fede7825..0e192f187dd 100644 --- a/l10n/templates/files_sharing.pot +++ b/l10n/templates/files_sharing.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 6.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -53,11 +53,11 @@ msgstr "" msgid "Add {name} from {owner}@{remote}" msgstr "" -#: js/public.js:200 +#: js/public.js:204 msgid "No ownCloud installation found at {remote}" msgstr "" -#: js/public.js:201 +#: js/public.js:205 msgid "Invalid ownCloud url" msgstr "" diff --git a/l10n/templates/files_trashbin.pot b/l10n/templates/files_trashbin.pot index 43f167b9a94..9445d69033b 100644 --- a/l10n/templates/files_trashbin.pot +++ b/l10n/templates/files_trashbin.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 6.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/files_versions.pot b/l10n/templates/files_versions.pot index 93e8a1e513f..52a059428cb 100644 --- a/l10n/templates/files_versions.pot +++ b/l10n/templates/files_versions.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 6.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/lib.pot b/l10n/templates/lib.pot index c600c434fb1..d5c717ad7db 100644 --- a/l10n/templates/lib.pot +++ b/l10n/templates/lib.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 6.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/private.pot b/l10n/templates/private.pot index e21a25b0f2e..99cdac274e4 100644 --- a/l10n/templates/private.pot +++ b/l10n/templates/private.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 6.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/settings.pot b/l10n/templates/settings.pot index 4b0a05a97f4..06de62fed90 100644 --- a/l10n/templates/settings.pot +++ b/l10n/templates/settings.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 6.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/user_ldap.pot b/l10n/templates/user_ldap.pot index 6adebd34d9f..4624e0c24c4 100644 --- a/l10n/templates/user_ldap.pot +++ b/l10n/templates/user_ldap.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 6.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/user_webdavauth.pot b/l10n/templates/user_webdavauth.pot index b1234d130e6..af9bb06bbbf 100644 --- a/l10n/templates/user_webdavauth.pot +++ b/l10n/templates/user_webdavauth.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 6.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/th_TH/core.po b/l10n/th_TH/core.po index 652dbe026df..5b108203b31 100644 --- a/l10n/th_TH/core.po +++ b/l10n/th_TH/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" @@ -349,12 +349,12 @@ msgstr "" msgid "Share" msgstr "แชร์" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "ข้อผิดพลาด" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "เกิดข้อผิดพลาดในระหว่างการแชร์ข้อมูล" @@ -449,7 +449,7 @@ msgstr "" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "สามารถแชร์ได้" #: js/share.js:576 msgid "can edit" @@ -471,27 +471,27 @@ msgstr "อัพเดท" msgid "delete" msgstr "ลบ" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "ใส่รหัสผ่านไว้" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "เกิดข้อผิดพลาดในการยกเลิกการตั้งค่าวันที่หมดอายุ" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "เกิดข้อผิดพลาดในการตั้งค่าวันที่หมดอายุ" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "กำลังส่ง..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "ส่งอีเมล์แล้ว" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "คำเตือน" diff --git a/l10n/tr/core.po b/l10n/tr/core.po index ce8615897ed..016c05d9459 100644 --- a/l10n/tr/core.po +++ b/l10n/tr/core.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" @@ -358,12 +358,12 @@ msgstr "{recipients} ile paylaşılmış" msgid "Share" msgstr "Paylaş" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Hata" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Paylaşım sırasında hata" @@ -458,7 +458,7 @@ msgstr "e-posta ile bildir" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "paylaşabilir" #: js/share.js:576 msgid "can edit" @@ -480,27 +480,27 @@ msgstr "güncelle" msgid "delete" msgstr "sil" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Parola korumalı" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Son kullanma tarihi kaldırma hatası" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Son kullanma tarihi ayarlama hatası" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Gönderiliyor..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "E-posta gönderildi" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Uyarı" diff --git a/l10n/tr/files_sharing.po b/l10n/tr/files_sharing.po index f843d847004..2f616053359 100644 --- a/l10n/tr/files_sharing.po +++ b/l10n/tr/files_sharing.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" -"Last-Translator: I Robot\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 23:49+0000\n" +"Last-Translator: Volkan Gezer <volkangezer@gmail.com>\n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -54,11 +54,11 @@ msgstr "Bağlantı ile henüz hiçbir dosya paylaşmadınız." msgid "Add {name} from {owner}@{remote}" msgstr "{name} paylaşımını {owner}@{remote} konumundan ekle" -#: js/public.js:200 +#: js/public.js:204 msgid "No ownCloud installation found at {remote}" msgstr "{remote} üzerinde ownCloud kurulumu bulunamadı" -#: js/public.js:201 +#: js/public.js:205 msgid "Invalid ownCloud url" msgstr "Geçersiz ownCloud adresi" @@ -141,7 +141,7 @@ msgstr "Doğrudan bağlantı" #: templates/settings-admin.php:3 msgid "Remote Shares" -msgstr "" +msgstr "Uzak Paylaşımlar" #: templates/settings-admin.php:7 msgid "Allow other instances to mount public links shared from this server" diff --git a/l10n/uk/core.po b/l10n/uk/core.po index 059970ca1fe..3e1ab6509a8 100644 --- a/l10n/uk/core.po +++ b/l10n/uk/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" @@ -361,12 +361,12 @@ msgstr "" msgid "Share" msgstr "Поділитися" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Помилка" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Помилка під час публікації" @@ -461,7 +461,7 @@ msgstr "повідомити по Email" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "можна поділитися" #: js/share.js:576 msgid "can edit" @@ -483,27 +483,27 @@ msgstr "оновити" msgid "delete" msgstr "видалити" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Захищено паролем" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Помилка при відміні терміна дії" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Помилка при встановленні терміна дії" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Надсилання..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "Ел. пошта надіслана" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Попередження" diff --git a/l10n/vi/core.po b/l10n/vi/core.po index cf31110c6c8..43770e5cf43 100644 --- a/l10n/vi/core.po +++ b/l10n/vi/core.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" @@ -353,12 +353,12 @@ msgstr "" msgid "Share" msgstr "Chia sẻ" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "Lỗi" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "Lỗi trong quá trình chia sẻ" @@ -453,7 +453,7 @@ msgstr "Thông báo qua email" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "có thể chia sẽ" #: js/share.js:576 msgid "can edit" @@ -475,27 +475,27 @@ msgstr "cập nhật" msgid "delete" msgstr "xóa" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "Mật khẩu bảo vệ" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "Lỗi không thiết lập ngày kết thúc" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "Lỗi cấu hình ngày kết thúc" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "Đang gởi ..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "Email đã được gửi" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "Cảnh báo" diff --git a/l10n/zh_CN/core.po b/l10n/zh_CN/core.po index 4fa4eb39b30..0173f79b2aa 100644 --- a/l10n/zh_CN/core.po +++ b/l10n/zh_CN/core.po @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -356,12 +356,12 @@ msgstr "" msgid "Share" msgstr "分享" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "错误" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "共享时出错" @@ -456,7 +456,7 @@ msgstr "以邮件通知" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "可共享" #: js/share.js:576 msgid "can edit" @@ -478,27 +478,27 @@ msgstr "更新" msgid "delete" msgstr "删除" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "密码已受保护" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "取消设置过期日期时出错" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "设置过期日期时出错" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "正在发送..." -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "邮件已发送" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "警告" diff --git a/l10n/zh_TW/core.po b/l10n/zh_TW/core.po index cb8b2d8d24b..3a91821e624 100644 --- a/l10n/zh_TW/core.po +++ b/l10n/zh_TW/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-06-27 01:54-0400\n" -"PO-Revision-Date: 2014-06-27 05:54+0000\n" +"POT-Creation-Date: 2014-06-28 01:54-0400\n" +"PO-Revision-Date: 2014-06-27 06:11+0000\n" "Last-Translator: I Robot\n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" @@ -351,12 +351,12 @@ msgstr "" msgid "Share" msgstr "分享" -#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:936 +#: js/share.js:271 js/share.js:285 js/share.js:292 js/share.js:938 #: templates/installation.php:10 msgid "Error" msgstr "錯誤" -#: js/share.js:273 js/share.js:999 +#: js/share.js:273 js/share.js:1001 msgid "Error while sharing" msgstr "分享時發生錯誤" @@ -451,7 +451,7 @@ msgstr "以 email 通知" #: js/share.js:573 msgid "can share" -msgstr "" +msgstr "可分享" #: js/share.js:576 msgid "can edit" @@ -473,27 +473,27 @@ msgstr "更新" msgid "delete" msgstr "刪除" -#: js/share.js:917 +#: js/share.js:919 msgid "Password protected" msgstr "受密碼保護" -#: js/share.js:936 +#: js/share.js:938 msgid "Error unsetting expiration date" msgstr "取消到期日設定失敗" -#: js/share.js:957 +#: js/share.js:959 msgid "Error setting expiration date" msgstr "設定到期日發生錯誤" -#: js/share.js:986 +#: js/share.js:988 msgid "Sending ..." msgstr "正在傳送…" -#: js/share.js:997 +#: js/share.js:999 msgid "Email sent" msgstr "Email 已寄出" -#: js/share.js:1021 +#: js/share.js:1023 msgid "Warning" msgstr "警告" diff --git a/lib/base.php b/lib/base.php index eef094737b6..d9fe94f1ccc 100644 --- a/lib/base.php +++ b/lib/base.php @@ -179,20 +179,22 @@ class OC { } public static function checkConfig() { + $l = OC_L10N::get('lib'); if (file_exists(self::$configDir . "/config.php") and !is_writable(self::$configDir . "/config.php") ) { 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 $l->t('Cannot write into "config" directory!')."\n"; + echo $l->t('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"; + echo $l->t('See %s', array(\OC_Helper::linkToDocs('admin-dir_permissions')))."\n"; exit; } else { OC_Template::printErrorPage( - "Can't write into config directory!", - 'This can usually be fixed by ' - . '<a href="' . \OC_Helper::linkToDocs('admin-dir_permissions') . '" target="_blank">giving the webserver write access to the config directory</a>.' + $l->t('Cannot write into "config" directory!'), + $l->t('This can usually be fixed by ' + . '%sgiving the webserver write access to the config directory%s.', + array('<a href="'.\OC_Helper::linkToDocs('admin-dir_permissions').'" target="_blank">', '</a>')) ); } } diff --git a/lib/private/defaults.php b/lib/private/defaults.php index 663c327a3b0..c039c30fbb9 100644 --- a/lib/private/defaults.php +++ b/lib/private/defaults.php @@ -19,12 +19,14 @@ class OC_Defaults { private $defaultBaseUrl; private $defaultSyncClientUrl; private $defaultDocBaseUrl; + private $defaultDocVersion; private $defaultSlogan; private $defaultLogoClaim; private $defaultMailHeaderColor; function __construct() { - $this->l = OC_L10N::get('core'); + $this->l = OC_L10N::get('lib'); + $version = OC_Util::getVersion(); $this->defaultEntity = "ownCloud"; /* e.g. company name, used for footers and copyright notices */ $this->defaultName = "ownCloud"; /* short name, used when referring to the software */ @@ -32,6 +34,7 @@ class OC_Defaults { $this->defaultBaseUrl = "https://owncloud.org"; $this->defaultSyncClientUrl = "https://owncloud.org/sync-clients/"; $this->defaultDocBaseUrl = "http://doc.owncloud.org"; + $this->defaultDocVersion = $version[0] . ".0"; // used to generate doc links $this->defaultSlogan = $this->l->t("web services under your control"); $this->defaultLogoClaim = ""; $this->defaultMailHeaderColor = "#1d2d44"; /* header color of mail notifications */ @@ -180,7 +183,7 @@ class OC_Defaults { if ($this->themeExist('buildDocLinkToKey')) { return $this->theme->buildDocLinkToKey($key); } - return $this->getDocBaseUrl() . '/server/6.0/go.php?to=' . $key; + return $this->getDocBaseUrl() . '/server/' . $this->defaultDocVersion . '/go.php?to=' . $key; } /** diff --git a/lib/private/files/filesystem.php b/lib/private/files/filesystem.php index 2cc4a2130eb..4774d25ad9e 100644 --- a/lib/private/files/filesystem.php +++ b/lib/private/files/filesystem.php @@ -325,13 +325,36 @@ class Filesystem { $userObject = \OC_User::getManager()->get($user); if (!is_null($userObject)) { + $homeStorage = \OC_Config::getValue( 'objectstore' ); + if (!empty($homeStorage)) { + // sanity checks + if (empty($homeStorage['class'])) { + \OCP\Util::writeLog('files', 'No class given for objectstore', \OCP\Util::ERROR); + } + if (!isset($homeStorage['arguments'])) { + $homeStorage['arguments'] = array(); + } + // instantiate object store implementation + $homeStorage['arguments']['objectstore'] = new $homeStorage['class']($homeStorage['arguments']); + // mount with home object store implementation + $homeStorage['class'] = '\OC\Files\ObjectStore\HomeObjectStoreStorage'; + } else { + $homeStorage = array( + //default home storage configuration: + 'class' => '\OC\Files\Storage\Home', + 'arguments' => array() + ); + } + $homeStorage['arguments']['user'] = $userObject; + // check for legacy home id (<= 5.0.12) if (\OC\Files\Cache\Storage::exists('local::' . $root . '/')) { - self::mount('\OC\Files\Storage\Home', array('user' => $userObject, 'legacy' => true), $user); - } - else { - self::mount('\OC\Files\Storage\Home', array('user' => $userObject), $user); + $homeStorage['arguments']['legacy'] = true; } + + self::mount($homeStorage['class'], $homeStorage['arguments'], $user); + + $home = \OC\Files\Filesystem::getStorage($user); } else { self::mount('\OC\Files\Storage\Local', array('datadir' => $root), $user); diff --git a/lib/private/files/mount/mount.php b/lib/private/files/mount/mount.php index 04bccbcab87..48c9d88c23c 100644 --- a/lib/private/files/mount/mount.php +++ b/lib/private/files/mount/mount.php @@ -93,7 +93,12 @@ class Mount { try { return $this->loader->load($this->mountPoint, $this->class, $this->arguments); } catch (\Exception $exception) { - \OC_Log::write('core', $exception->getMessage(), \OC_Log::ERROR); + if ($this->mountPoint === '/') { + // the root storage could not be initialized, show the user! + throw new \Exception('The root storage could not be initialized. Please contact your local administrator.', $exception->getCode(), $exception); + } else { + \OC_Log::write('core', $exception->getMessage(), \OC_Log::ERROR); + } return null; } } else { diff --git a/lib/private/files/objectstore/homeobjectstorestorage.php b/lib/private/files/objectstore/homeobjectstorestorage.php new file mode 100644 index 00000000000..26a2788d860 --- /dev/null +++ b/lib/private/files/objectstore/homeobjectstorestorage.php @@ -0,0 +1,71 @@ +<?php +/** + * @author Jörn Friedrich Dreyer + * @copyright (c) 2014 Jörn Friedrich Dreyer <jfd@owncloud.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 OC\Files\ObjectStore; + +use OC\User\User; + +class HomeObjectStoreStorage extends ObjectStoreStorage { + + /** + * The home user storage requires a user object to create a unique storage id + * @param array $params + */ + public function __construct($params) { + if ( ! isset($params['user']) || ! $params['user'] instanceof User) { + throw new \Exception('missing user object in parameters'); + } + $this->user = $params['user']; + parent::__construct($params); + + + //initialize cache with root directory in cache + if ( ! $this->is_dir('files') ) { + $this->mkdir('files'); + } + } + + public function getId () { + return 'object::user:' . $this->user->getUID(); + } + + /** + * get the owner of a path + * + * @param string $path The path to get the owner + * @return false|string uid + */ + public function getOwner($path) { + if (is_object($this->user)) { + return $this->user->getUID(); + } + return false; + } + + /** + * @param string $path, optional + * @return \OC\User\User + */ + public function getUser($path = null) { + return $this->user; + } + + +}
\ No newline at end of file diff --git a/lib/private/files/objectstore/noopscanner.php b/lib/private/files/objectstore/noopscanner.php new file mode 100644 index 00000000000..59ca1771971 --- /dev/null +++ b/lib/private/files/objectstore/noopscanner.php @@ -0,0 +1,74 @@ +<?php +/** + * @author Jörn Friedrich Dreyer + * @copyright (c) 2014 Jörn Friedrich Dreyer <jfd@owncloud.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 OC\Files\ObjectStore; +use \OC\Files\Cache\Scanner; +use \OC\Files\Storage\Storage; + +class NoopScanner extends Scanner { + + public function __construct(Storage $storage) { + //we don't need the storage, so do nothing here + } + + /** + * scan a single file and store it in the cache + * + * @param string $file + * @param int $reuseExisting + * @param bool $parentExistsInCache + * @return array with metadata of the scanned file + */ + public function scanFile($file, $reuseExisting = 0, $parentExistsInCache = false) { + return array(); + } + + /** + * scan a folder and all it's children + * + * @param string $path + * @param bool $recursive + * @param int $reuse + * @return array with the meta data of the scanned file or folder + */ + public function scan($path, $recursive = self::SCAN_RECURSIVE, $reuse = -1) { + return array(); + } + + /** + * scan all the files and folders in a folder + * + * @param string $path + * @param bool $recursive + * @param int $reuse + * @return int the size of the scanned folder or -1 if the size is unknown at this stage + */ + public function scanChildren($path, $recursive = Storage::SCAN_RECURSIVE, $reuse = -1) { + $size = 0; + return $size; + } + + /** + * walk over any folders that are not fully scanned yet and scan them + */ + public function backgroundScan() { + //noop + } +} diff --git a/lib/private/files/objectstore/objectstorestorage.php b/lib/private/files/objectstore/objectstorestorage.php new file mode 100644 index 00000000000..85f43b90cbb --- /dev/null +++ b/lib/private/files/objectstore/objectstorestorage.php @@ -0,0 +1,421 @@ +<?php +/** + * @author Jörn Friedrich Dreyer + * @copyright (c) 2014 Jörn Friedrich Dreyer <jfd@owncloud.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 OC\Files\ObjectStore; + +use OC\Files\Filesystem; +use OCP\Files\ObjectStore\IObjectStore; + +class ObjectStoreStorage extends \OC\Files\Storage\Common { + + /** + * @var array + */ + private static $tmpFiles = array(); + /** + * @var \OCP\Files\ObjectStore\IObjectStore $objectStore + */ + protected $objectStore; + /** + * @var \OC\User\User $user + */ + protected $user; + + public function __construct($params) { + if (isset($params['objectstore']) && $params['objectstore'] instanceof IObjectStore) { + $this->objectStore = $params['objectstore']; + } else { + throw new \Exception('missing IObjectStore instance'); + } + if (isset($params['storageid'])) { + $this->id = 'object::store:' . $params['storageid']; + } else { + $this->id = 'object::store:' . $this->objectStore->getStorageId(); + } + //initialize cache with root directory in cache + if (!$this->is_dir('/')) { + $this->mkdir('/'); + } + } + + public function mkdir($path) { + $path = $this->normalizePath($path); + + if ($this->is_dir($path)) { + return false; + } + + $dirName = $this->normalizePath(dirname($path)); + $parentExists = $this->is_dir($dirName); + + $mTime = time(); + + $data = array( + 'mimetype' => 'httpd/unix-directory', + 'size' => 0, + 'mtime' => $mTime, + 'storage_mtime' => $mTime, + 'permissions' => \OCP\PERMISSION_ALL, + ); + + if ($dirName === '' && !$parentExists) { + //create root on the fly + $data['etag'] = $this->getETag(''); + $this->getCache()->put('', $data); + $parentExists = true; + + // we are done when the root folder was meant to be created + if ($dirName === $path) { + return true; + } + } + + if ($parentExists) { + $data['etag'] = $this->getETag($path); + $this->getCache()->put($path, $data); + return true; + } + return false; + } + + /** + * @param string $path + * @return string + */ + private function normalizePath($path) { + $path = trim($path, '/'); + //FIXME why do we sometimes get a path like 'files//username'? + $path = str_replace('//', '/', $path); + + // dirname('/folder') returns '.' but internally (in the cache) we store the root as '' + if (!$path || $path === '.') { + $path = ''; + } + + return $path; + } + + /** + * Object Stores use a NoopScanner because metadata is directly stored in + * the file cache and cannot really scan the filesystem. The storage passed in is not used anywhere. + * + * @param string $path + * @param \OC\Files\Storage\Storage (optional) the storage to pass to the scanner + * @return \OC\Files\ObjectStore\NoopScanner + */ + public function getScanner($path = '', $storage = null) { + if (!$storage) { + $storage = $this; + } + if (!isset($this->scanner)) { + $this->scanner = new NoopScanner($storage); + } + return $this->scanner; + } + + public function getId() { + return $this->id; + } + + public function rmdir($path) { + $path = $this->normalizePath($path); + + if (!$this->is_dir($path)) { + return false; + } + + $this->rmObjects($path); + + $this->getCache()->remove($path); + + return true; + } + + private function rmObjects($path) { + $children = $this->getCache()->getFolderContents($path); + foreach ($children as $child) { + if ($child['mimetype'] === 'httpd/unix-directory') { + $this->rmObjects($child['path']); + } else { + $this->unlink($child['path']); + } + } + } + + public function unlink($path) { + $path = $this->normalizePath($path); + $stat = $this->stat($path); + + if ($stat && isset($stat['fileid'])) { + if ($stat['mimetype'] === 'httpd/unix-directory') { + return $this->rmdir($path); + } + try { + $this->objectStore->deleteObject($this->getURN($stat['fileid'])); + } catch (\Exception $ex) { + if ($ex->getCode() !== 404) { + \OCP\Util::writeLog('objectstore', 'Could not delete object: ' . $ex->getMessage(), \OCP\Util::ERROR); + return false; + } else { + //removing from cache is ok as it does not exist in the objectstore anyway + } + } + $this->getCache()->remove($path); + return true; + } + return false; + } + + public function stat($path) { + $path = $this->normalizePath($path); + return $this->getCache()->get($path); + } + + /** + * Override this method if you need a different unique resource identifier for your object storage implementation. + * The default implementations just appends the fileId to 'urn:oid:'. Make sure the URN is unique over all users. + * You may need a mapping table to store your URN if it cannot be generated from the fileid. + * + * @param int $fileId the fileid + * @return null|string the unified resource name used to identify the object + */ + protected function getURN($fileId) { + if (is_numeric($fileId)) { + return 'urn:oid:' . $fileId; + } + return null; + } + + public function opendir($path) { + $path = $this->normalizePath($path); + + try { + $files = array(); + $folderContents = $this->getCache()->getFolderContents($path); + foreach ($folderContents as $file) { + $files[] = $file['name']; + } + + \OC\Files\Stream\Dir::register('objectstore' . $path . '/', $files); + + return opendir('fakedir://objectstore' . $path . '/'); + } catch (Exception $e) { + \OCP\Util::writeLog('objectstore', $e->getMessage(), \OCP\Util::ERROR); + return false; + } + } + + public function filetype($path) { + $path = $this->normalizePath($path); + $stat = $this->stat($path); + if ($stat) { + if ($stat['mimetype'] === 'httpd/unix-directory') { + return 'dir'; + } + return 'file'; + } else { + return false; + } + } + + public function fopen($path, $mode) { + $path = $this->normalizePath($path); + + switch ($mode) { + case 'r': + case 'rb': + $stat = $this->stat($path); + if (is_array($stat)) { + try { + return $this->objectStore->readObject($this->getURN($stat['fileid'])); + } catch (\Exception $ex) { + \OCP\Util::writeLog('objectstore', 'Could not get object: ' . $ex->getMessage(), \OCP\Util::ERROR); + return false; + } + } else { + return false; + } + case 'w': + case 'wb': + case 'a': + case 'ab': + case 'r+': + case 'w+': + case 'wb+': + case 'a+': + case 'x': + case 'x+': + case 'c': + case 'c+': + if (strrpos($path, '.') !== false) { + $ext = substr($path, strrpos($path, '.')); + } else { + $ext = ''; + } + $tmpFile = \OC_Helper::tmpFile($ext); + \OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack')); + if ($this->file_exists($path)) { + $source = $this->fopen($path, 'r'); + file_put_contents($tmpFile, $source); + } + self::$tmpFiles[$tmpFile] = $path; + + return fopen('close://' . $tmpFile, $mode); + } + return false; + } + + public function file_exists($path) { + $path = $this->normalizePath($path); + return (bool)$this->stat($path); + } + + public function rename($source, $target) { + $source = $this->normalizePath($source); + $target = $this->normalizePath($target); + $stat1 = $this->stat($source); + if (isset($stat1['mimetype']) && $stat1['mimetype'] === 'httpd/unix-directory') { + $this->remove($target); + $dir = $this->opendir($source); + $this->mkdir($target); + while ($file = readdir($dir)) { + if (!Filesystem::isIgnoredDir($file)) { + if (!$this->rename($source . '/' . $file, $target . '/' . $file)) { + return false; + } + } + } + closedir($dir); + $this->remove($source); + return true; + } else { + if (is_array($stat1)) { + $parent = $this->stat(dirname($target)); + if (is_array($parent)) { + $this->remove($target); + $stat1['parent'] = $parent['fileid']; + $stat1['path'] = $target; + $stat1['path_hash'] = md5($target); + $stat1['name'] = \OC_Util::basename($target); + $stat1['mtime'] = time(); + $stat1['etag'] = $this->getETag($target); + $this->getCache()->update($stat1['fileid'], $stat1); + return true; + } + } + } + return false; + } + + public function getMimeType($path) { + $path = $this->normalizePath($path); + $stat = $this->stat($path); + if (is_array($stat)) { + return $stat['mimetype']; + } else { + return false; + } + } + + public function touch($path, $mtime = null) { + if (is_null($mtime)) { + $mtime = time(); + } + + $path = $this->normalizePath($path); + $dirName = dirname($path); + $parentExists = $this->is_dir($dirName); + if (!$parentExists) { + return false; + } + + $stat = $this->stat($path); + if (is_array($stat)) { + // update existing mtime in db + $stat['mtime'] = $mtime; + $this->getCache()->update($stat['fileid'], $stat); + } else { + $mimeType = \OC_Helper::getFileNameMimeType($path); + // create new file + $stat = array( + 'etag' => $this->getETag($path), + 'mimetype' => $mimeType, + 'size' => 0, + 'mtime' => $mtime, + 'storage_mtime' => $mtime, + 'permissions' => \OCP\PERMISSION_ALL, + ); + $fileId = $this->getCache()->put($path, $stat); + try { + //read an empty file from memory + $this->objectStore->writeObject($this->getURN($fileId), fopen('php://memory', 'r')); + } catch (\Exception $ex) { + $this->getCache()->remove($path); + \OCP\Util::writeLog('objectstore', 'Could not create object: ' . $ex->getMessage(), \OCP\Util::ERROR); + return false; + } + } + return true; + } + + public function writeBack($tmpFile) { + if (!isset(self::$tmpFiles[$tmpFile])) { + return false; + } + + $path = self::$tmpFiles[$tmpFile]; + $stat = $this->stat($path); + if (empty($stat)) { + // create new file + $stat = array( + 'etag' => $this->getETag($path), + 'permissions' => \OCP\PERMISSION_ALL, + ); + } + // update stat with new data + $mTime = time(); + $stat['size'] = filesize($tmpFile); + $stat['mtime'] = $mTime; + $stat['storage_mtime'] = $mTime; + $stat['mimetype'] = \OC_Helper::getMimeType($tmpFile); + + $fileId = $this->getCache()->put($path, $stat); + try { + //upload to object storage + $this->objectStore->writeObject($this->getURN($fileId), fopen($tmpFile, 'r')); + } catch (\Exception $ex) { + $this->getCache()->remove($path); + \OCP\Util::writeLog('objectstore', 'Could not create object: ' . $ex->getMessage(), \OCP\Util::ERROR); + return false; + } + return true; + } + + /** + * external changes are not supported, exclusive access to the object storage is assumed + * + * @param string $path + * @param int $time + * @return false + */ + public function hasUpdated($path, $time) { + return false; + } +} diff --git a/lib/private/files/objectstore/swift.php b/lib/private/files/objectstore/swift.php new file mode 100644 index 00000000000..3378fd7b86f --- /dev/null +++ b/lib/private/files/objectstore/swift.php @@ -0,0 +1,147 @@ +<?php +/** + * @author Jörn Friedrich Dreyer + * @copyright (c) 2014 Jörn Friedrich Dreyer <jfd@owncloud.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 OC\Files\ObjectStore; + +use Guzzle\Http\Exception\ClientErrorResponseException; +use OCP\Files\ObjectStore\IObjectStore; +use OpenCloud\OpenStack; +use OpenCloud\Rackspace; + +class Swift implements IObjectStore { + /** + * @var \OpenCloud\OpenStack + */ + private $client; + + /** + * @var array + */ + private $params; + + /** + * @var \OpenCloud\ObjectStore\Service + */ + private $objectStoreService; + + /** + * @var \OpenCloud\ObjectStore\Resource\Container + */ + private $container; + + public function __construct($params) { + if (!isset($params['container'])) { + $params['container'] = 'owncloud'; + } + if (!isset($params['autocreate'])) { + // should only be true for tests + $params['autocreate'] = false; + } + + if (isset($params['apiKey'])) { + $this->client = new Rackspace($params['url'], $params); + } else { + $this->client = new OpenStack($params['url'], $params); + } + $this->params = $params; + } + + protected function init() { + if ($this->container) { + return; + } + + // the OpenCloud client library will default to 'cloudFiles' if $serviceName is null + $serviceName = null; + if ($this->params['serviceName']) { + $serviceName = $this->params['serviceName']; + } + + $this->objectStoreService = $this->client->objectStoreService($serviceName, $this->params['region']); + + try { + $this->container = $this->objectStoreService->getContainer($this->params['container']); + } catch (ClientErrorResponseException $ex) { + // if the container does not exist and autocreate is true try to create the container on the fly + if (isset($this->params['autocreate']) && $this->params['autocreate'] === true) { + $this->container = $this->objectStoreService->createContainer($this->params['container']); + } else { + throw $ex; + } + } + } + + /** + * @return string the container name where objects are stored + */ + public function getStorageId() { + return $this->params['container']; + } + + /** + * @param string $urn the unified resource name used to identify the object + * @param resource $stream stream with the data to write + * @throws Exception from openstack lib when something goes wrong + */ + public function writeObject($urn, $stream) { + $this->init(); + $this->container->uploadObject($urn, $stream); + } + + /** + * @param string $urn the unified resource name used to identify the object + * @return resource stream with the read data + * @throws Exception from openstack lib when something goes wrong + */ + public function readObject($urn) { + $this->init(); + $object = $this->container->getObject($urn); + + // we need to keep a reference to objectContent or + // the stream will be closed before we can do anything with it + /** @var $objectContent \Guzzle\Http\EntityBody * */ + $objectContent = $object->getContent(); + $objectContent->rewind(); + + // directly returning the object stream does not work because the GC seems to collect it, so we need a copy + $tmpStream = fopen('php://temp', 'r+'); + stream_copy_to_stream($objectContent->getStream(), $tmpStream); + rewind($tmpStream); + + return $tmpStream; + } + + /** + * @param string $urn Unified Resource Name + * @return void + * @throws Exception from openstack lib when something goes wrong + */ + public function deleteObject($urn) { + $this->init(); + // see https://github.com/rackspace/php-opencloud/issues/243#issuecomment-30032242 + $this->container->dataObject()->setName($urn)->delete(); + } + + public function deleteContainer($recursive = false) { + $this->init(); + $this->container->delete($recursive); + } + +} diff --git a/lib/private/files/storage/common.php b/lib/private/files/storage/common.php index ecc75298b66..9657b511f15 100644 --- a/lib/private/files/storage/common.php +++ b/lib/private/files/storage/common.php @@ -279,6 +279,11 @@ abstract class Common implements \OC\Files\Storage\Storage { /** * check if a file or folder has been updated since $time * + * The method is only used to check if the cache needs to be updated. Storage backends that don't support checking + * the mtime should always return false here. As a result storage implementations that always return false expect + * exclusive access to the backend and will not pick up files that have been added in a way that circumvents + * ownClouds filesystem. + * * @param string $path * @param int $time * @return bool diff --git a/lib/private/files/storage/dav.php b/lib/private/files/storage/dav.php index 8536c65ace9..8b97f750204 100644 --- a/lib/private/files/storage/dav.php +++ b/lib/private/files/storage/dav.php @@ -426,21 +426,7 @@ class DAV extends \OC\Files\Storage\Common { $this->init(); $response = $this->client->propfind($this->encodePath($path), array('{http://owncloud.org/ns}permissions')); if (isset($response['{http://owncloud.org/ns}permissions'])) { - $permissions = \OCP\PERMISSION_READ; - $permissionsString = $response['{http://owncloud.org/ns}permissions']; - if (strpos($permissionsString, 'R') !== false) { - $permissions |= \OCP\PERMISSION_SHARE; - } - if (strpos($permissionsString, 'D') !== false) { - $permissions |= \OCP\PERMISSION_DELETE; - } - if (strpos($permissionsString, 'W') !== false) { - $permissions |= \OCP\PERMISSION_UPDATE; - } - if (strpos($permissionsString, 'C') !== false) { - $permissions |= \OCP\PERMISSION_CREATE; - } - return $permissions; + return $this->parsePermissions($response['{http://owncloud.org/ns}permissions']); } else if ($this->is_dir($path)) { return \OCP\PERMISSION_ALL; } else if ($this->file_exists($path)) { @@ -449,5 +435,58 @@ class DAV extends \OC\Files\Storage\Common { return 0; } } + + /** + * @param string $permissionsString + * @return int + */ + protected function parsePermissions($permissionsString) { + $permissions = \OCP\PERMISSION_READ; + if (strpos($permissionsString, 'R') !== false) { + $permissions |= \OCP\PERMISSION_SHARE; + } + if (strpos($permissionsString, 'D') !== false) { + $permissions |= \OCP\PERMISSION_DELETE; + } + if (strpos($permissionsString, 'W') !== false) { + $permissions |= \OCP\PERMISSION_UPDATE; + } + if (strpos($permissionsString, 'CK') !== false) { + $permissions |= \OCP\PERMISSION_CREATE; + $permissions |= \OCP\PERMISSION_UPDATE; + } + return $permissions; + } + + /** + * check if a file or folder has been updated since $time + * + * @param string $path + * @param int $time + * @return bool + */ + public function hasUpdated($path, $time) { + $this->init(); + $response = $this->client->propfind($this->encodePath($path), array( + '{DAV:}getlastmodified', + '{DAV:}getetag', + '{http://owncloud.org/ns}permissions' + )); + if (isset($response['{DAV:}getetag'])) { + $cachedData = $this->getCache()->get($path); + $etag = trim($response['{DAV:}getetag'], '"'); + if ($cachedData['etag'] !== $etag) { + return true; + } else if (isset($response['{http://owncloud.org/ns}permissions'])) { + $permissions = $this->parsePermissions($response['{http://owncloud.org/ns}permissions']); + return $permissions !== $cachedData['permissions']; + } else { + return false; + } + } else { + $remoteMtime = strtotime($response['{DAV:}getlastmodified']); + return $remoteMtime > $time; + } + } } diff --git a/lib/private/util.php b/lib/private/util.php index 94005daef61..7836489832d 100755 --- a/lib/private/util.php +++ b/lib/private/util.php @@ -12,6 +12,45 @@ class OC_Util { private static $rootMounted=false; private static $fsSetup=false; + private static function initLocalStorageRootFS() { + // mount local file backend as root + $configDataDirectory = OC_Config::getValue( "datadirectory", OC::$SERVERROOT."/data" ); + //first set up the local "root" storage + \OC\Files\Filesystem::initMounts(); + if(!self::$rootMounted) { + \OC\Files\Filesystem::mount('\OC\Files\Storage\Local', array('datadir'=>$configDataDirectory), '/'); + self::$rootMounted = true; + } + } + + /** + * mounting an object storage as the root fs will in essence remove the + * necessity of a data folder being present. + * TODO make home storage aware of this and use the object storage instead of local disk access + * @param array $config containing 'class' and optional 'arguments' + */ + private static function initObjectStoreRootFS($config) { + // check misconfiguration + if (empty($config['class'])) { + \OCP\Util::writeLog('files', 'No class given for objectstore', \OCP\Util::ERROR); + } + if (!isset($config['arguments'])) { + $config['arguments'] = array(); + } + + // instantiate object store implementation + $config['arguments']['objectstore'] = new $config['class']($config['arguments']); + // mount with plain / root object store implementation + $config['class'] = '\OC\Files\ObjectStore\ObjectStoreStorage'; + + // mount object storage as root + \OC\Files\Filesystem::initMounts(); + if(!self::$rootMounted) { + \OC\Files\Filesystem::mount($config['class'], $config['arguments'], '/'); + self::$rootMounted = true; + } + } + /** * Can be set up * @param string $user @@ -39,12 +78,12 @@ class OC_Util { self::$fsSetup=true; } - $configDataDirectory = OC_Config::getValue( "datadirectory", OC::$SERVERROOT."/data" ); - //first set up the local "root" storage - \OC\Files\Filesystem::initMounts(); - if(!self::$rootMounted) { - \OC\Files\Filesystem::mount('\OC\Files\Storage\Local', array('datadir'=>$configDataDirectory), '/'); - self::$rootMounted = true; + //check if we are using an object storage + $objectStore = OC_Config::getValue( 'objectstore' ); + if ( isset( $objectStore ) ) { + self::initObjectStoreRootFS($objectStore); + } else { + self::initLocalStorageRootFS(); } if ($user != '' && !OCP\User::userExists($user)) { @@ -60,24 +99,33 @@ class OC_Util { /** * @var \OC\Files\Storage\Storage $storage */ - if ($storage->instanceOfStorage('\OC\Files\Storage\Home')) { - $user = $storage->getUser()->getUID(); - $quota = OC_Util::getUserQuota($user); - if ($quota !== \OC\Files\SPACE_UNLIMITED) { - return new \OC\Files\Storage\Wrapper\Quota(array('storage' => $storage, 'quota' => $quota, 'root' => 'files')); + if ($storage->instanceOfStorage('\OC\Files\Storage\Home') + || $storage->instanceOfStorage('\OC\Files\ObjectStore\HomeObjectStoreStorage') + ) { + if (is_object($storage->getUser())) { + $user = $storage->getUser()->getUID(); + $quota = OC_Util::getUserQuota($user); + if ($quota !== \OC\Files\SPACE_UNLIMITED) { + return new \OC\Files\Storage\Wrapper\Quota(array('storage' => $storage, 'quota' => $quota, 'root' => 'files')); + } } } return $storage; }); - $userDir = '/'.$user.'/files'; - $userRoot = OC_User::getHome($user); - $userDirectory = $userRoot . '/files'; - if( !is_dir( $userDirectory )) { - mkdir( $userDirectory, 0755, true ); - OC_Util::copySkeleton($userDirectory); + // copy skeleton for local storage only + if ( ! isset( $objectStore ) ) { + $userRoot = OC_User::getHome($user); + $userDirectory = $userRoot . '/files'; + if( !is_dir( $userDirectory )) { + mkdir( $userDirectory, 0755, true ); + OC_Util::copySkeleton($userDirectory); + } } + + $userDir = '/'.$user.'/files'; + //jail the user into his "home" directory \OC\Files\Filesystem::init($user, $userDir); @@ -326,6 +374,7 @@ class OC_Util { * @return array arrays with error messages and hints */ public static function checkServer() { + $l = OC_L10N::get('lib'); $errors = array(); $CONFIG_DATADIRECTORY = OC_Config::getValue('datadirectory', OC::$SERVERROOT . '/data'); @@ -346,24 +395,24 @@ class OC_Util { and !is_callable('pg_connect') and !is_callable('oci_connect')) { $errors[] = array( - 'error'=>'No database drivers (sqlite, mysql, or postgresql) installed.', + 'error'=> $l->t('No database drivers (sqlite, mysql, or postgresql) installed.'), 'hint'=>'' //TODO: sane hint ); $webServerRestart = true; } //common hint for all file permissions error messages - $permissionsHint = 'Permissions can usually be fixed by ' - .'<a href="' . OC_Helper::linkToDocs('admin-dir_permissions') - .'" target="_blank">giving the webserver write access to the root directory</a>.'; + $permissionsHint = $l->t('Permissions can usually be fixed by ' + .'%sgiving the webserver write access to the root directory%s.', + array('<a href="'.\OC_Helper::linkToDocs('admin-dir_permissions').'" target="_blank">', '</a>')); // Check if config folder is writable. if(!is_writable(OC::$configDir) or !is_readable(OC::$configDir)) { $errors[] = array( - 'error' => "Can't write into config directory", - 'hint' => 'This can usually be fixed by ' - .'<a href="' . OC_Helper::linkToDocs('admin-dir_permissions') - .'" target="_blank">giving the webserver write access to the config directory</a>.' + 'error' => $l->t('Cannot write into "config" directory'), + 'hint' => $l->t('This can usually be fixed by ' + .'%sgiving the webserver write access to the config directory%s.', + array('<a href="'.\OC_Helper::linkToDocs('admin-dir_permissions').'" target="_blank">', '</a>')) ); } @@ -373,11 +422,11 @@ class OC_Util { || !is_writable(OC_App::getInstallPath()) || !is_readable(OC_App::getInstallPath()) ) { $errors[] = array( - 'error' => "Can't write into apps directory", - 'hint' => 'This can usually be fixed by ' - .'<a href="' . OC_Helper::linkToDocs('admin-dir_permissions') - .'" target="_blank">giving the webserver write access to the apps directory</a> ' - .'or disabling the appstore in the config file.' + 'error' => $l->t('Cannot write into "apps" directory'), + 'hint' => $l->t('This can usually be fixed by ' + .'%sgiving the webserver write access to the apps directory%s' + .' or disabling the appstore in the config file.', + array('<a href="'.\OC_Helper::linkToDocs('admin-dir_permissions').'" target="_blank">', '</a>')) ); } } @@ -388,11 +437,11 @@ class OC_Util { $errors = array_merge($errors, self::checkDataDirectoryPermissions($CONFIG_DATADIRECTORY)); } else { $errors[] = array( - 'error' => "Can't create data directory (".$CONFIG_DATADIRECTORY.")", - 'hint' => 'This can usually be fixed by ' - .'<a href="' . OC_Helper::linkToDocs('admin-dir_permissions') - .'" target="_blank">giving the webserver write access to the root directory</a>.' - ); + 'error' => $l->t('Cannot create "data" directory (%s)', array($CONFIG_DATADIRECTORY)), + 'hint' => $l->t('This can usually be fixed by ' + .'<a href="%s" target="_blank">giving the webserver write access to the root directory</a>.', + array(OC_Helper::linkToDocs('admin-dir_permissions'))) + ); } } else if(!is_writable($CONFIG_DATADIRECTORY) or !is_readable($CONFIG_DATADIRECTORY)) { $errors[] = array( @@ -405,30 +454,32 @@ class OC_Util { if(!OC_Util::isSetLocaleWorking()) { $errors[] = array( - 'error' => 'Setting locale to en_US.UTF-8/fr_FR.UTF-8/es_ES.UTF-8/de_DE.UTF-8/ru_RU.UTF-8/pt_BR.UTF-8/it_IT.UTF-8/ja_JP.UTF-8/zh_CN.UTF-8 failed', - 'hint' => 'Please install one of theses locales on your system and restart your webserver.' + 'error' => $l->t('Setting locale to %s failed', + array('en_US.UTF-8/fr_FR.UTF-8/es_ES.UTF-8/de_DE.UTF-8/ru_RU.UTF-8/' + .'pt_BR.UTF-8/it_IT.UTF-8/ja_JP.UTF-8/zh_CN.UTF-8')), + 'hint' => $l->t('Please install one of theses locales on your system and restart your webserver.') ); } - $moduleHint = "Please ask your server administrator to install the module."; + $moduleHint = $l->t('Please ask your server administrator to install the module.'); // check if all required php modules are present if(!class_exists('ZipArchive')) { $errors[] = array( - 'error'=>'PHP module zip not installed.', + 'error'=> $l->t('PHP module %s not installed.', array('zip')), 'hint'=>$moduleHint ); $webServerRestart = true; } if(!class_exists('DOMDocument')) { $errors[] = array( - 'error' => 'PHP module dom not installed.', + 'error'=> $l->t('PHP module %s not installed.', array('dom')), 'hint' => $moduleHint ); $webServerRestart =true; } if(!function_exists('xml_parser_create')) { $errors[] = array( - 'error' => 'PHP module libxml not installed.', + 'error'=> $l->t('PHP module %s not installed.', array('libxml')), 'hint' => $moduleHint ); $webServerRestart = true; @@ -442,57 +493,57 @@ class OC_Util { } if(!function_exists('ctype_digit')) { $errors[] = array( - 'error'=>'PHP module ctype is not installed.', + 'error'=> $l->t('PHP module %s not installed.', array('ctype')), 'hint'=>$moduleHint ); $webServerRestart = true; } if(!function_exists('json_encode')) { $errors[] = array( - 'error'=>'PHP module JSON is not installed.', + 'error'=> $l->t('PHP module %s not installed.', array('JSON')), 'hint'=>$moduleHint ); $webServerRestart = true; } if(!extension_loaded('gd') || !function_exists('gd_info')) { $errors[] = array( - 'error'=>'PHP module GD is not installed.', + 'error'=> $l->t('PHP module %s not installed.', array('GD')), 'hint'=>$moduleHint ); $webServerRestart = true; } if(!function_exists('gzencode')) { $errors[] = array( - 'error'=>'PHP module zlib is not installed.', + 'error'=> $l->t('PHP module %s not installed.', array('zlib')), 'hint'=>$moduleHint ); $webServerRestart = true; } if(!function_exists('iconv')) { $errors[] = array( - 'error'=>'PHP module iconv is not installed.', + 'error'=> $l->t('PHP module %s not installed.', array('iconv')), 'hint'=>$moduleHint ); $webServerRestart = true; } if(!function_exists('simplexml_load_string')) { $errors[] = array( - 'error'=>'PHP module SimpleXML is not installed.', + 'error'=> $l->t('PHP module %s not installed.', array('SimpleXML')), 'hint'=>$moduleHint ); $webServerRestart = true; } if(version_compare(phpversion(), '5.3.3', '<')) { $errors[] = array( - 'error'=>'PHP 5.3.3 or higher is required.', - 'hint'=>'Please ask your server administrator to update PHP to the latest version.' - .' Your PHP version is no longer supported by ownCloud and the PHP community.' + 'error'=> $l->t('PHP %s or higher is required.', '5.3.3'), + 'hint'=> $l->t('Please ask your server administrator to update PHP to the latest version.' + .' Your PHP version is no longer supported by ownCloud and the PHP community.') ); $webServerRestart = true; } if(!defined('PDO::ATTR_DRIVER_NAME')) { $errors[] = array( - 'error'=>'PHP PDO module is not installed.', + 'error'=> $l->t('PHP module %s not installed.', array('PDO')), 'hint'=>$moduleHint ); $webServerRestart = true; @@ -502,17 +553,17 @@ class OC_Util { || (strtolower(@ini_get('safe_mode')) == 'true') || (ini_get("safe_mode") == 1 ))) { $errors[] = array( - 'error'=>'PHP Safe Mode is enabled. ownCloud requires that it is disabled to work properly.', - 'hint'=>'PHP Safe Mode is a deprecated and mostly useless setting that should be disabled. ' - .'Please ask your server administrator to disable it in php.ini or in your webserver config.' + 'error'=> $l->t('PHP Safe Mode is enabled. ownCloud requires that it is disabled to work properly.'), + 'hint'=> $l->t('PHP Safe Mode is a deprecated and mostly useless setting that should be disabled. ' + .'Please ask your server administrator to disable it in php.ini or in your webserver config.') ); $webServerRestart = true; } if (get_magic_quotes_gpc() == 1 ) { $errors[] = array( - 'error'=>'Magic Quotes is enabled. ownCloud requires that it is disabled to work properly.', - 'hint'=>'Magic Quotes is a deprecated and mostly useless setting that should be disabled. ' - .'Please ask your server administrator to disable it in php.ini or in your webserver config.' + 'error'=> $l->t('Magic Quotes is enabled. ownCloud requires that it is disabled to work properly.'), + 'hint'=> $l->t('Magic Quotes is a deprecated and mostly useless setting that should be disabled. ' + .'Please ask your server administrator to disable it in php.ini or in your webserver config.') ); $webServerRestart = true; } @@ -525,8 +576,8 @@ class OC_Util { if($webServerRestart) { $errors[] = array( - 'error'=>'PHP modules have been installed, but they are still listed as missing?', - 'hint'=>'Please ask your server administrator to restart the web server.' + 'error'=> $l->t('PHP modules have been installed, but they are still listed as missing?'), + 'hint'=> $l->t('Please ask your server administrator to restart the web server.') ); } @@ -543,6 +594,7 @@ class OC_Util { * @return array errors array */ public static function checkDatabaseVersion() { + $l = OC_L10N::get('lib'); $errors = array(); $dbType = \OC_Config::getValue('dbtype', 'sqlite'); if ($dbType === 'pgsql') { @@ -554,16 +606,17 @@ class OC_Util { $version = $data['server_version']; if (version_compare($version, '9.0.0', '<')) { $errors[] = array( - 'error' => 'PostgreSQL >= 9 required', - 'hint' => 'Please upgrade your database version' + 'error' => $l->t('PostgreSQL >= 9 required'), + 'hint' => $l->t('Please upgrade your database version') ); } } } catch (\Doctrine\DBAL\DBALException $e) { \OCP\Util::logException('core', $e); $errors[] = array( - 'error' => 'Error occurred while checking PostgreSQL version', - 'hint' => 'Please make sure you have PostgreSQL >= 9 or check the logs for more information about the error' + 'error' => $l->t('Error occurred while checking PostgreSQL version'), + 'hint' => $l->t('Please make sure you have PostgreSQL >= 9 or' + .' check the logs for more information about the error') ); } } @@ -619,12 +672,13 @@ class OC_Util { * @return array arrays with error messages and hints */ public static function checkDataDirectoryPermissions($dataDirectory) { + $l = OC_L10N::get('lib'); $errors = array(); if (self::runningOnWindows()) { //TODO: permissions checks for windows hosts } else { - $permissionsModHint = 'Please change the permissions to 0770 so that the directory' - .' cannot be listed by other users.'; + $permissionsModHint = $l->t('Please change the permissions to 0770 so that the directory' + .' cannot be listed by other users.'); $perms = substr(decoct(@fileperms($dataDirectory)), -3); if (substr($perms, -1) != '0') { chmod($dataDirectory, 0770); @@ -632,7 +686,7 @@ class OC_Util { $perms = substr(decoct(@fileperms($dataDirectory)), -3); if (substr($perms, 2, 1) != '0') { $errors[] = array( - 'error' => 'Data directory ('.$dataDirectory.') is readable for other users', + 'error' => $l->t('Data directory (%s) is readable by other users', array($dataDirectory)), 'hint' => $permissionsModHint ); } @@ -649,12 +703,13 @@ class OC_Util { * @return bool true if the data directory is valid, false otherwise */ public static function checkDataDirectoryValidity($dataDirectory) { + $l = OC_L10N::get('lib'); $errors = array(); if (!file_exists($dataDirectory.'/.ocdata')) { $errors[] = array( - 'error' => 'Data directory (' . $dataDirectory . ') is invalid', - 'hint' => 'Please check that the data directory contains a file' . - ' ".ocdata" in its root.' + 'error' => $l->t('Data directory (%s) is invalid', array($dataDirectory)), + 'hint' => $l->t('Please check that the data directory contains a file' . + ' ".ocdata" in its root.') ); } return $errors; diff --git a/lib/public/files/objectstore/iobjectstore.php b/lib/public/files/objectstore/iobjectstore.php new file mode 100644 index 00000000000..b2c5a9da134 --- /dev/null +++ b/lib/public/files/objectstore/iobjectstore.php @@ -0,0 +1,33 @@ +<?php + +namespace OCP\Files\ObjectStore; + +interface IObjectStore { + + /** + * @return string the container or bucket name where objects are stored + */ + function getStorageId(); + + /** + * @param string $urn the unified resource name used to identify the object + * @return resource stream with the read data + * @throws Exception when something goes wrong, message will be logged + */ + function readObject($urn); + + /** + * @param string $urn the unified resource name used to identify the object + * @param resource $stream stream with the data to write + * @throws Exception when something goes wrong, message will be logged + */ + function writeObject($urn, $stream); + + /** + * @param string $urn the unified resource name used to identify the object + * @return void + * @throws Exception when something goes wrong, message will be logged + */ + function deleteObject($urn); + +}
\ No newline at end of file diff --git a/settings/l10n/ru.php b/settings/l10n/ru.php index eea1d455525..ab40b3bf4be 100644 --- a/settings/l10n/ru.php +++ b/settings/l10n/ru.php @@ -90,6 +90,7 @@ $TRANSLATIONS = array( "Fatal issues only" => "Только критические проблемы", "None" => "Нет новостей", "Login" => "Логин", +"Plain" => "Простой", "SSL" => "SSL", "TLS" => "TLS", "Security Warning" => "Предупреждение безопасности", @@ -120,11 +121,13 @@ $TRANSLATIONS = array( "Use systems cron service to call the cron.php file every 15 minutes." => "Использовать системный cron для вызова cron.php каждые 15 минут.", "Sharing" => "Общий доступ", "Allow apps to use the Share API" => "Позволить приложениям использовать API общего доступа", +"Allow users to share via link" => "Разрешить пользователям публикации через ссылки", "Allow public uploads" => "Разрешить открытые загрузки", "Set default expiration date" => "Установите дату окончания по-умолчанию", "Expire after " => "Заканчивается после", "days" => "дней", "Allow resharing" => "Разрешить переоткрытие общего доступа", +"Restrict users to only share with users in their groups" => "Разрешить пользователям публикации только внутри их групп", "Allow users to send mail notification for shared files" => "Разрешить пользователю оповещать почтой о расшаренных файлах", "Exclude groups from sharing" => "Исключить группы из общего доступа", "These groups will still be able to receive shares, but not to initiate them." => "Эти группы смогут получать общие файлы, но не смогут отправлять их.", @@ -208,6 +211,7 @@ $TRANSLATIONS = array( "Other" => "Другое", "Username" => "Имя пользователя", "Quota" => "Квота", +"Storage Location" => "Место хранилища", "Last Login" => "Последний вход", "change full name" => "изменить полное имя", "set new password" => "установить новый пароль", diff --git a/tests/lib/files/objectstore/swift.php b/tests/lib/files/objectstore/swift.php new file mode 100644 index 00000000000..7f3b45c0dab --- /dev/null +++ b/tests/lib/files/objectstore/swift.php @@ -0,0 +1,106 @@ +<?php +/** + * @author Jörn Friedrich Dreyer + * @copyright (c) 2014 Jörn Friedrich Dreyer <jfd@owncloud.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 OCA\ObjectStore\Tests\Unit; + +use OC\Files\ObjectStore\ObjectStoreStorage; +use OC\Files\ObjectStore\Swift as ObjectStoreToTest; + +use PHPUnit_Framework_TestCase; + +//class Swift extends PHPUnit_Framework_TestCase { +class Swift extends \Test\Files\Storage\Storage { + + private $objectStorage; + + public function setUp() { + + \OC_App::disable('files_sharing'); + \OC_App::disable('files_versions'); + + // reset backend + \OC_User::clearBackends(); + \OC_User::useBackend('database'); + + // create users + $users = array('test'); + foreach($users as $userName) { + \OC_User::deleteUser($userName); + \OC_User::createUser($userName, $userName); + } + + // main test user + $userName = 'test'; + \OC_Util::tearDownFS(); + \OC_User::setUserId(''); + \OC\Files\Filesystem::tearDown(); + \OC_User::setUserId('test'); + + $testContainer = 'oc-test-container-'.substr( md5(rand()), 0, 7); + + $params = array( + 'username' => 'facebook100000330192569', + 'password' => 'Dbdj1sXnRSHxIGc4', + 'container' => $testContainer, + 'autocreate' => true, + 'region' => 'RegionOne', //required, trystack defaults to 'RegionOne' + 'url' => 'http://8.21.28.222:5000/v2.0', // The Identity / Keystone endpoint + 'tenantName' => 'facebook100000330192569', // required on trystack + 'serviceName' => 'swift', //trystack uses swift by default, the lib defaults to 'cloudFiles' if omitted + 'user' => \OC_User::getManager()->get($userName) + ); + $this->objectStorage = new ObjectStoreToTest($params); + $params['objectstore'] = $this->objectStorage; + $this->instance = new ObjectStoreStorage($params); + } + + public function tearDown() { + if (is_null($this->instance)) { + return; + } + $this->objectStorage->deleteContainer(true); + $this->instance->getCache()->clear(); + } + + public function testStat() { + $textFile = \OC::$SERVERROOT . '/tests/data/lorem.txt'; + $ctimeStart = time(); + $this->instance->file_put_contents('/lorem.txt', file_get_contents($textFile)); + $this->assertTrue($this->instance->isReadable('/lorem.txt')); + $ctimeEnd = time(); + $mTime = $this->instance->filemtime('/lorem.txt'); + + // check that ($ctimeStart - 5) <= $mTime <= ($ctimeEnd + 1) + $this->assertGreaterThanOrEqual(($ctimeStart - 5), $mTime); + $this->assertLessThanOrEqual(($ctimeEnd + 1), $mTime); + $this->assertEquals(filesize($textFile), $this->instance->filesize('/lorem.txt')); + + $stat = $this->instance->stat('/lorem.txt'); + //only size and mtime are required in the result + $this->assertEquals($stat['size'], $this->instance->filesize('/lorem.txt')); + $this->assertEquals($stat['mtime'], $mTime); + + if ($this->instance->touch('/lorem.txt', 100) !== false) { + $mTime = $this->instance->filemtime('/lorem.txt'); + $this->assertEquals($mTime, 100); + } + } + +} |