Merge branch 'master' into oc_avatars

This commit is contained in:
kondou 2013-09-04 12:56:40 +02:00
commit 820fd42161
58 changed files with 630 additions and 468 deletions

View File

@ -33,15 +33,17 @@ $TRANSLATIONS = array(
"cancel" => "annuler",
"replaced {new_name} with {old_name}" => "{new_name} a été remplacé par {old_name}",
"undo" => "annuler",
"_%n folder_::_%n folders_" => array("",""),
"_%n file_::_%n files_" => array("",""),
"_Uploading %n file_::_Uploading %n files_" => array("",""),
"_%n folder_::_%n folders_" => array("%n dossier","%n dossiers"),
"_%n file_::_%n files_" => array("%n fichier","%n fichiers"),
"{dirs} and {files}" => "{dir} et {files}",
"_Uploading %n file_::_Uploading %n files_" => array("Téléversement de %n fichier","Téléversement de %n fichiers"),
"files uploading" => "fichiers en cours d'envoi",
"'.' is an invalid file name." => "'.' n'est pas un nom de fichier valide.",
"File name cannot be empty." => "Le nom de fichier ne peut être vide.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nom invalide, les caractères '\\', '/', '<', '>', ':', '\"', '|', '?' et '*' ne sont pas autorisés.",
"Your storage is full, files can not be updated or synced anymore!" => "Votre espage de stockage est plein, les fichiers ne peuvent plus être téléversés ou synchronisés !",
"Your storage is almost full ({usedSpacePercent}%)" => "Votre espace de stockage est presque plein ({usedSpacePercent}%)",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Le chiffrement était désactivé mais vos fichiers sont toujours chiffrés. Veuillez vous rendre sur vos Paramètres personnels pour déchiffrer vos fichiers.",
"Your download is being prepared. This might take some time if the files are big." => "Votre téléchargement est cours de préparation. Ceci peut nécessiter un certain temps si les fichiers sont volumineux.",
"Name" => "Nom",
"Size" => "Taille",

View File

@ -35,6 +35,7 @@ $TRANSLATIONS = array(
"undo" => "desfazer",
"_%n folder_::_%n folders_" => array("",""),
"_%n file_::_%n files_" => array("",""),
"{dirs} and {files}" => "{dirs} e {files}",
"_Uploading %n file_::_Uploading %n files_" => array("",""),
"files uploading" => "enviando arquivos",
"'.' is an invalid file name." => "'.' é um nome de arquivo inválido.",
@ -42,6 +43,7 @@ $TRANSLATIONS = array(
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nome inválido, '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' não são permitidos.",
"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 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.",
"Your download is being prepared. This might take some time if the files are big." => "Seu download está sendo preparado. Isto pode levar algum tempo se os arquivos forem grandes.",
"Name" => "Nome",
"Size" => "Tamanho",

View File

@ -104,7 +104,7 @@
<?php print_unescaped($_['fileList']); ?>
</tbody>
</table>
<div id="editor"></div>
<div id="editor"></div><!-- FIXME Do not use this div in your app! It is deprecated and will be removed in the future! -->
<div id="uploadsize-message" title="<?php p($l->t('Upload too large'))?>">
<p>
<?php p($l->t('The files you are trying to upload exceed the maximum size for file uploads on this server.'));?>

View File

@ -10,6 +10,8 @@ $TRANSLATIONS = array(
"Could not update the private key password. Maybe the old password was not correct." => "Impossible de mettre à jour le mot de passe de la clé privé. Peut-être que l'ancien mot de passe n'était pas correcte.",
"Your private key is not valid! Likely your password was changed outside the ownCloud system (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." => "Votre clé de sécurité privée n'est pas valide! Il est probable que votre mot de passe ait été changé sans passer par le système ownCloud (par éxemple: le serveur de votre entreprise). Ain d'avoir à nouveau accès à vos fichiers cryptés, vous pouvez mettre à jour votre clé de sécurité privée dans les paramètres personnels de votre compte.",
"Missing requirements." => "Système minimum requis non respecté.",
"Please make sure that PHP 5.3.3 or newer is installed and that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled." => "Veuillez vous assurer qu'une version de PHP 5.3.3 ou supérieure est installée et qu'OpenSSL et son extension PHP sont activés et configurés correctement. En attendant, l'application de chiffrement été désactivée.",
"Following users are not set up for encryption:" => "Les utilisateurs suivants ne sont pas configurés pour le chiffrement :",
"Saving..." => "Enregistrement...",
"Your private key is not valid! Maybe the your password was changed from outside." => "Votre clef privée est invalide ! Votre mot de passe a peut-être été modifié depuis l'extérieur.",
"You can unlock your private key in your " => "Vous pouvez déverrouiller votre clé privée dans votre",

View File

@ -1,6 +1,18 @@
<?php
$TRANSLATIONS = array(
"Recovery key successfully disabled" => "Visszaállítási kulcs sikeresen kikapcsolva",
"Password successfully changed." => "Jelszó sikeresen megváltoztatva.",
"Could not change the password. Maybe the old password was not correct." => "A jelszót nem lehet megváltoztatni! Lehet, hogy hibás volt a régi jelszó.",
"Please make sure that PHP 5.3.3 or newer is installed and that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled." => "Kérlek győződj meg arról, hogy PHP 5.3.3 vagy annál frissebb van telepítve, valamint a PHP-hez tartozó OpenSSL bővítmény be van-e kapcsolva és az helyesen van-e konfigurálva! Ki lett kapcsolva ideiglenesen a titkosító alkalmazás.",
"Saving..." => "Mentés...",
"Encryption" => "Titkosítás"
"personal settings" => "személyes beállítások",
"Encryption" => "Titkosítás",
"Enabled" => "Bekapcsolva",
"Disabled" => "Kikapcsolva",
"Change Password" => "Jelszó megváltoztatása",
"Old log-in password" => "Régi bejelentkezési jelszó",
"Current log-in password" => "Jelenlegi bejelentkezési jelszó",
"Update Private Key Password" => "Privát kulcs jelszó frissítése",
"Enable password recovery:" => "Jelszó-visszaállítás bekapcsolása"
);
$PLURAL_FORMS = "nplurals=2; plural=(n != 1);";

View File

@ -3,6 +3,12 @@ $TRANSLATIONS = array(
"The password is wrong. Try again." => "Le mot de passe est incorrect. Veuillez réessayer.",
"Password" => "Mot de passe",
"Submit" => "Envoyer",
"Sorry, this link doesnt seem to work anymore." => "Désolé, mais le lien semble ne plus fonctionner.",
"Reasons might be:" => "Les raisons peuvent être :",
"the item was removed" => "l'item a été supprimé",
"the link expired" => "le lien a expiré",
"sharing is disabled" => "le partage est désactivé",
"For more info, please ask the person who sent this link." => "Pour plus d'informations, veuillez contacter la personne qui a envoyé ce lien.",
"%s shared the folder %s with you" => "%s a partagé le répertoire %s avec vous",
"%s shared the file %s with you" => "%s a partagé le fichier %s avec vous",
"Download" => "Télécharger",

View File

@ -8,8 +8,9 @@ $TRANSLATIONS = array(
"Delete permanently" => "Supprimer de façon définitive",
"Name" => "Nom",
"Deleted" => "Effacé",
"_%n folder_::_%n folders_" => array("",""),
"_%n file_::_%n files_" => array("",""),
"_%n folder_::_%n folders_" => array("","%n dossiers"),
"_%n file_::_%n files_" => array("","%n fichiers"),
"restored" => "restauré",
"Nothing in here. Your trash bin is empty!" => "Il n'y a rien ici. Votre corbeille est vide !",
"Restore" => "Restaurer",
"Delete" => "Supprimer",

View File

@ -2,6 +2,9 @@
$TRANSLATIONS = array(
"Could not revert: %s" => "Impossible de restaurer %s",
"Versions" => "Versions",
"Failed to revert {file} to revision {timestamp}." => "Échec du retour du fichier {file} à la révision {timestamp}.",
"More versions..." => "Plus de versions...",
"No other versions available" => "Aucune autre version disponible",
"Restore" => "Restaurer"
);
$PLURAL_FORMS = "nplurals=2; plural=(n > 1);";

View File

@ -1,5 +1,7 @@
<?php
$TRANSLATIONS = array(
"WebDAV Authentication" => "Authentification WebDAV"
"WebDAV Authentication" => "Authentification WebDAV",
"Address: " => "Adresse :",
"The user credentials will be sent to this address. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." => "Les informations de connexion de l'utilisateur seront envoyées à cette adresse. Ce module analyse le code de la réponse HTTP et considère les codes 401 et 403 comme une authentification invalide et tout autre valeur comme une authentification valide."
);
$PLURAL_FORMS = "nplurals=2; plural=(n > 1);";

View File

@ -129,6 +129,7 @@
/* counter and actions */
#app-navigation .utils {
position: absolute;
padding: 7px 7px 0 0;
right: 0;
top: 0;
bottom: 0;

View File

@ -431,9 +431,16 @@ OC.Notification={
OC.Breadcrumb={
container:null,
crumbs:[],
show:function(dir, leafname, leaflink){
OC.Breadcrumb.clear();
if(!this.container){//default
this.container=$('#controls');
}
this._show(this.container, dir, leafname, leaflink);
},
_show:function(container, dir, leafname, leaflink){
var self = this;
this._clear(container);
// show home + path in subdirectories
if (dir && dir !== '/') {
@ -450,8 +457,7 @@ OC.Breadcrumb={
crumbImg.attr('src',OC.imagePath('core','places/home'));
crumbLink.append(crumbImg);
crumb.append(crumbLink);
OC.Breadcrumb.container.prepend(crumb);
OC.Breadcrumb.crumbs.push(crumb);
container.prepend(crumb);
//add path parts
var segments = dir.split('/');
@ -460,20 +466,23 @@ OC.Breadcrumb={
if (name !== '') {
pathurl = pathurl+'/'+name;
var link = OC.linkTo('files','index.php')+'?dir='+encodeURIComponent(pathurl);
OC.Breadcrumb.push(name, link);
self._push(container, name, link);
}
});
}
//add leafname
if (leafname && leaflink) {
OC.Breadcrumb.push(leafname, leaflink);
this._push(container, leafname, leaflink);
}
},
push:function(name, link){
if(!OC.Breadcrumb.container){//default
OC.Breadcrumb.container=$('#controls');
if(!this.container){//default
this.container=$('#controls');
}
return this._push(OC.Breadcrumb.container, name, link);
},
_push:function(container, name, link){
var crumb=$('<div/>');
crumb.addClass('crumb').addClass('last');
@ -482,30 +491,30 @@ OC.Breadcrumb={
crumbLink.text(name);
crumb.append(crumbLink);
var existing=OC.Breadcrumb.container.find('div.crumb');
var existing=container.find('div.crumb');
if(existing.length){
existing.removeClass('last');
existing.last().after(crumb);
}else{
OC.Breadcrumb.container.prepend(crumb);
container.prepend(crumb);
}
OC.Breadcrumb.crumbs.push(crumb);
return crumb;
},
pop:function(){
if(!OC.Breadcrumb.container){//default
OC.Breadcrumb.container=$('#controls');
if(!this.container){//default
this.container=$('#controls');
}
OC.Breadcrumb.container.find('div.crumb').last().remove();
OC.Breadcrumb.container.find('div.crumb').last().addClass('last');
OC.Breadcrumb.crumbs.pop();
this.container.find('div.crumb').last().remove();
this.container.find('div.crumb').last().addClass('last');
},
clear:function(){
if(!OC.Breadcrumb.container){//default
OC.Breadcrumb.container=$('#controls');
if(!this.container){//default
this.container=$('#controls');
}
OC.Breadcrumb.container.find('div.crumb').remove();
OC.Breadcrumb.crumbs=[];
this._clear(this.container);
},
_clear:function(container) {
container.find('div.crumb').remove();
}
};

View File

@ -77,7 +77,7 @@ var OCdialogs = {
self.$filePicker = $tmpl.octemplate({
dialog_name: dialog_name,
title: title
}).data('path', '');
}).data('path', '').data('multiselect', multiselect).data('mimetype', mimetype_filter);
if (modal === undefined) {
modal = false;
@ -100,7 +100,7 @@ var OCdialogs = {
self._handlePickerClick(event, $(this));
});
self._fillFilePicker('');
}).data('multiselect', multiselect).data('mimetype',mimetype_filter);
});
// build buttons
var functionToCall = function() {
@ -285,7 +285,11 @@ var OCdialogs = {
filename: entry.name,
date: OC.mtime2date(entry.mtime)
});
$li.find('img').attr('src', entry.mimetype_icon);
if (entry.mimetype === "httpd/unix-directory") {
$li.find('img').attr('src', OC.imagePath('core', 'filetypes/folder.png'));
} else {
$li.find('img').attr('src', OC.Router.generate('core_ajax_preview', {x:32, y:32, file:escapeHTML(dir+'/'+entry.name)}) );
}
self.$filelist.append($li);
});

View File

@ -1,3 +1,4 @@
$(document).bind('ajaxSend', function(elm, xhr, s) {
$(document).on('ajaxSend',function(elm, xhr, s) {
xhr.setRequestHeader('requesttoken', oc_requesttoken);
});

View File

@ -34,23 +34,20 @@
*
* Which will result in:
*
* <div id="albumart" style="background-color: rgb(123, 123, 123); ... ">T</div>
* <div id="albumart" style="background-color: hsl(123, 90%, 65%); ... ">T</div>
*
*/
(function ($) {
$.fn.placeholder = function(seed) {
var hash = md5(seed),
maxRange = parseInt('ffffffffff', 16),
red = parseInt(hash.substr(0,10), 16) / maxRange * 256,
green = parseInt(hash.substr(10,10), 16) / maxRange * 256,
blue = parseInt(hash.substr(20,10), 16) / maxRange * 256,
rgb = [Math.floor(red), Math.floor(green), Math.floor(blue)],
maxRange = parseInt('ffffffffffffffffffffffffffffffff', 16),
hue = parseInt(hash, 16) / maxRange * 256,
height = this.height();
this.css('background-color', 'rgb(' + rgb.join(',') + ')');
this.css('background-color', 'hsl(' + hue + ', 90%, 65%)');
// CSS rules
this.css('color', 'rgb(255, 255, 255)');
this.css('color', '#fff');
this.css('font-weight', 'bold');
this.css('text-align', 'center');

View File

@ -2,6 +2,12 @@
$TRANSLATIONS = array(
"%s shared »%s« with you" => "%s partagé »%s« avec vous",
"group" => "groupe",
"Turned on maintenance mode" => "Basculé en mode maintenance",
"Turned off maintenance mode" => "Basculé en mode production (non maintenance)",
"Updated database" => "Base de données mise à jour",
"Updating filecache, this may take really long..." => "En cours de mise à jour de cache de fichiers. Cette opération peut être très longue...",
"Updated filecache" => "Cache de fichier mis à jour",
"... %d%% done ..." => "... %d%% effectué ...",
"Category type not provided." => "Type de catégorie non spécifié.",
"No category to add?" => "Pas de catégorie à ajouter ?",
"This category already exists: %s" => "Cette catégorie existe déjà : %s",
@ -31,13 +37,13 @@ $TRANSLATIONS = array(
"December" => "décembre",
"Settings" => "Paramètres",
"seconds ago" => "il y a quelques secondes",
"_%n minute ago_::_%n minutes ago_" => array("",""),
"_%n hour ago_::_%n hours ago_" => array("",""),
"_%n minute ago_::_%n minutes ago_" => array("il y a %n minute","il y a %n minutes"),
"_%n hour ago_::_%n hours ago_" => array("Il y a %n heure","Il y a %n heures"),
"today" => "aujourd'hui",
"yesterday" => "hier",
"_%n day ago_::_%n days ago_" => array("",""),
"_%n day ago_::_%n days ago_" => array("il y a %n jour","il y a %n jours"),
"last month" => "le mois dernier",
"_%n month ago_::_%n months ago_" => array("",""),
"_%n month ago_::_%n months ago_" => array("Il y a %n mois","Il y a %n mois"),
"months ago" => "il y a plusieurs mois",
"last year" => "l'année dernière",
"years ago" => "il y a plusieurs années",
@ -84,6 +90,7 @@ $TRANSLATIONS = array(
"Email sent" => "Email envoyé",
"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "La mise à jour a échoué. Veuillez signaler ce problème à la <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">communauté ownCloud</a>.",
"The update was successful. Redirecting you to ownCloud now." => "La mise à jour a réussi. Vous êtes redirigé maintenant vers ownCloud.",
"%s password reset" => "Réinitialisation de votre mot de passe %s",
"Use the following link to reset your password: {link}" => "Utilisez le lien suivant pour réinitialiser votre mot de passe : {link}",
"The link to reset your password has been sent to your email.<br>If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator ." => "Le lien permettant de réinitialiser votre mot de passe vous a été transmis.<br>Si vous ne le recevez pas dans un délai raisonnable, vérifier votre boîte de pourriels.<br>Au besoin, contactez votre administrateur local.",
"Request failed!<br>Did you make sure your email/username was right?" => "Requête en échec!<br>Avez-vous vérifié vos courriel/nom d'utilisateur?",
@ -108,9 +115,11 @@ $TRANSLATIONS = array(
"Add" => "Ajouter",
"Security Warning" => "Avertissement de sécurité",
"Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "Votre version de PHP est vulnérable à l'attaque par caractère NULL (CVE-2006-7243)",
"Please update your PHP installation to use %s securely." => "Veuillez mettre à jour votre installation PHP pour utiliser %s de façon sécurisée.",
"No secure random number generator is available, please enable the PHP OpenSSL extension." => "Aucun générateur de nombre aléatoire sécurisé n'est disponible, veuillez activer l'extension PHP OpenSSL",
"Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Sans générateur de nombre aléatoire sécurisé, un attaquant peut être en mesure de prédire les jetons de réinitialisation du mot de passe, et ainsi prendre le contrôle de votre compte utilisateur.",
"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Votre répertoire data est certainement accessible depuis l'internet car le fichier .htaccess ne semble pas fonctionner",
"For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." => "Pour les informations de configuration de votre serveur, veuillez lire la <a href=\"%s\" target=\"_blank\">documentation</a>.",
"Create an <strong>admin account</strong>" => "Créer un <strong>compte administrateur</strong>",
"Advanced" => "Avancé",
"Data folder" => "Répertoire des données",

View File

@ -1,5 +1,15 @@
<?php
$TRANSLATIONS = array(
"Category type not provided." => "कैटेगरी प्रकार उपलब्ध नहीं है",
"This category already exists: %s" => "यह कैटेगरी पहले से ही मौजूद है: %s",
"Object type not provided." => "ऑब्जेक्ट प्रकार नहीं दिया हुआ",
"Sunday" => "रविवार",
"Monday" => "सोमवार",
"Tuesday" => "मंगलवार",
"Wednesday" => "बुधवार",
"Thursday" => "बृहस्पतिवार",
"Friday" => "शुक्रवार",
"Saturday" => "शनिवार",
"January" => "जनवरी",
"February" => "फरवरी",
"March" => "मार्च",
@ -21,6 +31,9 @@ $TRANSLATIONS = array(
"Share" => "साझा करें",
"Share with" => "के साथ साझा",
"Password" => "पासवर्ड",
"Send" => "भेजें",
"Sending ..." => "भेजा जा रहा है",
"Email sent" => "ईमेल भेज दिया गया है ",
"Use the following link to reset your password: {link}" => "आगे दिये गये लिंक का उपयोग पासवर्ड बदलने के लिये किजीये: {link}",
"You will receive a link to reset your password via Email." => "पासवर्ड बदलने कि लिंक आपको ई-मेल द्वारा भेजी जायेगी|",
"Username" => "प्रयोक्ता का नाम",
@ -31,6 +44,7 @@ $TRANSLATIONS = array(
"Apps" => "Apps",
"Help" => "सहयोग",
"Cloud not found" => "क्लौड नहीं मिला ",
"Add" => "डाले",
"Create an <strong>admin account</strong>" => "व्यवस्थापक खाता बनाएँ",
"Advanced" => "उन्नत",
"Data folder" => "डाटा फोल्डर",

View File

@ -42,7 +42,7 @@ class OC_Core_LostPassword_Controller {
}
if (OC_User::userExists($_POST['user']) && $continue) {
$token = hash('sha256', OC_Util::generate_random_bytes(30).OC_Config::getValue('passwordsalt', ''));
$token = hash('sha256', OC_Util::generateRandomBytes(30).OC_Config::getValue('passwordsalt', ''));
OC_Preferences::setValue($_POST['user'], 'owncloud', 'lostpassword',
hash('sha256', $token)); // Hash the token again to prevent timing attacks
$email = OC_Preferences::getValue($_POST['user'], 'settings', 'email', '');

View File

@ -5,11 +5,11 @@ OC_App::loadApps();
if ($service == 'core.css') {
$minimizer = new OC_Minimizer_CSS();
$files = OC_TemplateLayout::findStylesheetFiles(OC_Util::$core_styles);
$files = OC_TemplateLayout::findStylesheetFiles(OC_Util::$coreStyles);
$minimizer->output($files, $service);
}
else if ($service == 'core.js') {
$minimizer = new OC_Minimizer_JS();
$files = OC_TemplateLayout::findJavascriptFiles(OC_Util::$core_scripts);
$files = OC_TemplateLayout::findJavascriptFiles(OC_Util::$coreScripts);
$minimizer->output($files, $service);
}

View File

@ -33,8 +33,8 @@ $opts = array(
'hasOracle' => $hasOracle,
'hasMSSQL' => $hasMSSQL,
'directory' => $datadir,
'secureRNG' => OC_Util::secureRNG_available(),
'htaccessWorking' => OC_Util::ishtaccessworking(),
'secureRNG' => OC_Util::secureRNGAvailable(),
'htaccessWorking' => OC_Util::isHtAccessWorking(),
'vulnerableToNullByte' => $vulnerableToNullByte,
'errors' => array(),
);

View File

@ -12,9 +12,9 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
"POT-Creation-Date: 2013-09-01 13:27-0400\n"
"PO-Revision-Date: 2013-08-30 13:50+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
"POT-Creation-Date: 2013-09-03 07:43-0400\n"
"PO-Revision-Date: 2013-09-03 09:30+0000\n"
"Last-Translator: Christophe Lherieau <skimpax@gmail.com>\n"
"Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -33,28 +33,28 @@ msgstr "groupe"
#: ajax/update.php:11
msgid "Turned on maintenance mode"
msgstr ""
msgstr "Basculé en mode maintenance"
#: ajax/update.php:14
msgid "Turned off maintenance mode"
msgstr ""
msgstr "Basculé en mode production (non maintenance)"
#: ajax/update.php:17
msgid "Updated database"
msgstr ""
msgstr "Base de données mise à jour"
#: ajax/update.php:20
msgid "Updating filecache, this may take really long..."
msgstr ""
msgstr "En cours de mise à jour de cache de fichiers. Cette opération peut être très longue..."
#: ajax/update.php:23
msgid "Updated filecache"
msgstr ""
msgstr "Cache de fichier mis à jour"
#: ajax/update.php:26
#, php-format
msgid "... %d%% done ..."
msgstr ""
msgstr "... %d%% effectué ..."
#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25
msgid "Category type not provided."
@ -182,14 +182,14 @@ msgstr "il y a quelques secondes"
#: js/js.js:813
msgid "%n minute ago"
msgid_plural "%n minutes ago"
msgstr[0] ""
msgstr[1] ""
msgstr[0] "il y a %n minute"
msgstr[1] "il y a %n minutes"
#: js/js.js:814
msgid "%n hour ago"
msgid_plural "%n hours ago"
msgstr[0] ""
msgstr[1] ""
msgstr[0] "Il y a %n heure"
msgstr[1] "Il y a %n heures"
#: js/js.js:815
msgid "today"
@ -202,8 +202,8 @@ msgstr "hier"
#: js/js.js:817
msgid "%n day ago"
msgid_plural "%n days ago"
msgstr[0] ""
msgstr[1] ""
msgstr[0] "il y a %n jour"
msgstr[1] "il y a %n jours"
#: js/js.js:818
msgid "last month"
@ -212,8 +212,8 @@ msgstr "le mois dernier"
#: js/js.js:819
msgid "%n month ago"
msgid_plural "%n months ago"
msgstr[0] ""
msgstr[1] ""
msgstr[0] "Il y a %n mois"
msgstr[1] "Il y a %n mois"
#: js/js.js:820
msgid "months ago"
@ -410,7 +410,7 @@ msgstr "La mise à jour a réussi. Vous êtes redirigé maintenant vers ownCloud
#: lostpassword/controller.php:61
#, php-format
msgid "%s password reset"
msgstr ""
msgstr "Réinitialisation de votre mot de passe %s"
#: lostpassword/templates/email.php:2
msgid "Use the following link to reset your password: {link}"
@ -527,7 +527,7 @@ msgstr "Votre version de PHP est vulnérable à l'attaque par caractère NULL (C
#: templates/installation.php:26
#, php-format
msgid "Please update your PHP installation to use %s securely."
msgstr ""
msgstr "Veuillez mettre à jour votre installation PHP pour utiliser %s de façon sécurisée."
#: templates/installation.php:32
msgid ""
@ -552,7 +552,7 @@ msgstr "Votre répertoire data est certainement accessible depuis l'internet car
msgid ""
"For information how to properly configure your server, please see the <a "
"href=\"%s\" target=\"_blank\">documentation</a>."
msgstr ""
msgstr "Pour les informations de configuration de votre serveur, veuillez lire la <a href=\"%s\" target=\"_blank\">documentation</a>."
#: templates/installation.php:47
msgid "Create an <strong>admin account</strong>"

View File

@ -10,9 +10,9 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
"POT-Creation-Date: 2013-09-01 13:27-0400\n"
"PO-Revision-Date: 2013-08-30 13:50+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
"POT-Creation-Date: 2013-09-03 07:42-0400\n"
"PO-Revision-Date: 2013-09-03 09:25+0000\n"
"Last-Translator: Christophe Lherieau <skimpax@gmail.com>\n"
"Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -161,24 +161,24 @@ msgstr "annuler"
#: js/filelist.js:424 js/filelist.js:490 js/files.js:581
msgid "%n folder"
msgid_plural "%n folders"
msgstr[0] ""
msgstr[1] ""
msgstr[0] "%n dossier"
msgstr[1] "%n dossiers"
#: js/filelist.js:425 js/filelist.js:491 js/files.js:587
msgid "%n file"
msgid_plural "%n files"
msgstr[0] ""
msgstr[1] ""
msgstr[0] "%n fichier"
msgstr[1] "%n fichiers"
#: js/filelist.js:432
msgid "{dirs} and {files}"
msgstr ""
msgstr "{dir} et {files}"
#: js/filelist.js:563
msgid "Uploading %n file"
msgid_plural "Uploading %n files"
msgstr[0] ""
msgstr[1] ""
msgstr[0] "Téléversement de %n fichier"
msgstr[1] "Téléversement de %n fichiers"
#: js/filelist.js:628
msgid "files uploading"
@ -210,7 +210,7 @@ msgstr "Votre espace de stockage est presque plein ({usedSpacePercent}%)"
msgid ""
"Encryption was disabled but your files are still encrypted. Please go to "
"your personal settings to decrypt your files."
msgstr ""
msgstr "Le chiffrement était désactivé mais vos fichiers sont toujours chiffrés. Veuillez vous rendre sur vos Paramètres personnels pour déchiffrer vos fichiers."
#: js/files.js:245
msgid ""

View File

@ -11,9 +11,9 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
"POT-Creation-Date: 2013-08-21 08:10-0400\n"
"PO-Revision-Date: 2013-08-19 19:20+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
"POT-Creation-Date: 2013-09-03 07:42-0400\n"
"PO-Revision-Date: 2013-09-03 10:00+0000\n"
"Last-Translator: Christophe Lherieau <skimpax@gmail.com>\n"
"Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -65,20 +65,20 @@ msgid ""
"files."
msgstr "Votre clé de sécurité privée n'est pas valide! Il est probable que votre mot de passe ait été changé sans passer par le système ownCloud (par éxemple: le serveur de votre entreprise). Ain d'avoir à nouveau accès à vos fichiers cryptés, vous pouvez mettre à jour votre clé de sécurité privée dans les paramètres personnels de votre compte."
#: hooks/hooks.php:41
#: hooks/hooks.php:51
msgid "Missing requirements."
msgstr "Système minimum requis non respecté."
#: hooks/hooks.php:42
#: hooks/hooks.php:52
msgid ""
"Please make sure that PHP 5.3.3 or newer is installed and that OpenSSL "
"together with the PHP extension is enabled and configured properly. For now,"
" the encryption app has been disabled."
msgstr ""
msgstr "Veuillez vous assurer qu'une version de PHP 5.3.3 ou supérieure est installée et qu'OpenSSL et son extension PHP sont activés et configurés correctement. En attendant, l'application de chiffrement été désactivée."
#: hooks/hooks.php:249
#: hooks/hooks.php:250
msgid "Following users are not set up for encryption:"
msgstr ""
msgstr "Les utilisateurs suivants ne sont pas configurés pour le chiffrement :"
#: js/settings-admin.js:11
msgid "Saving..."

View File

@ -4,13 +4,14 @@
#
# Translators:
# square <benben390-390@yahoo.fr>, 2013
# Christophe Lherieau <skimpax@gmail.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
"POT-Creation-Date: 2013-08-19 15:06-0400\n"
"PO-Revision-Date: 2013-08-19 18:23+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
"POT-Creation-Date: 2013-09-03 07:43-0400\n"
"PO-Revision-Date: 2013-09-03 11:10+0000\n"
"Last-Translator: Christophe Lherieau <skimpax@gmail.com>\n"
"Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -32,27 +33,27 @@ msgstr "Envoyer"
#: templates/part.404.php:3
msgid "Sorry, this link doesnt seem to work anymore."
msgstr ""
msgstr "Désolé, mais le lien semble ne plus fonctionner."
#: templates/part.404.php:4
msgid "Reasons might be:"
msgstr ""
msgstr "Les raisons peuvent être :"
#: templates/part.404.php:6
msgid "the item was removed"
msgstr ""
msgstr "l'item a été supprimé"
#: templates/part.404.php:7
msgid "the link expired"
msgstr ""
msgstr "le lien a expiré"
#: templates/part.404.php:8
msgid "sharing is disabled"
msgstr ""
msgstr "le partage est désactivé"
#: templates/part.404.php:10
msgid "For more info, please ask the person who sent this link."
msgstr ""
msgstr "Pour plus d'informations, veuillez contacter la personne qui a envoyé ce lien."
#: templates/public.php:15
#, php-format
@ -64,7 +65,7 @@ msgstr "%s a partagé le répertoire %s avec vous"
msgid "%s shared the file %s with you"
msgstr "%s a partagé le fichier %s avec vous"
#: templates/public.php:26 templates/public.php:88
#: templates/public.php:26 templates/public.php:92
msgid "Download"
msgstr "Télécharger"
@ -76,6 +77,6 @@ msgstr "Envoyer"
msgid "Cancel upload"
msgstr "Annuler l'envoi"
#: templates/public.php:85
#: templates/public.php:89
msgid "No preview available for"
msgstr "Pas d'aperçu disponible pour"

View File

@ -3,13 +3,14 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Christophe Lherieau <skimpax@gmail.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
"POT-Creation-Date: 2013-08-15 04:47-0400\n"
"PO-Revision-Date: 2013-08-15 08:48+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
"POT-Creation-Date: 2013-09-03 07:43-0400\n"
"PO-Revision-Date: 2013-09-03 09:30+0000\n"
"Last-Translator: Christophe Lherieau <skimpax@gmail.com>\n"
"Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -27,45 +28,45 @@ msgstr "Impossible d'effacer %s de façon permanente"
msgid "Couldn't restore %s"
msgstr "Impossible de restaurer %s"
#: js/trash.js:7 js/trash.js:100
#: js/trash.js:7 js/trash.js:102
msgid "perform restore operation"
msgstr "effectuer l'opération de restauration"
#: js/trash.js:20 js/trash.js:48 js/trash.js:118 js/trash.js:146
#: js/trash.js:20 js/trash.js:49 js/trash.js:120 js/trash.js:148
msgid "Error"
msgstr "Erreur"
#: js/trash.js:36
#: js/trash.js:37
msgid "delete file permanently"
msgstr "effacer définitivement le fichier"
#: js/trash.js:127
#: js/trash.js:129
msgid "Delete permanently"
msgstr "Supprimer de façon définitive"
#: js/trash.js:182 templates/index.php:17
#: js/trash.js:184 templates/index.php:17
msgid "Name"
msgstr "Nom"
#: js/trash.js:183 templates/index.php:27
#: js/trash.js:185 templates/index.php:27
msgid "Deleted"
msgstr "Effacé"
#: js/trash.js:191
#: js/trash.js:193
msgid "%n folder"
msgid_plural "%n folders"
msgstr[0] ""
msgstr[1] ""
msgstr[1] "%n dossiers"
#: js/trash.js:197
#: js/trash.js:199
msgid "%n file"
msgid_plural "%n files"
msgstr[0] ""
msgstr[1] ""
msgstr[1] "%n fichiers"
#: lib/trash.php:819 lib/trash.php:821
#: lib/trash.php:814 lib/trash.php:816
msgid "restored"
msgstr ""
msgstr "restauré"
#: templates/index.php:9
msgid "Nothing in here. Your trash bin is empty!"

View File

@ -3,13 +3,14 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Christophe Lherieau <skimpax@gmail.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
"POT-Creation-Date: 2013-07-28 01:56-0400\n"
"PO-Revision-Date: 2013-07-27 06:10+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
"POT-Creation-Date: 2013-09-03 07:43-0400\n"
"PO-Revision-Date: 2013-09-03 11:10+0000\n"
"Last-Translator: Christophe Lherieau <skimpax@gmail.com>\n"
"Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -28,16 +29,16 @@ msgstr "Versions"
#: js/versions.js:53
msgid "Failed to revert {file} to revision {timestamp}."
msgstr ""
msgstr "Échec du retour du fichier {file} à la révision {timestamp}."
#: js/versions.js:79
msgid "More versions..."
msgstr ""
msgstr "Plus de versions..."
#: js/versions.js:116
msgid "No other versions available"
msgstr ""
msgstr "Aucune autre version disponible"
#: js/versions.js:149
#: js/versions.js:145
msgid "Restore"
msgstr "Restaurer"

View File

@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
"POT-Creation-Date: 2013-08-25 19:18-0400\n"
"PO-Revision-Date: 2013-08-25 23:18+0000\n"
"POT-Creation-Date: 2013-09-03 07:44-0400\n"
"PO-Revision-Date: 2013-09-03 09:30+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
"Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n"
"MIME-Version: 1.0\n"
@ -265,51 +265,51 @@ msgstr "Votre serveur web, n'est pas correctement configuré pour permettre la s
msgid "Please double check the <a href='%s'>installation guides</a>."
msgstr "Veuillez vous référer au <a href='%s'>guide d'installation</a>."
#: template/functions.php:80
#: template/functions.php:96
msgid "seconds ago"
msgstr "il y a quelques secondes"
#: template/functions.php:81
#: template/functions.php:97
msgid "%n minute ago"
msgid_plural "%n minutes ago"
msgstr[0] ""
msgstr[1] ""
msgstr[1] "il y a %n minutes"
#: template/functions.php:82
#: template/functions.php:98
msgid "%n hour ago"
msgid_plural "%n hours ago"
msgstr[0] ""
msgstr[1] ""
msgstr[1] "Il y a %n heures"
#: template/functions.php:83
#: template/functions.php:99
msgid "today"
msgstr "aujourd'hui"
#: template/functions.php:84
#: template/functions.php:100
msgid "yesterday"
msgstr "hier"
#: template/functions.php:85
#: template/functions.php:101
msgid "%n day go"
msgid_plural "%n days ago"
msgstr[0] ""
msgstr[1] ""
msgstr[1] "il y a %n jours"
#: template/functions.php:86
#: template/functions.php:102
msgid "last month"
msgstr "le mois dernier"
#: template/functions.php:87
#: template/functions.php:103
msgid "%n month ago"
msgid_plural "%n months ago"
msgstr[0] ""
msgstr[1] ""
msgstr[1] "Il y a %n mois"
#: template/functions.php:88
#: template/functions.php:104
msgid "last year"
msgstr "l'année dernière"
#: template/functions.php:89
#: template/functions.php:105
msgid "years ago"
msgstr "il y a plusieurs années"

View File

@ -11,9 +11,9 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
"POT-Creation-Date: 2013-08-25 19:18-0400\n"
"PO-Revision-Date: 2013-08-25 23:18+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
"POT-Creation-Date: 2013-09-03 07:44-0400\n"
"PO-Revision-Date: 2013-09-03 09:50+0000\n"
"Last-Translator: Christophe Lherieau <skimpax@gmail.com>\n"
"Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -88,53 +88,53 @@ msgstr "Impossible de supprimer l'utilisateur du groupe %s"
msgid "Couldn't update app."
msgstr "Impossible de mettre à jour l'application"
#: js/apps.js:35
#: js/apps.js:43
msgid "Update to {appversion}"
msgstr "Mettre à jour vers {appversion}"
#: js/apps.js:41 js/apps.js:74 js/apps.js:100
#: js/apps.js:49 js/apps.js:82 js/apps.js:108
msgid "Disable"
msgstr "Désactiver"
#: js/apps.js:41 js/apps.js:81 js/apps.js:94 js/apps.js:109
#: js/apps.js:49 js/apps.js:89 js/apps.js:102 js/apps.js:117
msgid "Enable"
msgstr "Activer"
#: js/apps.js:63
#: js/apps.js:71
msgid "Please wait...."
msgstr "Veuillez patienter…"
#: js/apps.js:71 js/apps.js:72 js/apps.js:92
#: js/apps.js:79 js/apps.js:80 js/apps.js:100
msgid "Error while disabling app"
msgstr ""
msgstr "Erreur lors de la désactivation de l'application"
#: js/apps.js:91 js/apps.js:104 js/apps.js:105
#: js/apps.js:99 js/apps.js:112 js/apps.js:113
msgid "Error while enabling app"
msgstr ""
msgstr "Erreur lors de l'activation de l'application"
#: js/apps.js:115
#: js/apps.js:123
msgid "Updating...."
msgstr "Mise à jour..."
#: js/apps.js:118
#: js/apps.js:126
msgid "Error while updating app"
msgstr "Erreur lors de la mise à jour de l'application"
#: js/apps.js:118
#: js/apps.js:126
msgid "Error"
msgstr "Erreur"
#: js/apps.js:119 templates/apps.php:43
#: js/apps.js:127 templates/apps.php:43
msgid "Update"
msgstr "Mettre à jour"
#: js/apps.js:122
#: js/apps.js:130
msgid "Updated"
msgstr "Mise à jour effectuée avec succès"
#: js/personal.js:150
msgid "Decrypting files... Please wait, this can take some time."
msgstr ""
msgstr "Déchiffrement en cours... Cela peut prendre un certain temps."
#: js/personal.js:172
msgid "Saving..."
@ -196,7 +196,7 @@ msgid ""
"configure your webserver in a way that the data directory is no longer "
"accessible or you move the data directory outside the webserver document "
"root."
msgstr ""
msgstr "Votre dossier de données et vos fichiers sont probablement accessibles depuis internet. Le fichier .htaccess ne fonctionne pas. Nous vous recommandons vivement de configurer votre serveur web de façon à ce que ce dossier de données ne soit plus accessible, ou bien de le déplacer à l'extérieur de la racine du serveur web."
#: templates/admin.php:29
msgid "Setup Warning"
@ -211,7 +211,7 @@ msgstr "Votre serveur web, n'est pas correctement configuré pour permettre la s
#: templates/admin.php:33
#, php-format
msgid "Please double check the <a href=\"%s\">installation guides</a>."
msgstr ""
msgstr "Veuillez consulter à nouveau les <a href=\"%s\">guides d'installation</a>."
#: templates/admin.php:44
msgid "Module 'fileinfo' missing"
@ -233,7 +233,7 @@ msgid ""
"System locale can't be set to %s. This means that there might be problems "
"with certain characters in file names. We strongly suggest to install the "
"required packages on your system to support %s."
msgstr ""
msgstr "Le localisation du système n'a pu être configurée à %s. Cela signifie qu'il pourrait y avoir des problèmes avec certains caractères dans les noms de fichiers. Il est fortement recommandé d'installer les paquets requis pour le support de %s."
#: templates/admin.php:75
msgid "Internet connection not working"
@ -246,7 +246,7 @@ msgid ""
"installation of 3rd party apps don´t work. Accessing files from remote and "
"sending of notification emails might also not work. We suggest to enable "
"internet connection for this server if you want to have all features."
msgstr ""
msgstr "Ce serveur ne peut se connecter à internet. Cela signifie que certaines fonctionnalités, telles que le montage de supports de stockage distants, les notifications de mises à jour ou l'installation d'applications tierces ne fonctionneront pas. L'accès aux fichiers à distance, ainsi que les notifications par mails ne seront pas fonctionnels également. Il est recommandé d'activer la connexion internet pour ce serveur si vous souhaitez disposer de l'ensemble des fonctionnalités offertes."
#: templates/admin.php:92
msgid "Cron"
@ -260,11 +260,11 @@ msgstr "Exécute une tâche à chaque chargement de page"
msgid ""
"cron.php is registered at a webcron service to call cron.php once a minute "
"over http."
msgstr ""
msgstr "cron.php est enregistré en tant que service webcron pour appeler cron.php une fois par minute via http."
#: templates/admin.php:115
msgid "Use systems cron service to call the cron.php file once a minute."
msgstr ""
msgstr "Utilise le service cron du système pour appeler cron.php une fois par minute."
#: templates/admin.php:120
msgid "Sharing"
@ -288,12 +288,12 @@ msgstr "Autoriser les utilisateurs à partager des éléments publiquement à l'
#: templates/admin.php:143
msgid "Allow public uploads"
msgstr ""
msgstr "Autoriser les téléversements publics"
#: templates/admin.php:144
msgid ""
"Allow users to enable others to upload into their publicly shared folders"
msgstr ""
msgstr "Permet d'autoriser les autres utilisateurs à téléverser dans le dossier partagé public de l'utilisateur"
#: templates/admin.php:152
msgid "Allow resharing"
@ -322,14 +322,14 @@ msgstr "Forcer HTTPS"
#: templates/admin.php:185
#, php-format
msgid "Forces the clients to connect to %s via an encrypted connection."
msgstr ""
msgstr "Forcer les clients à se connecter à %s via une connexion chiffrée."
#: templates/admin.php:191
#, php-format
msgid ""
"Please connect to your %s via HTTPS to enable or disable the SSL "
"enforcement."
msgstr ""
msgstr "Veuillez vous connecter à cette instance %s via HTTPS pour activer ou désactiver SSL."
#: templates/admin.php:203
msgid "Log"
@ -483,15 +483,15 @@ msgstr "Chiffrement"
#: templates/personal.php:119
msgid "The encryption app is no longer enabled, decrypt all your file"
msgstr ""
msgstr "L'application de chiffrement n'est plus activée, déchiffrez tous vos fichiers"
#: templates/personal.php:125
msgid "Log-in password"
msgstr ""
msgstr "Mot de passe de connexion"
#: templates/personal.php:130
msgid "Decrypt all Files"
msgstr ""
msgstr "Déchiffrer tous les fichiers"
#: templates/users.php:21
msgid "Login Name"

View File

@ -5,7 +5,7 @@
# Translators:
# Adalberto Rodrigues <rodrigues_adalberto@yahoo.fr>, 2013
# Christophe Lherieau <skimpax@gmail.com>, 2013
# mishka <mishka.lazzlo@gmail.com>, 2013
# mishka, 2013
# ouafnico <nicolas@shivaserv.fr>, 2012
# Robert Di Rosa <>, 2012
# Romain DEP. <rom1dep@gmail.com>, 2012-2013
@ -13,9 +13,9 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
"POT-Creation-Date: 2013-07-27 01:56-0400\n"
"PO-Revision-Date: 2013-07-27 05:57+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
"POT-Creation-Date: 2013-09-03 07:43-0400\n"
"PO-Revision-Date: 2013-09-03 10:00+0000\n"
"Last-Translator: Christophe Lherieau <skimpax@gmail.com>\n"
"Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -29,11 +29,11 @@ msgstr "Authentification WebDAV"
#: templates/settings.php:4
msgid "Address: "
msgstr ""
msgstr "Adresse :"
#: templates/settings.php:7
msgid ""
"The user credentials will be sent to this address. This plugin checks the "
"response and will interpret the HTTP statuscodes 401 and 403 as invalid "
"credentials, and all other responses as valid credentials."
msgstr ""
msgstr "Les informations de connexion de l'utilisateur seront envoyées à cette adresse. Ce module analyse le code de la réponse HTTP et considère les codes 401 et 403 comme une authentification invalide et tout autre valeur comme une authentification valide."

View File

@ -3,14 +3,15 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Debanjum <debanjum@gmail.com>, 2013
# rktaiwala <rktaiwala@gmail.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
"POT-Creation-Date: 2013-08-30 09:32-0400\n"
"PO-Revision-Date: 2013-08-30 13:33+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
"POT-Creation-Date: 2013-09-03 07:43-0400\n"
"PO-Revision-Date: 2013-09-03 11:00+0000\n"
"Last-Translator: Debanjum <debanjum@gmail.com>\n"
"Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -54,7 +55,7 @@ msgstr ""
#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25
msgid "Category type not provided."
msgstr ""
msgstr "कैटेगरी प्रकार उपलब्ध नहीं है"
#: ajax/vcategories/add.php:30
msgid "No category to add?"
@ -63,13 +64,13 @@ msgstr ""
#: ajax/vcategories/add.php:37
#, php-format
msgid "This category already exists: %s"
msgstr ""
msgstr "यह कैटेगरी पहले से ही मौजूद है: %s"
#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27
#: ajax/vcategories/favorites.php:24
#: ajax/vcategories/removeFromFavorites.php:26
msgid "Object type not provided."
msgstr ""
msgstr "ऑब्जेक्ट प्रकार नहीं दिया हुआ"
#: ajax/vcategories/addToFavorites.php:30
#: ajax/vcategories/removeFromFavorites.php:30
@ -93,31 +94,31 @@ msgstr ""
#: js/config.php:32
msgid "Sunday"
msgstr ""
msgstr "रविवार"
#: js/config.php:33
msgid "Monday"
msgstr ""
msgstr "सोमवार"
#: js/config.php:34
msgid "Tuesday"
msgstr ""
msgstr "मंगलवार"
#: js/config.php:35
msgid "Wednesday"
msgstr ""
msgstr "बुधवार"
#: js/config.php:36
msgid "Thursday"
msgstr ""
msgstr "बृहस्पतिवार"
#: js/config.php:37
msgid "Friday"
msgstr ""
msgstr "शुक्रवार"
#: js/config.php:38
msgid "Saturday"
msgstr ""
msgstr "शनिवार"
#: js/config.php:43
msgid "January"
@ -318,7 +319,7 @@ msgstr ""
#: js/share.js:203
msgid "Send"
msgstr ""
msgstr "भेजें"
#: js/share.js:208
msgid "Set expiration date"
@ -386,11 +387,11 @@ msgstr ""
#: js/share.js:670
msgid "Sending ..."
msgstr ""
msgstr "भेजा जा रहा है"
#: js/share.js:681
msgid "Email sent"
msgstr ""
msgstr "ईमेल भेज दिया गया है "
#: js/update.js:17
msgid ""
@ -509,7 +510,7 @@ msgstr ""
#: templates/edit_categories_dialog.php:16
msgid "Add"
msgstr ""
msgstr "डाले"
#: templates/installation.php:24 templates/installation.php:31
#: templates/installation.php:38

View File

@ -3,13 +3,14 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# blackc0de <complic@vipmail.hu>, 2013
msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
"POT-Creation-Date: 2013-08-21 08:10-0400\n"
"PO-Revision-Date: 2013-08-19 19:20+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
"POT-Creation-Date: 2013-09-03 07:42-0400\n"
"PO-Revision-Date: 2013-09-01 19:30+0000\n"
"Last-Translator: blackc0de <complic@vipmail.hu>\n"
"Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -28,7 +29,7 @@ msgstr ""
#: ajax/adminrecovery.php:48
msgid "Recovery key successfully disabled"
msgstr ""
msgstr "Visszaállítási kulcs sikeresen kikapcsolva"
#: ajax/adminrecovery.php:53
msgid ""
@ -37,11 +38,11 @@ msgstr ""
#: ajax/changeRecoveryPassword.php:49
msgid "Password successfully changed."
msgstr ""
msgstr "Jelszó sikeresen megváltoztatva."
#: ajax/changeRecoveryPassword.php:51
msgid "Could not change the password. Maybe the old password was not correct."
msgstr ""
msgstr "A jelszót nem lehet megváltoztatni! Lehet, hogy hibás volt a régi jelszó."
#: ajax/updatePrivateKeyPassword.php:51
msgid "Private key password successfully updated."
@ -61,18 +62,18 @@ msgid ""
"files."
msgstr ""
#: hooks/hooks.php:41
#: hooks/hooks.php:51
msgid "Missing requirements."
msgstr ""
#: hooks/hooks.php:42
#: hooks/hooks.php:52
msgid ""
"Please make sure that PHP 5.3.3 or newer is installed and that OpenSSL "
"together with the PHP extension is enabled and configured properly. For now,"
" the encryption app has been disabled."
msgstr ""
msgstr "Kérlek győződj meg arról, hogy PHP 5.3.3 vagy annál frissebb van telepítve, valamint a PHP-hez tartozó OpenSSL bővítmény be van-e kapcsolva és az helyesen van-e konfigurálva! Ki lett kapcsolva ideiglenesen a titkosító alkalmazás."
#: hooks/hooks.php:249
#: hooks/hooks.php:250
msgid "Following users are not set up for encryption:"
msgstr ""
@ -92,7 +93,7 @@ msgstr ""
#: templates/invalid_private_key.php:7
msgid "personal settings"
msgstr ""
msgstr "személyes beállítások"
#: templates/settings-admin.php:5 templates/settings-personal.php:4
msgid "Encryption"
@ -109,11 +110,11 @@ msgstr ""
#: templates/settings-admin.php:21 templates/settings-personal.php:54
msgid "Enabled"
msgstr ""
msgstr "Bekapcsolva"
#: templates/settings-admin.php:29 templates/settings-personal.php:62
msgid "Disabled"
msgstr ""
msgstr "Kikapcsolva"
#: templates/settings-admin.php:34
msgid "Change recovery key password:"
@ -129,7 +130,7 @@ msgstr ""
#: templates/settings-admin.php:53
msgid "Change Password"
msgstr ""
msgstr "Jelszó megváltoztatása"
#: templates/settings-personal.php:11
msgid "Your private key password no longer match your log-in password:"
@ -147,19 +148,19 @@ msgstr ""
#: templates/settings-personal.php:24
msgid "Old log-in password"
msgstr ""
msgstr "Régi bejelentkezési jelszó"
#: templates/settings-personal.php:30
msgid "Current log-in password"
msgstr ""
msgstr "Jelenlegi bejelentkezési jelszó"
#: templates/settings-personal.php:35
msgid "Update Private Key Password"
msgstr ""
msgstr "Privát kulcs jelszó frissítése"
#: templates/settings-personal.php:45
msgid "Enable password recovery:"
msgstr ""
msgstr "Jelszó-visszaállítás bekapcsolása"
#: templates/settings-personal.php:47
msgid ""

View File

@ -10,9 +10,9 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
"POT-Creation-Date: 2013-09-01 13:27-0400\n"
"PO-Revision-Date: 2013-08-30 13:50+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
"POT-Creation-Date: 2013-09-03 07:42-0400\n"
"PO-Revision-Date: 2013-09-02 15:40+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"
@ -172,7 +172,7 @@ msgstr[1] ""
#: js/filelist.js:432
msgid "{dirs} and {files}"
msgstr ""
msgstr "{dirs} e {files}"
#: js/filelist.js:563
msgid "Uploading %n file"
@ -210,7 +210,7 @@ msgstr "Seu armazenamento está quase cheio ({usedSpacePercent}%)"
msgid ""
"Encryption was disabled but your files are still encrypted. Please go to "
"your personal settings to decrypt your files."
msgstr ""
msgstr "Encriptação foi desabilitada mas seus arquivos continuam encriptados. Por favor vá a suas configurações pessoais para descriptar seus arquivos."
#: js/files.js:245
msgid ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-09-01 13:27-0400\n"
"POT-Creation-Date: 2013-09-03 07:43-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"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-09-01 13:27-0400\n"
"POT-Creation-Date: 2013-09-03 07:42-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"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-09-01 13:27-0400\n"
"POT-Creation-Date: 2013-09-03 07:42-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"
@ -60,18 +60,18 @@ msgid ""
"files."
msgstr ""
#: hooks/hooks.php:41
#: hooks/hooks.php:51
msgid "Missing requirements."
msgstr ""
#: hooks/hooks.php:42
#: hooks/hooks.php:52
msgid ""
"Please make sure that PHP 5.3.3 or newer is installed and that OpenSSL "
"together with the PHP extension is enabled and configured properly. For now, "
"the encryption app has been disabled."
msgstr ""
#: hooks/hooks.php:249
#: hooks/hooks.php:250
msgid "Following users are not set up for encryption:"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-09-01 13:27-0400\n"
"POT-Creation-Date: 2013-09-03 07:43-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"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-09-01 13:27-0400\n"
"POT-Creation-Date: 2013-09-03 07:43-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"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-09-01 13:27-0400\n"
"POT-Creation-Date: 2013-09-03 07:43-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"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-09-01 13:27-0400\n"
"POT-Creation-Date: 2013-09-03 07:43-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"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-09-01 13:27-0400\n"
"POT-Creation-Date: 2013-09-03 07:44-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"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-09-01 13:27-0400\n"
"POT-Creation-Date: 2013-09-03 07:44-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"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-09-01 13:27-0400\n"
"POT-Creation-Date: 2013-09-03 07:43-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"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-09-01 13:27-0400\n"
"POT-Creation-Date: 2013-09-03 07:43-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"

View File

@ -73,11 +73,11 @@ class OC_App{
if (!defined('DEBUG') || !DEBUG) {
if (is_null($types)
&& empty(OC_Util::$core_scripts)
&& empty(OC_Util::$core_styles)) {
OC_Util::$core_scripts = OC_Util::$scripts;
&& empty(OC_Util::$coreScripts)
&& empty(OC_Util::$coreStyles)) {
OC_Util::$coreScripts = OC_Util::$scripts;
OC_Util::$scripts = array();
OC_Util::$core_styles = OC_Util::$styles;
OC_Util::$coreStyles = OC_Util::$styles;
OC_Util::$styles = array();
}
}

View File

@ -425,7 +425,7 @@ class OC {
}
self::initPaths();
OC_Util::issetlocaleworking();
OC_Util::isSetLocaleWorking();
// set debug mode if an xdebug session is active
if (!defined('DEBUG') || !DEBUG) {
@ -537,7 +537,7 @@ class OC {
}
// write error into log if locale can't be set
if (OC_Util::issetlocaleworking() == false) {
if (OC_Util::isSetLocaleWorking() == false) {
OC_Log::write('core',
'setting locale to en_US.UTF-8/en_US.UTF8 failed. Support is probably not installed on your system',
OC_Log::ERROR);
@ -776,7 +776,7 @@ class OC {
if (in_array($_COOKIE['oc_token'], $tokens, true)) {
// replace successfully used token with a new one
OC_Preferences::deleteKey($_COOKIE['oc_username'], 'login_token', $_COOKIE['oc_token']);
$token = OC_Util::generate_random_bytes(32);
$token = OC_Util::generateRandomBytes(32);
OC_Preferences::setValue($_COOKIE['oc_username'], 'login_token', $token, time());
OC_User::setMagicInCookie($_COOKIE['oc_username'], $token);
// login
@ -816,7 +816,7 @@ class OC {
if (defined("DEBUG") && DEBUG) {
OC_Log::write('core', 'Setting remember login to cookie', OC_Log::DEBUG);
}
$token = OC_Util::generate_random_bytes(32);
$token = OC_Util::generateRandomBytes(32);
OC_Preferences::setValue($userid, 'login_token', $token, time());
OC_User::setMagicInCookie($userid, $token);
} else {

View File

@ -37,13 +37,13 @@ $TRANSLATIONS = array(
"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Votre serveur web, n'est pas correctement configuré pour permettre la synchronisation des fichiers, car l'interface WebDav ne fonctionne pas comme il faut.",
"Please double check the <a href='%s'>installation guides</a>." => "Veuillez vous référer au <a href='%s'>guide d'installation</a>.",
"seconds ago" => "il y a quelques secondes",
"_%n minute ago_::_%n minutes ago_" => array("",""),
"_%n hour ago_::_%n hours ago_" => array("",""),
"_%n minute ago_::_%n minutes ago_" => array("","il y a %n minutes"),
"_%n hour ago_::_%n hours ago_" => array("","Il y a %n heures"),
"today" => "aujourd'hui",
"yesterday" => "hier",
"_%n day go_::_%n days ago_" => array("",""),
"_%n day go_::_%n days ago_" => array("","il y a %n jours"),
"last month" => "le mois dernier",
"_%n month ago_::_%n months ago_" => array("",""),
"_%n month ago_::_%n months ago_" => array("","Il y a %n mois"),
"last year" => "l'année dernière",
"years ago" => "il y a plusieurs années",
"Could not find category \"%s\"" => "Impossible de trouver la catégorie \"%s\""

View File

@ -463,7 +463,7 @@ class Share {
if (isset($oldToken)) {
$token = $oldToken;
} else {
$token = \OC_Util::generate_random_bytes(self::TOKEN_LENGTH);
$token = \OC_Util::generateRandomBytes(self::TOKEN_LENGTH);
}
$result = self::put($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $permissions,
null, $token);

View File

@ -61,7 +61,7 @@ class OC_Setup {
}
//generate a random salt that is used to salt the local user passwords
$salt = OC_Util::generate_random_bytes(30);
$salt = OC_Util::generateRandomBytes(30);
OC_Config::setValue('passwordsalt', $salt);
//write the config file

View File

@ -23,7 +23,7 @@ class MySQL extends AbstractDatabase {
$this->dbuser=substr('oc_'.$username, 0, 16);
if($this->dbuser!=$oldUser) {
//hash the password so we don't need to store the admin config in the config file
$this->dbpassword=\OC_Util::generate_random_bytes(30);
$this->dbpassword=\OC_Util::generateRandomBytes(30);
$this->createDBUser($connection);

View File

@ -65,7 +65,7 @@ class OCI extends AbstractDatabase {
//add prefix to the oracle user name to prevent collisions
$this->dbuser='oc_'.$username;
//create a new password so we don't need to store the admin config in the config file
$this->dbpassword=\OC_Util::generate_random_bytes(30);
$this->dbpassword=\OC_Util::generateRandomBytes(30);
//oracle passwords are treated as identifiers:
// must start with aphanumeric char

View File

@ -33,7 +33,7 @@ class PostgreSQL extends AbstractDatabase {
//add prefix to the postgresql user name to prevent collisions
$this->dbuser='oc_'.$username;
//create a new password so we don't need to store the admin config in the config file
$this->dbpassword=\OC_Util::generate_random_bytes(30);
$this->dbpassword=\OC_Util::generateRandomBytes(30);
$this->createDBUser($connection);

View File

@ -58,7 +58,7 @@ class OC_TemplateLayout extends OC_Template {
if (OC_Config::getValue('installed', false) && $renderas!='error') {
$this->append( 'jsfiles', OC_Helper::linkToRoute('js_config') . $versionParameter);
}
if (!empty(OC_Util::$core_scripts)) {
if (!empty(OC_Util::$coreScripts)) {
$this->append( 'jsfiles', OC_Helper::linkToRemoteBase('core.js', false) . $versionParameter);
}
foreach($jsfiles as $info) {
@ -71,7 +71,7 @@ class OC_TemplateLayout extends OC_Template {
// Add the css files
$cssfiles = self::findStylesheetFiles(OC_Util::$styles);
$this->assign('cssfiles', array());
if (!empty(OC_Util::$core_styles)) {
if (!empty(OC_Util::$coreStyles)) {
$this->append( 'cssfiles', OC_Helper::linkToRemoteBase('core.css', false) . $versionParameter);
}
foreach($cssfiles as $info) {

View File

@ -353,7 +353,7 @@ class OC_User {
* generates a password
*/
public static function generatePassword() {
return OC_Util::generate_random_bytes(30);
return OC_Util::generateRandomBytes(30);
}
/**

View File

@ -11,12 +11,18 @@ class OC_Util {
public static $headers=array();
private static $rootMounted=false;
private static $fsSetup=false;
public static $core_styles=array();
public static $core_scripts=array();
public static $coreStyles=array();
public static $coreScripts=array();
// Can be set up
public static function setupFS( $user = '' ) {// configure the initial filesystem based on the configuration
if(self::$fsSetup) {//setting up the filesystem twice can only lead to trouble
/**
* @brief Can be set up
* @param string $user
* @return boolean
* @description configure the initial filesystem based on the configuration
*/
public static function setupFS( $user = '' ) {
//setting up the filesystem twice can only lead to trouble
if(self::$fsSetup) {
return false;
}
@ -37,15 +43,16 @@ class OC_Util {
self::$fsSetup=true;
}
$CONFIG_DATADIRECTORY = OC_Config::getValue( "datadirectory", OC::$SERVERROOT."/data" );
$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'=>$CONFIG_DATADIRECTORY), '/');
self::$rootMounted=true;
\OC\Files\Filesystem::mount('\OC\Files\Storage\Local', array('datadir'=>$configDataDirectory), '/');
self::$rootMounted = true;
}
if( $user != "" ) { //if we aren't logged in, there is no use to set up the filesystem
//if we aren't logged in, there is no use to set up the filesystem
if( $user != "" ) {
$quota = self::getUserQuota($user);
if ($quota !== \OC\Files\SPACE_UNLIMITED) {
\OC\Files\Filesystem::addStorageWrapper(function($mountPoint, $storage) use ($quota, $user) {
@ -56,19 +63,19 @@ class OC_Util {
}
});
}
$user_dir = '/'.$user.'/files';
$user_root = OC_User::getHome($user);
$userdirectory = $user_root . '/files';
if( !is_dir( $userdirectory )) {
mkdir( $userdirectory, 0755, true );
$userDir = '/'.$user.'/files';
$userRoot = OC_User::getHome($user);
$userDirectory = $userRoot . '/files';
if( !is_dir( $userDirectory )) {
mkdir( $userDirectory, 0755, true );
}
//jail the user into his "home" directory
\OC\Files\Filesystem::init($user, $user_dir);
\OC\Files\Filesystem::init($user, $userDir);
$fileOperationProxy = new OC_FileProxy_FileOperations();
OC_FileProxy::register($fileOperationProxy);
OC_Hook::emit('OC_Filesystem', 'setup', array('user' => $user, 'user_dir' => $user_dir));
OC_Hook::emit('OC_Filesystem', 'setup', array('user' => $user, 'user_dir' => $userDir));
}
return true;
}
@ -85,14 +92,17 @@ class OC_Util {
}
}
/**
* @return void
*/
public static function tearDownFS() {
\OC\Files\Filesystem::tearDown();
self::$fsSetup=false;
self::$rootMounted=false;
self::$rootMounted=false;
}
/**
* get the current installed version of ownCloud
* @brief get the current installed version of ownCloud
* @return array
*/
public static function getVersion() {
@ -102,7 +112,7 @@ class OC_Util {
}
/**
* get the current installed version string of ownCloud
* @brief get the current installed version string of ownCloud
* @return string
*/
public static function getVersionString() {
@ -110,7 +120,7 @@ class OC_Util {
}
/**
* get the current installed edition of ownCloud. There is the community
* @description get the current installed edition of ownCloud. There is the community
* edition that just returns an empty string and the enterprise edition
* that returns "Enterprise".
* @return string
@ -120,103 +130,117 @@ class OC_Util {
}
/**
* add a javascript file
* @brief add a javascript file
*
* @param appid $application
* @param filename $file
* @param string $application
* @param filename $file
* @return void
*/
public static function addScript( $application, $file = null ) {
if( is_null( $file )) {
if ( is_null( $file )) {
$file = $application;
$application = "";
}
if( !empty( $application )) {
if ( !empty( $application )) {
self::$scripts[] = "$application/js/$file";
}else{
} else {
self::$scripts[] = "js/$file";
}
}
/**
* add a css file
* @brief add a css file
*
* @param appid $application
* @param filename $file
* @param string $application
* @param filename $file
* @return void
*/
public static function addStyle( $application, $file = null ) {
if( is_null( $file )) {
if ( is_null( $file )) {
$file = $application;
$application = "";
}
if( !empty( $application )) {
if ( !empty( $application )) {
self::$styles[] = "$application/css/$file";
}else{
} else {
self::$styles[] = "css/$file";
}
}
/**
* @brief Add a custom element to the header
* @param string tag tag name of the element
* @param string $tag tag name of the element
* @param array $attributes array of attributes for the element
* @param string $text the text content for the element
* @return void
*/
public static function addHeader( $tag, $attributes, $text='') {
self::$headers[] = array('tag'=>$tag, 'attributes'=>$attributes, 'text'=>$text);
self::$headers[] = array(
'tag'=>$tag,
'attributes'=>$attributes,
'text'=>$text
);
}
/**
* formats a timestamp in the "right" way
* @brief formats a timestamp in the "right" way
*
* @param int timestamp $timestamp
* @param bool dateOnly option to omit time from the result
* @param int $timestamp
* @param bool $dateOnly option to omit time from the result
* @return string timestamp
* @description adjust to clients timezone if we know it
*/
public static function formatDate( $timestamp, $dateOnly=false) {
if(\OC::$session->exists('timezone')) {//adjust to clients timezone if we know it
if(\OC::$session->exists('timezone')) {
$systemTimeZone = intval(date('O'));
$systemTimeZone=(round($systemTimeZone/100, 0)*60)+($systemTimeZone%100);
$clientTimeZone=\OC::$session->get('timezone')*60;
$offset=$clientTimeZone-$systemTimeZone;
$timestamp=$timestamp+$offset*60;
$systemTimeZone = (round($systemTimeZone/100, 0)*60) + ($systemTimeZone%100);
$clientTimeZone = \OC::$session->get('timezone')*60;
$offset = $clientTimeZone - $systemTimeZone;
$timestamp = $timestamp + $offset*60;
}
$l=OC_L10N::get('lib');
$l = OC_L10N::get('lib');
return $l->l($dateOnly ? 'date' : 'datetime', $timestamp);
}
/**
* check if the current server configuration is suitable for ownCloud
* @brief check if the current server configuration is suitable for ownCloud
* @return array arrays with error messages and hints
*/
public static function checkServer() {
// Assume that if checkServer() succeeded before in this session, then all is fine.
if(\OC::$session->exists('checkServer_suceeded') && \OC::$session->get('checkServer_suceeded'))
if(\OC::$session->exists('checkServer_suceeded') && \OC::$session->get('checkServer_suceeded')) {
return array();
}
$errors=array();
$errors = array();
$defaults = new \OC_Defaults();
$web_server_restart= false;
$webServerRestart = false;
//check for database drivers
if(!(is_callable('sqlite_open') or class_exists('SQLite3'))
and !is_callable('mysql_connect')
and !is_callable('pg_connect')
and !is_callable('oci_connect')) {
$errors[]=array('error'=>'No database drivers (sqlite, mysql, or postgresql) installed.',
'hint'=>'');//TODO: sane hint
$web_server_restart= true;
$errors[] = array(
'error'=>'No database drivers (sqlite, mysql, or postgresql) installed.',
'hint'=>'' //TODO: sane hint
);
$webServerRestart = true;
}
//common hint for all file permissons error messages
//common hint for all file permissions error messages
$permissionsHint = 'Permissions can usually be fixed by '
.'<a href="' . $defaults->getDocBaseUrl() . '/server/5.0/admin_manual/installation/installation_source.html#set-the-directory-permissions" target="_blank">giving the webserver write access to the root directory</a>.';
.'<a href="' . $defaults->getDocBaseUrl() . '/server/5.0/admin_manual/installation/installation_source.html'
.'#set-the-directory-permissions" target="_blank">giving the webserver write access to the root directory</a>.';
// Check if config folder is writable.
if(!is_writable(OC::$SERVERROOT."/config/") or !is_readable(OC::$SERVERROOT."/config/")) {
$errors[] = array(
'error' => "Can't write into config directory",
'hint' => 'This can usually be fixed by '
.'<a href="' . $defaults->getDocBaseUrl() . '/server/5.0/admin_manual/installation/installation_source.html#set-the-directory-permissions" target="_blank">giving the webserver write access to the config directory</a>.'
.'<a href="' . $defaults->getDocBaseUrl() . '/server/5.0/admin_manual/installation/installation_source.html'
.'#set-the-directory-permissions" target="_blank">giving the webserver write access to the config directory</a>.'
);
}
@ -228,7 +252,8 @@ class OC_Util {
$errors[] = array(
'error' => "Can't write into apps directory",
'hint' => 'This can usually be fixed by '
.'<a href="' . $defaults->getDocBaseUrl() . '/server/5.0/admin_manual/installation/installation_source.html#set-the-directory-permissions" target="_blank">giving the webserver write access to the apps directory</a> '
.'<a href="' . $defaults->getDocBaseUrl() . '/server/5.0/admin_manual/installation/installation_source.html'
.'#set-the-directory-permissions" target="_blank">giving the webserver write access to the apps directory</a> '
.'or disabling the appstore in the config file.'
);
}
@ -243,94 +268,131 @@ class OC_Util {
$errors[] = array(
'error' => "Can't create data directory (".$CONFIG_DATADIRECTORY.")",
'hint' => 'This can usually be fixed by '
.'<a href="' . $defaults->getDocBaseUrl() . '/server/5.0/admin_manual/installation/installation_source.html#set-the-directory-permissions" target="_blank">giving the webserver write access to the root directory</a>.'
.'<a href="' . $defaults->getDocBaseUrl() . '/server/5.0/admin_manual/installation/installation_source.html'
.'#set-the-directory-permissions" target="_blank">giving the webserver write access to the root directory</a>.'
);
}
} else if(!is_writable($CONFIG_DATADIRECTORY) or !is_readable($CONFIG_DATADIRECTORY)) {
$errors[]=array('error'=>'Data directory ('.$CONFIG_DATADIRECTORY.') not writable by ownCloud',
'hint'=>$permissionsHint);
$errors[] = array(
'error'=>'Data directory ('.$CONFIG_DATADIRECTORY.') not writable by ownCloud',
'hint'=>$permissionsHint
);
} else {
$errors = array_merge($errors, self::checkDataDirectoryPermissions($CONFIG_DATADIRECTORY));
}
$moduleHint = "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.',
'hint'=>'Please ask your server administrator to install the module.');
$web_server_restart=true;
$errors[] = array(
'error'=>'PHP module zip not installed.',
'hint'=>$moduleHint
);
$webServerRestart = true;
}
if(!class_exists('DOMDocument')) {
$errors[] = array('error' => 'PHP module dom not installed.',
'hint' => 'Please ask your server administrator to install the module.');
$web_server_restart =true;
$errors[] = array(
'error' => 'PHP module dom not installed.',
'hint' => $moduleHint
);
$webServerRestart =true;
}
if(!function_exists('xml_parser_create')) {
$errors[] = array('error' => 'PHP module libxml not installed.',
'hint' => 'Please ask your server administrator to install the module.');
$web_server_restart =true;
$errors[] = array(
'error' => 'PHP module libxml not installed.',
'hint' => $moduleHint
);
$webServerRestart = true;
}
if(!function_exists('mb_detect_encoding')) {
$errors[]=array('error'=>'PHP module mb multibyte not installed.',
'hint'=>'Please ask your server administrator to install the module.');
$web_server_restart=true;
$errors[] = array(
'error'=>'PHP module mb multibyte not installed.',
'hint'=>$moduleHint
);
$webServerRestart = true;
}
if(!function_exists('ctype_digit')) {
$errors[]=array('error'=>'PHP module ctype is not installed.',
'hint'=>'Please ask your server administrator to install the module.');
$web_server_restart=true;
$errors[] = array(
'error'=>'PHP module ctype is not installed.',
'hint'=>$moduleHint
);
$webServerRestart = true;
}
if(!function_exists('json_encode')) {
$errors[]=array('error'=>'PHP module JSON is not installed.',
'hint'=>'Please ask your server administrator to install the module.');
$web_server_restart=true;
$errors[] = array(
'error'=>'PHP module JSON is not installed.',
'hint'=>$moduleHint
);
$webServerRestart = true;
}
if(!extension_loaded('gd') || !function_exists('gd_info')) {
$errors[]=array('error'=>'PHP module GD is not installed.',
'hint'=>'Please ask your server administrator to install the module.');
$web_server_restart=true;
$errors[] = array(
'error'=>'PHP module GD is not installed.',
'hint'=>$moduleHint
);
$webServerRestart = true;
}
if(!function_exists('gzencode')) {
$errors[]=array('error'=>'PHP module zlib is not installed.',
'hint'=>'Please ask your server administrator to install the module.');
$web_server_restart=true;
$errors[] = array(
'error'=>'PHP module zlib is not installed.',
'hint'=>$moduleHint
);
$webServerRestart = true;
}
if(!function_exists('iconv')) {
$errors[]=array('error'=>'PHP module iconv is not installed.',
'hint'=>'Please ask your server administrator to install the module.');
$web_server_restart=true;
$errors[] = array(
'error'=>'PHP module iconv is not installed.',
'hint'=>$moduleHint
);
$webServerRestart = true;
}
if(!function_exists('simplexml_load_string')) {
$errors[]=array('error'=>'PHP module SimpleXML is not installed.',
'hint'=>'Please ask your server administrator to install the module.');
$web_server_restart=true;
$errors[] = array(
'error'=>'PHP module SimpleXML is not installed.',
'hint'=>$moduleHint
);
$webServerRestart = true;
}
if(floatval(phpversion())<5.3) {
$errors[]=array('error'=>'PHP 5.3 is required.',
if(floatval(phpversion()) < 5.3) {
$errors[] = array(
'error'=>'PHP 5.3 is required.',
'hint'=>'Please ask your server administrator to update PHP to version 5.3 or higher.'
.' PHP 5.2 is no longer supported by ownCloud and the PHP community.');
$web_server_restart=true;
.' PHP 5.2 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.',
'hint'=>'Please ask your server administrator to install the module.');
$web_server_restart=true;
$errors[] = array(
'error'=>'PHP PDO module is not installed.',
'hint'=>$moduleHint
);
$webServerRestart = true;
}
if (((strtolower(@ini_get('safe_mode')) == 'on')
|| (strtolower(@ini_get('safe_mode')) == 'yes')
|| (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.');
$web_server_restart=true;
$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.'
);
$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.');
$web_server_restart=true;
$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.'
);
$webServerRestart = true;
}
if($web_server_restart) {
$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.');
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.'
);
}
// Cache the result of this function
@ -357,30 +419,36 @@ class OC_Util {
}
/**
* Check for correct file permissions of data directory
* @return array arrays with error messages and hints
*/
* @brief Check for correct file permissions of data directory
* @paran string $dataDirectory
* @return array arrays with error messages and hints
*/
public static function checkDataDirectoryPermissions($dataDirectory) {
$errors = array();
if (stristr(PHP_OS, 'WIN')) {
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.';
$prems = substr(decoct(@fileperms($dataDirectory)), -3);
if (substr($prems, -1) != '0') {
$perms = substr(decoct(@fileperms($dataDirectory)), -3);
if (substr($perms, -1) != '0') {
OC_Helper::chmodr($dataDirectory, 0770);
clearstatcache();
$prems = substr(decoct(@fileperms($dataDirectory)), -3);
if (substr($prems, 2, 1) != '0') {
$errors[] = array('error' => 'Data directory ('.$dataDirectory.') is readable for other users',
'hint' => $permissionsModHint);
$perms = substr(decoct(@fileperms($dataDirectory)), -3);
if (substr($perms, 2, 1) != '0') {
$errors[] = array(
'error' => 'Data directory ('.$dataDirectory.') is readable for other users',
'hint' => $permissionsModHint
);
}
}
}
return $errors;
}
/**
* @return void
*/
public static function displayLoginPage($errors = array()) {
$parameters = array();
foreach( $errors as $key => $value ) {
@ -394,8 +462,8 @@ class OC_Util {
$parameters['user_autofocus'] = true;
}
if (isset($_REQUEST['redirect_url'])) {
$redirect_url = $_REQUEST['redirect_url'];
$parameters['redirect_url'] = urlencode($redirect_url);
$redirectUrl = $_REQUEST['redirect_url'];
$parameters['redirect_url'] = urlencode($redirectUrl);
}
$parameters['alt_login'] = OC_App::getAlternativeLogIns();
@ -404,7 +472,8 @@ class OC_Util {
/**
* Check if the app is enabled, redirects to home if not
* @brief Check if the app is enabled, redirects to home if not
* @return void
*/
public static function checkAppEnabled($app) {
if( !OC_App::isEnabled($app)) {
@ -416,18 +485,21 @@ class OC_Util {
/**
* Check if the user is logged in, redirects to home if not. With
* redirect URL parameter to the request URI.
* @return void
*/
public static function checkLoggedIn() {
// Check if we are a user
if( !OC_User::isLoggedIn()) {
header( 'Location: '.OC_Helper::linkToAbsolute( '', 'index.php',
array('redirect_url' => OC_Request::requestUri())));
array('redirectUrl' => OC_Request::requestUri())
));
exit();
}
}
/**
* Check if the user is a admin, redirects to home if not
* @brief Check if the user is a admin, redirects to home if not
* @return void
*/
public static function checkAdminUser() {
if( !OC_User::isAdminUser(OC_User::getUser())) {
@ -437,7 +509,7 @@ class OC_Util {
}
/**
* Check if the user is a subadmin, redirects to home if not
* @brief Check if the user is a subadmin, redirects to home if not
* @return array $groups where the current user is subadmin
*/
public static function checkSubAdminUser() {
@ -449,7 +521,8 @@ class OC_Util {
}
/**
* Redirect to the user default page
* @brief Redirect to the user default page
* @return void
*/
public static function redirectToDefaultPage() {
if(isset($_REQUEST['redirect_url'])) {
@ -457,13 +530,11 @@ class OC_Util {
}
else if (isset(OC::$REQUESTEDAPP) && !empty(OC::$REQUESTEDAPP)) {
$location = OC_Helper::linkToAbsolute( OC::$REQUESTEDAPP, 'index.php' );
}
else {
$defaultpage = OC_Appconfig::getValue('core', 'defaultpage');
if ($defaultpage) {
$location = OC_Helper::makeURLAbsolute(OC::$WEBROOT.'/'.$defaultpage);
}
else {
} else {
$defaultPage = OC_Appconfig::getValue('core', 'defaultpage');
if ($defaultPage) {
$location = OC_Helper::makeURLAbsolute(OC::$WEBROOT.'/'.$defaultPage);
} else {
$location = OC_Helper::linkToAbsolute( 'files', 'index.php' );
}
}
@ -472,28 +543,28 @@ class OC_Util {
exit();
}
/**
* get an id unique for this instance
* @return string
*/
public static function getInstanceId() {
$id = OC_Config::getValue('instanceid', null);
if(is_null($id)) {
// We need to guarantee at least one letter in instanceid so it can be used as the session_name
$id = 'oc' . OC_Util::generate_random_bytes(10);
OC_Config::setValue('instanceid', $id);
}
return $id;
}
/**
* @brief get an id unique for this instance
* @return string
*/
public static function getInstanceId() {
$id = OC_Config::getValue('instanceid', null);
if(is_null($id)) {
// We need to guarantee at least one letter in instanceid so it can be used as the session_name
$id = 'oc' . self::generateRandomBytes(10);
OC_Config::setValue('instanceid', $id);
}
return $id;
}
/**
* @brief Static lifespan (in seconds) when a request token expires.
* @see OC_Util::callRegister()
* @see OC_Util::isCallRegistered()
* @description
* Also required for the client side to compute the piont in time when to
* Also required for the client side to compute the point in time when to
* request a fresh token. The client will do so when nearly 97% of the
* timespan coded here has expired.
* time span coded here has expired.
*/
public static $callLifespan = 3600; // 3600 secs = 1 hour
@ -513,7 +584,7 @@ class OC_Util {
// Check if a token exists
if(!\OC::$session->exists('requesttoken')) {
// No valid token found, generate a new one.
$requestToken = self::generate_random_bytes(20);
$requestToken = self::generateRandomBytes(20);
\OC::$session->set('requesttoken', $requestToken);
} else {
// Valid token already exists, send it
@ -534,11 +605,11 @@ class OC_Util {
}
if(isset($_GET['requesttoken'])) {
$token=$_GET['requesttoken'];
$token = $_GET['requesttoken'];
} elseif(isset($_POST['requesttoken'])) {
$token=$_POST['requesttoken'];
$token = $_POST['requesttoken'];
} elseif(isset($_SERVER['HTTP_REQUESTTOKEN'])) {
$token=$_SERVER['HTTP_REQUESTTOKEN'];
$token = $_SERVER['HTTP_REQUESTTOKEN'];
} else {
//no token found.
return false;
@ -556,11 +627,12 @@ class OC_Util {
/**
* @brief Check an ajax get/post call if the request token is valid. exit if not.
* Todo: Write howto
* @todo Write howto
* @return void
*/
public static function callCheck() {
if(!OC_Util::isCallRegistered()) {
exit;
exit();
}
}
@ -570,14 +642,15 @@ class OC_Util {
* This function is used to sanitize HTML and should be applied on any
* string or array of strings before displaying it on a web page.
*
* @param string or array of strings
* @param string|array of strings
* @return array with sanitized strings or a single sanitized string, depends on the input parameter.
*/
public static function sanitizeHTML( &$value ) {
if (is_array($value)) {
array_walk_recursive($value, 'OC_Util::sanitizeHTML');
} else {
$value = htmlentities((string)$value, ENT_QUOTES, 'UTF-8'); //Specify encoding for PHP<5.4
//Specify encoding for PHP<5.4
$value = htmlentities((string)$value, ENT_QUOTES, 'UTF-8');
}
return $value;
}
@ -599,17 +672,20 @@ class OC_Util {
}
/**
* Check if the htaccess file is working by creating a test file in the data directory and trying to access via http
* @brief Check if the htaccess file is working
* @return bool
* @description Check if the htaccess file is working by creating a test
* file in the data directory and trying to access via http
*/
public static function ishtaccessworking() {
public static function isHtAccessWorking() {
// testdata
$filename='/htaccesstest.txt';
$testcontent='testcontent';
$fileName = '/htaccesstest.txt';
$testContent = 'testcontent';
// creating a test file
$testfile = OC_Config::getValue( "datadirectory", OC::$SERVERROOT."/data" ).'/'.$filename;
$testFile = OC_Config::getValue( "datadirectory", OC::$SERVERROOT."/data" ).'/'.$fileName;
if(file_exists($testfile)) {// already running this test, possible recursive call
if(file_exists($testFile)) {// already running this test, possible recursive call
return false;
}
@ -618,7 +694,7 @@ class OC_Util {
@fclose($fp);
// accessing the file via http
$url = OC_Helper::makeURLAbsolute(OC::$WEBROOT.'/data'.$filename);
$url = OC_Helper::makeURLAbsolute(OC::$WEBROOT.'/data'.$fileName);
$fp = @fopen($url, 'r');
$content=@fread($fp, 2048);
@fclose($fp);
@ -627,20 +703,21 @@ class OC_Util {
@unlink($testfile);
// does it work ?
if($content==$testcontent) {
return(false);
}else{
return(true);
if($content==$testContent) {
return false;
} else {
return true;
}
}
/**
* we test if webDAV is working properly
*
* @brief test if webDAV is working properly
* @return bool
* @description
* The basic assumption is that if the server returns 401/Not Authenticated for an unauthenticated PROPFIND
* the web server it self is setup properly.
*
* Why not an authenticated PROFIND and other verbs?
* Why not an authenticated PROPFIND and other verbs?
* - We don't have the password available
* - We have no idea about other auth methods implemented (e.g. OAuth with Bearer header)
*
@ -654,7 +731,7 @@ class OC_Util {
);
// save the old timeout so that we can restore it later
$old_timeout=ini_get("default_socket_timeout");
$oldTimeout = ini_get("default_socket_timeout");
// use a 5 sec timeout for the check. Should be enough for local requests.
ini_set("default_socket_timeout", 5);
@ -668,24 +745,25 @@ class OC_Util {
try {
// test PROPFIND
$client->propfind('', array('{DAV:}resourcetype'));
} catch(\Sabre_DAV_Exception_NotAuthenticated $e) {
} catch (\Sabre_DAV_Exception_NotAuthenticated $e) {
$return = true;
} catch(\Exception $e) {
} catch (\Exception $e) {
OC_Log::write('core', 'isWebDAVWorking: NO - Reason: '.$e->getMessage(). ' ('.get_class($e).')', OC_Log::WARN);
$return = false;
}
// restore the original timeout
ini_set("default_socket_timeout", $old_timeout);
ini_set("default_socket_timeout", $oldTimeout);
return $return;
}
/**
* Check if the setlocal call doesn't work. This can happen if the right
* Check if the setlocal call does not work. This can happen if the right
* local packages are not available on the server.
* @return bool
*/
public static function issetlocaleworking() {
public static function isSetLocaleWorking() {
// setlocale test is pointless on Windows
if (OC_Util::runningOnWindows() ) {
return true;
@ -699,7 +777,7 @@ class OC_Util {
}
/**
* Check if the PHP module fileinfo is loaded.
* @brief Check if the PHP module fileinfo is loaded.
* @return bool
*/
public static function fileInfoLoaded() {
@ -707,7 +785,8 @@ class OC_Util {
}
/**
* Check if the ownCloud server can connect to the internet
* @brief Check if the ownCloud server can connect to the internet
* @return bool
*/
public static function isInternetConnectionWorking() {
// in case there is no internet connection on purpose return false
@ -720,30 +799,29 @@ class OC_Util {
if ($connected) {
fclose($connected);
return true;
}else{
} else {
// second try in case one server is down
$connected = @fsockopen("apps.owncloud.com", 80);
if ($connected) {
fclose($connected);
return true;
}else{
} else {
return false;
}
}
}
/**
* Check if the connection to the internet is disabled on purpose
* @brief Check if the connection to the internet is disabled on purpose
* @return bool
*/
public static function isInternetConnectionEnabled(){
return \OC_Config::getValue("has_internet_connection", true);
}
/**
* clear all levels of output buffering
* @brief clear all levels of output buffering
* @return void
*/
public static function obEnd(){
while (ob_get_level()) {
@ -753,47 +831,47 @@ class OC_Util {
/**
* @brief Generates a cryptographical secure pseudorandom string
* @param Int with the length of the random string
* @brief Generates a cryptographic secure pseudo-random string
* @param Int $length of the random string
* @return String
* Please also update secureRNG_available if you change something here
* Please also update secureRNGAvailable if you change something here
*/
public static function generate_random_bytes($length = 30) {
public static function generateRandomBytes($length = 30) {
// Try to use openssl_random_pseudo_bytes
if(function_exists('openssl_random_pseudo_bytes')) {
$pseudo_byte = bin2hex(openssl_random_pseudo_bytes($length, $strong));
if (function_exists('openssl_random_pseudo_bytes')) {
$pseudoByte = bin2hex(openssl_random_pseudo_bytes($length, $strong));
if($strong == true) {
return substr($pseudo_byte, 0, $length); // Truncate it to match the length
return substr($pseudoByte, 0, $length); // Truncate it to match the length
}
}
// Try to use /dev/urandom
$fp = @file_get_contents('/dev/urandom', false, null, 0, $length);
if ($fp !== false) {
$string = substr(bin2hex($fp), 0, $length);
return $string;
if (!self::runningOnWindows()) {
$fp = @file_get_contents('/dev/urandom', false, null, 0, $length);
if ($fp !== false) {
$string = substr(bin2hex($fp), 0, $length);
return $string;
}
}
// Fallback to mt_rand()
$characters = '0123456789';
$characters .= 'abcdefghijklmnopqrstuvwxyz';
$charactersLength = strlen($characters)-1;
$pseudo_byte = "";
$pseudoByte = "";
// Select some random characters
for ($i = 0; $i < $length; $i++) {
$pseudo_byte .= $characters[mt_rand(0, $charactersLength)];
$pseudoByte .= $characters[mt_rand(0, $charactersLength)];
}
return $pseudo_byte;
return $pseudoByte;
}
/**
* @brief Checks if a secure random number generator is available
* @return bool
*/
public static function secureRNG_available() {
public static function secureRNGAvailable() {
// Check openssl_random_pseudo_bytes
if(function_exists('openssl_random_pseudo_bytes')) {
openssl_random_pseudo_bytes(1, $strong);
@ -803,9 +881,11 @@ class OC_Util {
}
// Check /dev/urandom
$fp = @file_get_contents('/dev/urandom', false, null, 0, 1);
if ($fp !== false) {
return true;
if (!self::runningOnWindows()) {
$fp = @file_get_contents('/dev/urandom', false, null, 0, 1);
if ($fp !== false) {
return true;
}
}
return false;
@ -818,11 +898,8 @@ class OC_Util {
* This function get the content of a page via curl, if curl is enabled.
* If not, file_get_element is used.
*/
public static function getUrlContent($url){
if (function_exists('curl_init')) {
if (function_exists('curl_init')) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_HEADER, 0);
@ -833,10 +910,10 @@ class OC_Util {
curl_setopt($curl, CURLOPT_MAXREDIRS, 10);
curl_setopt($curl, CURLOPT_USERAGENT, "ownCloud Server Crawler");
if(OC_Config::getValue('proxy', '')<>'') {
if(OC_Config::getValue('proxy', '') != '') {
curl_setopt($curl, CURLOPT_PROXY, OC_Config::getValue('proxy'));
}
if(OC_Config::getValue('proxyuserpwd', '')<>'') {
if(OC_Config::getValue('proxyuserpwd', '') != '') {
curl_setopt($curl, CURLOPT_PROXYUSERPWD, OC_Config::getValue('proxyuserpwd'));
}
$data = curl_exec($curl);
@ -845,7 +922,7 @@ class OC_Util {
} else {
$contextArray = null;
if(OC_Config::getValue('proxy', '')<>'') {
if(OC_Config::getValue('proxy', '') != '') {
$contextArray = array(
'http' => array(
'timeout' => 10,
@ -860,11 +937,10 @@ class OC_Util {
);
}
$ctx = stream_context_create(
$contextArray
);
$data=@file_get_contents($url, 0, $ctx);
$data = @file_get_contents($url, 0, $ctx);
}
return $data;
@ -877,7 +953,6 @@ class OC_Util {
return (substr(PHP_OS, 0, 3) === "WIN");
}
/**
* Handles the case that there may not be a theme, then check if a "default"
* theme exists and take that one
@ -887,20 +962,19 @@ class OC_Util {
$theme = OC_Config::getValue("theme", '');
if($theme === '') {
if(is_dir(OC::$SERVERROOT . '/themes/default')) {
$theme = 'default';
}
}
return $theme;
}
/**
* Clear the opcode cache if one exists
* @brief Clear the opcode cache if one exists
* This is necessary for writing to the config file
* in case the opcode cache doesn't revalidate files
* in case the opcode cache does not re-validate files
* @return void
*/
public static function clearOpcodeCache() {
// APC
@ -939,8 +1013,10 @@ class OC_Util {
return $value;
}
public static function basename($file)
{
/**
* @return string
*/
public static function basename($file) {
$file = rtrim($file, '/');
$t = explode('/', $file);
return array_pop($t);

View File

@ -15,7 +15,7 @@ OC_App::setActiveNavigationEntry( "admin" );
$tmpl = new OC_Template( 'settings', 'admin', 'user');
$forms=OC_App::getForms('admin');
$htaccessworking=OC_Util::ishtaccessworking();
$htaccessworking=OC_Util::isHtAccessWorking();
$entries=OC_Log_Owncloud::getEntries(3);
$entriesremain = count(OC_Log_Owncloud::getEntries(4)) > 3;
@ -25,7 +25,7 @@ $tmpl->assign('entries', $entries);
$tmpl->assign('entriesremain', $entriesremain);
$tmpl->assign('htaccessworking', $htaccessworking);
$tmpl->assign('internetconnectionworking', OC_Util::isInternetConnectionEnabled() ? OC_Util::isInternetConnectionWorking() : false);
$tmpl->assign('islocaleworking', OC_Util::issetlocaleworking());
$tmpl->assign('islocaleworking', OC_Util::isSetLocaleWorking());
$tmpl->assign('isWebDavWorking', OC_Util::isWebDAVWorking());
$tmpl->assign('has_fileinfo', OC_Util::fileInfoLoaded());
$tmpl->assign('backgroundjobs_mode', OC_Appconfig::getValue('core', 'backgroundjobs_mode', 'ajax'));

View File

@ -20,11 +20,14 @@ $TRANSLATIONS = array(
"Disable" => "Désactiver",
"Enable" => "Activer",
"Please wait...." => "Veuillez patienter…",
"Error while disabling app" => "Erreur lors de la désactivation de l'application",
"Error while enabling app" => "Erreur lors de l'activation de l'application",
"Updating...." => "Mise à jour...",
"Error while updating app" => "Erreur lors de la mise à jour de l'application",
"Error" => "Erreur",
"Update" => "Mettre à jour",
"Updated" => "Mise à jour effectuée avec succès",
"Decrypting files... Please wait, this can take some time." => "Déchiffrement en cours... Cela peut prendre un certain temps.",
"Saving..." => "Enregistrement...",
"deleted" => "supprimé",
"undo" => "annuler",
@ -38,25 +41,35 @@ $TRANSLATIONS = array(
"A valid password must be provided" => "Un mot de passe valide doit être saisi",
"__language_name__" => "Français",
"Security Warning" => "Avertissement de sécurité",
"Your data directory and your files are probably accessible from the internet. The .htaccess file is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Votre dossier de données et vos fichiers sont probablement accessibles depuis internet. Le fichier .htaccess ne fonctionne pas. Nous vous recommandons vivement de configurer votre serveur web de façon à ce que ce dossier de données ne soit plus accessible, ou bien de le déplacer à l'extérieur de la racine du serveur web.",
"Setup Warning" => "Avertissement, problème de configuration",
"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Votre serveur web, n'est pas correctement configuré pour permettre la synchronisation des fichiers, car l'interface WebDav ne fonctionne pas comme il faut.",
"Please double check the <a href=\"%s\">installation guides</a>." => "Veuillez consulter à nouveau les <a href=\"%s\">guides d'installation</a>.",
"Module 'fileinfo' missing" => "Module 'fileinfo' manquant",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." => "Le module PHP 'fileinfo' est manquant. Il est vivement recommandé de l'activer afin d'obtenir de meilleurs résultats pour la détection des types de fichiers.",
"Locale not working" => "Localisation non fonctionnelle",
"System locale can't be set to %s. This means that there might be problems with certain characters in file names. We strongly suggest to install the required packages on your system to support %s." => "Le localisation du système n'a pu être configurée à %s. Cela signifie qu'il pourrait y avoir des problèmes avec certains caractères dans les noms de fichiers. Il est fortement recommandé d'installer les paquets requis pour le support de %s.",
"Internet connection not working" => "La connexion internet ne fonctionne pas",
"This server has no working internet connection. This means that some of the features like mounting of external storage, notifications about updates or installation of 3rd party apps don´t work. Accessing files from remote and sending of notification emails might also not work. We suggest to enable internet connection for this server if you want to have all features." => "Ce serveur ne peut se connecter à internet. Cela signifie que certaines fonctionnalités, telles que le montage de supports de stockage distants, les notifications de mises à jour ou l'installation d'applications tierces ne fonctionneront pas. L'accès aux fichiers à distance, ainsi que les notifications par mails ne seront pas fonctionnels également. Il est recommandé d'activer la connexion internet pour ce serveur si vous souhaitez disposer de l'ensemble des fonctionnalités offertes.",
"Cron" => "Cron",
"Execute one task with each page loaded" => "Exécute une tâche à chaque chargement de page",
"cron.php is registered at a webcron service to call cron.php once a minute over http." => "cron.php est enregistré en tant que service webcron pour appeler cron.php une fois par minute via http.",
"Use systems cron service to call the cron.php file once a minute." => "Utilise le service cron du système pour appeler cron.php une fois par minute.",
"Sharing" => "Partage",
"Enable Share API" => "Activer l'API de partage",
"Allow apps to use the Share API" => "Autoriser les applications à utiliser l'API de partage",
"Allow links" => "Autoriser les liens",
"Allow users to share items to the public with links" => "Autoriser les utilisateurs à partager des éléments publiquement à l'aide de liens",
"Allow public uploads" => "Autoriser les téléversements publics",
"Allow users to enable others to upload into their publicly shared folders" => "Permet d'autoriser les autres utilisateurs à téléverser dans le dossier partagé public de l'utilisateur",
"Allow resharing" => "Autoriser le repartage",
"Allow users to share items shared with them again" => "Autoriser les utilisateurs à partager des éléments qui ont été partagés avec eux",
"Allow users to share with anyone" => "Autoriser les utilisateurs à partager avec tout le monde",
"Allow users to only share with users in their groups" => "Autoriser les utilisateurs à partager avec des utilisateurs de leur groupe uniquement",
"Security" => "Sécurité",
"Enforce HTTPS" => "Forcer HTTPS",
"Forces the clients to connect to %s via an encrypted connection." => "Forcer les clients à se connecter à %s via une connexion chiffrée.",
"Please connect to your %s via HTTPS to enable or disable the SSL enforcement." => "Veuillez vous connecter à cette instance %s via HTTPS pour activer ou désactiver SSL.",
"Log" => "Log",
"Log level" => "Niveau de log",
"More" => "Plus",
@ -92,6 +105,9 @@ $TRANSLATIONS = array(
"WebDAV" => "WebDAV",
"Use this address to <a href=\"%s/server/5.0/user_manual/files/files.html\" target=\"_blank\">access your Files via WebDAV</a>" => "Utilisez cette adresse pour <a href=\"%s/server/5.0/user_manual/files/files.html\" target=\"_blank\">accéder à vos fichiers via WebDAV</a>",
"Encryption" => "Chiffrement",
"The encryption app is no longer enabled, decrypt all your file" => "L'application de chiffrement n'est plus activée, déchiffrez tous vos fichiers",
"Log-in password" => "Mot de passe de connexion",
"Decrypt all Files" => "Déchiffrer tous les fichiers",
"Login Name" => "Nom de la connexion",
"Create" => "Créer",
"Admin Recovery Password" => "Récupération du mot de passe administrateur",

View File

@ -15,7 +15,7 @@ class Test_DB extends PHPUnit_Framework_TestCase {
public function setUp() {
$dbfile = OC::$SERVERROOT.'/tests/data/db_structure.xml';
$r = '_'.OC_Util::generate_random_bytes('4').'_';
$r = '_'.OC_Util::generateRandomBytes('4').'_';
$content = file_get_contents( $dbfile );
$content = str_replace( '*dbprefix*', '*dbprefix*'.$r, $content );
file_put_contents( self::$schema_file, $content );

View File

@ -16,7 +16,7 @@ class Test_DBSchema extends PHPUnit_Framework_TestCase {
$dbfile = OC::$SERVERROOT.'/tests/data/db_structure.xml';
$dbfile2 = OC::$SERVERROOT.'/tests/data/db_structure2.xml';
$r = '_'.OC_Util::generate_random_bytes('4').'_';
$r = '_'.OC_Util::generateRandomBytes('4').'_';
$content = file_get_contents( $dbfile );
$content = str_replace( '*dbprefix*', '*dbprefix*'.$r, $content );
file_put_contents( $this->schema_file, $content );

View File

@ -71,8 +71,8 @@ class Test_Util extends PHPUnit_Framework_TestCase {
$this->assertTrue(\OC_Util::isInternetConnectionEnabled());
}
function testGenerate_random_bytes() {
$result = strlen(OC_Util::generate_random_bytes(59));
function testGenerateRandomBytes() {
$result = strlen(OC_Util::generateRandomBytes(59));
$this->assertEquals(59, $result);
}