Revert to stable version 3.5.4

This commit is contained in:
Hypolite Petovan 2018-02-11 19:00:01 -05:00
parent 38db18b624
commit 5360f08f42
355 changed files with 21449 additions and 4957 deletions

1647
appnet/AppDotNet.php Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,23 @@
-----BEGIN CERTIFICATE-----
MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j
ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL
MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3
LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug
RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm
+9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW
PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM
xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB
Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3
hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg
EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF
MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA
FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec
nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z
eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF
hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2
Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep
+OkuE6N36B9K
-----END CERTIFICATE-----

15
appnet/README.md Normal file
View file

@ -0,0 +1,15 @@
App.net Plugin
==============
With this addon to friendica you can give your users the possibility to post their *public* messages to App.net and
to import their timeline. The messages will be strapped their rich context and shortened to 256 characters length if
necessary.
Installation
------------
If you have an developer account you can create an Application for all of your users at
[https://account.app.net/developer/apps/](https://account.app.net/developer/apps/). Add the redirect uri
"https://your.server.name/appnet/connect" (Replace "your.server.name" with the hostname of your server)
If you can't create an application (because you only have a free account) this addon still works, but your users have to create individual applications on their own.

29
appnet/appnet.css Normal file
View file

@ -0,0 +1,29 @@
#appnet-import-label, #appnet-disconnect-label, #appnet-token-label,
#appnet-enable-label, #appnet-bydefault-label,
#appnet-clientid-label, #appnet-clientsecret-label {
float: left;
width: 200px;
margin-top: 10px;
}
#appnet-import, #appnet-disconnect, #appnet-token,
#appnet-checkbox, #appnet-bydefault,
#appnet-clientid, #appnet-clientsecret {
float: left;
margin-top: 10px;
}
#appnet-submit {
margin-top: 15px;
}
#appnet-avatar {
float: left;
width: 48px;
height: 48px;
padding: 2px;
}
#appnet-info-block {
height: 52px;
vertical-align: middle;
}

1358
appnet/appnet.php Normal file

File diff suppressed because it is too large Load diff

116
appnet/lang/C/messages.po Normal file
View file

@ -0,0 +1,116 @@
# ADDON appnet
# Copyright (C)
# This file is distributed under the same license as the Friendica appnet addon package.
#
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 11:47+0200\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"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: appnet.php:39
msgid "Permission denied."
msgstr ""
#: appnet.php:73
msgid "You are now authenticated to app.net. "
msgstr ""
#: appnet.php:77
msgid "<p>Error fetching token. Please try again.</p>"
msgstr ""
#: appnet.php:80
msgid "return to the connector page"
msgstr ""
#: appnet.php:94
msgid "Post to app.net"
msgstr ""
#: appnet.php:125 appnet.php:129
msgid "App.net Export"
msgstr ""
#: appnet.php:142
msgid "Currently connected to: "
msgstr ""
#: appnet.php:144
msgid "Enable App.net Post Plugin"
msgstr ""
#: appnet.php:149
msgid "Post to App.net by default"
msgstr ""
#: appnet.php:153
msgid "Import the remote timeline"
msgstr ""
#: appnet.php:159
msgid ""
"<p>Error fetching user profile. Please clear the configuration and try again."
"</p>"
msgstr ""
#: appnet.php:164
msgid "<p>You have two ways to connect to App.net.</p>"
msgstr ""
#: appnet.php:166
msgid ""
"<p>First way: Register an application at <a href=\"https://account.app.net/"
"developer/apps/\">https://account.app.net/developer/apps/</a> and enter "
"Client ID and Client Secret. "
msgstr ""
#: appnet.php:167
#, php-format
msgid "Use '%s' as Redirect URI<p>"
msgstr ""
#: appnet.php:169
msgid "Client ID"
msgstr ""
#: appnet.php:173
msgid "Client Secret"
msgstr ""
#: appnet.php:177
msgid ""
"<p>Second way: fetch a token at <a href=\"http://dev-lite.jonathonduerig.com/"
"\">http://dev-lite.jonathonduerig.com/</a>. "
msgstr ""
#: appnet.php:178
msgid ""
"Set these scopes: 'Basic', 'Stream', 'Write Post', 'Public Messages', "
"'Messages'.</p>"
msgstr ""
#: appnet.php:180
msgid "Token"
msgstr ""
#: appnet.php:192
msgid "Sign in using App.net"
msgstr ""
#: appnet.php:197
msgid "Clear OAuth configuration"
msgstr ""
#: appnet.php:204
msgid "Save Settings"
msgstr ""

118
appnet/lang/cs/messages.po Normal file
View file

@ -0,0 +1,118 @@
# ADDON appnet
# Copyright (C)
# This file is distributed under the same license as the Friendica appnet addon package.
#
#
# Translators:
# Michal Šupler <msupler@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 11:47+0200\n"
"PO-Revision-Date: 2014-07-02 15:24+0000\n"
"Last-Translator: Michal Šupler <msupler@gmail.com>\n"
"Language-Team: Czech (http://www.transifex.com/projects/p/friendica/language/cs/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: cs\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#: appnet.php:39
msgid "Permission denied."
msgstr "Přístup odmítnut."
#: appnet.php:73
msgid "You are now authenticated to app.net. "
msgstr "Nyní jste přihlášen k app.net."
#: appnet.php:77
msgid "<p>Error fetching token. Please try again.</p>"
msgstr "<p>Chyba v přenesení tokenu. Prosím zkuste to znovu.</p>"
#: appnet.php:80
msgid "return to the connector page"
msgstr "návrat ke stránce konektor"
#: appnet.php:94
msgid "Post to app.net"
msgstr "Poslat příspěvek na app.net"
#: appnet.php:125 appnet.php:129
msgid "App.net Export"
msgstr "App.net Export"
#: appnet.php:142
msgid "Currently connected to: "
msgstr "V současné době připojen k:"
#: appnet.php:144
msgid "Enable App.net Post Plugin"
msgstr "Aktivovat App.net Post Plugin"
#: appnet.php:149
msgid "Post to App.net by default"
msgstr "Defaultně poslat na App.net"
#: appnet.php:153
msgid "Import the remote timeline"
msgstr "Importovat vzdálenou časovou osu"
#: appnet.php:159
msgid ""
"<p>Error fetching user profile. Please clear the configuration and try "
"again.</p>"
msgstr "<p>Chyba v přenesení uživatelského profilu. Prosím zkuste smazat konfiguraci a zkusit to znovu.</p>"
#: appnet.php:164
msgid "<p>You have two ways to connect to App.net.</p>"
msgstr "<p>Máte nyní dvě možnosti jak se připojit k App.net.</p>"
#: appnet.php:166
msgid ""
"<p>First way: Register an application at <a "
"href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a>"
" and enter Client ID and Client Secret. "
msgstr "<p>První možnost: Registrovat svou žádost na <a href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a> a zadat Client ID and Client Secret. "
#: appnet.php:167
#, php-format
msgid "Use '%s' as Redirect URI<p>"
msgstr "Použít '%s' jako URI pro přesměrování<p>"
#: appnet.php:169
msgid "Client ID"
msgstr "Client ID"
#: appnet.php:173
msgid "Client Secret"
msgstr "Client Secret"
#: appnet.php:177
msgid ""
"<p>Second way: fetch a token at <a href=\"http://dev-"
"lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. "
msgstr "<p>Druhá možnost: vložit token do <a href=\"http://dev-lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. "
#: appnet.php:178
msgid ""
"Set these scopes: 'Basic', 'Stream', 'Write Post', 'Public Messages', "
"'Messages'.</p>"
msgstr "Nastavte tyto rámce: 'Základní', 'Stream', 'Psaní příspěvků, 'Veřejné zprávy', 'Zprávy'.</p>"
#: appnet.php:180
msgid "Token"
msgstr "Token"
#: appnet.php:192
msgid "Sign in using App.net"
msgstr "Přihlásit se s použitím App.net"
#: appnet.php:197
msgid "Clear OAuth configuration"
msgstr "Vymazat konfiguraci OAuth"
#: appnet.php:204
msgid "Save Settings"
msgstr "Uložit Nastavení"

View file

@ -0,0 +1,29 @@
<?php
if(! function_exists("string_plural_select_cs")) {
function string_plural_select_cs($n){
return ($n==1) ? 0 : ($n>=2 && $n<=4) ? 1 : 2;;
}}
;
$a->strings["Permission denied."] = "Přístup odmítnut.";
$a->strings["You are now authenticated to app.net. "] = "Nyní jste přihlášen k app.net.";
$a->strings["<p>Error fetching token. Please try again.</p>"] = "<p>Chyba v přenesení tokenu. Prosím zkuste to znovu.</p>";
$a->strings["return to the connector page"] = "návrat ke stránce konektor";
$a->strings["Post to app.net"] = "Poslat příspěvek na app.net";
$a->strings["App.net Export"] = "App.net Export";
$a->strings["Currently connected to: "] = "V současné době připojen k:";
$a->strings["Enable App.net Post Plugin"] = "Aktivovat App.net Post Plugin";
$a->strings["Post to App.net by default"] = "Defaultně poslat na App.net";
$a->strings["Import the remote timeline"] = "Importovat vzdálenou časovou osu";
$a->strings["<p>Error fetching user profile. Please clear the configuration and try again.</p>"] = "<p>Chyba v přenesení uživatelského profilu. Prosím zkuste smazat konfiguraci a zkusit to znovu.</p>";
$a->strings["<p>You have two ways to connect to App.net.</p>"] = "<p>Máte nyní dvě možnosti jak se připojit k App.net.</p>";
$a->strings["<p>First way: Register an application at <a href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a> and enter Client ID and Client Secret. "] = "<p>První možnost: Registrovat svou žádost na <a href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a> a zadat Client ID and Client Secret. ";
$a->strings["Use '%s' as Redirect URI<p>"] = "Použít '%s' jako URI pro přesměrování<p>";
$a->strings["Client ID"] = "Client ID";
$a->strings["Client Secret"] = "Client Secret";
$a->strings["<p>Second way: fetch a token at <a href=\"http://dev-lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. "] = "<p>Druhá možnost: vložit token do <a href=\"http://dev-lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. ";
$a->strings["Set these scopes: 'Basic', 'Stream', 'Write Post', 'Public Messages', 'Messages'.</p>"] = "Nastavte tyto rámce: 'Základní', 'Stream', 'Psaní příspěvků, 'Veřejné zprávy', 'Zprávy'.</p>";
$a->strings["Token"] = "Token";
$a->strings["Sign in using App.net"] = "Přihlásit se s použitím App.net";
$a->strings["Clear OAuth configuration"] = "Vymazat konfiguraci OAuth";
$a->strings["Save Settings"] = "Uložit Nastavení";

118
appnet/lang/de/messages.po Normal file
View file

@ -0,0 +1,118 @@
# ADDON appnet
# Copyright (C)
# This file is distributed under the same license as the Friendica appnet addon package.
#
#
# Translators:
# bavatar <tobias.diekershoff@gmx.net>, 2014
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 11:47+0200\n"
"PO-Revision-Date: 2014-06-25 04:31+0000\n"
"Last-Translator: bavatar <tobias.diekershoff@gmx.net>\n"
"Language-Team: German (http://www.transifex.com/projects/p/friendica/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: appnet.php:39
msgid "Permission denied."
msgstr "Zugriff verweigert."
#: appnet.php:73
msgid "You are now authenticated to app.net. "
msgstr "Du bist nun auf app.net authentifiziert."
#: appnet.php:77
msgid "<p>Error fetching token. Please try again.</p>"
msgstr "<p>Fehler beim Holen des Tokens, bitte versuche es später noch einmal.</p>"
#: appnet.php:80
msgid "return to the connector page"
msgstr "zurück zur Connector Seite"
#: appnet.php:94
msgid "Post to app.net"
msgstr "Nach app.net senden"
#: appnet.php:125 appnet.php:129
msgid "App.net Export"
msgstr "App.net Export"
#: appnet.php:142
msgid "Currently connected to: "
msgstr "Momentan verbunden mit: "
#: appnet.php:144
msgid "Enable App.net Post Plugin"
msgstr "Veröffentlichungen bei App.net erlauben"
#: appnet.php:149
msgid "Post to App.net by default"
msgstr "Standardmäßig bei App.net veröffentlichen"
#: appnet.php:153
msgid "Import the remote timeline"
msgstr "Importiere die entfernte Zeitleiste"
#: appnet.php:159
msgid ""
"<p>Error fetching user profile. Please clear the configuration and try "
"again.</p>"
msgstr "<p>Beim Laden des Nutzerprofils ist ein Fehler aufgetreten. Bitte versuche es später noch einmal.</p>"
#: appnet.php:164
msgid "<p>You have two ways to connect to App.net.</p>"
msgstr "<p>Du hast zwei Wege deinen friendica Account mit App.net zu verbinden.</p>"
#: appnet.php:166
msgid ""
"<p>First way: Register an application at <a "
"href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a>"
" and enter Client ID and Client Secret. "
msgstr "<p>Erster Weg: Registriere eine Anwendung unter <a href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a> und wähle eine Client ID und ein Client Secret."
#: appnet.php:167
#, php-format
msgid "Use '%s' as Redirect URI<p>"
msgstr "Verwende '%s' als Redirect URI<p>"
#: appnet.php:169
msgid "Client ID"
msgstr "Client ID"
#: appnet.php:173
msgid "Client Secret"
msgstr "Client Secret"
#: appnet.php:177
msgid ""
"<p>Second way: fetch a token at <a href=\"http://dev-"
"lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. "
msgstr "<p>Zweiter Weg: Beantrage ein Token unter <a href=\"http://dev-lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. "
#: appnet.php:178
msgid ""
"Set these scopes: 'Basic', 'Stream', 'Write Post', 'Public Messages', "
"'Messages'.</p>"
msgstr "Verwende folgende Scopes: 'Basic', 'Stream', 'Write Post', 'Public Messages', 'Messages'.</p>"
#: appnet.php:180
msgid "Token"
msgstr "Token"
#: appnet.php:192
msgid "Sign in using App.net"
msgstr "Per App.net anmelden"
#: appnet.php:197
msgid "Clear OAuth configuration"
msgstr "OAuth Konfiguration löschen"
#: appnet.php:204
msgid "Save Settings"
msgstr "Einstellungen speichern"

View file

@ -0,0 +1,29 @@
<?php
if(! function_exists("string_plural_select_de")) {
function string_plural_select_de($n){
return ($n != 1);;
}}
;
$a->strings["Permission denied."] = "Zugriff verweigert.";
$a->strings["You are now authenticated to app.net. "] = "Du bist nun auf app.net authentifiziert.";
$a->strings["<p>Error fetching token. Please try again.</p>"] = "<p>Fehler beim Holen des Tokens, bitte versuche es später noch einmal.</p>";
$a->strings["return to the connector page"] = "zurück zur Connector Seite";
$a->strings["Post to app.net"] = "Nach app.net senden";
$a->strings["App.net Export"] = "App.net Export";
$a->strings["Currently connected to: "] = "Momentan verbunden mit: ";
$a->strings["Enable App.net Post Plugin"] = "Veröffentlichungen bei App.net erlauben";
$a->strings["Post to App.net by default"] = "Standardmäßig bei App.net veröffentlichen";
$a->strings["Import the remote timeline"] = "Importiere die entfernte Zeitleiste";
$a->strings["<p>Error fetching user profile. Please clear the configuration and try again.</p>"] = "<p>Beim Laden des Nutzerprofils ist ein Fehler aufgetreten. Bitte versuche es später noch einmal.</p>";
$a->strings["<p>You have two ways to connect to App.net.</p>"] = "<p>Du hast zwei Wege deinen friendica Account mit App.net zu verbinden.</p>";
$a->strings["<p>First way: Register an application at <a href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a> and enter Client ID and Client Secret. "] = "<p>Erster Weg: Registriere eine Anwendung unter <a href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a> und wähle eine Client ID und ein Client Secret.";
$a->strings["Use '%s' as Redirect URI<p>"] = "Verwende '%s' als Redirect URI<p>";
$a->strings["Client ID"] = "Client ID";
$a->strings["Client Secret"] = "Client Secret";
$a->strings["<p>Second way: fetch a token at <a href=\"http://dev-lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. "] = "<p>Zweiter Weg: Beantrage ein Token unter <a href=\"http://dev-lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. ";
$a->strings["Set these scopes: 'Basic', 'Stream', 'Write Post', 'Public Messages', 'Messages'.</p>"] = "Verwende folgende Scopes: 'Basic', 'Stream', 'Write Post', 'Public Messages', 'Messages'.</p>";
$a->strings["Token"] = "Token";
$a->strings["Sign in using App.net"] = "Per App.net anmelden";
$a->strings["Clear OAuth configuration"] = "OAuth Konfiguration löschen";
$a->strings["Save Settings"] = "Einstellungen speichern";

118
appnet/lang/es/messages.po Normal file
View file

@ -0,0 +1,118 @@
# ADDON appnet
# Copyright (C)
# This file is distributed under the same license as the Friendica appnet addon package.
#
#
# Translators:
# Alberto Díaz Tormo <albertodiaztormo@gmail.com>, 2016
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 11:47+0200\n"
"PO-Revision-Date: 2016-10-13 21:25+0000\n"
"Last-Translator: Alberto Díaz Tormo <albertodiaztormo@gmail.com>\n"
"Language-Team: Spanish (http://www.transifex.com/Friendica/friendica/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: appnet.php:39
msgid "Permission denied."
msgstr "Permiso denegado"
#: appnet.php:73
msgid "You are now authenticated to app.net. "
msgstr "Ahora está autenticado en app.net."
#: appnet.php:77
msgid "<p>Error fetching token. Please try again.</p>"
msgstr "<p>Advertencia de error. Por favor inténtelo de nuevo.</p>"
#: appnet.php:80
msgid "return to the connector page"
msgstr "vuelva a pa página de conexón"
#: appnet.php:94
msgid "Post to app.net"
msgstr "Publique en app.net"
#: appnet.php:125 appnet.php:129
msgid "App.net Export"
msgstr "Exportar a app.net"
#: appnet.php:142
msgid "Currently connected to: "
msgstr "Actualmente conectado a:"
#: appnet.php:144
msgid "Enable App.net Post Plugin"
msgstr "Habilitar el plugin de publicación de App.net"
#: appnet.php:149
msgid "Post to App.net by default"
msgstr "Publicar en App.net por defecto"
#: appnet.php:153
msgid "Import the remote timeline"
msgstr "Importar la línea de tiempo remota"
#: appnet.php:159
msgid ""
"<p>Error fetching user profile. Please clear the configuration and try "
"again.</p>"
msgstr "<p>Advertencia de error de perfil. Por favor borre la configuración e inténtelo de nuevo.</p>"
#: appnet.php:164
msgid "<p>You have two ways to connect to App.net.</p>"
msgstr "<p>Tiene dos formas de conectar a App.net.</p>"
#: appnet.php:166
msgid ""
"<p>First way: Register an application at <a "
"href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a>"
" and enter Client ID and Client Secret. "
msgstr "<p>Primera forma: Registrar una aplicación en <a href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a> y seleccionar Client ID y Client Secret. "
#: appnet.php:167
#, php-format
msgid "Use '%s' as Redirect URI<p>"
msgstr "Use '%s' como Redirigir URI"
#: appnet.php:169
msgid "Client ID"
msgstr "ID de cliente"
#: appnet.php:173
msgid "Client Secret"
msgstr "Secreto de cliente"
#: appnet.php:177
msgid ""
"<p>Second way: fetch a token at <a href=\"http://dev-"
"lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. "
msgstr "<p>Segunda manera: traiga un símbolo a <a href=\"http://dev-lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>"
#: appnet.php:178
msgid ""
"Set these scopes: 'Basic', 'Stream', 'Write Post', 'Public Messages', "
"'Messages'.</p>"
msgstr "Seleccione estas posibilidades: 'Básico', 'Continuo', 'Escribir entrada', 'Mensajes públicos', 'Mensajes'.</p>"
#: appnet.php:180
msgid "Token"
msgstr "Símbolo"
#: appnet.php:192
msgid "Sign in using App.net"
msgstr "Regístrese usando App.net"
#: appnet.php:197
msgid "Clear OAuth configuration"
msgstr "Borre la configuración OAuth"
#: appnet.php:204
msgid "Save Settings"
msgstr "Guardar los ajustes"

View file

@ -0,0 +1,29 @@
<?php
if(! function_exists("string_plural_select_es")) {
function string_plural_select_es($n){
return ($n != 1);;
}}
;
$a->strings["Permission denied."] = "Permiso denegado";
$a->strings["You are now authenticated to app.net. "] = "Ahora está autenticado en app.net.";
$a->strings["<p>Error fetching token. Please try again.</p>"] = "<p>Advertencia de error. Por favor inténtelo de nuevo.</p>";
$a->strings["return to the connector page"] = "vuelva a pa página de conexón";
$a->strings["Post to app.net"] = "Publique en app.net";
$a->strings["App.net Export"] = "Exportar a app.net";
$a->strings["Currently connected to: "] = "Actualmente conectado a:";
$a->strings["Enable App.net Post Plugin"] = "Habilitar el plugin de publicación de App.net";
$a->strings["Post to App.net by default"] = "Publicar en App.net por defecto";
$a->strings["Import the remote timeline"] = "Importar la línea de tiempo remota";
$a->strings["<p>Error fetching user profile. Please clear the configuration and try again.</p>"] = "<p>Advertencia de error de perfil. Por favor borre la configuración e inténtelo de nuevo.</p>";
$a->strings["<p>You have two ways to connect to App.net.</p>"] = "<p>Tiene dos formas de conectar a App.net.</p>";
$a->strings["<p>First way: Register an application at <a href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a> and enter Client ID and Client Secret. "] = "<p>Primera forma: Registrar una aplicación en <a href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a> y seleccionar Client ID y Client Secret. ";
$a->strings["Use '%s' as Redirect URI<p>"] = "Use '%s' como Redirigir URI";
$a->strings["Client ID"] = "ID de cliente";
$a->strings["Client Secret"] = "Secreto de cliente";
$a->strings["<p>Second way: fetch a token at <a href=\"http://dev-lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. "] = "<p>Segunda manera: traiga un símbolo a <a href=\"http://dev-lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>";
$a->strings["Set these scopes: 'Basic', 'Stream', 'Write Post', 'Public Messages', 'Messages'.</p>"] = "Seleccione estas posibilidades: 'Básico', 'Continuo', 'Escribir entrada', 'Mensajes públicos', 'Mensajes'.</p>";
$a->strings["Token"] = "Símbolo";
$a->strings["Sign in using App.net"] = "Regístrese usando App.net";
$a->strings["Clear OAuth configuration"] = "Borre la configuración OAuth";
$a->strings["Save Settings"] = "Guardar los ajustes";

119
appnet/lang/fr/messages.po Normal file
View file

@ -0,0 +1,119 @@
# ADDON appnet
# Copyright (C)
# This file is distributed under the same license as the Friendica appnet addon package.
#
#
# Translators:
# Hypolite Petovan <mrpetovan@gmail.com>, 2016
# Jak <jacques@riseup.net>, 2014
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 11:47+0200\n"
"PO-Revision-Date: 2016-09-24 02:12+0000\n"
"Last-Translator: Hypolite Petovan <mrpetovan@gmail.com>\n"
"Language-Team: French (http://www.transifex.com/Friendica/friendica/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: appnet.php:39
msgid "Permission denied."
msgstr "Autorisation refusée"
#: appnet.php:73
msgid "You are now authenticated to app.net. "
msgstr "Vous êtes maintenant authentifié sur app.net"
#: appnet.php:77
msgid "<p>Error fetching token. Please try again.</p>"
msgstr "<p>Impossible d'obtenir le jeton, merci de réessayer.</p>"
#: appnet.php:80
msgid "return to the connector page"
msgstr "revenir à la page du connecteur"
#: appnet.php:94
msgid "Post to app.net"
msgstr "Publier sur app.net"
#: appnet.php:125 appnet.php:129
msgid "App.net Export"
msgstr "Export App.net"
#: appnet.php:142
msgid "Currently connected to: "
msgstr "Actuellement connecté à :"
#: appnet.php:144
msgid "Enable App.net Post Plugin"
msgstr "Activer le plugin de publication app.net"
#: appnet.php:149
msgid "Post to App.net by default"
msgstr "Publier sur App.net par défaut"
#: appnet.php:153
msgid "Import the remote timeline"
msgstr "Importer la timeline distante"
#: appnet.php:159
msgid ""
"<p>Error fetching user profile. Please clear the configuration and try "
"again.</p>"
msgstr "<p>Impossible d'obtenir le profil utilisateur. Merci de réinitialiser la configuration et de réessayer.</p>"
#: appnet.php:164
msgid "<p>You have two ways to connect to App.net.</p>"
msgstr "<p>Vous avez deux possibilités pour vous connecter à App.net.</p>"
#: appnet.php:166
msgid ""
"<p>First way: Register an application at <a "
"href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a>"
" and enter Client ID and Client Secret. "
msgstr "<p>Première méthode: Enregistrer une application sur <a href=\"https://account.app.net/developer/apps/\">App.net [en]</a> et entrez l'ID Client et le Secret Client. "
#: appnet.php:167
#, php-format
msgid "Use '%s' as Redirect URI<p>"
msgstr "Utilisez '%s' pour l'URI de Redirection"
#: appnet.php:169
msgid "Client ID"
msgstr "ID Client"
#: appnet.php:173
msgid "Client Secret"
msgstr "Secret Client"
#: appnet.php:177
msgid ""
"<p>Second way: fetch a token at <a href=\"http://dev-"
"lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. "
msgstr "<p>Deuxième méthode: obtenez un jeton ur <a href=\"http://dev-lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/ [en]</a>. "
#: appnet.php:178
msgid ""
"Set these scopes: 'Basic', 'Stream', 'Write Post', 'Public Messages', "
"'Messages'.</p>"
msgstr "Cochez les \"scopes\" suivant: \"Basic\", \"Stream\", \"Write Post\", \"Public Messages\", \"Messages\".</p>"
#: appnet.php:180
msgid "Token"
msgstr "Jeton"
#: appnet.php:192
msgid "Sign in using App.net"
msgstr "Se connecter avec App.net"
#: appnet.php:197
msgid "Clear OAuth configuration"
msgstr "Effacer la configuration OAuth"
#: appnet.php:204
msgid "Save Settings"
msgstr "Sauvegarder les paramètres"

View file

@ -0,0 +1,29 @@
<?php
if(! function_exists("string_plural_select_fr")) {
function string_plural_select_fr($n){
return ($n > 1);;
}}
;
$a->strings["Permission denied."] = "Autorisation refusée";
$a->strings["You are now authenticated to app.net. "] = "Vous êtes maintenant authentifié sur app.net";
$a->strings["<p>Error fetching token. Please try again.</p>"] = "<p>Impossible d'obtenir le jeton, merci de réessayer.</p>";
$a->strings["return to the connector page"] = "revenir à la page du connecteur";
$a->strings["Post to app.net"] = "Publier sur app.net";
$a->strings["App.net Export"] = "Export App.net";
$a->strings["Currently connected to: "] = "Actuellement connecté à :";
$a->strings["Enable App.net Post Plugin"] = "Activer le plugin de publication app.net";
$a->strings["Post to App.net by default"] = "Publier sur App.net par défaut";
$a->strings["Import the remote timeline"] = "Importer la timeline distante";
$a->strings["<p>Error fetching user profile. Please clear the configuration and try again.</p>"] = "<p>Impossible d'obtenir le profil utilisateur. Merci de réinitialiser la configuration et de réessayer.</p>";
$a->strings["<p>You have two ways to connect to App.net.</p>"] = "<p>Vous avez deux possibilités pour vous connecter à App.net.</p>";
$a->strings["<p>First way: Register an application at <a href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a> and enter Client ID and Client Secret. "] = "<p>Première méthode: Enregistrer une application sur <a href=\"https://account.app.net/developer/apps/\">App.net [en]</a> et entrez l'ID Client et le Secret Client. ";
$a->strings["Use '%s' as Redirect URI<p>"] = "Utilisez '%s' pour l'URI de Redirection";
$a->strings["Client ID"] = "ID Client";
$a->strings["Client Secret"] = "Secret Client";
$a->strings["<p>Second way: fetch a token at <a href=\"http://dev-lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. "] = "<p>Deuxième méthode: obtenez un jeton ur <a href=\"http://dev-lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/ [en]</a>. ";
$a->strings["Set these scopes: 'Basic', 'Stream', 'Write Post', 'Public Messages', 'Messages'.</p>"] = "Cochez les \"scopes\" suivant: \"Basic\", \"Stream\", \"Write Post\", \"Public Messages\", \"Messages\".</p>";
$a->strings["Token"] = "Jeton";
$a->strings["Sign in using App.net"] = "Se connecter avec App.net";
$a->strings["Clear OAuth configuration"] = "Effacer la configuration OAuth";
$a->strings["Save Settings"] = "Sauvegarder les paramètres";

118
appnet/lang/it/messages.po Normal file
View file

@ -0,0 +1,118 @@
# ADDON appnet
# Copyright (C)
# This file is distributed under the same license as the Friendica appnet addon package.
#
#
# Translators:
# fabrixxm <fabrix.xm@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 11:47+0200\n"
"PO-Revision-Date: 2014-09-10 10:18+0000\n"
"Last-Translator: fabrixxm <fabrix.xm@gmail.com>\n"
"Language-Team: Italian (http://www.transifex.com/Friendica/friendica/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: appnet.php:39
msgid "Permission denied."
msgstr "Permesso negato."
#: appnet.php:73
msgid "You are now authenticated to app.net. "
msgstr "Sei autenticato su app.net"
#: appnet.php:77
msgid "<p>Error fetching token. Please try again.</p>"
msgstr "<p>Errore recuperando il token. Prova di nuovo</p>"
#: appnet.php:80
msgid "return to the connector page"
msgstr "ritorna alla pagina del connettore"
#: appnet.php:94
msgid "Post to app.net"
msgstr "Invia ad app.net"
#: appnet.php:125 appnet.php:129
msgid "App.net Export"
msgstr "Esporta App.net"
#: appnet.php:142
msgid "Currently connected to: "
msgstr "Al momento connesso con:"
#: appnet.php:144
msgid "Enable App.net Post Plugin"
msgstr "Abilita il plugin di invio ad App.net"
#: appnet.php:149
msgid "Post to App.net by default"
msgstr "Invia sempre ad App.net"
#: appnet.php:153
msgid "Import the remote timeline"
msgstr "Importa la timeline remota"
#: appnet.php:159
msgid ""
"<p>Error fetching user profile. Please clear the configuration and try "
"again.</p>"
msgstr "<p>Errore recuperando il profilo utente. Svuota la configurazione e prova di nuovo.</p>"
#: appnet.php:164
msgid "<p>You have two ways to connect to App.net.</p>"
msgstr "<p>Puoi collegarti ad App.net in due modi.</p>"
#: appnet.php:166
msgid ""
"<p>First way: Register an application at <a "
"href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a>"
" and enter Client ID and Client Secret. "
msgstr "<p>Registrare un'applicazione su <a href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a> e inserire Client ID e Client Secret."
#: appnet.php:167
#, php-format
msgid "Use '%s' as Redirect URI<p>"
msgstr "Usa '%s' come Redirect URI</p>"
#: appnet.php:169
msgid "Client ID"
msgstr "Client ID"
#: appnet.php:173
msgid "Client Secret"
msgstr "Client Secret"
#: appnet.php:177
msgid ""
"<p>Second way: fetch a token at <a href=\"http://dev-"
"lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. "
msgstr "<p>Oppure puoi recuperare un token su <a href=\"http://dev-lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>."
#: appnet.php:178
msgid ""
"Set these scopes: 'Basic', 'Stream', 'Write Post', 'Public Messages', "
"'Messages'.</p>"
msgstr "Imposta gli ambiti 'Basic', 'Stream', 'Scrivi Post', 'Messaggi Pubblici', 'Messaggi'.</p>"
#: appnet.php:180
msgid "Token"
msgstr "Token"
#: appnet.php:192
msgid "Sign in using App.net"
msgstr "Autenticati con App.net"
#: appnet.php:197
msgid "Clear OAuth configuration"
msgstr "Pulisci configurazione OAuth"
#: appnet.php:204
msgid "Save Settings"
msgstr "Salva Impostazioni"

View file

@ -0,0 +1,29 @@
<?php
if(! function_exists("string_plural_select_it")) {
function string_plural_select_it($n){
return ($n != 1);;
}}
;
$a->strings["Permission denied."] = "Permesso negato.";
$a->strings["You are now authenticated to app.net. "] = "Sei autenticato su app.net";
$a->strings["<p>Error fetching token. Please try again.</p>"] = "<p>Errore recuperando il token. Prova di nuovo</p>";
$a->strings["return to the connector page"] = "ritorna alla pagina del connettore";
$a->strings["Post to app.net"] = "Invia ad app.net";
$a->strings["App.net Export"] = "Esporta App.net";
$a->strings["Currently connected to: "] = "Al momento connesso con:";
$a->strings["Enable App.net Post Plugin"] = "Abilita il plugin di invio ad App.net";
$a->strings["Post to App.net by default"] = "Invia sempre ad App.net";
$a->strings["Import the remote timeline"] = "Importa la timeline remota";
$a->strings["<p>Error fetching user profile. Please clear the configuration and try again.</p>"] = "<p>Errore recuperando il profilo utente. Svuota la configurazione e prova di nuovo.</p>";
$a->strings["<p>You have two ways to connect to App.net.</p>"] = "<p>Puoi collegarti ad App.net in due modi.</p>";
$a->strings["<p>First way: Register an application at <a href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a> and enter Client ID and Client Secret. "] = "<p>Registrare un'applicazione su <a href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a> e inserire Client ID e Client Secret.";
$a->strings["Use '%s' as Redirect URI<p>"] = "Usa '%s' come Redirect URI</p>";
$a->strings["Client ID"] = "Client ID";
$a->strings["Client Secret"] = "Client Secret";
$a->strings["<p>Second way: fetch a token at <a href=\"http://dev-lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. "] = "<p>Oppure puoi recuperare un token su <a href=\"http://dev-lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>.";
$a->strings["Set these scopes: 'Basic', 'Stream', 'Write Post', 'Public Messages', 'Messages'.</p>"] = "Imposta gli ambiti 'Basic', 'Stream', 'Scrivi Post', 'Messaggi Pubblici', 'Messaggi'.</p>";
$a->strings["Token"] = "Token";
$a->strings["Sign in using App.net"] = "Autenticati con App.net";
$a->strings["Clear OAuth configuration"] = "Pulisci configurazione OAuth";
$a->strings["Save Settings"] = "Salva Impostazioni";

118
appnet/lang/nl/messages.po Normal file
View file

@ -0,0 +1,118 @@
# ADDON appnet
# Copyright (C)
# This file is distributed under the same license as the Friendica appnet addon package.
#
#
# Translators:
# Jeroen S <j.soeurt@gmail.com>, 2016
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 11:47+0200\n"
"PO-Revision-Date: 2016-06-23 19:52+0000\n"
"Last-Translator: Jeroen S <j.soeurt@gmail.com>\n"
"Language-Team: Dutch (http://www.transifex.com/Friendica/friendica/language/nl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: nl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: appnet.php:39
msgid "Permission denied."
msgstr "Toegang geweigerd"
#: appnet.php:73
msgid "You are now authenticated to app.net. "
msgstr "Je bent nu aangemeld bij app.net."
#: appnet.php:77
msgid "<p>Error fetching token. Please try again.</p>"
msgstr "<p>Fout tijdens token fetching. Probeer het nogmaals.</p>"
#: appnet.php:80
msgid "return to the connector page"
msgstr "ga terug naar de connector pagina"
#: appnet.php:94
msgid "Post to app.net"
msgstr "Post naar app.net."
#: appnet.php:125 appnet.php:129
msgid "App.net Export"
msgstr "App.net Export"
#: appnet.php:142
msgid "Currently connected to: "
msgstr "Momenteel verbonden met:"
#: appnet.php:144
msgid "Enable App.net Post Plugin"
msgstr "App.net Post Plugin inschakelen"
#: appnet.php:149
msgid "Post to App.net by default"
msgstr "Naar App.net posten als standaard instellen"
#: appnet.php:153
msgid "Import the remote timeline"
msgstr "The tijdlijn op afstand importeren"
#: appnet.php:159
msgid ""
"<p>Error fetching user profile. Please clear the configuration and try "
"again.</p>"
msgstr "<p>Fout tijdens het ophalen van gebruikersprofiel. Leeg de configuratie en probeer het opnieuw.</p>"
#: appnet.php:164
msgid "<p>You have two ways to connect to App.net.</p>"
msgstr "<p>Er zijn twee manieren om met App.net te verbinden.</p>"
#: appnet.php:166
msgid ""
"<p>First way: Register an application at <a "
"href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a>"
" and enter Client ID and Client Secret. "
msgstr ""
#: appnet.php:167
#, php-format
msgid "Use '%s' as Redirect URI<p>"
msgstr ""
#: appnet.php:169
msgid "Client ID"
msgstr ""
#: appnet.php:173
msgid "Client Secret"
msgstr ""
#: appnet.php:177
msgid ""
"<p>Second way: fetch a token at <a href=\"http://dev-"
"lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. "
msgstr ""
#: appnet.php:178
msgid ""
"Set these scopes: 'Basic', 'Stream', 'Write Post', 'Public Messages', "
"'Messages'.</p>"
msgstr ""
#: appnet.php:180
msgid "Token"
msgstr ""
#: appnet.php:192
msgid "Sign in using App.net"
msgstr ""
#: appnet.php:197
msgid "Clear OAuth configuration"
msgstr ""
#: appnet.php:204
msgid "Save Settings"
msgstr ""

View file

@ -0,0 +1,29 @@
<?php
if(! function_exists("string_plural_select_nl")) {
function string_plural_select_nl($n){
return ($n != 1);;
}}
;
$a->strings["Permission denied."] = "Toegang geweigerd";
$a->strings["You are now authenticated to app.net. "] = "Je bent nu aangemeld bij app.net.";
$a->strings["<p>Error fetching token. Please try again.</p>"] = "<p>Fout tijdens token fetching. Probeer het nogmaals.</p>";
$a->strings["return to the connector page"] = "ga terug naar de connector pagina";
$a->strings["Post to app.net"] = "Post naar app.net.";
$a->strings["App.net Export"] = "App.net Export";
$a->strings["Currently connected to: "] = "Momenteel verbonden met:";
$a->strings["Enable App.net Post Plugin"] = "App.net Post Plugin inschakelen";
$a->strings["Post to App.net by default"] = "Naar App.net posten als standaard instellen";
$a->strings["Import the remote timeline"] = "The tijdlijn op afstand importeren";
$a->strings["<p>Error fetching user profile. Please clear the configuration and try again.</p>"] = "<p>Fout tijdens het ophalen van gebruikersprofiel. Leeg de configuratie en probeer het opnieuw.</p>";
$a->strings["<p>You have two ways to connect to App.net.</p>"] = "<p>Er zijn twee manieren om met App.net te verbinden.</p>";
$a->strings["<p>First way: Register an application at <a href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a> and enter Client ID and Client Secret. "] = "";
$a->strings["Use '%s' as Redirect URI<p>"] = "";
$a->strings["Client ID"] = "";
$a->strings["Client Secret"] = "";
$a->strings["<p>Second way: fetch a token at <a href=\"http://dev-lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. "] = "";
$a->strings["Set these scopes: 'Basic', 'Stream', 'Write Post', 'Public Messages', 'Messages'.</p>"] = "";
$a->strings["Token"] = "";
$a->strings["Sign in using App.net"] = "";
$a->strings["Clear OAuth configuration"] = "";
$a->strings["Save Settings"] = "";

View file

@ -0,0 +1,119 @@
# ADDON appnet
# Copyright (C)
# This file is distributed under the same license as the Friendica appnet addon package.
#
#
# Translators:
# Beatriz Vital <vitalb@riseup.net>, 2016
# Calango Jr <jcsojr@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 11:47+0200\n"
"PO-Revision-Date: 2016-08-19 20:37+0000\n"
"Last-Translator: Beatriz Vital <vitalb@riseup.net>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/Friendica/friendica/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: pt_BR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: appnet.php:39
msgid "Permission denied."
msgstr "Permissão negada."
#: appnet.php:73
msgid "You are now authenticated to app.net. "
msgstr "Você está autenticado no app.net."
#: appnet.php:77
msgid "<p>Error fetching token. Please try again.</p>"
msgstr "Erro ocorrido na obtenção do token. Tente novamente."
#: appnet.php:80
msgid "return to the connector page"
msgstr "Volte a página de conectores."
#: appnet.php:94
msgid "Post to app.net"
msgstr "Publicar no App.net"
#: appnet.php:125 appnet.php:129
msgid "App.net Export"
msgstr "App.net exportar"
#: appnet.php:142
msgid "Currently connected to: "
msgstr "Atualmente conectado em: "
#: appnet.php:144
msgid "Enable App.net Post Plugin"
msgstr "Habilitar plug-in para publicar no App.net"
#: appnet.php:149
msgid "Post to App.net by default"
msgstr "Publicar em App.net por padrão"
#: appnet.php:153
msgid "Import the remote timeline"
msgstr "Importar a linha do tempo remota"
#: appnet.php:159
msgid ""
"<p>Error fetching user profile. Please clear the configuration and try "
"again.</p>"
msgstr "Erro na obtenção do perfil do usuário. Confira as configurações e tente novamente."
#: appnet.php:164
msgid "<p>You have two ways to connect to App.net.</p>"
msgstr "<p>Você possui duas formas de conectar ao App.net</p>"
#: appnet.php:166
msgid ""
"<p>First way: Register an application at <a "
"href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a>"
" and enter Client ID and Client Secret. "
msgstr "<p>1º Método: Registre uma aplicação em <a href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a> e entre o Client ID e Client Secret"
#: appnet.php:167
#, php-format
msgid "Use '%s' as Redirect URI<p>"
msgstr "Use '%s' como URI redirecionador<p>"
#: appnet.php:169
msgid "Client ID"
msgstr "Client ID"
#: appnet.php:173
msgid "Client Secret"
msgstr "Client Secret"
#: appnet.php:177
msgid ""
"<p>Second way: fetch a token at <a href=\"http://dev-"
"lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. "
msgstr "<p>2º Método: obtenha um token em <a href=\"http://dev-lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. "
#: appnet.php:178
msgid ""
"Set these scopes: 'Basic', 'Stream', 'Write Post', 'Public Messages', "
"'Messages'.</p>"
msgstr "Adicione valor as estas saídas: 'Basic', 'Stream', 'Write Post', 'Public Messages', 'Messages'.</p>"
#: appnet.php:180
msgid "Token"
msgstr "Token"
#: appnet.php:192
msgid "Sign in using App.net"
msgstr "Entre usando o App.net"
#: appnet.php:197
msgid "Clear OAuth configuration"
msgstr "Limpar configuração OAuth"
#: appnet.php:204
msgid "Save Settings"
msgstr "Salvar Configurações"

View file

@ -0,0 +1,29 @@
<?php
if(! function_exists("string_plural_select_pt_br")) {
function string_plural_select_pt_br($n){
return ($n > 1);;
}}
;
$a->strings["Permission denied."] = "Permissão negada.";
$a->strings["You are now authenticated to app.net. "] = "Você está autenticado no app.net.";
$a->strings["<p>Error fetching token. Please try again.</p>"] = "Erro ocorrido na obtenção do token. Tente novamente.";
$a->strings["return to the connector page"] = "Volte a página de conectores.";
$a->strings["Post to app.net"] = "Publicar no App.net";
$a->strings["App.net Export"] = "App.net exportar";
$a->strings["Currently connected to: "] = "Atualmente conectado em: ";
$a->strings["Enable App.net Post Plugin"] = "Habilitar plug-in para publicar no App.net";
$a->strings["Post to App.net by default"] = "Publicar em App.net por padrão";
$a->strings["Import the remote timeline"] = "Importar a linha do tempo remota";
$a->strings["<p>Error fetching user profile. Please clear the configuration and try again.</p>"] = "Erro na obtenção do perfil do usuário. Confira as configurações e tente novamente.";
$a->strings["<p>You have two ways to connect to App.net.</p>"] = "<p>Você possui duas formas de conectar ao App.net</p>";
$a->strings["<p>First way: Register an application at <a href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a> and enter Client ID and Client Secret. "] = "<p>1º Método: Registre uma aplicação em <a href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a> e entre o Client ID e Client Secret";
$a->strings["Use '%s' as Redirect URI<p>"] = "Use '%s' como URI redirecionador<p>";
$a->strings["Client ID"] = "Client ID";
$a->strings["Client Secret"] = "Client Secret";
$a->strings["<p>Second way: fetch a token at <a href=\"http://dev-lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. "] = "<p>2º Método: obtenha um token em <a href=\"http://dev-lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. ";
$a->strings["Set these scopes: 'Basic', 'Stream', 'Write Post', 'Public Messages', 'Messages'.</p>"] = "Adicione valor as estas saídas: 'Basic', 'Stream', 'Write Post', 'Public Messages', 'Messages'.</p>";
$a->strings["Token"] = "Token";
$a->strings["Sign in using App.net"] = "Entre usando o App.net";
$a->strings["Clear OAuth configuration"] = "Limpar configuração OAuth";
$a->strings["Save Settings"] = "Salvar Configurações";

117
appnet/lang/ro/messages.po Normal file
View file

@ -0,0 +1,117 @@
# ADDON appnet
# Copyright (C)
# This file is distributed under the same license as the Friendica appnet addon package.
#
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 11:47+0200\n"
"PO-Revision-Date: 2014-07-08 11:40+0000\n"
"Last-Translator: Arian - Cazare Muncitori <arianserv@gmail.com>\n"
"Language-Team: Romanian (Romania) (http://www.transifex.com/projects/p/friendica/language/ro_RO/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ro_RO\n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
#: appnet.php:39
msgid "Permission denied."
msgstr "Permisiune refuzată."
#: appnet.php:73
msgid "You are now authenticated to app.net. "
msgstr "Acum sunteți autentificat pe App.net."
#: appnet.php:77
msgid "<p>Error fetching token. Please try again.</p>"
msgstr "<p>Eroare la procesarea token-ului. Vă rugăm să reîncercați.</p>"
#: appnet.php:80
msgid "return to the connector page"
msgstr "revenire la pagina de conectare"
#: appnet.php:94
msgid "Post to app.net"
msgstr "Postați pe App.net"
#: appnet.php:125 appnet.php:129
msgid "App.net Export"
msgstr "Exportare pe App.net"
#: appnet.php:142
msgid "Currently connected to: "
msgstr "Conectat curent la:"
#: appnet.php:144
msgid "Enable App.net Post Plugin"
msgstr "Activare Modul Postare pe App.net"
#: appnet.php:149
msgid "Post to App.net by default"
msgstr "Postați implicit pe App.net"
#: appnet.php:153
msgid "Import the remote timeline"
msgstr "Importare cronologie la distanță"
#: appnet.php:159
msgid ""
"<p>Error fetching user profile. Please clear the configuration and try "
"again.</p>"
msgstr "<p>Eroare la procesarea profilului de utilizator. Vă rugăm să ștergeți configurarea şi apoi reîncercați.</p>"
#: appnet.php:164
msgid "<p>You have two ways to connect to App.net.</p>"
msgstr "<p>Aveți două modalități de a vă conecta la App.net.</p>"
#: appnet.php:166
msgid ""
"<p>First way: Register an application at <a "
"href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a>"
" and enter Client ID and Client Secret. "
msgstr "<p>Prima modalitate: Înregistrați o cerere pe <a href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a> şi introduceți ID Client şi Cheia Secretă Client."
#: appnet.php:167
#, php-format
msgid "Use '%s' as Redirect URI<p>"
msgstr "Utilizați '%s' ca URI de Redirecţionare<p>"
#: appnet.php:169
msgid "Client ID"
msgstr "ID Client"
#: appnet.php:173
msgid "Client Secret"
msgstr "Cheia Secretă Client"
#: appnet.php:177
msgid ""
"<p>Second way: fetch a token at <a href=\"http://dev-"
"lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. "
msgstr "<p>A doua cale: autorizați un indicativ de acces token de pe <a href=\"http://dev-lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a> ."
#: appnet.php:178
msgid ""
"Set these scopes: 'Basic', 'Stream', 'Write Post', 'Public Messages', "
"'Messages'.</p>"
msgstr "Stabiliți aceste scopuri: 'De Bază', 'Flux', 'Scriere Postare', 'Mesaje Publice', 'Mesaje'.</p>"
#: appnet.php:180
msgid "Token"
msgstr "Token"
#: appnet.php:192
msgid "Sign in using App.net"
msgstr "Autentificați-vă utilizând App.net"
#: appnet.php:197
msgid "Clear OAuth configuration"
msgstr "Ștergeți configurările OAuth"
#: appnet.php:204
msgid "Save Settings"
msgstr "Salvare Configurări"

View file

@ -0,0 +1,29 @@
<?php
if(! function_exists("string_plural_select_ro")) {
function string_plural_select_ro($n){
return ($n==1?0:((($n%100>19)||(($n%100==0)&&($n!=0)))?2:1));;
}}
;
$a->strings["Permission denied."] = "Permisiune refuzată.";
$a->strings["You are now authenticated to app.net. "] = "Acum sunteți autentificat pe App.net.";
$a->strings["<p>Error fetching token. Please try again.</p>"] = "<p>Eroare la procesarea token-ului. Vă rugăm să reîncercați.</p>";
$a->strings["return to the connector page"] = "revenire la pagina de conectare";
$a->strings["Post to app.net"] = "Postați pe App.net";
$a->strings["App.net Export"] = "Exportare pe App.net";
$a->strings["Currently connected to: "] = "Conectat curent la:";
$a->strings["Enable App.net Post Plugin"] = "Activare Modul Postare pe App.net";
$a->strings["Post to App.net by default"] = "Postați implicit pe App.net";
$a->strings["Import the remote timeline"] = "Importare cronologie la distanță";
$a->strings["<p>Error fetching user profile. Please clear the configuration and try again.</p>"] = "<p>Eroare la procesarea profilului de utilizator. Vă rugăm să ștergeți configurarea şi apoi reîncercați.</p>";
$a->strings["<p>You have two ways to connect to App.net.</p>"] = "<p>Aveți două modalități de a vă conecta la App.net.</p>";
$a->strings["<p>First way: Register an application at <a href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a> and enter Client ID and Client Secret. "] = "<p>Prima modalitate: Înregistrați o cerere pe <a href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a> şi introduceți ID Client şi Cheia Secretă Client.";
$a->strings["Use '%s' as Redirect URI<p>"] = "Utilizați '%s' ca URI de Redirecţionare<p>";
$a->strings["Client ID"] = "ID Client";
$a->strings["Client Secret"] = "Cheia Secretă Client";
$a->strings["<p>Second way: fetch a token at <a href=\"http://dev-lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. "] = "<p>A doua cale: autorizați un indicativ de acces token de pe <a href=\"http://dev-lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a> .";
$a->strings["Set these scopes: 'Basic', 'Stream', 'Write Post', 'Public Messages', 'Messages'.</p>"] = "Stabiliți aceste scopuri: 'De Bază', 'Flux', 'Scriere Postare', 'Mesaje Publice', 'Mesaje'.</p>";
$a->strings["Token"] = "Token";
$a->strings["Sign in using App.net"] = "Autentificați-vă utilizând App.net";
$a->strings["Clear OAuth configuration"] = "Ștergeți configurările OAuth";
$a->strings["Save Settings"] = "Salvare Configurări";

118
appnet/lang/ru/messages.po Normal file
View file

@ -0,0 +1,118 @@
# ADDON appnet
# Copyright (C)
# This file is distributed under the same license as the Friendica appnet addon package.
#
#
# Translators:
# Stanislav N. <pztrn@pztrn.name>, 2017
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 11:47+0200\n"
"PO-Revision-Date: 2017-04-08 05:32+0000\n"
"Last-Translator: Stanislav N. <pztrn@pztrn.name>\n"
"Language-Team: Russian (http://www.transifex.com/Friendica/friendica/language/ru/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ru\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
#: appnet.php:39
msgid "Permission denied."
msgstr "Доступ запрещен."
#: appnet.php:73
msgid "You are now authenticated to app.net. "
msgstr "Вы аутентифицированы на app.net"
#: appnet.php:77
msgid "<p>Error fetching token. Please try again.</p>"
msgstr "<p>Ошибка получения токена. Попробуйте еще раз.</p>"
#: appnet.php:80
msgid "return to the connector page"
msgstr "вернуться на страницу коннектора"
#: appnet.php:94
msgid "Post to app.net"
msgstr "Отправить на app.net"
#: appnet.php:125 appnet.php:129
msgid "App.net Export"
msgstr "Экспорт app.net"
#: appnet.php:142
msgid "Currently connected to: "
msgstr "В настоящее время соединены с: "
#: appnet.php:144
msgid "Enable App.net Post Plugin"
msgstr "Включить плагин App.net"
#: appnet.php:149
msgid "Post to App.net by default"
msgstr "Отправлять сообщения на App.net по-умолчанию"
#: appnet.php:153
msgid "Import the remote timeline"
msgstr "Импортировать удаленные сообщения"
#: appnet.php:159
msgid ""
"<p>Error fetching user profile. Please clear the configuration and try "
"again.</p>"
msgstr "<p>Ошибка при получении профиля пользователя. Сбросьте конфигурацию и попробуйте еще раз.</p>"
#: appnet.php:164
msgid "<p>You have two ways to connect to App.net.</p>"
msgstr "<p>У вас есть два способа соединения с App.net.</p>"
#: appnet.php:166
msgid ""
"<p>First way: Register an application at <a "
"href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a>"
" and enter Client ID and Client Secret. "
msgstr "<p>Первый способ: зарегистрируйте приложение на <a href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a> и введите Client ID и Client Secret"
#: appnet.php:167
#, php-format
msgid "Use '%s' as Redirect URI<p>"
msgstr "Используйте '%s' как Redirect URI<p>"
#: appnet.php:169
msgid "Client ID"
msgstr "Client ID"
#: appnet.php:173
msgid "Client Secret"
msgstr "Client Secret"
#: appnet.php:177
msgid ""
"<p>Second way: fetch a token at <a href=\"http://dev-"
"lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. "
msgstr "<p>Второй путь: получите токен на <a href=\"http://dev-lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. "
#: appnet.php:178
msgid ""
"Set these scopes: 'Basic', 'Stream', 'Write Post', 'Public Messages', "
"'Messages'.</p>"
msgstr "Выберите области: 'Basic', 'Stream', 'Write Post', 'Public Messages', 'Messages'.</p>"
#: appnet.php:180
msgid "Token"
msgstr "Токен"
#: appnet.php:192
msgid "Sign in using App.net"
msgstr "Войти через App.net"
#: appnet.php:197
msgid "Clear OAuth configuration"
msgstr "Удалить конфигурацию OAuth"
#: appnet.php:204
msgid "Save Settings"
msgstr "Сохранить настройки"

View file

@ -0,0 +1,29 @@
<?php
if(! function_exists("string_plural_select_ru")) {
function string_plural_select_ru($n){
return ($n%10==1 && $n%100!=11 ? 0 : $n%10>=2 && $n%10<=4 && ($n%100<12 || $n%100>14) ? 1 : $n%10==0 || ($n%10>=5 && $n%10<=9) || ($n%100>=11 && $n%100<=14)? 2 : 3);;
}}
;
$a->strings["Permission denied."] = "Доступ запрещен.";
$a->strings["You are now authenticated to app.net. "] = "Вы аутентифицированы на app.net";
$a->strings["<p>Error fetching token. Please try again.</p>"] = "<p>Ошибка получения токена. Попробуйте еще раз.</p>";
$a->strings["return to the connector page"] = "вернуться на страницу коннектора";
$a->strings["Post to app.net"] = "Отправить на app.net";
$a->strings["App.net Export"] = "Экспорт app.net";
$a->strings["Currently connected to: "] = "В настоящее время соединены с: ";
$a->strings["Enable App.net Post Plugin"] = "Включить плагин App.net";
$a->strings["Post to App.net by default"] = "Отправлять сообщения на App.net по-умолчанию";
$a->strings["Import the remote timeline"] = "Импортировать удаленные сообщения";
$a->strings["<p>Error fetching user profile. Please clear the configuration and try again.</p>"] = "<p>Ошибка при получении профиля пользователя. Сбросьте конфигурацию и попробуйте еще раз.</p>";
$a->strings["<p>You have two ways to connect to App.net.</p>"] = "<p>У вас есть два способа соединения с App.net.</p>";
$a->strings["<p>First way: Register an application at <a href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a> and enter Client ID and Client Secret. "] = "<p>Первый способ: зарегистрируйте приложение на <a href=\"https://account.app.net/developer/apps/\">https://account.app.net/developer/apps/</a> и введите Client ID и Client Secret";
$a->strings["Use '%s' as Redirect URI<p>"] = "Используйте '%s' как Redirect URI<p>";
$a->strings["Client ID"] = "Client ID";
$a->strings["Client Secret"] = "Client Secret";
$a->strings["<p>Second way: fetch a token at <a href=\"http://dev-lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. "] = "<p>Второй путь: получите токен на <a href=\"http://dev-lite.jonathonduerig.com/\">http://dev-lite.jonathonduerig.com/</a>. ";
$a->strings["Set these scopes: 'Basic', 'Stream', 'Write Post', 'Public Messages', 'Messages'.</p>"] = "Выберите области: 'Basic', 'Stream', 'Write Post', 'Public Messages', 'Messages'.</p>";
$a->strings["Token"] = "Токен";
$a->strings["Sign in using App.net"] = "Войти через App.net";
$a->strings["Clear OAuth configuration"] = "Удалить конфигурацию OAuth";
$a->strings["Save Settings"] = "Сохранить настройки";

View file

@ -0,0 +1,3 @@
{{include file="field_input.tpl" field=$clientid}}
{{include file="field_input.tpl" field=$clientsecret}}
<div class="submit"><input type="submit" name="page_site" value="{{$submit}}" /></div>

View file

@ -49,7 +49,6 @@
* THE SOFTWARE. * THE SOFTWARE.
*/ */
use Friendica\Core\Config;
function blackout_install() { function blackout_install() {
register_hook('page_header', 'addon/blackout/blackout.php', 'blackout_redirect'); register_hook('page_header', 'addon/blackout/blackout.php', 'blackout_redirect');
@ -68,9 +67,9 @@ function blackout_redirect ($a, $b) {
return true; return true;
// else... // else...
$mystart = Config::get('blackout','begindate'); $mystart = get_config('blackout','begindate');
$myend = Config::get('blackout','enddate'); $myend = get_config('blackout','enddate');
$myurl = Config::get('blackout','url'); $myurl = get_config('blackout','url');
$now = time(); $now = time();
$date1 = DateTime::createFromFormat('Y-m-d G:i', $mystart); $date1 = DateTime::createFromFormat('Y-m-d G:i', $mystart);
$date2 = DateTime::createFromFormat('Y-m-d G:i', $myend); $date2 = DateTime::createFromFormat('Y-m-d G:i', $myend);
@ -88,21 +87,21 @@ function blackout_redirect ($a, $b) {
} }
function blackout_plugin_admin(&$a, &$o) { function blackout_plugin_admin(&$a, &$o) {
$mystart = Config::get('blackout','begindate'); $mystart = get_config('blackout','begindate');
if (! is_string($mystart)) { $mystart = "YYYY-MM-DD:hhmm"; } if (! is_string($mystart)) { $mystart = "YYYY-MM-DD:hhmm"; }
$myend = Config::get('blackout','enddate'); $myend = get_config('blackout','enddate');
if (! is_string($myend)) { $myend = "YYYY-MM-DD:hhmm"; } if (! is_string($myend)) { $myend = "YYYY-MM-DD:hhmm"; }
$myurl = Config::get('blackout','url'); $myurl = get_config('blackout','url');
if (! is_string($myurl)) { $myurl = "http://www.example.com"; } if (! is_string($myurl)) { $myurl = "http://www.example.com"; }
$t = get_markup_template( "admin.tpl", "addon/blackout/" ); $t = get_markup_template( "admin.tpl", "addon/blackout/" );
$o = replace_macros($t, [ $o = replace_macros($t, array(
'$submit' => t('Save Settings'), '$submit' => t('Save Settings'),
'$rurl' => ["rurl", "Redirect URL", $myurl, "all your visitors from the web will be redirected to this URL"], '$rurl' => array("rurl", "Redirect URL", $myurl, "all your visitors from the web will be redirected to this URL"),
'$startdate' => ["startdate", "Begin of the Blackout<br />(YYYY-MM-DD hh:mm)", $mystart, "format is <em>YYYY</em> year, <em>MM</em> month, <em>DD</em> day, <em>hh</em> hour and <em>mm</em> minute"], '$startdate' => array("startdate", "Begin of the Blackout<br />(YYYY-MM-DD hh:mm)", $mystart, "format is <em>YYYY</em> year, <em>MM</em> month, <em>DD</em> day, <em>hh</em> hour and <em>mm</em> minute"),
'$enddate' => ["enddate", "End of the Blackout<br />(YYYY-MM-DD hh:mm)", $myend, ""], '$enddate' => array("enddate", "End of the Blackout<br />(YYYY-MM-DD hh:mm)", $myend, ""),
]); ));
$date1 = DateTime::createFromFormat('Y-m-d G:i', $mystart); $date1 = DateTime::createFromFormat('Y-m-d G:i', $mystart);
$date2 = DateTime::createFromFormat('Y-m-d G:i', $myend); $date2 = DateTime::createFromFormat('Y-m-d G:i', $myend);
if ($date2 < $date1) { if ($date2 < $date1) {
@ -115,7 +114,7 @@ function blackout_plugin_admin_post (&$a) {
$begindate = trim($_POST['startdate']); $begindate = trim($_POST['startdate']);
$enddate = trim($_POST['enddate']); $enddate = trim($_POST['enddate']);
$url = trim($_POST['rurl']); $url = trim($_POST['rurl']);
Config::set('blackout','begindate',$begindate); set_config('blackout','begindate',$begindate);
Config::set('blackout','enddate',$enddate); set_config('blackout','enddate',$enddate);
Config::set('blackout','url',$url); set_config('blackout','url',$url);
} }

View file

@ -9,8 +9,6 @@
* *
*/ */
use Friendica\Core\PConfig;
function blockem_install() { function blockem_install() {
register_hook('prepare_body', 'addon/blockem/blockem.php', 'blockem_prepare_body'); register_hook('prepare_body', 'addon/blockem/blockem.php', 'blockem_prepare_body');
register_hook('display_item', 'addon/blockem/blockem.php', 'blockem_display_item'); register_hook('display_item', 'addon/blockem/blockem.php', 'blockem_display_item');
@ -47,7 +45,7 @@ function blockem_addon_settings(&$a,&$s) {
$a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . $a->get_baseurl() . '/addon/blockem/blockem.css' . '" media="all" />' . "\r\n"; $a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . $a->get_baseurl() . '/addon/blockem/blockem.css' . '" media="all" />' . "\r\n";
$words = PConfig::get(local_user(),'blockem','words'); $words = get_pconfig(local_user(),'blockem','words');
if(! $words) if(! $words)
$words = ''; $words = '';
@ -76,7 +74,7 @@ function blockem_addon_settings_post(&$a,&$b) {
return; return;
if($_POST['blockem-submit']) { if($_POST['blockem-submit']) {
PConfig::set(local_user(),'blockem','words',trim($_POST['blockem-words'])); set_pconfig(local_user(),'blockem','words',trim($_POST['blockem-words']));
info( t('BLOCKEM Settings saved.') . EOL); info( t('BLOCKEM Settings saved.') . EOL);
} }
} }
@ -84,7 +82,7 @@ function blockem_addon_settings_post(&$a,&$b) {
function blockem_enotify_store(&$a,&$b) { function blockem_enotify_store(&$a,&$b) {
$words = PConfig::get($b['uid'],'blockem','words'); $words = get_pconfig($b['uid'],'blockem','words');
if($words) { if($words) {
$arr = explode(',',$words); $arr = explode(',',$words);
} }
@ -117,7 +115,7 @@ function blockem_prepare_body(&$a,&$b) {
$words = null; $words = null;
if(local_user()) { if(local_user()) {
$words = PConfig::get(local_user(),'blockem','words'); $words = get_pconfig(local_user(),'blockem','words');
} }
if($words) { if($words) {
$arr = explode(',',$words); $arr = explode(',',$words);
@ -157,7 +155,7 @@ function blockem_conversation_start(&$a,&$b) {
if(! local_user()) if(! local_user())
return; return;
$words = PConfig::get(local_user(),'blockem','words'); $words = get_pconfig(local_user(),'blockem','words');
if($words) { if($words) {
$a->data['blockem'] = explode(',',$words); $a->data['blockem'] = explode(',',$words);
} }
@ -209,7 +207,7 @@ function blockem_init(&$a) {
if(! local_user()) if(! local_user())
return; return;
$words = PConfig::get(local_user(),'blockem','words'); $words = get_pconfig(local_user(),'blockem','words');
if(array_key_exists('block',$_GET) && $_GET['block']) { if(array_key_exists('block',$_GET) && $_GET['block']) {
if(strlen($words)) if(strlen($words))
@ -218,7 +216,7 @@ function blockem_init(&$a) {
} }
if(array_key_exists('unblock',$_GET) && $_GET['unblock']) { if(array_key_exists('unblock',$_GET) && $_GET['unblock']) {
$arr = explode(',',$words); $arr = explode(',',$words);
$newarr = []; $newarr = array();
if(count($arr)) { if(count($arr)) {
foreach($arr as $x) { foreach($arr as $x) {
@ -229,7 +227,7 @@ function blockem_init(&$a) {
$words = implode(',',$newarr); $words = implode(',',$newarr);
} }
PConfig::set(local_user(),'blockem','words',$words); set_pconfig(local_user(),'blockem','words',$words);
info( t('blockem settings updated') . EOL ); info( t('blockem settings updated') . EOL );
killme(); killme();
} }

View file

@ -7,173 +7,171 @@
* *
*/ */
use Friendica\Core\PConfig;
function blogger_install() { function blogger_install() {
register_hook('post_local', 'addon/blogger/blogger.php', 'blogger_post_local'); register_hook('post_local', 'addon/blogger/blogger.php', 'blogger_post_local');
register_hook('notifier_normal', 'addon/blogger/blogger.php', 'blogger_send'); register_hook('notifier_normal', 'addon/blogger/blogger.php', 'blogger_send');
register_hook('jot_networks', 'addon/blogger/blogger.php', 'blogger_jot_nets'); register_hook('jot_networks', 'addon/blogger/blogger.php', 'blogger_jot_nets');
register_hook('connector_settings', 'addon/blogger/blogger.php', 'blogger_settings'); register_hook('connector_settings', 'addon/blogger/blogger.php', 'blogger_settings');
register_hook('connector_settings_post', 'addon/blogger/blogger.php', 'blogger_settings_post'); register_hook('connector_settings_post', 'addon/blogger/blogger.php', 'blogger_settings_post');
}
}
function blogger_uninstall() { function blogger_uninstall() {
unregister_hook('post_local', 'addon/blogger/blogger.php', 'blogger_post_local'); unregister_hook('post_local', 'addon/blogger/blogger.php', 'blogger_post_local');
unregister_hook('notifier_normal', 'addon/blogger/blogger.php', 'blogger_send'); unregister_hook('notifier_normal', 'addon/blogger/blogger.php', 'blogger_send');
unregister_hook('jot_networks', 'addon/blogger/blogger.php', 'blogger_jot_nets'); unregister_hook('jot_networks', 'addon/blogger/blogger.php', 'blogger_jot_nets');
unregister_hook('connector_settings', 'addon/blogger/blogger.php', 'blogger_settings'); unregister_hook('connector_settings', 'addon/blogger/blogger.php', 'blogger_settings');
unregister_hook('connector_settings_post', 'addon/blogger/blogger.php', 'blogger_settings_post'); unregister_hook('connector_settings_post', 'addon/blogger/blogger.php', 'blogger_settings_post');
// obsolete - remove // obsolete - remove
unregister_hook('post_local_end', 'addon/blogger/blogger.php', 'blogger_send'); unregister_hook('post_local_end', 'addon/blogger/blogger.php', 'blogger_send');
unregister_hook('plugin_settings', 'addon/blogger/blogger.php', 'blogger_settings'); unregister_hook('plugin_settings', 'addon/blogger/blogger.php', 'blogger_settings');
unregister_hook('plugin_settings_post', 'addon/blogger/blogger.php', 'blogger_settings_post'); unregister_hook('plugin_settings_post', 'addon/blogger/blogger.php', 'blogger_settings_post');
} }
function blogger_jot_nets(&$a,&$b) { function blogger_jot_nets(&$a,&$b) {
if (!local_user()) { if(! local_user())
return; return;
}
$bl_post = PConfig::get(local_user(),'blogger','post'); $bl_post = get_pconfig(local_user(),'blogger','post');
if (intval($bl_post) == 1) { if(intval($bl_post) == 1) {
$bl_defpost = PConfig::get(local_user(),'blogger','post_by_default'); $bl_defpost = get_pconfig(local_user(),'blogger','post_by_default');
$selected = ((intval($bl_defpost) == 1) ? ' checked="checked" ' : ''); $selected = ((intval($bl_defpost) == 1) ? ' checked="checked" ' : '');
$b .= '<div class="profile-jot-net"><input type="checkbox" name="blogger_enable" ' . $selected . ' value="1" /> ' $b .= '<div class="profile-jot-net"><input type="checkbox" name="blogger_enable" ' . $selected . ' value="1" /> '
. t('Post to blogger') . '</div>'; . t('Post to blogger') . '</div>';
} }
} }
function blogger_settings(&$a,&$s) { function blogger_settings(&$a,&$s) {
if (! local_user()) { if(! local_user())
return; return;
}
/* Add our stylesheet to the page so we can make our settings look nice */ /* Add our stylesheet to the page so we can make our settings look nice */
$a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . $a->get_baseurl() . '/addon/blogger/blogger.css' . '" media="all" />' . "\r\n"; $a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . $a->get_baseurl() . '/addon/blogger/blogger.css' . '" media="all" />' . "\r\n";
/* Get the current state of our config variables */ /* Get the current state of our config variables */
$enabled = PConfig::get(local_user(),'blogger','post'); $enabled = get_pconfig(local_user(),'blogger','post');
$checked = (($enabled) ? ' checked="checked" ' : ''); $checked = (($enabled) ? ' checked="checked" ' : '');
$css = (($enabled) ? '' : '-disabled'); $css = (($enabled) ? '' : '-disabled');
$def_enabled = PConfig::get(local_user(),'blogger','post_by_default'); $def_enabled = get_pconfig(local_user(),'blogger','post_by_default');
$def_checked = (($def_enabled) ? ' checked="checked" ' : ''); $def_checked = (($def_enabled) ? ' checked="checked" ' : '');
$bl_username = PConfig::get(local_user(), 'blogger', 'bl_username'); $bl_username = get_pconfig(local_user(), 'blogger', 'bl_username');
$bl_password = PConfig::get(local_user(), 'blogger', 'bl_password'); $bl_password = get_pconfig(local_user(), 'blogger', 'bl_password');
$bl_blog = PConfig::get(local_user(), 'blogger', 'bl_blog'); $bl_blog = get_pconfig(local_user(), 'blogger', 'bl_blog');
/* Add some HTML to the existing form */
$s .= '<span id="settings_blogger_inflated" class="settings-block fakelink" style="display: block;" onclick="openClose(\'settings_blogger_expanded\'); openClose(\'settings_blogger_inflated\');">';
$s .= '<img class="connector'.$css.'" src="images/blogger.png" /><h3 class="connector">'. t('Blogger Export').'</h3>';
$s .= '</span>';
$s .= '<div id="settings_blogger_expanded" class="settings-block" style="display: none;">';
$s .= '<span class="fakelink" onclick="openClose(\'settings_blogger_expanded\'); openClose(\'settings_blogger_inflated\');">';
$s .= '<img class="connector'.$css.'" src="images/blogger.png" /><h3 class="connector">'. t('Blogger Export').'</h3>';
$s .= '</span>';
$s .= '<div id="blogger-enable-wrapper">'; /* Add some HTML to the existing form */
$s .= '<label id="blogger-enable-label" for="blogger-checkbox">' . t('Enable Blogger Post Plugin') . '</label>';
$s .= '<input id="blogger-checkbox" type="checkbox" name="blogger" value="1" ' . $checked . '/>';
$s .= '</div><div class="clear"></div>';
$s .= '<div id="blogger-username-wrapper">'; $s .= '<span id="settings_blogger_inflated" class="settings-block fakelink" style="display: block;" onclick="openClose(\'settings_blogger_expanded\'); openClose(\'settings_blogger_inflated\');">';
$s .= '<label id="blogger-username-label" for="blogger-username">' . t('Blogger username') . '</label>'; $s .= '<img class="connector'.$css.'" src="images/blogger.png" /><h3 class="connector">'. t('Blogger Export').'</h3>';
$s .= '<input id="blogger-username" type="text" name="bl_username" value="' . $bl_username . '" />'; $s .= '</span>';
$s .= '</div><div class="clear"></div>'; $s .= '<div id="settings_blogger_expanded" class="settings-block" style="display: none;">';
$s .= '<span class="fakelink" onclick="openClose(\'settings_blogger_expanded\'); openClose(\'settings_blogger_inflated\');">';
$s .= '<img class="connector'.$css.'" src="images/blogger.png" /><h3 class="connector">'. t('Blogger Export').'</h3>';
$s .= '</span>';
$s .= '<div id="blogger-password-wrapper">'; $s .= '<div id="blogger-enable-wrapper">';
$s .= '<label id="blogger-password-label" for="blogger-password">' . t('Blogger password') . '</label>'; $s .= '<label id="blogger-enable-label" for="blogger-checkbox">' . t('Enable Blogger Post Plugin') . '</label>';
$s .= '<input id="blogger-password" type="password" name="bl_password" value="' . $bl_password . '" />'; $s .= '<input id="blogger-checkbox" type="checkbox" name="blogger" value="1" ' . $checked . '/>';
$s .= '</div><div class="clear"></div>'; $s .= '</div><div class="clear"></div>';
$s .= '<div id="blogger-blog-wrapper">'; $s .= '<div id="blogger-username-wrapper">';
$s .= '<label id="blogger-blog-label" for="blogger-blog">' . t('Blogger API URL') . '</label>'; $s .= '<label id="blogger-username-label" for="blogger-username">' . t('Blogger username') . '</label>';
$s .= '<input id="blogger-blog" type="text" name="bl_blog" value="' . $bl_blog . '" />'; $s .= '<input id="blogger-username" type="text" name="bl_username" value="' . $bl_username . '" />';
$s .= '</div><div class="clear"></div>'; $s .= '</div><div class="clear"></div>';
$s .= '<div id="blogger-bydefault-wrapper">'; $s .= '<div id="blogger-password-wrapper">';
$s .= '<label id="blogger-bydefault-label" for="blogger-bydefault">' . t('Post to Blogger by default') . '</label>'; $s .= '<label id="blogger-password-label" for="blogger-password">' . t('Blogger password') . '</label>';
$s .= '<input id="blogger-bydefault" type="checkbox" name="bl_bydefault" value="1" ' . $def_checked . '/>'; $s .= '<input id="blogger-password" type="password" name="bl_password" value="' . $bl_password . '" />';
$s .= '</div><div class="clear"></div>'; $s .= '</div><div class="clear"></div>';
$s .= '<div id="blogger-blog-wrapper">';
$s .= '<label id="blogger-blog-label" for="blogger-blog">' . t('Blogger API URL') . '</label>';
$s .= '<input id="blogger-blog" type="text" name="bl_blog" value="' . $bl_blog . '" />';
$s .= '</div><div class="clear"></div>';
$s .= '<div id="blogger-bydefault-wrapper">';
$s .= '<label id="blogger-bydefault-label" for="blogger-bydefault">' . t('Post to Blogger by default') . '</label>';
$s .= '<input id="blogger-bydefault" type="checkbox" name="bl_bydefault" value="1" ' . $def_checked . '/>';
$s .= '</div><div class="clear"></div>';
/* provide a submit button */
$s .= '<div class="settings-submit-wrapper" ><input type="submit" id="blogger-submit" name="blogger-submit" class="settings-submit" value="' . t('Save Settings') . '" /></div></div>';
/* provide a submit button */
$s .= '<div class="settings-submit-wrapper" ><input type="submit" id="blogger-submit" name="blogger-submit" class="settings-submit" value="' . t('Save Settings') . '" /></div></div>';
} }
function blogger_settings_post(&$a,&$b) { function blogger_settings_post(&$a,&$b) {
if (x($_POST,'blogger-submit')) {
PConfig::set(local_user(),'blogger','post',intval($_POST['blogger'])); if(x($_POST,'blogger-submit')) {
PConfig::set(local_user(),'blogger','post_by_default',intval($_POST['bl_bydefault']));
PConfig::set(local_user(),'blogger','bl_username',trim($_POST['bl_username'])); set_pconfig(local_user(),'blogger','post',intval($_POST['blogger']));
PConfig::set(local_user(),'blogger','bl_password',trim($_POST['bl_password'])); set_pconfig(local_user(),'blogger','post_by_default',intval($_POST['bl_bydefault']));
PConfig::set(local_user(),'blogger','bl_blog',trim($_POST['bl_blog'])); set_pconfig(local_user(),'blogger','bl_username',trim($_POST['bl_username']));
set_pconfig(local_user(),'blogger','bl_password',trim($_POST['bl_password']));
set_pconfig(local_user(),'blogger','bl_blog',trim($_POST['bl_blog']));
} }
} }
function blogger_post_local(&$a,&$b) { function blogger_post_local(&$a,&$b) {
// This can probably be changed to allow editing by pointing to a different API endpoint // This can probably be changed to allow editing by pointing to a different API endpoint
if ($b['edit']) { if($b['edit'])
return; return;
}
if (!local_user() || (local_user() != $b['uid'])) { if((! local_user()) || (local_user() != $b['uid']))
return; return;
}
if ($b['private'] || $b['parent']) { if($b['private'] || $b['parent'])
return; return;
}
$bl_post = intval(PConfig::get(local_user(),'blogger','post')); $bl_post = intval(get_pconfig(local_user(),'blogger','post'));
$bl_enable = (($bl_post && x($_REQUEST,'blogger_enable')) ? intval($_REQUEST['blogger_enable']) : 0); $bl_enable = (($bl_post && x($_REQUEST,'blogger_enable')) ? intval($_REQUEST['blogger_enable']) : 0);
if ($b['api_source'] && intval(PConfig::get(local_user(),'blogger','post_by_default'))) { if($b['api_source'] && intval(get_pconfig(local_user(),'blogger','post_by_default')))
$bl_enable = 1; $bl_enable = 1;
}
if (!$bl_enable) { if(! $bl_enable)
return; return;
}
if (strlen($b['postopts'])) { if(strlen($b['postopts']))
$b['postopts'] .= ','; $b['postopts'] .= ',';
} $b['postopts'] .= 'blogger';
$b['postopts'] .= 'blogger';
} }
function blogger_send(&$a,&$b) { function blogger_send(&$a,&$b) {
if ($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) {
return;
}
if (! strstr($b['postopts'],'blogger')) { if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited']))
return; return;
}
if ($b['parent'] != $b['id']) { if(! strstr($b['postopts'],'blogger'))
return; return;
}
$bl_username = xmlify(PConfig::get($b['uid'],'blogger','bl_username')); if($b['parent'] != $b['id'])
$bl_password = xmlify(PConfig::get($b['uid'],'blogger','bl_password')); return;
$bl_blog = PConfig::get($b['uid'],'blogger','bl_blog');
if ($bl_username && $bl_password && $bl_blog) {
$bl_username = xmlify(get_pconfig($b['uid'],'blogger','bl_username'));
$bl_password = xmlify(get_pconfig($b['uid'],'blogger','bl_password'));
$bl_blog = get_pconfig($b['uid'],'blogger','bl_blog');
if($bl_username && $bl_password && $bl_blog) {
require_once('include/bbcode.php'); require_once('include/bbcode.php');
@ -199,10 +197,10 @@ EOT;
logger('blogger: data: ' . $xml, LOGGER_DATA); logger('blogger: data: ' . $xml, LOGGER_DATA);
if ($bl_blog !== 'test') { if($bl_blog !== 'test')
$x = post_url($bl_blog,$xml); $x = post_url($bl_blog,$xml);
}
logger('posted to blogger: ' . (($x) ? $x : ''), LOGGER_DEBUG); logger('posted to blogger: ' . (($x) ? $x : ''), LOGGER_DEBUG);
} }
} }

View file

@ -5,11 +5,7 @@
* Version: 0.2 * Version: 0.2
* Author: Michael Vogel <http://pirati.ca/profile/heluecht> * Author: Michael Vogel <http://pirati.ca/profile/heluecht>
*/ */
require 'addon/buffer/bufferapp.php'; require('addon/buffer/bufferapp.php');
use Friendica\App;
use Friendica\Core\Config;
use Friendica\Core\PConfig;
function buffer_install() { function buffer_install() {
register_hook('post_local', 'addon/buffer/buffer.php', 'buffer_post_local'); register_hook('post_local', 'addon/buffer/buffer.php', 'buffer_post_local');
@ -57,18 +53,18 @@ function buffer_content(&$a) {
function buffer_plugin_admin(&$a, &$o){ function buffer_plugin_admin(&$a, &$o){
$t = get_markup_template( "admin.tpl", "addon/buffer/" ); $t = get_markup_template( "admin.tpl", "addon/buffer/" );
$o = replace_macros($t, [ $o = replace_macros($t, array(
'$submit' => t('Save Settings'), '$submit' => t('Save Settings'),
// name, label, value, help, [extra values] // name, label, value, help, [extra values]
'$client_id' => ['client_id', t('Client ID'), Config::get('buffer', 'client_id' ), ''], '$client_id' => array('client_id', t('Client ID'), get_config('buffer', 'client_id' ), ''),
'$client_secret' => ['client_secret', t('Client Secret'), Config::get('buffer', 'client_secret' ), ''], '$client_secret' => array('client_secret', t('Client Secret'), get_config('buffer', 'client_secret' ), ''),
]); ));
} }
function buffer_plugin_admin_post(&$a){ function buffer_plugin_admin_post(&$a){
$client_id = ((x($_POST,'client_id')) ? notags(trim($_POST['client_id'])) : ''); $client_id = ((x($_POST,'client_id')) ? notags(trim($_POST['client_id'])) : '');
$client_secret = ((x($_POST,'client_secret')) ? notags(trim($_POST['client_secret'])): ''); $client_secret = ((x($_POST,'client_secret')) ? notags(trim($_POST['client_secret'])): '');
Config::set('buffer','client_id',$client_id); set_config('buffer','client_id',$client_id);
Config::set('buffer','client_secret',$client_secret); set_config('buffer','client_secret',$client_secret);
info( t('Settings updated.'). EOL ); info( t('Settings updated.'). EOL );
} }
@ -82,8 +78,8 @@ function buffer_connect(&$a) {
session_start(); session_start();
// Define the needed keys // Define the needed keys
$client_id = Config::get('buffer','client_id'); $client_id = get_config('buffer','client_id');
$client_secret = Config::get('buffer','client_secret'); $client_secret = get_config('buffer','client_secret');
// The callback URL is the script that gets called after the user authenticates with buffer // The callback URL is the script that gets called after the user authenticates with buffer
$callback_url = $a->get_baseurl()."/buffer/connect"; $callback_url = $a->get_baseurl()."/buffer/connect";
@ -96,7 +92,7 @@ function buffer_connect(&$a) {
logger("buffer_connect: authenticated"); logger("buffer_connect: authenticated");
$o .= t("You are now authenticated to buffer. "); $o .= t("You are now authenticated to buffer. ");
$o .= '<br /><a href="'.$a->get_baseurl().'/settings/connectors">'.t("return to the connector page").'</a>'; $o .= '<br /><a href="'.$a->get_baseurl().'/settings/connectors">'.t("return to the connector page").'</a>';
PConfig::set(local_user(), 'buffer','access_token', $buffer->access_token); set_pconfig(local_user(), 'buffer','access_token', $buffer->access_token);
} }
return($o); return($o);
@ -106,9 +102,9 @@ function buffer_jot_nets(&$a,&$b) {
if(! local_user()) if(! local_user())
return; return;
$buffer_post = PConfig::get(local_user(),'buffer','post'); $buffer_post = get_pconfig(local_user(),'buffer','post');
if(intval($buffer_post) == 1) { if(intval($buffer_post) == 1) {
$buffer_defpost = PConfig::get(local_user(),'buffer','post_by_default'); $buffer_defpost = get_pconfig(local_user(),'buffer','post_by_default');
$selected = ((intval($buffer_defpost) == 1) ? ' checked="checked" ' : ''); $selected = ((intval($buffer_defpost) == 1) ? ' checked="checked" ' : '');
$b .= '<div class="profile-jot-net"><input type="checkbox" name="buffer_enable"' . $selected . ' value="1" /> ' $b .= '<div class="profile-jot-net"><input type="checkbox" name="buffer_enable"' . $selected . ' value="1" /> '
. t('Post to Buffer') . '</div>'; . t('Post to Buffer') . '</div>';
@ -126,11 +122,11 @@ function buffer_settings(&$a,&$s) {
/* Get the current state of our config variables */ /* Get the current state of our config variables */
$enabled = PConfig::get(local_user(),'buffer','post'); $enabled = get_pconfig(local_user(),'buffer','post');
$checked = (($enabled) ? ' checked="checked" ' : ''); $checked = (($enabled) ? ' checked="checked" ' : '');
$css = (($enabled) ? '' : '-disabled'); $css = (($enabled) ? '' : '-disabled');
$def_enabled = PConfig::get(local_user(),'buffer','post_by_default'); $def_enabled = get_pconfig(local_user(),'buffer','post_by_default');
$def_checked = (($def_enabled) ? ' checked="checked" ' : ''); $def_checked = (($def_enabled) ? ' checked="checked" ' : '');
/* Add some HTML to the existing form */ /* Add some HTML to the existing form */
@ -143,9 +139,9 @@ function buffer_settings(&$a,&$s) {
$s .= '<img class="connector'.$css.'" src="images/buffer.png" /><h3 class="connector">'. t('Buffer Export').'</h3>'; $s .= '<img class="connector'.$css.'" src="images/buffer.png" /><h3 class="connector">'. t('Buffer Export').'</h3>';
$s .= '</span>'; $s .= '</span>';
$client_id = Config::get("buffer", "client_id"); $client_id = get_config("buffer", "client_id");
$client_secret = Config::get("buffer", "client_secret"); $client_secret = get_config("buffer", "client_secret");
$access_token = PConfig::get(local_user(), "buffer", "access_token"); $access_token = get_pconfig(local_user(), "buffer", "access_token");
$s .= '<div id="buffer-password-wrapper">'; $s .= '<div id="buffer-password-wrapper">';
if ($access_token == "") { if ($access_token == "") {
@ -202,12 +198,12 @@ function buffer_settings_post(&$a,&$b) {
if(x($_POST,'buffer-submit')) { if(x($_POST,'buffer-submit')) {
if(x($_POST,'buffer_delete')) { if(x($_POST,'buffer_delete')) {
PConfig::set(local_user(),'buffer','access_token',''); set_pconfig(local_user(),'buffer','access_token','');
PConfig::set(local_user(),'buffer','post',false); set_pconfig(local_user(),'buffer','post',false);
PConfig::set(local_user(),'buffer','post_by_default',false); set_pconfig(local_user(),'buffer','post_by_default',false);
} else { } else {
PConfig::set(local_user(),'buffer','post',intval($_POST['buffer'])); set_pconfig(local_user(),'buffer','post',intval($_POST['buffer']));
PConfig::set(local_user(),'buffer','post_by_default',intval($_POST['buffer_bydefault'])); set_pconfig(local_user(),'buffer','post_by_default',intval($_POST['buffer_bydefault']));
} }
} }
} }
@ -218,11 +214,11 @@ function buffer_post_local(&$a,&$b) {
return; return;
} }
$buffer_post = intval(PConfig::get(local_user(),'buffer','post')); $buffer_post = intval(get_pconfig(local_user(),'buffer','post'));
$buffer_enable = (($buffer_post && x($_REQUEST,'buffer_enable')) ? intval($_REQUEST['buffer_enable']) : 0); $buffer_enable = (($buffer_post && x($_REQUEST,'buffer_enable')) ? intval($_REQUEST['buffer_enable']) : 0);
if ($b['api_source'] && intval(PConfig::get(local_user(),'buffer','post_by_default'))) { if ($b['api_source'] && intval(get_pconfig(local_user(),'buffer','post_by_default'))) {
$buffer_enable = 1; $buffer_enable = 1;
} }
@ -237,34 +233,24 @@ function buffer_post_local(&$a,&$b) {
$b['postopts'] .= 'buffer'; $b['postopts'] .= 'buffer';
} }
function buffer_send(App $a, &$b) function buffer_send(&$a,&$b) {
{
if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) {
return;
}
if(! strstr($b['postopts'],'buffer')) { if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited']))
return; return;
}
if($b['parent'] != $b['id']) { if(! strstr($b['postopts'],'buffer'))
return; return;
}
// Dont't post if the post doesn't belong to us. if($b['parent'] != $b['id'])
// This is a check for forum postings
$self = dba::selectFirst('contact', ['id'], ['uid' => $b['uid'], 'self' => true]);
if ($b['contact-id'] != $self['id']) {
return; return;
}
// if post comes from buffer don't send it back // if post comes from buffer don't send it back
//if($b['app'] == "Buffer") //if($b['app'] == "Buffer")
// return; // return;
$client_id = Config::get("buffer", "client_id"); $client_id = get_config("buffer", "client_id");
$client_secret = Config::get("buffer", "client_secret"); $client_secret = get_config("buffer", "client_secret");
$access_token = PConfig::get($b['uid'], "buffer","access_token"); $access_token = get_pconfig($b['uid'], "buffer","access_token");
if($access_token) { if($access_token) {
$buffer = new BufferApp($client_id, $client_secret, $callback_url, $access_token); $buffer = new BufferApp($client_id, $client_secret, $callback_url, $access_token);
@ -306,7 +292,7 @@ function buffer_send(App $a, &$b)
break; break;
case 'twitter': case 'twitter':
$send = ($b["extid"] != NETWORK_TWITTER); $send = ($b["extid"] != NETWORK_TWITTER);
$limit = 280; $limit = 140;
$markup = false; $markup = false;
$includedlinks = true; $includedlinks = true;
$htmlmode = 8; $htmlmode = 8;
@ -335,7 +321,7 @@ function buffer_send(App $a, &$b)
$item["body"] = preg_replace("(\[s\](.*?)\[\/s\])ism",'-$1-',$item["body"]); $item["body"] = preg_replace("(\[s\](.*?)\[\/s\])ism",'-$1-',$item["body"]);
} }
$post = plaintext($item, $limit, $includedlinks, $htmlmode); $post = plaintext($a, $item, $limit, $includedlinks, $htmlmode);
logger("buffer_send: converted message ".$b["id"]." result: ".print_r($post, true), LOGGER_DEBUG); logger("buffer_send: converted message ".$b["id"]." result: ".print_r($post, true), LOGGER_DEBUG);
// The image proxy is used as a sanitizer. Buffer seems to be really picky about pictures // The image proxy is used as a sanitizer. Buffer seems to be really picky about pictures
@ -369,7 +355,7 @@ function buffer_send(App $a, &$b)
elseif ($profile->service == "google") elseif ($profile->service == "google")
$post["text"] .= html_entity_decode("&#x00A0;", ENT_QUOTES, 'UTF-8'); // Send a special blank to identify the post through the "fromgplus" addon $post["text"] .= html_entity_decode("&#x00A0;", ENT_QUOTES, 'UTF-8'); // Send a special blank to identify the post through the "fromgplus" addon
$message = []; $message = array();
$message["text"] = $post["text"]; $message["text"] = $post["text"];
$message["profile_ids[]"] = $profile->id; $message["profile_ids[]"] = $profile->id;
$message["shorten"] = false; $message["shorten"] = false;

View file

@ -12,7 +12,7 @@
public $ok = false; public $ok = false;
private $endpoints = [ private $endpoints = array(
'/user' => 'get', '/user' => 'get',
'/profiles' => 'get', '/profiles' => 'get',
@ -37,9 +37,9 @@
'/info/configuration' => 'get', '/info/configuration' => 'get',
]; );
public $errors = [ public $errors = array(
'invalid-endpoint' => 'The endpoint you supplied does not appear to be valid.', 'invalid-endpoint' => 'The endpoint you supplied does not appear to be valid.',
'403' => 'Permission denied.', '403' => 'Permission denied.',
@ -77,7 +77,7 @@
'1042' => 'User did not save successfully.', '1042' => 'User did not save successfully.',
'1050' => 'Client could not be found.', '1050' => 'Client could not be found.',
'1051' => 'No authorization to access client.', '1051' => 'No authorization to access client.',
]; );
function __construct($client_id = '', $client_secret = '', $callback_url = '', $access_token = '') { function __construct($client_id = '', $client_secret = '', $callback_url = '', $access_token = '') {
if ($client_id) $this->set_client_id($client_id); if ($client_id) $this->set_client_id($client_id);
@ -110,7 +110,7 @@
if (!$ok) return $this->error('invalid-endpoint'); if (!$ok) return $this->error('invalid-endpoint');
} }
if (!$data || !is_array($data)) $data = []; if (!$data || !is_array($data)) $data = array();
$data['access_token'] = $this->access_token; $data['access_token'] = $this->access_token;
$method = $this->endpoints[$done_endpoint]; //get() or post() $method = $this->endpoints[$done_endpoint]; //get() or post()
@ -130,17 +130,17 @@
} }
function error($error) { function error($error) {
return (object) ['error' => $this->errors[$error]]; return (object) array('error' => $this->errors[$error]);
} }
function create_access_token_url() { function create_access_token_url() {
$data = [ $data = array(
'code' => $this->code, 'code' => $this->code,
'grant_type' => 'authorization_code', 'grant_type' => 'authorization_code',
'client_id' => $this->client_id, 'client_id' => $this->client_id,
'client_secret' => $this->client_secret, 'client_secret' => $this->client_secret,
'redirect_uri' => $this->callback_url, 'redirect_uri' => $this->callback_url,
]; );
$obj = $this->post($this->access_token_url, $data); $obj = $this->post($this->access_token_url, $data);
$this->access_token = $obj->access_token; $this->access_token = $obj->access_token;
@ -150,15 +150,15 @@
function req($url = '', $data = '', $post = true) { function req($url = '', $data = '', $post = true) {
if (!$url) return false; if (!$url) return false;
if (!$data || !is_array($data)) $data = []; if (!$data || !is_array($data)) $data = array();
$options = [CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => false]; $options = array(CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => false);
if ($post) { if ($post) {
$options += [ $options += array(
CURLOPT_POST => $post, CURLOPT_POST => $post,
CURLOPT_POSTFIELDS => $data CURLOPT_POSTFIELDS => $data
]; );
} else { } else {
$url .= '?' . http_build_query($data); $url .= '?' . http_build_query($data);
} }

19
cal/LICENSE Normal file
View file

@ -0,0 +1,19 @@
Copyright (c) 2013 Tobias Diekershoff
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

29
cal/README.md Normal file
View file

@ -0,0 +1,29 @@
Calendar Export
===============
This addon makes it possible to export the events posted by your users,
so they can be imported into other calendar applications.
Exporting a calendar is an _opt-in_ feature which has to be activated by each
of the users in the _addon settings_. As the admin you can only provide the
service but should not force it upon your users.
The calendars are exported at
http://example.com/cal/username/export/format
currently the following formats are supported
* ical
* csv.
Author
------
This addon is developed by [Tobias Diekershoff](https://f.diekershoff.de/profile/tobias).
License
-------
This addon is licensed under the [MIT](http://opensource.org/licenses/MIT)
license, see also the LICENSE file in the addon directory.

200
cal/cal.php Normal file
View file

@ -0,0 +1,200 @@
<?php
/********************************************************************
* Name: Calendar Export
* Description: This addon exports the public events of your users as calendar files
* Version: 0.1
* Author: Tobias Diekershoff <https://f.diekershoff.de/profile/tobias>
* License: MIT
* Status: Unsupported
* ******************************************************************/
function cal_install()
{
register_hook('plugin_settings', 'addon/cal/cal.php', 'cal_addon_settings');
register_hook('plugin_settings_post', 'addon/cal/cal.php', 'cal_addon_settings_post');
}
function cal_uninstall()
{
unregister_hook('plugin_settings', 'addon/cal/cal.php', 'cal_addon_settings');
unregister_hook('plugin_settings_post', 'addon/cal/cal.php', 'cal_addon_settings_post');
}
function cal_module()
{
}
/* pathes
* /cal/$user/export/$format
* currently supported formats are ical (iCalendar) and CSV
*/
function cal_content()
{
$a = get_app();
$o = "";
if ($a->argc == 1) {
$o .= "<h3>".t('Event Export')."</h3><p>".t('You can download public events from: ').$a->get_baseurl()."/cal/username/export/ical</p>";
} elseif ($a->argc==4) {
// get the parameters from the request we just received
$username = $a->argv[1];
$do = $a->argv[2];
$format = $a->argv[3];
// check that there is a user matching the requested profile
$r = q("SELECT uid FROM user WHERE nickname='".$username."' LIMIT 1;");
if (count($r))
{
$uid = $r[0]['uid'];
} else {
killme();
}
// if we shall do anything other then export, end here
if (! $do == 'export' )
killme();
// check if the user allows us to share the profile
$enable = get_pconfig( $uid, 'cal', 'enable');
if (! $enable == 1) {
info(t('The user does not export the calendar.'));
return;
}
// we are allowed to show events
// get the timezone the user is in
$r = q("SELECT timezone FROM user WHERE uid=".$uid." LIMIT 1;");
if (count($r))
$timezone = $r[0]['timezone'];
// does the user who requests happen to be the owner of the events
// requested? then show all of your events, otherwise only those that
// don't have limitations set in allow_cid and allow_gid
if (local_user() == $uid) {
$r = q("SELECT `start`, `finish`, `adjust`, `summary`, `desc`, `location` FROM `event` WHERE `uid`=".$uid." and `cid`=0;");
} else {
$r = q("SELECT `start`, `finish`, `adjust`, `summary`, `desc`, `location` FROM `event` WHERE `allow_cid`='' and `allow_gid`='' and `uid`='".$uid."' and `cid`='0';");
}
// we have the events that are available for the requestor
// now format the output according to the requested format
$res = cal_format_output($r, $format, $timezone);
if (! $res=='')
info($res);
} else {
// wrong number of parameters
killme();
}
return $o;
}
function cal_format_output ($r, $f, $tz)
{
$res = t('This calendar format is not supported');
switch ($f)
{
// format the exported data as a CSV file
case "csv":
header("Content-type: text/csv");
$o = '"Subject", "Start Date", "Start Time", "Description", "End Date", "End Time", "Location"' . PHP_EOL;
foreach ($r as $rr) {
// TODO the time / date entries don't include any information about the
// timezone the event is scheduled in :-/
$tmp1 = strtotime($rr['start']);
$tmp2 = strtotime($rr['finish']);
$time_format = "%H:%M:%S";
$date_format = "%Y-%m-%d";
$o .= '"'.$rr['summary'].'", "'.strftime($date_format, $tmp1) .
'", "'.strftime($time_format, $tmp1).'", "'.$rr['desc'] .
'", "'.strftime($date_format, $tmp2) .
'", "'.strftime($time_format, $tmp2) .
'", "'.$rr['location'].'"' . PHP_EOL;
}
echo $o;
killme();
case "ical":
header("Content-type: text/ics");
$o = 'BEGIN:VCALENDAR'. PHP_EOL
. 'VERSION:2.0' . PHP_EOL
. 'PRODID:-//friendica calendar export//0.1//EN' . PHP_EOL;
// TODO include timezone informations in cases were the time is not in UTC
// see http://tools.ietf.org/html/rfc2445#section-4.8.3
// . 'BEGIN:VTIMEZONE' . PHP_EOL
// . 'TZID:' . $tz . PHP_EOL
// . 'END:VTIMEZONE' . PHP_EOL;
// TODO instead of PHP_EOL CRLF should be used for long entries
// but test your solution against http://icalvalid.cloudapp.net/
// also long lines SHOULD be split at 75 characters length
foreach ($r as $rr) {
if ($rr['adjust'] == 1) {
$UTC = 'Z';
} else {
$UTC = '';
}
$o .= 'BEGIN:VEVENT' . PHP_EOL;
if ($rr[start]) {
$tmp = strtotime($rr['start']);
$dtformat = "%Y%m%dT%H%M%S".$UTC;
$o .= 'DTSTART:'.strftime($dtformat, $tmp).PHP_EOL;
}
if ($rr['finish']) {
$tmp = strtotime($rr['finish']);
$dtformat = "%Y%m%dT%H%M%S".$UTC;
$o .= 'DTEND:'.strftime($dtformat, $tmp).PHP_EOL;
}
if ($rr['summary'])
$tmp = $rr['summary'];
$tmp = str_replace(PHP_EOL, PHP_EOL.' ',$tmp);
$tmp = addcslashes($tmp, ',;');
$o .= 'SUMMARY:' . $tmp . PHP_EOL;
if ($rr['desc'])
$tmp = $rr['desc'];
$tmp = str_replace(PHP_EOL, PHP_EOL.' ',$tmp);
$tmp = addcslashes($tmp, ',;');
$o .= 'DESCRIPTION:' . $tmp . PHP_EOL;
if ($rr['location']) {
$tmp = $rr['location'];
$tmp = str_replace(PHP_EOL, PHP_EOL.' ',$tmp);
$tmp = addcslashes($tmp, ',;');
$o .= 'LOCATION:' . $tmp . PHP_EOL;
}
$o .= 'END:VEVENT' . PHP_EOL;
}
$o .= 'END:VCALENDAR' . PHP_EOL;
echo $o;
killme();
}
return $res;
}
function cal_addon_settings_post ( &$a, &$b )
{
if (! local_user())
return;
if (!x($_POST,'cal-submit'))
return;
set_pconfig(local_user(),'cal','enable',intval($_POST['cal-enable']));
}
function cal_addon_settings ( &$a, &$s )
{
if (! local_user())
return;
$enabled = get_pconfig(local_user(), 'cal', 'enable');
$checked = (($enabled) ? ' checked="checked" ' : '');
$url = $a->get_baseurl().'/cal/'.$a->user['nickname'].'/export/<em>format</em>';
$s .= '<span id="settings_cal_inflated" class="settings-block fakelink" style="display: block;" onclick="openClose(\'settings_cal_expanded\'); openClose(\'settings_cal_inflated\');">';
$s .= '<h3>'.t('Export Events').'</h3>';
$s .= '</span>';
$s .= '<div id="settings_cal_expanded" class="settings-block" style="display: none;">';
$s .= '<span class="fakelink" onclick="openClose(\'settings_cal_expanded\'); openClose(\'settings_cal_inflated\');">';
$s .= '<h3>'.t('Export Events').'</h3>';
$s .= '</span>';
$s .= '<div id="cal-wrapper">';
$s .= '<p>'.t('If this is enabled, your public events will be available at').' <strong>'.$url.'</strong></p>';
$s .= '<p>'.t('Currently supported formats are ical and csv.').'</p>';
$s .= '<label id="cal-enable-label" for="cal-checkbox">'. t('Enable calendar export') .'</label>';
$s .= '<input id="cal-checkbox" type="checkbox" name="cal-enable" value="1" ' . $checked . '/>';
$s .= '<div class="settings-submit-wrapper" ><input type="submit" name="cal-submit" class="settings-submit" value="' . t('Save Settings') . '" /></div>';
$s .= '<div class="clear"></div>';
$s .= '</div>';
$s .= '</div>';
}
?>

54
cal/lang/C/messages.po Normal file
View file

@ -0,0 +1,54 @@
# ADDON cal
# Copyright (C)
# This file is distributed under the same license as the Friendica cal addon package.
#
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\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"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: cal.php:33
msgid "Event Export"
msgstr ""
#: cal.php:33
msgid "You can download public events from: "
msgstr ""
#: cal.php:53
msgid "The user does not export the calendar."
msgstr ""
#: cal.php:83
msgid "This calendar format is not supported"
msgstr ""
#: cal.php:181 cal.php:185
msgid "Export Events"
msgstr ""
#: cal.php:189
msgid "If this is enabled, your public events will be available at"
msgstr ""
#: cal.php:190
msgid "Currently supported formats are ical and csv."
msgstr ""
#: cal.php:191
msgid "Enable calendar export"
msgstr ""
#: cal.php:193
msgid "Save Settings"
msgstr ""

12
cal/lang/C/strings.php Normal file
View file

@ -0,0 +1,12 @@
<?php
;
$a->strings["Event Export"] = "";
$a->strings["You can download public events from: "] = "";
$a->strings["The user does not export the calendar."] = "";
$a->strings["This calendar format is not supported"] = "";
$a->strings["Export Events"] = "";
$a->strings["If this is enabled, your public events will be available at"] = "";
$a->strings["Currently supported formats are ical and csv."] = "";
$a->strings["Enable calendar export"] = "";
$a->strings["Submit"] = "";

56
cal/lang/cs/messages.po Normal file
View file

@ -0,0 +1,56 @@
# ADDON cal
# Copyright (C)
# This file is distributed under the same license as the Friendica cal addon package.
#
#
# Translators:
# Michal Šupler <msupler@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2014-09-07 11:04+0000\n"
"Last-Translator: Michal Šupler <msupler@gmail.com>\n"
"Language-Team: Czech (http://www.transifex.com/projects/p/friendica/language/cs/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: cs\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#: cal.php:33
msgid "Event Export"
msgstr "Export událostí"
#: cal.php:33
msgid "You can download public events from: "
msgstr "Veřejné události si můžete stánout z:"
#: cal.php:53
msgid "The user does not export the calendar."
msgstr "Uživatel kalenář neexportuje."
#: cal.php:83
msgid "This calendar format is not supported"
msgstr "Tento kalendářový formát není podporován."
#: cal.php:181 cal.php:185
msgid "Export Events"
msgstr "Export událostí"
#: cal.php:189
msgid "If this is enabled, your public events will be available at"
msgstr "Pokud je toto povoleno, vaše veřejné události budou viditelné na"
#: cal.php:190
msgid "Currently supported formats are ical and csv."
msgstr "Aktuálně podporované formáty jsou ical a csv."
#: cal.php:191
msgid "Enable calendar export"
msgstr "Povolit export kalendáře"
#: cal.php:193
msgid "Save Settings"
msgstr "Uložit Nastavení"

16
cal/lang/cs/strings.php Normal file
View file

@ -0,0 +1,16 @@
<?php
if(! function_exists("string_plural_select_cs")) {
function string_plural_select_cs($n){
return ($n==1) ? 0 : ($n>=2 && $n<=4) ? 1 : 2;;
}}
;
$a->strings["Event Export"] = "Export událostí";
$a->strings["You can download public events from: "] = "Veřejné události si můžete stánout z:";
$a->strings["The user does not export the calendar."] = "Uživatel kalenář neexportuje.";
$a->strings["This calendar format is not supported"] = "Tento kalendářový formát není podporován.";
$a->strings["Export Events"] = "Export událostí";
$a->strings["If this is enabled, your public events will be available at"] = "Pokud je toto povoleno, vaše veřejné události budou viditelné na";
$a->strings["Currently supported formats are ical and csv."] = "Aktuálně podporované formáty jsou ical a csv.";
$a->strings["Enable calendar export"] = "Povolit export kalendáře";
$a->strings["Save Settings"] = "Uložit Nastavení";

56
cal/lang/de/messages.po Normal file
View file

@ -0,0 +1,56 @@
# ADDON cal
# Copyright (C)
# This file is distributed under the same license as the Friendica cal addon package.
#
#
# Translators:
# bavatar <tobias.diekershoff@gmx.net>, 2014
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2014-09-28 10:39+0000\n"
"Last-Translator: bavatar <tobias.diekershoff@gmx.net>\n"
"Language-Team: German (http://www.transifex.com/projects/p/friendica/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: cal.php:33
msgid "Event Export"
msgstr "Ereignis Export"
#: cal.php:33
msgid "You can download public events from: "
msgstr "Du kannst öffentliche Ereignisse hier herunterladen;"
#: cal.php:53
msgid "The user does not export the calendar."
msgstr "Diese_r Nutzer_in exportiert den Kalender nicht."
#: cal.php:83
msgid "This calendar format is not supported"
msgstr "Dieses Kalenderformat wird nicht unterstützt."
#: cal.php:181 cal.php:185
msgid "Export Events"
msgstr "Exportiere Ereignisse"
#: cal.php:189
msgid "If this is enabled, your public events will be available at"
msgstr "Wenn dies aktiviert ist, werden alle öffentliche Ereignisse unter folgender URL verfügbar sein"
#: cal.php:190
msgid "Currently supported formats are ical and csv."
msgstr "Derzeit werden die Formate ical und csv unterstützt."
#: cal.php:191
msgid "Enable calendar export"
msgstr "Kalenderexport aktivieren"
#: cal.php:193
msgid "Save Settings"
msgstr "Einstellungen speichern"

16
cal/lang/de/strings.php Normal file
View file

@ -0,0 +1,16 @@
<?php
if(! function_exists("string_plural_select_de")) {
function string_plural_select_de($n){
return ($n != 1);;
}}
;
$a->strings["Event Export"] = "Ereignis Export";
$a->strings["You can download public events from: "] = "Du kannst öffentliche Ereignisse hier herunterladen;";
$a->strings["The user does not export the calendar."] = "Diese_r Nutzer_in exportiert den Kalender nicht.";
$a->strings["This calendar format is not supported"] = "Dieses Kalenderformat wird nicht unterstützt.";
$a->strings["Export Events"] = "Exportiere Ereignisse";
$a->strings["If this is enabled, your public events will be available at"] = "Wenn dies aktiviert ist, werden alle öffentliche Ereignisse unter folgender URL verfügbar sein";
$a->strings["Currently supported formats are ical and csv."] = "Derzeit werden die Formate ical und csv unterstützt.";
$a->strings["Enable calendar export"] = "Kalenderexport aktivieren";
$a->strings["Save Settings"] = "Einstellungen speichern";

55
cal/lang/es/messages.po Normal file
View file

@ -0,0 +1,55 @@
# ADDON cal
# Copyright (C)
# This file is distributed under the same license as the Friendica cal addon package.
#
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2016-10-10 20:48+0000\n"
"Last-Translator: Athalbert\n"
"Language-Team: Spanish (http://www.transifex.com/Friendica/friendica/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: cal.php:33
msgid "Event Export"
msgstr "Exportación de evento"
#: cal.php:33
msgid "You can download public events from: "
msgstr "Puede descargar eventos públicos desde:"
#: cal.php:53
msgid "The user does not export the calendar."
msgstr "El usuario no exporta el calendario."
#: cal.php:83
msgid "This calendar format is not supported"
msgstr "No se soporta este formato de calendario"
#: cal.php:181 cal.php:185
msgid "Export Events"
msgstr "Exportar Eventos"
#: cal.php:189
msgid "If this is enabled, your public events will be available at"
msgstr "Si esto está habilitado, sus eventos públicos estarán permitidos en"
#: cal.php:190
msgid "Currently supported formats are ical and csv."
msgstr "Los formatos soportados actualmente son ical y csv."
#: cal.php:191
msgid "Enable calendar export"
msgstr "Habilitar exportar calendario"
#: cal.php:193
msgid "Save Settings"
msgstr "Guardar Ajustes"

16
cal/lang/es/strings.php Normal file
View file

@ -0,0 +1,16 @@
<?php
if(! function_exists("string_plural_select_es")) {
function string_plural_select_es($n){
return ($n != 1);;
}}
;
$a->strings["Event Export"] = "Exportación de evento";
$a->strings["You can download public events from: "] = "Puede descargar eventos públicos desde:";
$a->strings["The user does not export the calendar."] = "El usuario no exporta el calendario.";
$a->strings["This calendar format is not supported"] = "No se soporta este formato de calendario";
$a->strings["Export Events"] = "Exportar Eventos";
$a->strings["If this is enabled, your public events will be available at"] = "Si esto está habilitado, sus eventos públicos estarán permitidos en";
$a->strings["Currently supported formats are ical and csv."] = "Los formatos soportados actualmente son ical y csv.";
$a->strings["Enable calendar export"] = "Habilitar exportar calendario";
$a->strings["Save Settings"] = "Guardar Ajustes";

56
cal/lang/fr/messages.po Normal file
View file

@ -0,0 +1,56 @@
# ADDON cal
# Copyright (C)
# This file is distributed under the same license as the Friendica cal addon package.
#
#
# Translators:
# Tubuntu <tubuntu@testimonium.be>, 2014
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2014-09-07 09:24+0000\n"
"Last-Translator: Tubuntu <tubuntu@testimonium.be>\n"
"Language-Team: French (http://www.transifex.com/projects/p/friendica/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: cal.php:33
msgid "Event Export"
msgstr "Exportation d'événement"
#: cal.php:33
msgid "You can download public events from: "
msgstr "Vous pouvez télécharger les événements publiques de :"
#: cal.php:53
msgid "The user does not export the calendar."
msgstr "L'utilisateur n'exporte pas le calendrier."
#: cal.php:83
msgid "This calendar format is not supported"
msgstr "Ce format de calendrier n'est pas pris en charge"
#: cal.php:181 cal.php:185
msgid "Export Events"
msgstr "Exporter les événements"
#: cal.php:189
msgid "If this is enabled, your public events will be available at"
msgstr "Si activé, vos événements publiques seront disponible à"
#: cal.php:190
msgid "Currently supported formats are ical and csv."
msgstr "Les formats actuellement pris en charge sont ical et csv."
#: cal.php:191
msgid "Enable calendar export"
msgstr "Activer l'export de calendrier"
#: cal.php:193
msgid "Save Settings"
msgstr "Sauvegarder les paramètres"

16
cal/lang/fr/strings.php Normal file
View file

@ -0,0 +1,16 @@
<?php
if(! function_exists("string_plural_select_fr")) {
function string_plural_select_fr($n){
return ($n > 1);;
}}
;
$a->strings["Event Export"] = "Exportation d'événement";
$a->strings["You can download public events from: "] = "Vous pouvez télécharger les événements publiques de :";
$a->strings["The user does not export the calendar."] = "L'utilisateur n'exporte pas le calendrier.";
$a->strings["This calendar format is not supported"] = "Ce format de calendrier n'est pas pris en charge";
$a->strings["Export Events"] = "Exporter les événements";
$a->strings["If this is enabled, your public events will be available at"] = "Si activé, vos événements publiques seront disponible à";
$a->strings["Currently supported formats are ical and csv."] = "Les formats actuellement pris en charge sont ical et csv.";
$a->strings["Enable calendar export"] = "Activer l'export de calendrier";
$a->strings["Save Settings"] = "Sauvegarder les paramètres";

56
cal/lang/it/messages.po Normal file
View file

@ -0,0 +1,56 @@
# ADDON cal
# Copyright (C)
# This file is distributed under the same license as the Friendica cal addon package.
#
#
# Translators:
# fabrixxm <fabrix.xm@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2014-09-10 10:30+0000\n"
"Last-Translator: fabrixxm <fabrix.xm@gmail.com>\n"
"Language-Team: Italian (http://www.transifex.com/Friendica/friendica/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: cal.php:33
msgid "Event Export"
msgstr "Esporta Evento"
#: cal.php:33
msgid "You can download public events from: "
msgstr "Puoi scaricare gli eventi publici da:"
#: cal.php:53
msgid "The user does not export the calendar."
msgstr "L'utente non esporta il calendario."
#: cal.php:83
msgid "This calendar format is not supported"
msgstr "Il formato del calendario non è supportato"
#: cal.php:181 cal.php:185
msgid "Export Events"
msgstr "Esporta Eventi"
#: cal.php:189
msgid "If this is enabled, your public events will be available at"
msgstr "Se abilitato, i tuoi eventi pubblici saranno disponibili a"
#: cal.php:190
msgid "Currently supported formats are ical and csv."
msgstr "I formati supportati sono ical e csv."
#: cal.php:191
msgid "Enable calendar export"
msgstr "Abilita esporazione calendario"
#: cal.php:193
msgid "Save Settings"
msgstr "Salva Impostazioni"

16
cal/lang/it/strings.php Normal file
View file

@ -0,0 +1,16 @@
<?php
if(! function_exists("string_plural_select_it")) {
function string_plural_select_it($n){
return ($n != 1);;
}}
;
$a->strings["Event Export"] = "Esporta Evento";
$a->strings["You can download public events from: "] = "Puoi scaricare gli eventi publici da:";
$a->strings["The user does not export the calendar."] = "L'utente non esporta il calendario.";
$a->strings["This calendar format is not supported"] = "Il formato del calendario non è supportato";
$a->strings["Export Events"] = "Esporta Eventi";
$a->strings["If this is enabled, your public events will be available at"] = "Se abilitato, i tuoi eventi pubblici saranno disponibili a";
$a->strings["Currently supported formats are ical and csv."] = "I formati supportati sono ical e csv.";
$a->strings["Enable calendar export"] = "Abilita esporazione calendario";
$a->strings["Save Settings"] = "Salva Impostazioni";

View file

@ -0,0 +1,57 @@
# ADDON cal
# Copyright (C)
# This file is distributed under the same license as the Friendica cal addon package.
#
#
# Translators:
# John Brazil, 2015
# Sérgio Lima <oigreslima@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2015-01-31 01:24+0000\n"
"Last-Translator: John Brazil\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/friendica/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: pt_BR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: cal.php:33
msgid "Event Export"
msgstr "Exportar Evento"
#: cal.php:33
msgid "You can download public events from: "
msgstr "Você pode baixar eventos públicos de:"
#: cal.php:53
msgid "The user does not export the calendar."
msgstr "O usuário não exportou o calendário."
#: cal.php:83
msgid "This calendar format is not supported"
msgstr "Esse formato de calendário não é suportado."
#: cal.php:181 cal.php:185
msgid "Export Events"
msgstr "Exporta Eventos"
#: cal.php:189
msgid "If this is enabled, your public events will be available at"
msgstr "Se isso estiver habiltiado, seus eventos públicos estarão disponíveis"
#: cal.php:190
msgid "Currently supported formats are ical and csv."
msgstr "Os formatos disponíveis atualmente são ical e csv."
#: cal.php:191
msgid "Enable calendar export"
msgstr "Habilite exportar calendário"
#: cal.php:193
msgid "Save Settings"
msgstr "Salvar as Configurações"

View file

@ -0,0 +1,16 @@
<?php
if(! function_exists("string_plural_select_pt_br")) {
function string_plural_select_pt_br($n){
return ($n > 1);;
}}
;
$a->strings["Event Export"] = "Exportar Evento";
$a->strings["You can download public events from: "] = "Você pode baixar eventos públicos de:";
$a->strings["The user does not export the calendar."] = "O usuário não exportou o calendário.";
$a->strings["This calendar format is not supported"] = "Esse formato de calendário não é suportado.";
$a->strings["Export Events"] = "Exporta Eventos";
$a->strings["If this is enabled, your public events will be available at"] = "Se isso estiver habiltiado, seus eventos públicos estarão disponíveis";
$a->strings["Currently supported formats are ical and csv."] = "Os formatos disponíveis atualmente são ical e csv.";
$a->strings["Enable calendar export"] = "Habilite exportar calendário";
$a->strings["Save Settings"] = "Salvar as Configurações";

56
cal/lang/ro/messages.po Normal file
View file

@ -0,0 +1,56 @@
# ADDON cal
# Copyright (C)
# This file is distributed under the same license as the Friendica cal addon package.
#
#
# Translators:
# Doru DEACONU <dumitrudeaconu@yahoo.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2014-11-27 14:13+0000\n"
"Last-Translator: Doru DEACONU <dumitrudeaconu@yahoo.com>\n"
"Language-Team: Romanian (Romania) (http://www.transifex.com/projects/p/friendica/language/ro_RO/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ro_RO\n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
#: cal.php:33
msgid "Event Export"
msgstr "Exportare Eveniment"
#: cal.php:33
msgid "You can download public events from: "
msgstr "Puteți descărca evenimente publice de la:"
#: cal.php:53
msgid "The user does not export the calendar."
msgstr "Utilizatorul nu își exportă calendarul."
#: cal.php:83
msgid "This calendar format is not supported"
msgstr "Acest format de calendar nu este acceptat"
#: cal.php:181 cal.php:185
msgid "Export Events"
msgstr "Exportați Evenimente"
#: cal.php:189
msgid "If this is enabled, your public events will be available at"
msgstr "Dacă este activat, evenimente dvs publice vor fi disponibile pe"
#: cal.php:190
msgid "Currently supported formats are ical and csv."
msgstr "Formate acceptate în prezent sunt ical şi csv."
#: cal.php:191
msgid "Enable calendar export"
msgstr "Activați exportarea calendarului"
#: cal.php:193
msgid "Save Settings"
msgstr "Salvare Configurări"

16
cal/lang/ro/strings.php Normal file
View file

@ -0,0 +1,16 @@
<?php
if(! function_exists("string_plural_select_ro")) {
function string_plural_select_ro($n){
return ($n==1?0:((($n%100>19)||(($n%100==0)&&($n!=0)))?2:1));;
}}
;
$a->strings["Event Export"] = "Exportare Eveniment";
$a->strings["You can download public events from: "] = "Puteți descărca evenimente publice de la:";
$a->strings["The user does not export the calendar."] = "Utilizatorul nu își exportă calendarul.";
$a->strings["This calendar format is not supported"] = "Acest format de calendar nu este acceptat";
$a->strings["Export Events"] = "Exportați Evenimente";
$a->strings["If this is enabled, your public events will be available at"] = "Dacă este activat, evenimente dvs publice vor fi disponibile pe";
$a->strings["Currently supported formats are ical and csv."] = "Formate acceptate în prezent sunt ical şi csv.";
$a->strings["Enable calendar export"] = "Activați exportarea calendarului";
$a->strings["Save Settings"] = "Salvare Configurări";

56
cal/lang/ru/messages.po Normal file
View file

@ -0,0 +1,56 @@
# ADDON cal
# Copyright (C)
# This file is distributed under the same license as the Friendica cal addon package.
#
#
# Translators:
# Stanislav N. <pztrn@pztrn.name>, 2017
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2017-04-08 17:06+0000\n"
"Last-Translator: Stanislav N. <pztrn@pztrn.name>\n"
"Language-Team: Russian (http://www.transifex.com/Friendica/friendica/language/ru/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ru\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
#: cal.php:33
msgid "Event Export"
msgstr "Экспорт событий"
#: cal.php:33
msgid "You can download public events from: "
msgstr "Вы можете скачать публичные события из:"
#: cal.php:53
msgid "The user does not export the calendar."
msgstr "Пользователь не экспортировал календарь."
#: cal.php:83
msgid "This calendar format is not supported"
msgstr "Этот формат календарей не поддерживается"
#: cal.php:181 cal.php:185
msgid "Export Events"
msgstr "Экспорт событий"
#: cal.php:189
msgid "If this is enabled, your public events will be available at"
msgstr "Если эта настройка включена, то ваши публичные события будут доступны на:"
#: cal.php:190
msgid "Currently supported formats are ical and csv."
msgstr "Текущие поддерживаемые форматы ical и csv."
#: cal.php:191
msgid "Enable calendar export"
msgstr "Включить экспорт календаря"
#: cal.php:193
msgid "Save Settings"
msgstr "Сохранить настройки"

16
cal/lang/ru/strings.php Normal file
View file

@ -0,0 +1,16 @@
<?php
if(! function_exists("string_plural_select_ru")) {
function string_plural_select_ru($n){
return ($n%10==1 && $n%100!=11 ? 0 : $n%10>=2 && $n%10<=4 && ($n%100<12 || $n%100>14) ? 1 : $n%10==0 || ($n%10>=5 && $n%10<=9) || ($n%100>=11 && $n%100<=14)? 2 : 3);;
}}
;
$a->strings["Event Export"] = "Экспорт событий";
$a->strings["You can download public events from: "] = "Вы можете скачать публичные события из:";
$a->strings["The user does not export the calendar."] = "Пользователь не экспортировал календарь.";
$a->strings["This calendar format is not supported"] = "Этот формат календарей не поддерживается";
$a->strings["Export Events"] = "Экспорт событий";
$a->strings["If this is enabled, your public events will be available at"] = "Если эта настройка включена, то ваши публичные события будут доступны на:";
$a->strings["Currently supported formats are ical and csv."] = "Текущие поддерживаемые форматы ical и csv.";
$a->strings["Enable calendar export"] = "Включить экспорт календаря";
$a->strings["Save Settings"] = "Сохранить настройки";

View file

@ -0,0 +1,56 @@
# ADDON cal
# Copyright (C)
# This file is distributed under the same license as the Friendica cal addon package.
#
#
# Translators:
# mytbk <mytbk920423@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2017-10-02 05:52+0000\n"
"Last-Translator: mytbk <mytbk920423@gmail.com>\n"
"Language-Team: Chinese (China) (http://www.transifex.com/Friendica/friendica/language/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: zh_CN\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: cal.php:33
msgid "Event Export"
msgstr "事件导出"
#: cal.php:33
msgid "You can download public events from: "
msgstr "你可以从这里下载公开事件:"
#: cal.php:53
msgid "The user does not export the calendar."
msgstr "这个用户没有导出日历。"
#: cal.php:83
msgid "This calendar format is not supported"
msgstr "不支持这个日历格式"
#: cal.php:181 cal.php:185
msgid "Export Events"
msgstr "导出事件"
#: cal.php:189
msgid "If this is enabled, your public events will be available at"
msgstr "如果这个被启用,你的公开事件会在"
#: cal.php:190
msgid "Currently supported formats are ical and csv."
msgstr "当前支持的格式是 ical 和 csv."
#: cal.php:191
msgid "Enable calendar export"
msgstr "启用日历导出"
#: cal.php:193
msgid "Save Settings"
msgstr "保存设置"

View file

@ -0,0 +1,16 @@
<?php
if(! function_exists("string_plural_select_zh_cn")) {
function string_plural_select_zh_cn($n){
return 0;;
}}
;
$a->strings["Event Export"] = "事件导出";
$a->strings["You can download public events from: "] = "你可以从这里下载公开事件:";
$a->strings["The user does not export the calendar."] = "这个用户没有导出日历。";
$a->strings["This calendar format is not supported"] = "不支持这个日历格式";
$a->strings["Export Events"] = "导出事件";
$a->strings["If this is enabled, your public events will be available at"] = "如果这个被启用,你的公开事件会在";
$a->strings["Currently supported formats are ical and csv."] = "当前支持的格式是 ical 和 csv.";
$a->strings["Enable calendar export"] = "启用日历导出";
$a->strings["Save Settings"] = "保存设置";

View file

@ -6,8 +6,6 @@
* Author: Fabio Comuni <http://kirgroup.com/profile/fabrixxm> * Author: Fabio Comuni <http://kirgroup.com/profile/fabrixxm>
*/ */
use Friendica\Core\Config;
use Friendica\Module\Login;
require_once('mod/community.php'); require_once('mod/community.php');
@ -22,69 +20,33 @@ function communityhome_uninstall() {
logger("removed communityhome"); logger("removed communityhome");
} }
function communityhome_getopts() {
return [
'hidelogin'=>t('Hide login form'),
'showlastusers'=>t('Show last new users'),
'showactiveusers'=>t('Show last active users'),
'showlastphotos'=>t('Show last photos'),
'showlastlike'=>t('Show last liked items'),
'showcommunitystream'=>t('Show community stream')
];
}
function communityhome_plugin_admin(&$a, &$o) {
$tpl = get_markup_template( 'settings.tpl', 'addon/communityhome/' );
$opts = communityhome_getopts();
$ctx = [
'$submit' => t("Submit"),
'$fields' => [],
];
foreach($opts as $k=>$v) {
$ctx['fields'][] = ['communityhome_'.$k, $v, Config::get('communityhome', $k)];
}
$o = replace_macros($tpl, $ctx);
}
function communityhome_plugin_admin_post(&$a,&$b) {
if(x($_POST,'communityhome-submit')) {
$opts = communityhome_getopts();
foreach($opts as $k=>$v) {
Config::set('communityhome', $k, x($_POST,'communityhome_'.$k));
}
}
}
function communityhome_home(&$a, &$o){ function communityhome_home(&$a, &$o){
// custom css // custom css
$a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="'.$a->get_baseurl().'/addon/communityhome/communityhome.css" media="all" />'; $a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="'.$a->get_baseurl().'/addon/communityhome/communityhome.css" media="all" />';
if (!Config::get('communityhome','hidelogin')){ if (!get_config('communityhome','hidelogin')){
$aside = [ $aside = array(
'$tab_1' => t('Login'), '$tab_1' => t('Login'),
'$tab_2' => t('OpenID'), '$tab_2' => t('OpenID'),
'$noOid' => Config::get('system','no_openid'), '$noOid' => get_config('system','no_openid'),
]; );
// login form // login form
$aside['$login_title'] = t('Login'); $aside['$login_title'] = t('Login');
$aside['$login_form'] = Login::form($a->query_string, $a->config['register_policy'] == REGISTER_CLOSED ? false : true); $aside['$login_form'] = login(($a->config['register_policy'] == REGISTER_CLOSED) ? false : true);
} else { } else
$aside = [ $aside = array(
//'$tab_1' => t('Login'), //'$tab_1' => t('Login'),
//'$tab_2' => t('OpenID'), //'$tab_2' => t('OpenID'),
//'$noOid' => Config::get('system','no_openid'), //'$noOid' => get_config('system','no_openid'),
]; );
}
// last 12 users // last 12 users
if (Config::get('communityhome','showlastusers')){ if (get_config('communityhome','showlastusers')===true){
$aside['$lastusers_title'] = t('Latest users'); $aside['$lastusers_title'] = t('Latest users');
$aside['$lastusers_items'] = []; $aside['$lastusers_items'] = array();
$sql_extra = ""; $sql_extra = "";
$publish = (Config::get('system','publish_all') ? '' : " AND `publish` = 1 " ); $publish = (get_config('system','publish_all') ? '' : " AND `publish` = 1 " );
$order = " ORDER BY `register_date` DESC "; $order = " ORDER BY `register_date` DESC ";
$r = q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname` $r = q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname`
@ -99,19 +61,19 @@ function communityhome_home(&$a, &$o){
$photo = 'thumb'; $photo = 'thumb';
foreach($r as $rr) { foreach($r as $rr) {
$profile_link = $a->get_baseurl() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']); $profile_link = $a->get_baseurl() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']);
$entry = replace_macros($tpl,[ $entry = replace_macros($tpl,array(
'$id' => $rr['id'], '$id' => $rr['id'],
'$profile_link' => $profile_link, '$profile_link' => $profile_link,
'$photo' => $rr[$photo], '$photo' => $a->get_cached_avatar_image($rr[$photo]),
'$alt_text' => $rr['name'], '$alt_text' => $rr['name'],
]); ));
$aside['$lastusers_items'][] = $entry; $aside['$lastusers_items'][] = $entry;
} }
} }
} }
// 12 most active users (by posts and contacts) // 12 most active users (by posts and contacts)
// this query don't work on some mysql versions // this query don't work on some mysql versions
if (Config::get('communityhome','showactiveusers')){ if (get_config('communityhome','showactiveusers')===true){
$r = q("SELECT `uni`.`contacts`,`uni`.`items`, `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname` FROM $r = q("SELECT `uni`.`contacts`,`uni`.`items`, `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname` FROM
(SELECT COUNT(*) as `contacts`, `uid` FROM `contact` WHERE `self`=0 GROUP BY `uid`) AS `con`, (SELECT COUNT(*) as `contacts`, `uid` FROM `contact` WHERE `self`=0 GROUP BY `uid`) AS `con`,
(SELECT COUNT(*) as `items`, `uid` FROM `item` WHERE `item`.`changed` > DATE(NOW() - INTERVAL 1 MONTH) AND `item`.`wall` = 1 GROUP BY `uid`) AS `ite`, (SELECT COUNT(*) as `items`, `uid` FROM `item` WHERE `item`.`changed` > DATE(NOW() - INTERVAL 1 MONTH) AND `item`.`wall` = 1 GROUP BY `uid`) AS `ite`,
@ -127,25 +89,25 @@ function communityhome_home(&$a, &$o){
LIMIT 0,10"); LIMIT 0,10");
if($r && count($r)) { if($r && count($r)) {
$aside['$activeusers_title'] = t('Most active users'); $aside['$activeusers_title'] = t('Most active users');
$aside['$activeusers_items'] = []; $aside['$activeusers_items'] = array();
$photo = 'thumb'; $photo = 'thumb';
foreach($r as $rr) { foreach($r as $rr) {
$profile_link = $a->get_baseurl() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']); $profile_link = $a->get_baseurl() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']);
$entry = replace_macros($tpl,[ $entry = replace_macros($tpl,array(
'$id' => $rr['id'], '$id' => $rr['id'],
'$profile_link' => $profile_link, '$profile_link' => $profile_link,
'$photo' => $rr[$photo], '$photo' => $rr[$photo],
'$photo_user' => sprintf("%s (%s posts, %s contacts)",$rr['name'], ($rr['items']?$rr['items']:'0'), ($rr['contacts']?$rr['contacts']:'0')) '$alt_text' => sprintf("%s (%s posts, %s contacts)",$rr['name'], ($rr['items']?$rr['items']:'0'), ($rr['contacts']?$rr['contacts']:'0'))
]); ));
$aside['$activeusers_items'][] = $entry; $aside['$activeusers_items'][] = $entry;
} }
} }
} }
// last 12 photos // last 12 photos
if (Config::get('communityhome','showlastphotos')){ if (get_config('communityhome','showlastphotos')===true){
$aside['$photos_title'] = t('Latest photos'); $aside['$photos_title'] = t('Latest photos');
$aside['$photos_items'] = []; $aside['$photos_items'] = array();
$r = q("SELECT `photo`.`id`, `photo`.`resource-id`, `photo`.`scale`, `photo`.`desc`, `user`.`nickname`, `user`.`username` FROM $r = q("SELECT `photo`.`id`, `photo`.`resource-id`, `photo`.`scale`, `photo`.`desc`, `user`.`nickname`, `user`.`username` FROM
(SELECT `resource-id`, MAX(`scale`) as maxscale FROM `photo` (SELECT `resource-id`, MAX(`scale`) as maxscale FROM `photo`
WHERE `profile`=0 AND `contact-id`=0 AND `album` NOT IN ('Contact Photos', '%s', 'Profile Photos', '%s') WHERE `profile`=0 AND `contact-id`=0 AND `album` NOT IN ('Contact Photos', '%s', 'Profile Photos', '%s')
@ -169,13 +131,12 @@ function communityhome_home(&$a, &$o){
$photo_page = $a->get_baseurl() . '/photos/' . $rr['nickname'] . '/image/' . $rr['resource-id']; $photo_page = $a->get_baseurl() . '/photos/' . $rr['nickname'] . '/image/' . $rr['resource-id'];
$photo_url = $a->get_baseurl() . '/photo/' . $rr['resource-id'] . '-' . $rr['scale'] .'.jpg'; $photo_url = $a->get_baseurl() . '/photo/' . $rr['resource-id'] . '-' . $rr['scale'] .'.jpg';
$entry = replace_macros($tpl,[ $entry = replace_macros($tpl,array(
'$id' => $rr['id'], '$id' => $rr['id'],
'$profile_link' => $photo_page, '$profile_link' => $photo_page,
'$photo' => $photo_url, '$photo' => $photo_url,
'$photo_user' => $rr['username'], '$alt_text' => $rr['username']." : ".$rr['desc'],
'$photo_title' => $rr['desc'] ));
]);
$aside['$photos_items'][] = $entry; $aside['$photos_items'][] = $entry;
} }
@ -183,9 +144,9 @@ function communityhome_home(&$a, &$o){
} }
// last 10 liked items // last 10 liked items
if (Config::get('communityhome','showlastlike')){ if (get_config('communityhome','showlastlike')===true){
$aside['$like_title'] = t('Latest likes'); $aside['$like_title'] = t('Latest likes');
$aside['$like_items'] = []; $aside['$like_items'] = array();
$r = q("SELECT `T1`.`created`, `T1`.`liker`, `T1`.`liker-link`, `item`.* FROM $r = q("SELECT `T1`.`created`, `T1`.`liker`, `T1`.`liker-link`, `item`.* FROM
(SELECT `parent-uri`, `created`, `author-name` AS `liker`,`author-link` AS `liker-link` (SELECT `parent-uri`, `created`, `author-name` AS `liker`,`author-link` AS `liker-link`
FROM `item` WHERE `verb`='http://activitystrea.ms/schema/1.0/like' GROUP BY `parent-uri` ORDER BY `created` DESC) AS T1 FROM `item` WHERE `verb`='http://activitystrea.ms/schema/1.0/like' GROUP BY `parent-uri` ORDER BY `created` DESC) AS T1
@ -215,7 +176,7 @@ function communityhome_home(&$a, &$o){
default: default:
if ($rr['resource-id']){ if ($rr['resource-id']){
$post_type = t('photo'); $post_type = t('photo');
$m=[]; preg_match("/\[url=([^]]*)\]/", $rr['body'], $m); $m=array(); preg_match("/\[url=([^]]*)\]/", $rr['body'], $m);
$rr['plink'] = $m[1]; $rr['plink'] = $m[1];
} else { } else {
$post_type = t('status'); $post_type = t('status');
@ -237,14 +198,14 @@ function communityhome_home(&$a, &$o){
if(file_exists('home.html')) if(file_exists('home.html'))
$o = file_get_contents('home.html'); $o = file_get_contents('home.html');
if (Config::get('communityhome','showcommunitystream')){ if (get_config('communityhome','showcommunitystream')===true){
$oldset = Config::get('system','community_page_style'); $oldset = get_config('system','community_page_style');
if ($oldset == CP_NO_COMMUNITY_PAGE) if ($oldset == CP_NO_COMMUNITY_PAGE)
Config::set('system','community_page_style', CP_USERS_ON_SERVER); set_config('system','community_page_style', CP_USERS_ON_SERVER);
$o .= community_content($a,1); $o .= community_content($a,1);
if ($oldset == CP_NO_COMMUNITY_PAGE) if ($oldset == CP_NO_COMMUNITY_PAGE)
Config::set('system','community_page_style', $oldset); set_config('system','community_page_style', $oldset);
} }
} }

View file

@ -2,8 +2,8 @@
<div class="directory-item" id="directory-item-{{$id}}" > <div class="directory-item" id="directory-item-{{$id}}" >
<div class="directory-photo-wrapper" id="directory-photo-wrapper-{{$id}}" > <div class="directory-photo-wrapper" id="directory-photo-wrapper-{{$id}}" >
<div class="directory-photo" id="directory-photo-{{$id}}" > <div class="directory-photo" id="directory-photo-{{$id}}" >
<a href="{{$profile_link}}" class="directory-profile-link" id="directory-profile-link-{{$id}}" > <a href="{{$profile}}-link" class="directory-profile-link" id="directory-profile-link-{{$id}}" >
<img class="directory-photo-img" src="{{$photo}}" alt="{{$photo_user}} {{if $photo_title}}: {{$photo_title}}{{/if}}" title="{{$alt_text}}" /> <img class="directory-photo-img" src="{{$photo}}" alt="{{$alt}}-text" title="{{$alt}}-text" />
</a> </a>
</div> </div>
</div> </div>

View file

@ -1,9 +0,0 @@
<div id="communityhome-wrapper">
{{foreach $fields as $field}}
{{include file="field_checkbox.tpl" field=$field}}
{{/foreach}}
</div>
<div class="settings-submit-wrapper" >
<input type="submit" id="communityhome-submit" name="communityhome-submit" class="settings-submit" value="{{$submit}}" />
</div>

View file

@ -92,16 +92,16 @@ include("UnitConvertor.php");
$conv = new TP_Converter('en'); $conv = new TP_Converter('en');
$conversions = [ $conversions = array(
'Temperature'=>['base' =>'Celsius', 'Temperature'=>array('base' =>'Celsius',
'conv'=>[ 'conv'=>array(
'Fahrenheit'=>['ratio'=>1.8, 'offset'=>32], 'Fahrenheit'=>array('ratio'=>1.8, 'offset'=>32),
'Kelvin'=>['ratio'=>1, 'offset'=>273], 'Kelvin'=>array('ratio'=>1, 'offset'=>273),
'Reaumur'=>0.8 'Reaumur'=>0.8
] )
], ),
'Weight' => ['base' =>'kg', 'Weight' => array('base' =>'kg',
'conv'=>[ 'conv'=>array(
'g'=>1000, 'g'=>1000,
'mg'=>1000000, 'mg'=>1000000,
't'=>0.001, 't'=>0.001,
@ -112,10 +112,10 @@ $conversions = [
'cwt(US)' => 0.022046, 'cwt(US)' => 0.022046,
'ton (US)' => 0.0011023, 'ton (US)' => 0.0011023,
'ton (UK)' => 0.0009842 'ton (UK)' => 0.0009842
] )
], ),
'Distance' => ['base' =>'km', 'Distance' => array('base' =>'km',
'conv'=>[ 'conv'=>array(
'm'=>1000, 'm'=>1000,
'dm'=>10000, 'dm'=>10000,
'cm'=>100000, 'cm'=>100000,
@ -127,10 +127,10 @@ $conversions = [
'yd'=>1093.6, 'yd'=>1093.6,
'furlong'=>4.970969537898672, 'furlong'=>4.970969537898672,
'fathom'=>546.8066491688539 'fathom'=>546.8066491688539
] )
], ),
'Area' => ['base' =>'km 2', 'Area' => array('base' =>'km 2',
'conv'=>[ 'conv'=>array(
'ha'=>100, 'ha'=>100,
'acre'=>247.105, 'acre'=>247.105,
'm 2'=>pow(1000,2), 'm 2'=>pow(1000,2),
@ -142,10 +142,10 @@ $conversions = [
'in 2'=>pow(39370,2), 'in 2'=>pow(39370,2),
'ft 2'=>pow(3280.8,2), 'ft 2'=>pow(3280.8,2),
'yd 2'=>pow(1093.6,2), 'yd 2'=>pow(1093.6,2),
] )
], ),
'Volume' => ['base' =>'m 3', 'Volume' => array('base' =>'m 3',
'conv'=>[ 'conv'=>array(
'in 3'=>61023.6, 'in 3'=>61023.6,
'ft 3'=>35.315, 'ft 3'=>35.315,
'cm 3'=>pow(10,6), 'cm 3'=>pow(10,6),
@ -165,18 +165,18 @@ $conversions = [
'barrel petroleum'=>1000/158.99, 'barrel petroleum'=>1000/158.99,
'Register Tons'=>2.832, 'Register Tons'=>2.832,
'Ocean Tons'=>1.1327 'Ocean Tons'=>1.1327
] )
], ),
'Speed' =>['base' =>'kmph', 'Speed' =>array('base' =>'kmph',
'conv'=>[ 'conv'=>array(
'mps'=>0.0001726031, 'mps'=>0.0001726031,
'milesph'=>0.62137, 'milesph'=>0.62137,
'knots'=>0.53996, 'knots'=>0.53996,
'mach STP'=>0.0008380431, 'mach STP'=>0.0008380431,
'c (warp)'=>9.265669e-10 'c (warp)'=>9.265669e-10
] )
] )
]; );
while (list($key,$val) = each($conversions)) { while (list($key,$val) = each($conversions)) {

7
convpath/README Normal file
View file

@ -0,0 +1,7 @@
convpath
This addon converts all internal paths according to the current scheme.
That means that if a page is called via https then all internal links are also converted into https.
Same happens when you call your page with http.

102
convpath/convpath.php Normal file
View file

@ -0,0 +1,102 @@
<?php
/**
* Name: Convert Paths
* Description: Converts all internal paths according to the current scheme (http or https)
* Version: 1.0
* Author: Michael Vogel <https://pirati.ca/profile/heluecht>
* Status: Unsupported
*/
function convpath_install() {
register_hook('page_end', 'addon/convpath/convpath.php', 'convpath_page_end');
register_hook('page_header', 'addon/convpath/convpath.php', 'convpath_page_header');
register_hook('ping_xmlize', 'addon/convpath/convpath.php', 'convpath_ping_xmlize_hook');
register_hook('prepare_body', 'addon/convpath/convpath.php', 'convpath_prepare_body_hook');
register_hook('display_item', 'addon/convpath/convpath.php', 'convpath_display_item_hook');
}
function convpath_uninstall() {
unregister_hook('page_end', 'addon/convpath/convpath.php', 'convpath_page_end');
unregister_hook('page_header', 'addon/convpath/convpath.php', 'convpath_page_header');
unregister_hook('ping_xmlize', 'addon/convpath/convpath.php', 'convpath_ping_xmlize_hook');
unregister_hook('prepare_body', 'addon/convpath/convpath.php', 'convpath_prepare_body_hook');
unregister_hook('display_item', 'addon/convpath/convpath.php', 'convpath_display_item_hook');
}
function convpath_ping_xmlize_hook(&$a, &$o) {
$o["photo"] = convpath_url($a, $o["photo"]);
}
function convpath_page_header(&$a, &$o){
$o = convpath_convert($o);
}
function convpath_page_end(&$a, &$o){
$o = convpath_convert($o);
if (isset($a->page['aside']))
$a->page['aside'] = convpath_convert($a->page['aside']);
}
function convpath_prepare_body_hook(&$a, &$o) {
$o["html"] = convpath_convert($o["html"]);
}
function convpath_display_item_hook(&$a, &$o) {
if (isset($o["output"])) {
if (isset($o["output"]["thumb"]))
$o["output"]["thumb"] = convpath_url($a, $o["output"]["thumb"]);
if (isset($o["output"]["author-avatar"]))
$o["output"]["author-avatar"] = convpath_url($a, $o["output"]["author-avatar"]);
if (isset($o["output"]["owner-avatar"]))
$o["output"]["owner-avatar"] = convpath_url($a, $o["output"]["owner-avatar"]);
if (isset($o["output"]["owner_photo"]))
$o["output"]["owner_photo"] = convpath_url($a, $o["output"]["owner_photo"]);
}
}
function convpath_url($a, $path) {
if ($path == "")
return("");
$ssl = (substr($a->get_baseurl(), 0, 8) == "https://");
if ($ssl) {
$search = "http://".$a->get_hostname();
$replace = "https://".$a->get_hostname();
} else {
$search = "https://".$a->get_hostname();
$replace = "http://".$a->get_hostname();
}
$path = str_replace($search, $replace, $path);
return($path);
}
/*
Converts a given path according to the current scheme
*/
function convpath_convert($path) {
global $a;
if ($path == "")
return("");
$ssl = (substr($a->get_baseurl(), 0, 8) == "https://");
if ($ssl) {
$search = "http://".$a->get_hostname();
$replace = "https://".$a->get_hostname();
} else {
$search = "https://".$a->get_hostname();
$replace = "http://".$a->get_hostname();
}
$searcharr = array("src='".$search, 'src="'.$search);
$replacearr = array("src='".$replace, 'src="'.$replace);
$path = str_replace($searcharr, $replacearr, $path);
//$path = str_replace($search, $replace, $path);
return($path);
}

View file

View file

@ -13,17 +13,13 @@ require_once('include/network.php');
require_once("mod/proxy.php"); require_once("mod/proxy.php");
require_once('include/text.php'); require_once('include/text.php');
use Friendica\Core\Cache;
use Friendica\Core\Config;
use Friendica\Core\PConfig;
// get the weather data from OpenWeatherMap // get the weather data from OpenWeatherMap
function getWeather( $loc, $units='metric', $lang='en', $appid='', $cachetime=0) { function getWeather( $loc, $units='metric', $lang='en', $appid='', $cachetime=0) {
$url = "http://api.openweathermap.org/data/2.5/weather?q=".$loc."&appid=".$appid."&lang=".$lang."&units=".$units."&mode=xml"; $url = "http://api.openweathermap.org/data/2.5/weather?q=".$loc."&appid=".$appid."&lang=".$lang."&units=".$units."&mode=xml";
$cached = Cache::get('curweather'.md5($url)); $cached = Cache::get('curweather'.md5($url));
$now = new DateTime(); $now = new DateTime();
if (!is_null($cached)) { if (!is_null($cached)) {
$cdate = PConfig::get(local_user(), 'curweather', 'last'); $cdate = get_pconfig(local_user(), 'curweather', 'last');
$cached = unserialize($cached); $cached = unserialize($cached);
if ($cdate + $cachetime > $now->getTimestamp()) { if ($cdate + $cachetime > $now->getTimestamp()) {
return $cached; return $cached;
@ -47,7 +43,7 @@ function getWeather( $loc, $units='metric', $lang='en', $appid='', $cachetime=0)
} else { } else {
$desc = (string)$res->weather['value'].', '.(string)$res->clouds['name']; $desc = (string)$res->weather['value'].', '.(string)$res->clouds['name'];
} }
$r = [ $r = array(
'city'=> (string) $res->city['name'][0], 'city'=> (string) $res->city['name'][0],
'country' => (string) $res->city->country[0], 'country' => (string) $res->city->country[0],
'lat' => (string) $res->city->coord['lat'], 'lat' => (string) $res->city->coord['lat'],
@ -59,8 +55,8 @@ function getWeather( $loc, $units='metric', $lang='en', $appid='', $cachetime=0)
'wind' => (string)$res->wind->speed['name'].' ('.(string)$res->wind->speed['value'].$wunit.')', 'wind' => (string)$res->wind->speed['name'].' ('.(string)$res->wind->speed['value'].$wunit.')',
'update' => (string)$res->lastupdate['value'], 'update' => (string)$res->lastupdate['value'],
'icon' => (string)$res->weather['icon'] 'icon' => (string)$res->weather['icon']
]; );
PConfig::set(local_user(), 'curweather', 'last', $now->getTimestamp()); set_pconfig(local_user(), 'curweather', 'last', $now->getTimestamp());
Cache::set('curweather'.md5($url), serialize($r), CACHE_HOUR); Cache::set('curweather'.md5($url), serialize($r), CACHE_HOUR);
return $r; return $r;
} }
@ -79,7 +75,7 @@ function curweather_uninstall() {
function curweather_network_mod_init(&$fk_app,&$b) { function curweather_network_mod_init(&$fk_app,&$b) {
if(! intval(PConfig::get(local_user(),'curweather','curweather_enable'))) if(! intval(get_pconfig(local_user(),'curweather','curweather_enable')))
return; return;
$fk_app->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . $fk_app->get_baseurl() . '/addon/curweather/curweather.css' . '" media="all" />' . "\r\n"; $fk_app->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . $fk_app->get_baseurl() . '/addon/curweather/curweather.css' . '" media="all" />' . "\r\n";
@ -93,14 +89,14 @@ function curweather_network_mod_init(&$fk_app,&$b) {
// those parameters will be used to get: cloud status, temperature, preassure // those parameters will be used to get: cloud status, temperature, preassure
// and relative humidity for display, also the relevent area of the map is // and relative humidity for display, also the relevent area of the map is
// linked from lat/log of the reply of OWMp // linked from lat/log of the reply of OWMp
$rpt = PConfig::get(local_user(), 'curweather', 'curweather_loc'); $rpt = get_pconfig(local_user(), 'curweather', 'curweather_loc');
// set the language to the browsers language and use metric units // set the language to the browsers language and use metric units
$lang = $_SESSION['language']; $lang = $_SESSION['language'];
$units = PConfig::get( local_user(), 'curweather', 'curweather_units'); $units = get_pconfig( local_user(), 'curweather', 'curweather_units');
$appid = Config::get('curweather','appid'); $appid = get_config('curweather','appid');
$cachetime = intval(Config::get('curweather','cachetime')); $cachetime = intval(get_config('curweather','cachetime'));
if ($units==="") if ($units==="")
$units = 'metric'; $units = 'metric';
$ok = true; $ok = true;
@ -111,7 +107,7 @@ function curweather_network_mod_init(&$fk_app,&$b) {
if ($ok) { if ($ok) {
$t = get_markup_template("widget.tpl", "addon/curweather/" ); $t = get_markup_template("widget.tpl", "addon/curweather/" );
$curweather = replace_macros ($t, [ $curweather = replace_macros ($t, array(
'$title' => t("Current Weather"), '$title' => t("Current Weather"),
'$icon' => proxy_url('http://openweathermap.org/img/w/'.$res['icon'].'.png'), '$icon' => proxy_url('http://openweathermap.org/img/w/'.$res['icon'].'.png'),
'$city' => $res['city'], '$city' => $res['city'],
@ -119,20 +115,20 @@ function curweather_network_mod_init(&$fk_app,&$b) {
'$lat' => $res['lat'], '$lat' => $res['lat'],
'$description' => $res['descripion'], '$description' => $res['descripion'],
'$temp' => $res['temperature'], '$temp' => $res['temperature'],
'$relhumidity' => ['caption'=>t('Relative Humidity'), 'val'=>$res['humidity']], '$relhumidity' => array('caption'=>t('Relative Humidity'), 'val'=>$res['humidity']),
'$pressure' => ['caption'=>t('Pressure'), 'val'=>$res['pressure']], '$pressure' => array('caption'=>t('Pressure'), 'val'=>$res['pressure']),
'$wind' => ['caption'=>t('Wind'), 'val'=> $res['wind']], '$wind' => array('caption'=>t('Wind'), 'val'=> $res['wind']),
'$lastupdate' => t('Last Updated').': '.$res['update'].'UTC', '$lastupdate' => t('Last Updated').': '.$res['update'].'UTC',
'$databy' => t('Data by'), '$databy' => t('Data by'),
'$showonmap' => t('Show on map') '$showonmap' => t('Show on map')
]); ));
} else { } else {
$t = get_markup_template('widget-error.tpl', 'addon/curweather/'); $t = get_markup_template('widget-error.tpl', 'addon/curweather/');
$curweather = replace_macros( $t, [ $curweather = replace_macros( $t, array(
'$problem' => t('There was a problem accessing the weather data. But have a look'), '$problem' => t('There was a problem accessing the weather data. But have a look'),
'$rpt' => $rpt, '$rpt' => $rpt,
'$atOWM' => t('at OpenWeatherMap') '$atOWM' => t('at OpenWeatherMap')
]); ));
} }
$fk_app->page['aside'] = $curweather.$fk_app->page['aside']; $fk_app->page['aside'] = $curweather.$fk_app->page['aside'];
@ -143,9 +139,9 @@ function curweather_network_mod_init(&$fk_app,&$b) {
function curweather_plugin_settings_post($a,$post) { function curweather_plugin_settings_post($a,$post) {
if(! local_user() || (! x($_POST,'curweather-settings-submit'))) if(! local_user() || (! x($_POST,'curweather-settings-submit')))
return; return;
PConfig::set(local_user(),'curweather','curweather_loc',trim($_POST['curweather_loc'])); set_pconfig(local_user(),'curweather','curweather_loc',trim($_POST['curweather_loc']));
PConfig::set(local_user(),'curweather','curweather_enable',intval($_POST['curweather_enable'])); set_pconfig(local_user(),'curweather','curweather_enable',intval($_POST['curweather_enable']));
PConfig::set(local_user(),'curweather','curweather_units',trim($_POST['curweather_units'])); set_pconfig(local_user(),'curweather','curweather_units',trim($_POST['curweather_units']));
info( t('Current Weather settings updated.') . EOL); info( t('Current Weather settings updated.') . EOL);
} }
@ -158,28 +154,28 @@ function curweather_plugin_settings(&$a,&$s) {
/* Get the current state of our config variable */ /* Get the current state of our config variable */
$curweather_loc = PConfig::get(local_user(), 'curweather', 'curweather_loc'); $curweather_loc = get_pconfig(local_user(), 'curweather', 'curweather_loc');
$curweather_units = PConfig::get(local_user(), 'curweather', 'curweather_units'); $curweather_units = get_pconfig(local_user(), 'curweather', 'curweather_units');
$appid = Config::get('curweather','appid'); $appid = get_config('curweather','appid');
if ($appid=="") { if ($appid=="") {
$noappidtext = t('No APPID found, please contact your admin to obtain one.'); $noappidtext = t('No APPID found, please contact your admin to obtain one.');
} else { } else {
$noappidtext = ''; $noappidtext = '';
} }
$enable = intval(PConfig::get(local_user(),'curweather','curweather_enable')); $enable = intval(get_pconfig(local_user(),'curweather','curweather_enable'));
$enable_checked = (($enable) ? ' checked="checked" ' : ''); $enable_checked = (($enable) ? ' checked="checked" ' : '');
// load template and replace the macros // load template and replace the macros
$t = get_markup_template("settings.tpl", "addon/curweather/" ); $t = get_markup_template("settings.tpl", "addon/curweather/" );
$s = replace_macros ($t, [ $s = replace_macros ($t, array(
'$submit' => t('Save Settings'), '$submit' => t('Save Settings'),
'$header' => t('Current Weather').' '.t('Settings'), '$header' => t('Current Weather').' '.t('Settings'),
'$noappidtext' => $noappidtext, '$noappidtext' => $noappidtext,
'$info' => t('Enter either the name of your location or the zip code.'), '$info' => t('Enter either the name of your location or the zip code.'),
'$curweather_loc' => [ 'curweather_loc', t('Your Location'), $curweather_loc, t('Identifier of your location (name or zip code), e.g. <em>Berlin,DE</em> or <em>14476,DE</em>.') ], '$curweather_loc' => array( 'curweather_loc', t('Your Location'), $curweather_loc, t('Identifier of your location (name or zip code), e.g. <em>Berlin,DE</em> or <em>14476,DE</em>.') ),
'$curweather_units' => [ 'curweather_units', t('Units'), $curweather_units, t('select if the temperature should be displayed in &deg;C or &deg;F'), ['metric'=>'°C', 'imperial'=>'°F']], '$curweather_units' => array( 'curweather_units', t('Units'), $curweather_units, t('select if the temperature should be displayed in &deg;C or &deg;F'), array('metric'=>'°C', 'imperial'=>'°F')),
'$enabled' => [ 'curweather_enable', t('Show weather data'), $enable, ''] '$enabled' => array( 'curweather_enable', t('Show weather data'), $enable, '')
]); ));
return; return;
} }
@ -189,20 +185,20 @@ function curweather_plugin_admin_post (&$a) {
if(! is_site_admin()) if(! is_site_admin())
return; return;
if ($_POST['curweather-submit']) { if ($_POST['curweather-submit']) {
Config::set('curweather','appid',trim($_POST['appid'])); set_config('curweather','appid',trim($_POST['appid']));
Config::set('curweather','cachetime',trim($_POST['cachetime'])); set_config('curweather','cachetime',trim($_POST['cachetime']));
info( t('Curweather settings saved.'.EOL)); info( t('Curweather settings saved.'.EOL));
} }
} }
function curweather_plugin_admin (&$a, &$o) { function curweather_plugin_admin (&$a, &$o) {
if(! is_site_admin()) if(! is_site_admin())
return; return;
$appid = Config::get('curweather','appid'); $appid = get_config('curweather','appid');
$cachetime = Config::get('curweather','cachetime'); $cachetime = get_config('curweather','cachetime');
$t = get_markup_template("admin.tpl", "addon/curweather/" ); $t = get_markup_template("admin.tpl", "addon/curweather/" );
$o = replace_macros ($t, [ $o = replace_macros ($t, array(
'$submit' => t('Save Settings'), '$submit' => t('Save Settings'),
'$cachetime' => ['cachetime', t('Caching Interval'), $cachetime, t('For how long should the weather data be cached? Choose according your OpenWeatherMap account type.'), ['0'=>t('no cache'), '300'=>'5 '.t('minutes'), '900'=>'15 '.t('minutes'), '1800'=>'30 '.t('minutes'), '3600'=>'60 '.t('minutes')]], '$cachetime' => array('cachetime', t('Caching Interval'), $cachetime, t('For how long should the weather data be cached? Choose according your OpenWeatherMap account type.'), array('0'=>t('no cache'), '300'=>'5 '.t('minutes'), '900'=>'15 '.t('minutes'), '1800'=>'30 '.t('minutes'), '3600'=>'60 '.t('minutes'))),
'$appid' => ['appid', t('Your APPID'), $appid, t('Your API key provided by OpenWeatherMap')] '$appid' => array('appid', t('Your APPID'), $appid, t('Your API key provided by OpenWeatherMap'))
]); ));
} }

View file

@ -11,7 +11,7 @@
<li>{{$wind['caption']}}: {{$wind['val']}}</li> <li>{{$wind['caption']}}: {{$wind['val']}}</li>
</ul></p> </ul></p>
<p class="curweather-footer"> <p class="curweather-footer">
{{$databy}}: <a href="http://openweathermap.org">OpenWeatherMap</a>. <a href="http://openweathermap.org/weathermap?basemap=map&cities=true&layer=temperature&lat={{$lat}}&lon={{$lon}}&zoom=10">{{$showonmap}}</a> {{$databy}}: <a href="http://openweathermap.org">OpenWeatherMap</a>. <a href="http://openweathermap.org/Maps?zoom=7&lat={{$lat}}&lon={{$lon}}&layers=B0FTTFF">{{$showonmap}}</a>
</p> </p>
</div> </div>
<div class="clear"></div> <div class="clear"></div>

View file

@ -1,6 +1,4 @@
# Calendar with CalDAV Support Calendar with CalDAV Support
**THIS ADDON IS UNSUPPORTED**
This is a rewrite of the calendar system used by the german social network [Animexx](http://www.animexx.de/). This is a rewrite of the calendar system used by the german social network [Animexx](http://www.animexx.de/).
It's still in a very early stage, so expect major bugs. Please feel free to report any of them, by mail (cato@animexx.de) or Friendica: http://friendica.hoessl.eu/profile/cato It's still in a very early stage, so expect major bugs. Please feel free to report any of them, by mail (cato@animexx.de) or Friendica: http://friendica.hoessl.eu/profile/cato
@ -18,28 +16,28 @@ At the moment, the calendar system supports the following features:
- The events of a calendar can be exported as ICS file. ICS files can be imported into a calendar - The events of a calendar can be exported as ICS file. ICS files can be imported into a calendar
## Internationalization: Internationalization:
- At the moment, settings for the US and the german systems are selectable (regarding the date format and the first day of the week). More will be added on request. - At the moment, settings for the US and the german systems are selectable (regarding the date format and the first day of the week). More will be added on request.
- The basic design of the system is aware of timezones; however this is not reflected in the UI yet. It currently assumes that the timezone set in the friendica-installation matches the user's local time and matches the local time set in the user's operating system. - The basic design of the system is aware of timezones; however this is not reflected in the UI yet. It currently assumes that the timezone set in the friendica-installation matches the user's local time and matches the local time set in the user's operating system.
## CalDAV device compatibility: CalDAV device compatibility:
- iOS (iPhone/iPodTouch) works - iOS (iPhone/iPodTouch) works
- Thunderbird Lightning works - Thunderbird Lightning works
- Android: - Android:
- aCal (http://andrew.mcmillan.net.nz/projects/aCal) works, available in F-Droid and Google Play - aCal (http://andrew.mcmillan.net.nz/projects/aCal) works, available in F-Droid and Google Play
- CalDAV-Sync (http://dmfs.org/caldav/) works, non-free - CalDAV-Sync (http://dmfs.org/caldav/) works, non-free
## Installation Installation
After activating, serveral tables in the database have to be created. The admin-interface of the plugin will try to do this automatically. After activating, serveral tables in the database have to be created. The admin-interface of the plugin will try to do this automatically.
In case of errors, the SQL-statement to create the tables manually are shown in the admin-interface. In case of errors, the SQL-statement to create the tables manually are shown in the admin-interface.
## Functuality missing: (a.k.a. "Roadmap") Functuality missing: (a.k.a. "Roadmap")
- Sharing events; all events are private at the moment, therefore this system is not a complete replacement for the friendica-native events - Sharing events; all events are private at the moment, therefore this system is not a complete replacement for the friendica-native events
- Attendees / Collaboration - Attendees / Collaboration
## Used libraries Used libraries
SabreDAV SabreDAV
http://code.google.com/p/sabredav/ http://code.google.com/p/sabredav/

View file

@ -1,7 +1,5 @@
<?php <?php
use Friendica\Core\PConfig;
abstract class wdcal_local abstract class wdcal_local
{ {
@ -36,7 +34,7 @@ abstract class wdcal_local
* @return wdcal_local * @return wdcal_local
*/ */
static function getInstanceByUser($uid = 0) { static function getInstanceByUser($uid = 0) {
$dateformat = PConfig::get($uid, "dav", "dateformat"); $dateformat = get_pconfig($uid, "dav", "dateformat");
$format = self::getInstance($dateformat); $format = self::getInstance($dateformat);
if ($format == null) $format = self::getInstance(self::LOCAL_US); if ($format == null) $format = self::getInstance(self::LOCAL_US);
return $format; return $format;

View file

@ -4,7 +4,6 @@
* Description: A web-based calendar system with CalDAV-support. Also brings your Friendica-Contacts to your CardDAV-capable mobile phone. Requires PHP >= 5.3. * Description: A web-based calendar system with CalDAV-support. Also brings your Friendica-Contacts to your CardDAV-capable mobile phone. Requires PHP >= 5.3.
* Version: 0.3.0 * Version: 0.3.0
* Author: Tobias Hößl <https://github.com/CatoTH/> * Author: Tobias Hößl <https://github.com/CatoTH/>
* Status: Unsupported
*/ */
$_v = explode(".", phpversion()); $_v = explode(".", phpversion());

View file

@ -16,13 +16,13 @@ define("CALDAV_NAMESPACE_PRIVATE", 1);
define("CALDAV_FRIENDICA_MINE", "friendica-mine"); define("CALDAV_FRIENDICA_MINE", "friendica-mine");
define("CALDAV_FRIENDICA_CONTACTS", "friendica-contacts"); define("CALDAV_FRIENDICA_CONTACTS", "friendica-contacts");
$GLOBALS["CALDAV_PRIVATE_SYSTEM_CALENDARS"] = [CALDAV_FRIENDICA_MINE, CALDAV_FRIENDICA_CONTACTS]; $GLOBALS["CALDAV_PRIVATE_SYSTEM_CALENDARS"] = array(CALDAV_FRIENDICA_MINE, CALDAV_FRIENDICA_CONTACTS);
$GLOBALS["CALDAV_PRIVATE_SYSTEM_BACKENDS"] = ["Sabre_CalDAV_Backend_Friendica"]; $GLOBALS["CALDAV_PRIVATE_SYSTEM_BACKENDS"] = array("Sabre_CalDAV_Backend_Friendica");
define("CARDDAV_NAMESPACE_PRIVATE", 1); define("CARDDAV_NAMESPACE_PRIVATE", 1);
define("CARDDAV_FRIENDICA_CONTACT", "friendica"); define("CARDDAV_FRIENDICA_CONTACT", "friendica");
$GLOBALS["CARDDAV_PRIVATE_SYSTEM_ADDRESSBOOKS"] = [CARDDAV_FRIENDICA_CONTACT]; $GLOBALS["CARDDAV_PRIVATE_SYSTEM_ADDRESSBOOKS"] = array(CARDDAV_FRIENDICA_CONTACT);
$GLOBALS["CARDDAV_PRIVATE_SYSTEM_BACKENDS"] = ["Sabre_CardDAV_Backend_Friendica"]; $GLOBALS["CARDDAV_PRIVATE_SYSTEM_BACKENDS"] = array("Sabre_CardDAV_Backend_Friendica");
$GLOBALS["CALDAV_ACL_PLUGIN_CLASS"] = "Sabre_DAVACL_Plugin_Friendica"; $GLOBALS["CALDAV_ACL_PLUGIN_CLASS"] = "Sabre_DAVACL_Plugin_Friendica";
@ -106,7 +106,7 @@ function dav_compat_principal2namespace($principalUri = "")
if (strpos($principalUri, "principals/users/") !== 0) return null; if (strpos($principalUri, "principals/users/") !== 0) return null;
$username = substr($principalUri, strlen("principals/users/")); $username = substr($principalUri, strlen("principals/users/"));
return ["namespace" => CALDAV_NAMESPACE_PRIVATE, "namespace_id" => dav_compat_username2id($username)]; return array("namespace" => CALDAV_NAMESPACE_PRIVATE, "namespace_id" => dav_compat_username2id($username));
} }
@ -200,13 +200,13 @@ function wdcal_calendar_factory_by_id($calendar_id)
*/ */
function wdcal_create_std_calendars_get_statements($user_id, $withcheck = true) function wdcal_create_std_calendars_get_statements($user_id, $withcheck = true)
{ {
$stms = []; $stms = array();
$a = get_app(); $a = get_app();
$uris = [ $uris = array(
'private' => t("Private Calendar"), 'private' => t("Private Calendar"),
CALDAV_FRIENDICA_MINE => t("Friendica Events: Mine"), CALDAV_FRIENDICA_MINE => t("Friendica Events: Mine"),
CALDAV_FRIENDICA_CONTACTS => t("Friendica Events: Contacts"), CALDAV_FRIENDICA_CONTACTS => t("Friendica Events: Contacts"),
]; );
foreach ($uris as $uri => $name) { foreach ($uris as $uri => $name) {
$cals = q("SELECT * FROM %s%scalendars WHERE `namespace` = %d AND `namespace_id` = %d AND `uri` = '%s'", $cals = q("SELECT * FROM %s%scalendars WHERE `namespace` = %d AND `namespace_id` = %d AND `uri` = '%s'",
CALDAV_SQL_DB, CALDAV_SQL_PREFIX, CALDAV_NAMESPACE_PRIVATE, IntVal($user_id), dbesc($uri)); CALDAV_SQL_DB, CALDAV_SQL_PREFIX, CALDAV_NAMESPACE_PRIVATE, IntVal($user_id), dbesc($uri));
@ -242,12 +242,12 @@ function wdcal_create_std_calendars()
*/ */
function wdcal_create_std_addressbooks_get_statements($user_id, $withcheck = true) function wdcal_create_std_addressbooks_get_statements($user_id, $withcheck = true)
{ {
$stms = []; $stms = array();
$a = get_app(); $a = get_app();
$uris = [ $uris = array(
'private' => t("Private Addresses"), 'private' => t("Private Addresses"),
CARDDAV_FRIENDICA_CONTACT => t("Friendica Contacts"), CARDDAV_FRIENDICA_CONTACT => t("Friendica Contacts"),
]; );
foreach ($uris as $uri => $name) { foreach ($uris as $uri => $name) {
$cals = q("SELECT * FROM %s%saddressbooks WHERE `namespace` = %d AND `namespace_id` = %d AND `uri` = '%s'", $cals = q("SELECT * FROM %s%saddressbooks WHERE `namespace` = %d AND `namespace_id` = %d AND `uri` = '%s'",
CALDAV_SQL_DB, CALDAV_SQL_PREFIX, CALDAV_NAMESPACE_PRIVATE, IntVal($user_id), dbesc($uri)); CALDAV_SQL_DB, CALDAV_SQL_PREFIX, CALDAV_NAMESPACE_PRIVATE, IntVal($user_id), dbesc($uri));

View file

@ -7,7 +7,7 @@
*/ */
function dav_get_update_statements($from_version) function dav_get_update_statements($from_version)
{ {
$stms = []; $stms = array();
if ($from_version == 1) { if ($from_version == 1) {
$stms[] = "ALTER TABLE `dav_calendarobjects` $stms[] = "ALTER TABLE `dav_calendarobjects`
@ -30,7 +30,7 @@ function dav_get_update_statements($from_version)
`dav_locks` , `dav_locks` ,
`dav_notifications` ;"; `dav_notifications` ;";
$stms = array_merge($stms, dav_get_create_statements(["dav_calendarobjects"])); $stms = array_merge($stms, dav_get_create_statements(array("dav_calendarobjects")));
$user_ids = q("SELECT DISTINCT `uid` FROM %s%scalendars", CALDAV_SQL_DB, CALDAV_SQL_PREFIX); $user_ids = q("SELECT DISTINCT `uid` FROM %s%scalendars", CALDAV_SQL_DB, CALDAV_SQL_PREFIX);
foreach ($user_ids as $user) $stms = array_merge($stms, wdcal_create_std_calendars_get_statements($user["uid"], false)); foreach ($user_ids as $user) $stms = array_merge($stms, wdcal_create_std_calendars_get_statements($user["uid"], false));
@ -43,7 +43,7 @@ function dav_get_update_statements($from_version)
} }
if (in_array($from_version, [1, 2])) { if (in_array($from_version, array(1, 2))) {
$stms[] = "CREATE TABLE IF NOT EXISTS `dav_addressbooks` ( $stms[] = "CREATE TABLE IF NOT EXISTS `dav_addressbooks` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT, `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`namespace` mediumint(9) NOT NULL, `namespace` mediumint(9) NOT NULL,
@ -80,9 +80,9 @@ function dav_get_update_statements($from_version)
* @param array $except * @param array $except
* @return array * @return array
*/ */
function dav_get_create_statements($except = []) function dav_get_create_statements($except = array())
{ {
$arr = []; $arr = array();
if (!in_array("dav_caldav_log", $except)) $arr[] = "CREATE TABLE IF NOT EXISTS `dav_caldav_log` ( if (!in_array("dav_caldav_log", $except)) $arr[] = "CREATE TABLE IF NOT EXISTS `dav_caldav_log` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT, `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
@ -240,7 +240,7 @@ function dav_check_tables()
function dav_create_tables() function dav_create_tables()
{ {
$stms = dav_get_create_statements(); $stms = dav_get_create_statements();
$errors = []; $errors = array();
foreach ($stms as $st) { // @TODO Friendica-dependent foreach ($stms as $st) { // @TODO Friendica-dependent
dba::e($st); dba::e($st);
@ -258,10 +258,10 @@ function dav_create_tables()
function dav_upgrade_tables() function dav_upgrade_tables()
{ {
$ver = dav_check_tables(); $ver = dav_check_tables();
if (!in_array($ver, [1, 2])) return ["Unknown error"]; if (!in_array($ver, array(1, 2))) return array("Unknown error");
$stms = dav_get_update_statements($ver); $stms = dav_get_update_statements($ver);
$errors = []; $errors = array();
foreach ($stms as $st) { // @TODO Friendica-dependent foreach ($stms as $st) { // @TODO Friendica-dependent
dba::e($st); dba::e($st);

View file

@ -124,7 +124,7 @@ class Sabre_CalDAV_Backend_Friendica extends Sabre_CalDAV_Backend_Virtual
$summary = (($row["summary"]) ? $row["summary"] : substr(preg_replace("/\[[^\]]*\]/", "", $row["desc"]), 0, 100)); $summary = (($row["summary"]) ? $row["summary"] : substr(preg_replace("/\[[^\]]*\]/", "", $row["desc"]), 0, 100));
return [ return array(
"jq_id" => $row["id"], "jq_id" => $row["id"],
"ev_id" => $row["id"], "ev_id" => $row["id"],
"summary" => escape_tags($summary), "summary" => escape_tags($summary),
@ -142,7 +142,7 @@ class Sabre_CalDAV_Backend_Friendica extends Sabre_CalDAV_Backend_Virtual
"url_detail" => $base_path . "/events/event/" . $row["id"], "url_detail" => $base_path . "/events/event/" . $row["id"],
"url_edit" => "", "url_edit" => "",
"special_type" => ($row["type"] == "birthday" ? "birthday" : ""), "special_type" => ($row["type"] == "birthday" ? "birthday" : ""),
]; );
} }
@ -179,7 +179,7 @@ class Sabre_CalDAV_Backend_Friendica extends Sabre_CalDAV_Backend_Virtual
if (is_numeric($date_to)) $sql_where .= " AND `start` <= '" . date("Y-m-d H:i:s", $date_to) . "'"; if (is_numeric($date_to)) $sql_where .= " AND `start` <= '" . date("Y-m-d H:i:s", $date_to) . "'";
else $sql_where .= " AND `start` <= '" . dbesc($date_to) . "'"; else $sql_where .= " AND `start` <= '" . dbesc($date_to) . "'";
} }
$ret = []; $ret = array();
$r = q("SELECT * FROM `event` WHERE `uid` = %d " . $sql_where . " ORDER BY `start`", IntVal($calendar["namespace_id"])); $r = q("SELECT * FROM `event` WHERE `uid` = %d " . $sql_where . " ORDER BY `start`", IntVal($calendar["namespace_id"]));
@ -214,21 +214,21 @@ class Sabre_CalDAV_Backend_Friendica extends Sabre_CalDAV_Backend_Virtual
public function getCalendarsForUser($principalUri) public function getCalendarsForUser($principalUri)
{ {
$n = dav_compat_principal2namespace($principalUri); $n = dav_compat_principal2namespace($principalUri);
if ($n["namespace"] != $this->getNamespace()) return []; if ($n["namespace"] != $this->getNamespace()) return array();
$cals = q("SELECT * FROM %s%scalendars WHERE `namespace` = %d AND `namespace_id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $this->getNamespace(), IntVal($n["namespace_id"])); $cals = q("SELECT * FROM %s%scalendars WHERE `namespace` = %d AND `namespace_id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $this->getNamespace(), IntVal($n["namespace_id"]));
$ret = []; $ret = array();
foreach ($cals as $cal) { foreach ($cals as $cal) {
if (!in_array($cal["uri"], $GLOBALS["CALDAV_PRIVATE_SYSTEM_CALENDARS"])) continue; if (!in_array($cal["uri"], $GLOBALS["CALDAV_PRIVATE_SYSTEM_CALENDARS"])) continue;
$dat = [ $dat = array(
"id" => $cal["id"], "id" => $cal["id"],
"uri" => $cal["uri"], "uri" => $cal["uri"],
"principaluri" => $principalUri, "principaluri" => $principalUri,
'{' . Sabre_CalDAV_Plugin::NS_CALENDARSERVER . '}getctag' => $cal['ctag'] ? $cal['ctag'] : '0', '{' . Sabre_CalDAV_Plugin::NS_CALENDARSERVER . '}getctag' => $cal['ctag'] ? $cal['ctag'] : '0',
'{' . Sabre_CalDAV_Plugin::NS_CALDAV . '}supported-calendar-component-set' => new Sabre_CalDAV_Property_SupportedCalendarComponentSet(["VEVENT"]), '{' . Sabre_CalDAV_Plugin::NS_CALDAV . '}supported-calendar-component-set' => new Sabre_CalDAV_Property_SupportedCalendarComponentSet(array("VEVENT")),
"calendar_class" => "Sabre_CalDAV_Calendar_Virtual", "calendar_class" => "Sabre_CalDAV_Calendar_Virtual",
]; );
foreach ($this->propertyMap as $key=> $field) $dat[$key] = $cal[$field]; foreach ($this->propertyMap as $key=> $field) $dat[$key] = $cal[$field];
$ret[] = $dat; $ret[] = $dat;

View file

@ -46,13 +46,13 @@ class Sabre_CardDAV_Backend_Friendica extends Sabre_CardDAV_Backend_Virtual
{ {
$uid = dav_compat_principal2uid($principalUri); $uid = dav_compat_principal2uid($principalUri);
$addressBooks = []; $addressBooks = array();
$books = q("SELECT id, ctag FROM %s%saddressbooks WHERE `namespace` = %d AND `namespace_id` = %d AND `uri` = '%s'", $books = q("SELECT id, ctag FROM %s%saddressbooks WHERE `namespace` = %d AND `namespace_id` = %d AND `uri` = '%s'",
CALDAV_SQL_DB, CALDAV_SQL_PREFIX, CARDDAV_NAMESPACE_PRIVATE, IntVal($uid), dbesc(CARDDAV_FRIENDICA_CONTACT)); CALDAV_SQL_DB, CALDAV_SQL_PREFIX, CARDDAV_NAMESPACE_PRIVATE, IntVal($uid), dbesc(CARDDAV_FRIENDICA_CONTACT));
$ctag = $books[0]["ctag"]; $ctag = $books[0]["ctag"];
$addressBooks[] = [ $addressBooks[] = array(
'id' => $books[0]["id"], 'id' => $books[0]["id"],
'uri' => "friendica", 'uri' => "friendica",
'principaluri' => $principalUri, 'principaluri' => $principalUri,
@ -61,7 +61,7 @@ class Sabre_CardDAV_Backend_Friendica extends Sabre_CardDAV_Backend_Virtual
'{http://calendarserver.org/ns/}getctag' => $ctag, '{http://calendarserver.org/ns/}getctag' => $ctag,
'{' . Sabre_CardDAV_Plugin::NS_CARDDAV . '}supported-address-data' => '{' . Sabre_CardDAV_Plugin::NS_CARDDAV . '}supported-address-data' =>
new Sabre_CardDAV_Property_SupportedAddressData(), new Sabre_CardDAV_Property_SupportedAddressData(),
]; );
return $addressBooks; return $addressBooks;
@ -76,7 +76,7 @@ class Sabre_CardDAV_Backend_Friendica extends Sabre_CardDAV_Backend_Virtual
{ {
$name = explode(" ", $contact["name"]); $name = explode(" ", $contact["name"]);
$first_name = $last_name = ""; $first_name = $last_name = "";
$middle_name = []; $middle_name = array();
$num = count($name); $num = count($name);
for ($i = 0; $i < $num && $first_name == ""; $i++) if ($name[$i] != "") { for ($i = 0; $i < $num && $first_name == ""; $i++) if ($name[$i] != "") {
$first_name = $name[$i]; $first_name = $name[$i];
@ -114,14 +114,14 @@ class Sabre_CardDAV_Backend_Friendica extends Sabre_CardDAV_Backend_Virtual
} }
$vcard = vcard_source_compile($vcarddata); $vcard = vcard_source_compile($vcarddata);
return [ return array(
"id" => $contact["id"], "id" => $contact["id"],
"carddata" => $vcard, "carddata" => $vcard,
"uri" => $contact["id"] . ".vcf", "uri" => $contact["id"] . ".vcf",
"lastmodified" => wdcal_mySql2PhpTime($vcarddata->last_update), "lastmodified" => wdcal_mySql2PhpTime($vcarddata->last_update),
"etag" => md5($vcard), "etag" => md5($vcard),
"size" => strlen($vcard), "size" => strlen($vcard),
]; );
} }

View file

@ -1,41 +1,41 @@
<?php <?php
use Friendica\Model\User; class Sabre_DAV_Auth_Backend_Std extends Sabre_DAV_Auth_Backend_AbstractBasic {
public function __construct() {
}
class Sabre_DAV_Auth_Backend_Std extends Sabre_DAV_Auth_Backend_AbstractBasic
{
/** /**
* @var Sabre_DAV_Auth_Backend_Std|null * @var Sabre_DAV_Auth_Backend_Std|null
*/ */
private static $instance = null; private static $intstance = null;
/** /**
* @static * @static
* @return Sabre_DAV_Auth_Backend_Std * @return Sabre_DAV_Auth_Backend_Std
*/ */
public static function getInstance() public static function &getInstance() {
{ if (is_null(self::$intstance)) {
if (is_null(self::$instance)) { self::$intstance = new Sabre_DAV_Auth_Backend_Std();
self::$instance = new Sabre_DAV_Auth_Backend_Std();
} }
return self::$instance; return self::$intstance;
} }
/** /**
* @return array * @return array
*/ */
public function getUsers() public function getUsers() {
{ return array($this->currentUser);
return [$this->currentUser]; }
}
/** /**
* @return null|string * @return null|string
*/ */
public function getCurrentUser() public function getCurrentUser() {
{ return $this->currentUser;
return $this->currentUser; }
}
/** /**
* Authenticates the user based on the current request. * Authenticates the user based on the current request.
@ -48,8 +48,8 @@ class Sabre_DAV_Auth_Backend_Std extends Sabre_DAV_Auth_Backend_AbstractBasic
* @throws Sabre_DAV_Exception_NotAuthenticated * @throws Sabre_DAV_Exception_NotAuthenticated
* @return bool * @return bool
*/ */
public function authenticate(Sabre_DAV_Server $server, $realm) public function authenticate(Sabre_DAV_Server $server, $realm) {
{
$a = get_app(); $a = get_app();
if (isset($a->user["uid"])) { if (isset($a->user["uid"])) {
$this->currentUser = strtolower($a->user["nickname"]); $this->currentUser = strtolower($a->user["nickname"]);
@ -67,7 +67,7 @@ class Sabre_DAV_Auth_Backend_Std extends Sabre_DAV_Auth_Backend_AbstractBasic
} }
// Authenticates the user // Authenticates the user
if (!$this->validateUserPass($userpass[0], $userpass[1])) { if (!$this->validateUserPass($userpass[0],$userpass[1])) {
$auth->requireLogin(); $auth->requireLogin();
throw new Sabre_DAV_Exception_NotAuthenticated('Username or password does not match'); throw new Sabre_DAV_Exception_NotAuthenticated('Username or password does not match');
} }
@ -75,13 +75,19 @@ class Sabre_DAV_Auth_Backend_Std extends Sabre_DAV_Auth_Backend_AbstractBasic
return true; return true;
} }
/** /**
* @param string $username * @param string $username
* @param string $password * @param string $password
* @return bool * @return bool
*/ */
protected function validateUserPass($username, $password) protected function validateUserPass($username, $password) {
{ $encrypted = hash('whirlpool',trim($password));
return User::authenticate($username, $password); $r = q("SELECT COUNT(*) anz FROM `user` WHERE `nickname` = '%s' AND `password` = '%s' AND `blocked` = 0 AND `account_expired` = 0 AND `verified` = 1 LIMIT 1",
} dbesc(trim($username)),
dbesc($encrypted)
);
return ($r[0]["anz"] == 1);
}
} }

View file

@ -61,16 +61,16 @@ class Sabre_DAVACL_PrincipalBackend_Std implements Sabre_DAVACL_IPrincipalBacken
{ {
// This backend only support principals in one collection // This backend only support principals in one collection
if ($prefixPath !== $this->prefix) return []; if ($prefixPath !== $this->prefix) return array();
$users = []; $users = array();
$r = q("SELECT `nickname` FROM `user` WHERE `nickname` = '%s'", escape_tags($this->authBackend->getCurrentUser()) ); $r = q("SELECT `nickname` FROM `user` WHERE `nickname` = '%s'", escape_tags($this->authBackend->getCurrentUser()) );
foreach ($r as $t) { foreach ($r as $t) {
$users[] = [ $users[] = array(
'uri' => $this->prefix . '/' . strtolower($t['nickname']), 'uri' => $this->prefix . '/' . strtolower($t['nickname']),
'{DAV:}displayname' => $t['nickname'], '{DAV:}displayname' => $t['nickname'],
]; );
} }
return $users; return $users;
@ -94,24 +94,24 @@ class Sabre_DAVACL_PrincipalBackend_Std implements Sabre_DAVACL_IPrincipalBacken
if ($prefixPath !== $this->prefix) return null; if ($prefixPath !== $this->prefix) return null;
$r = q("SELECT `nickname` FROM `user` WHERE `nickname` = '%s'", escape_tags($userName) ); $r = q("SELECT `nickname` FROM `user` WHERE `nickname` = '%s'", escape_tags($userName) );
if (count($r) == 0) return []; if (count($r) == 0) return array();
return [ return array(
'uri' => $this->prefix . '/' . strtolower($r[0]['nickname']), 'uri' => $this->prefix . '/' . strtolower($r[0]['nickname']),
'{DAV:}displayname' => $r[0]['nickname'], '{DAV:}displayname' => $r[0]['nickname'],
]; );
} }
function getGroupMemberSet($principal) function getGroupMemberSet($principal)
{ {
return []; return array();
} }
function getGroupMembership($principal) function getGroupMembership($principal)
{ {
return []; return array();
} }

View file

@ -1,7 +1,5 @@
<?php <?php
use Friendica\Core\Config;
use Friendica\Core\PConfig;
/** /**
* *
@ -25,7 +23,7 @@ function wdcal_addRequiredHeaders()
$a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . $a->get_baseurl() . '/addon/dav/wdcal/css/calendar.css' . '" media="all" />' . "\r\n"; $a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . $a->get_baseurl() . '/addon/dav/wdcal/css/calendar.css' . '" media="all" />' . "\r\n";
$a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . $a->get_baseurl() . '/addon/dav/wdcal/css/main.css' . '" media="all" />' . "\r\n"; $a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . $a->get_baseurl() . '/addon/dav/wdcal/css/main.css' . '" media="all" />' . "\r\n";
switch (Config::get("system", "language")) { switch (get_config("system", "language")) {
case "de": case "de":
$a->page['htmlhead'] .= '<script type="text/javascript" src="' . $a->get_baseurl() . '/addon/dav/common/wdcal/js/wdCalendar_lang_DE.js"></script>' . "\r\n"; $a->page['htmlhead'] .= '<script type="text/javascript" src="' . $a->get_baseurl() . '/addon/dav/common/wdcal/js/wdCalendar_lang_DE.js"></script>' . "\r\n";
$a->page['htmlhead'] .= '<script type="text/javascript" src="' . $a->get_baseurl() . '/addon/dav/jqueryui/jquery.ui.datepicker-de.js"></script>' . "\r\n"; $a->page['htmlhead'] .= '<script type="text/javascript" src="' . $a->get_baseurl() . '/addon/dav/jqueryui/jquery.ui.datepicker-de.js"></script>' . "\r\n";
@ -80,7 +78,7 @@ function wdcal_import_user_ics($calendar_id) {
$server = dav_create_server(true, true, false); $server = dav_create_server(true, true, false);
$calendar = dav_get_current_user_calendar_by_id($server, $calendar_id, DAV_ACL_WRITE); $calendar = dav_get_current_user_calendar_by_id($server, $calendar_id, DAV_ACL_WRITE);
if (!$calendar) goaway('dav/wdcal/'); if (!$calendar) goaway($a->get_baseurl() . "/dav/wdcal/");
if (isset($_REQUEST["save"])) { if (isset($_REQUEST["save"])) {
check_form_security_token_redirectOnErr('/dav/settings/', 'icsimport'); check_form_security_token_redirectOnErr('/dav/settings/', 'icsimport');
@ -91,7 +89,7 @@ function wdcal_import_user_ics($calendar_id) {
/** @var Sabre\VObject\Component\VCalendar $vObject */ /** @var Sabre\VObject\Component\VCalendar $vObject */
$vObject = Sabre\VObject\Reader::read($text); $vObject = Sabre\VObject\Reader::read($text);
$comp = $vObject->getComponents(); $comp = $vObject->getComponents();
$imported = []; $imported = array();
foreach ($comp as $c) try { foreach ($comp as $c) try {
/** @var Sabre\VObject\Component\VEvent $c */ /** @var Sabre\VObject\Component\VEvent $c */
$uid = $c->__get("UID")->value; $uid = $c->__get("UID")->value;
@ -171,18 +169,18 @@ function wdcal_import_user_ics($calendar_id) {
* @param bool $show_nav * @param bool $show_nav
* @return string * @return string
*/ */
function wdcal_printCalendar($calendars, $calendars_selected, $data_feed_url, $view = "week", $theme = 0, $height_diff = 175, $readonly = false, $curr_day = "", $add_params = [], $show_nav = true) function wdcal_printCalendar($calendars, $calendars_selected, $data_feed_url, $view = "week", $theme = 0, $height_diff = 175, $readonly = false, $curr_day = "", $add_params = array(), $show_nav = true)
{ {
$a = get_app(); $a = get_app();
$localization = wdcal_local::getInstanceByUser($a->user["uid"]); $localization = wdcal_local::getInstanceByUser($a->user["uid"]);
if (count($calendars_selected) == 0) foreach ($calendars as $c) { if (count($calendars_selected) == 0) foreach ($calendars as $c) {
$prop = $c->getProperties(["id"]); $prop = $c->getProperties(array("id"));
$calendars_selected[] = $prop["id"]; $calendars_selected[] = $prop["id"];
} }
$opts = [ $opts = array(
"view" => $view, "view" => $view,
"theme" => $theme, "theme" => $theme,
"readonly" => $readonly, "readonly" => $readonly,
@ -194,7 +192,7 @@ function wdcal_printCalendar($calendars, $calendars_selected, $data_feed_url, $v
"date_format_dm3" => $localization->dateformat_js_dm3(), "date_format_dm3" => $localization->dateformat_js_dm3(),
"date_format_full" => $localization->dateformat_datepicker_js(), "date_format_full" => $localization->dateformat_datepicker_js(),
"baseurl" => $a->get_baseurl() . "/dav/wdcal/", "baseurl" => $a->get_baseurl() . "/dav/wdcal/",
]; );
$x = ' $x = '
<script> <script>
@ -207,7 +205,7 @@ function wdcal_printCalendar($calendars, $calendars_selected, $data_feed_url, $v
<div class="calselect"><strong>Available Calendars:</strong>'; <div class="calselect"><strong>Available Calendars:</strong>';
foreach ($calendars as $cal) { foreach ($calendars as $cal) {
$cal_id = $cal->getProperties(["id", DAV_DISPLAYNAME]); $cal_id = $cal->getProperties(array("id", DAV_DISPLAYNAME));
$x .= '<label style="margin-left: 10px; margin-right: 10px;"><input type="checkbox" name="cals[]" value="' . $cal_id["id"] . '"'; $x .= '<label style="margin-left: 10px; margin-right: 10px;"><input type="checkbox" name="cals[]" value="' . $cal_id["id"] . '"';
$found = false; $found = false;
foreach ($calendars_selected as $pre) if ($pre["id"] == $cal_id["id"]) $found = true; foreach ($calendars_selected as $pre) if ($pre["id"] == $cal_id["id"]) $found = true;
@ -308,12 +306,12 @@ function wdcal_getDetailPage($calendar_id, $calendarobject_id)
$calbackend = wdcal_calendar_factory_by_id($calendar_id); $calbackend = wdcal_calendar_factory_by_id($calendar_id);
$redirect = $calbackend->getItemDetailRedirect($calendar_id, $calendarobject_id); $redirect = $calbackend->getItemDetailRedirect($calendar_id, $calendarobject_id);
if ($redirect !== null) goaway($redirect); if ($redirect !== null) goaway($a->get_baseurl() . $redirect);
$details = $obj; $details = $obj;
} catch (Exception $e) { } catch (Exception $e) {
info(t("Error") . ": " . $e); info(t("Error") . ": " . $e);
goaway('dav/wdcal/'); goaway($a->get_baseurl() . "/dav/wdcal/");
} }
return print_r($details, true); return print_r($details, true);
@ -359,7 +357,7 @@ function wdcal_getSettingsPage(&$a)
if (isset($_REQUEST["save"])) { if (isset($_REQUEST["save"])) {
check_form_security_token_redirectOnErr('/dav/settings/', 'calprop'); check_form_security_token_redirectOnErr('/dav/settings/', 'calprop');
PConfig::set($a->user["uid"], "dav", "dateformat", $_REQUEST["wdcal_date_format"]); set_pconfig($a->user["uid"], "dav", "dateformat", $_REQUEST["wdcal_date_format"]);
info(t('The new values have been saved.')); info(t('The new values have been saved.'));
} }

View file

@ -1,8 +1,5 @@
<?php <?php
use Friendica\Module\Login;
use Friendica\Util\Emailer;
require_once('include/security.php'); require_once('include/security.php');
function dav_install() function dav_install()
@ -150,7 +147,7 @@ function dav_content()
{ {
$a = get_app(); $a = get_app();
if (!isset($a->user["uid"]) || $a->user["uid"] == 0) { if (!isset($a->user["uid"]) || $a->user["uid"] == 0) {
return Login::form(); return login();
} }
$x = ""; $x = "";
@ -166,7 +163,7 @@ function dav_content()
$ret = wdcal_postEditPage("new", "", $a->user["uid"], $a->timezone, $a->get_baseurl() . "/dav/wdcal/"); $ret = wdcal_postEditPage("new", "", $a->user["uid"], $a->timezone, $a->get_baseurl() . "/dav/wdcal/");
if ($ret["ok"]) notice($ret["msg"]); if ($ret["ok"]) notice($ret["msg"]);
else info($ret["msg"]); else info($ret["msg"]);
goaway('dav/wdcal/'); goaway($a->get_baseurl() . "/dav/wdcal/");
} }
$o .= wdcal_getNewPage(); $o .= wdcal_getNewPage();
return $o; return $o;
@ -184,7 +181,7 @@ function dav_content()
$ret = wdcal_postEditPage($a->argv[3], $a->user["uid"], $a->timezone, $a->get_baseurl() . "/dav/wdcal/"); $ret = wdcal_postEditPage($a->argv[3], $a->user["uid"], $a->timezone, $a->get_baseurl() . "/dav/wdcal/");
if ($ret["ok"]) notice($ret["msg"]); if ($ret["ok"]) notice($ret["msg"]);
else info($ret["msg"]); else info($ret["msg"]);
goaway('dav/wdcal/'); goaway($a->get_baseurl() . "/dav/wdcal/");
} }
$o .= wdcal_getEditPage($calendar_id, $a->argv[3]); $o .= wdcal_getEditPage($calendar_id, $a->argv[3]);
return $o; return $o;
@ -198,7 +195,7 @@ function dav_content()
} else { } else {
$server = dav_create_server(true, true, false); $server = dav_create_server(true, true, false);
$cals = dav_get_current_user_calendars($server, DAV_ACL_READ); $cals = dav_get_current_user_calendars($server, DAV_ACL_READ);
$x = wdcal_printCalendar($cals, [], $a->get_baseurl() . "/dav/wdcal/feed/", "week", 0, 200); $x = wdcal_printCalendar($cals, array(), $a->get_baseurl() . "/dav/wdcal/feed/", "week", 0, 200);
} }
} }
} catch (DAVVersionMismatchException $e) { } catch (DAVVersionMismatchException $e) {
@ -238,12 +235,12 @@ function dav_event_updated_hook(&$a, &$b)
*/ */
function dav_profile_tabs_hook(&$a, &$b) function dav_profile_tabs_hook(&$a, &$b)
{ {
$b["tabs"][] = [ $b["tabs"][] = array(
"label" => t('Calendar'), "label" => t('Calendar'),
"url" => $a->get_baseurl() . "/dav/wdcal/", "url" => $a->get_baseurl() . "/dav/wdcal/",
"sel" => "", "sel" => "",
"title" => t('Extended calendar with CalDAV-support'), "title" => t('Extended calendar with CalDAV-support'),
]; );
} }
@ -261,7 +258,7 @@ function dav_cron(&$a, &$b)
q("UPDATE %s%snotifications SET `notified` = 1 WHERE `id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $not["id"]); q("UPDATE %s%snotifications SET `notified` = 1 WHERE `id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $not["id"]);
$event = q("SELECT * FROM %s%sjqcalendar WHERE `calendarobject_id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $not["calendarobject_id"]); $event = q("SELECT * FROM %s%sjqcalendar WHERE `calendarobject_id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $not["calendarobject_id"]);
$calendar = q("SELECT * FROM %s%scalendars WHERE `id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $not["calendar_id"]); $calendar = q("SELECT * FROM %s%scalendars WHERE `id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $not["calendar_id"]);
$users = []; $users = array();
if (count($calendar) != 1 || count($event) == 0) continue; if (count($calendar) != 1 || count($event) == 0) continue;
switch ($calendar[0]["namespace"]) { switch ($calendar[0]["namespace"]) {
case CALDAV_NAMESPACE_PRIVATE: case CALDAV_NAMESPACE_PRIVATE:
@ -274,11 +271,11 @@ function dav_cron(&$a, &$b)
case "email": case "email":
case "display": // @TODO implement "Display" case "display": // @TODO implement "Display"
foreach ($users as $user) { foreach ($users as $user) {
$find = ["%to%", "%event%", "%url%"]; $find = array("%to%", "%event%", "%url%");
$repl = [$user["username"], $event[0]["Summary"], $a->get_baseurl() . "/dav/wdcal/" . $calendar[0]["id"] . "/" . $not["calendarobject_id"] . "/"]; $repl = array($user["username"], $event[0]["Summary"], $a->get_baseurl() . "/dav/wdcal/" . $calendar[0]["id"] . "/" . $not["calendarobject_id"] . "/");
$text_text = str_replace($find, $repl, "Hi %to%!\n\nThe event \"%event%\" is about to begin:\n%url%"); $text_text = str_replace($find, $repl, "Hi %to%!\n\nThe event \"%event%\" is about to begin:\n%url%");
$text_html = str_replace($find, $repl, "Hi %to%!<br>\n<br>\nThe event \"%event%\" is about to begin:<br>\n<a href='" . "%url%" . "'>%url%</a>"); $text_html = str_replace($find, $repl, "Hi %to%!<br>\n<br>\nThe event \"%event%\" is about to begin:<br>\n<a href='" . "%url%" . "'>%url%</a>");
$params = [ $params = array(
'fromName' => FRIENDICA_PLATFORM, 'fromName' => FRIENDICA_PLATFORM,
'fromEmail' => t('noreply') . '@' . $a->get_hostname(), 'fromEmail' => t('noreply') . '@' . $a->get_hostname(),
'replyTo' => t('noreply') . '@' . $a->get_hostname(), 'replyTo' => t('noreply') . '@' . $a->get_hostname(),
@ -287,7 +284,8 @@ function dav_cron(&$a, &$b)
'htmlVersion' => $text_html, 'htmlVersion' => $text_html,
'textVersion' => $text_text, 'textVersion' => $text_text,
'additionalMailHeader' => "", 'additionalMailHeader' => "",
]; );
require_once('include/Emailer.php');
Emailer::send($params); Emailer::send($params);
} }
break; break;

7
defaultfeatures/README Normal file
View file

@ -0,0 +1,7 @@
Default Features Plugin
This plugin allows the site admin to choose which Additional Features
are on by default for newly created users on the site. The defaults
apply to all new users upon registration, but do not impact a user's
ability to turn features on/off once their account has been created.
These default settings do not impact existing users.

View file

@ -0,0 +1,60 @@
<?php
/**
* Name: Default Features
* Description: Choose which Additional Features are on by default for new users on the site.
* Version: 1.0
* Author: Michael Johnston
* Status: Unsupported
*/
function defaultfeatures_install() {
register_hook('register_account', 'addon/defaultfeatures/defaultfeatures.php', 'defaultfeatures_register');
logger("installed defaultfeatures plugin");
}
function defaultfeatures_uninstall() {
unregister_hook('register_account', 'addon/defaultfeatures/defaultfeatures.php', 'defaultfeatures_register');
logger("uninstalled defaultfeatures plugin");
}
function defaultfeatures_register($a, $newuid) {
$arr = array();
$features = get_features();
foreach($features as $fname => $fdata) {
foreach(array_slice($fdata,1) as $f) {
set_pconfig($newuid,'feature',$f[0],((intval(get_config('defaultfeatures',$f[0]))) ? "1" : "0"));
}
}
}
function defaultfeatures_plugin_admin_post (&$a) {
check_form_security_token_redirectOnErr('/admin/plugins/defaultfeatures', 'defaultfeaturessave');
foreach($_POST as $k => $v) {
if(strpos($k,'feature_') === 0) {
set_config('defaultfeatures',substr($k,8),((intval($v)) ? 1 : 0));
}
}
info( t('Features updated') . EOL);
}
function defaultfeatures_plugin_admin (&$a, &$o) {
$t = get_markup_template( "admin.tpl", "addon/defaultfeatures/" );
$token = get_form_security_token("defaultfeaturessave");
$arr = array();
$features = get_features();
foreach($features as $fname => $fdata) {
$arr[$fname] = array();
$arr[$fname][0] = $fdata[0];
foreach(array_slice($fdata,1) as $f) {
$arr[$fname][1][] = array('feature_' .$f[0],$f[1],((intval(get_config('defaultfeatures',$f[0]))) ? "1" : "0"),$f[2],array(t('Off'),t('On')));
}
}
//logger("Features: " . print_r($arr,true));
$o = replace_macros($t, array(
'$submit' => t('Save Settings'),
'$features' => $arr,
'$form_security_token' => $token
));
}

View file

@ -0,0 +1,34 @@
# ADDON defaultfeatures
# Copyright (C)
# This file is distributed under the same license as the Friendica defaultfeatures addon package.
#
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-23 14:44+0200\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"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: defaultfeatures.php:36
msgid "Features updated"
msgstr ""
#: defaultfeatures.php:48
msgid "Off"
msgstr ""
#: defaultfeatures.php:48
msgid "On"
msgstr ""
#: defaultfeatures.php:55
msgid "Save Settings"
msgstr ""

View file

@ -0,0 +1,14 @@
{{*
* AUTOMATICALLY GENERATED TEMPLATE
* DO NOT EDIT THIS FILE, CHANGES WILL BE OVERWRITTEN
*
*}}
<input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
{{foreach $features as $f}}
<h3 class="settings-heading">{{$f.0}}</h3>
{{foreach $f.1 as $fcat}}
{{include file="field_yesno.tpl" field=$fcat}}
{{/foreach}}
{{/foreach}}
<div class="submit"><input type="submit" name="defaultfeatures-submit" value="{{$submit}}" /></div>

View file

@ -69,7 +69,7 @@ class Diaspora_Connection {
return ($this->tls) ? 'https' : 'http'; return ($this->tls) ? 'https' : 'http';
} }
private function doHttpRequest($url, $data = [], $headers = []) { private function doHttpRequest($url, $data = array(), $headers = array()) {
if (0 === strpos($url, '/')) { if (0 === strpos($url, '/')) {
$url = $this->getScheme() . '://' . $this->host . $url; $url = $this->getScheme() . '://' . $this->host . $url;
} }
@ -122,14 +122,14 @@ class Diaspora_Connection {
return $this->last_http_result; return $this->last_http_result;
} }
private function doHttpDelete($url, $data = [], $headers = []) { private function doHttpDelete($url, $data = array(), $headers = array()) {
$this->http_method = 'DELETE'; $this->http_method = 'DELETE';
$this->doHttpRequest($url, $data, $headers); $this->doHttpRequest($url, $data, $headers);
$this->http_method = null; // reset for next request $this->http_method = null; // reset for next request
} }
private function parseAuthenticityToken($str) { private function parseAuthenticityToken($str) {
$m = []; $m = array();
preg_match('/<meta (?:name="csrf-token" content="(.*?)"|content="(.*?)" name="csrf-token")/', $str, $m); preg_match('/<meta (?:name="csrf-token" content="(.*?)"|content="(.*?)" name="csrf-token")/', $str, $m);
if (empty($m[1]) && !empty($m[2])) { if (empty($m[1]) && !empty($m[2])) {
$token = $m[2]; $token = $m[2];
@ -151,11 +151,11 @@ class Diaspora_Connection {
public function logIn() { public function logIn() {
$this->doHttpRequest('/users/sign_in'); $this->doHttpRequest('/users/sign_in');
$params = [ $params = array(
'user[username]' => $this->user, 'user[username]' => $this->user,
'user[password]' => $this->password, 'user[password]' => $this->password,
'authenticity_token' => $this->csrf_token 'authenticity_token' => $this->csrf_token
]; );
$this->doHttpRequest('/users/sign_in', $params); $this->doHttpRequest('/users/sign_in', $params);
$this->doHttpRequest('/stream'); $this->doHttpRequest('/stream');
return (200 === $this->last_http_result->info['http_code']) ? true : false; return (200 === $this->last_http_result->info['http_code']) ? true : false;
@ -163,14 +163,14 @@ class Diaspora_Connection {
public function getAspects() { public function getAspects() {
$this->doHttpRequest('/bookmarklet'); $this->doHttpRequest('/bookmarklet');
$m = []; $m = array();
preg_match('/"aspects"\:(\[.+?\])/', $this->last_http_result->response, $m); preg_match('/"aspects"\:(\[.+?\])/', $this->last_http_result->response, $m);
return (!empty($m[1])) ? json_decode($m[1]) : false; return (!empty($m[1])) ? json_decode($m[1]) : false;
} }
public function getServices() { public function getServices() {
$this->doHttpRequest('/bookmarklet'); $this->doHttpRequest('/bookmarklet');
$m = []; $m = array();
preg_match('/"configured_services"\:(\[.+?\])/', $this->last_http_result->response, $m); preg_match('/"configured_services"\:(\[.+?\])/', $this->last_http_result->response, $m);
return (!empty($m[1])) ? json_decode($m[1]) : false; return (!empty($m[1])) ? json_decode($m[1]) : false;
} }
@ -196,24 +196,24 @@ class Diaspora_Connection {
return $this->readJsonResponse($this->last_http_result->response); return $this->readJsonResponse($this->last_http_result->response);
} }
public function postStatusMessage($msg, $aspect_ids = 'all_aspects', $additional_data = []) { public function postStatusMessage($msg, $aspect_ids = 'all_aspects', $additional_data = array()) {
$data = [ $data = array(
'aspect_ids' => $aspect_ids, 'aspect_ids' => $aspect_ids,
'status_message' => [ 'status_message' => array(
'text' => $msg, 'text' => $msg,
'provider_display_name' => $this->provider 'provider_display_name' => $this->provider
] )
]; );
if (!empty($additional_data)) { if (!empty($additional_data)) {
$data += $additional_data; $data += $additional_data;
} }
$headers = [ $headers = array(
'Content-Type: application/json', 'Content-Type: application/json',
'Accept: application/json', 'Accept: application/json',
'X-CSRF-Token: ' . $this->csrf_token 'X-CSRF-Token: ' . $this->csrf_token
]; );
$this->http_method = 'POST'; $this->http_method = 'POST';
$this->doHttpRequest('/status_messages', json_encode($data), $headers); $this->doHttpRequest('/status_messages', json_encode($data), $headers);
@ -228,18 +228,18 @@ class Diaspora_Connection {
} }
public function postPhoto($file) { public function postPhoto($file) {
$params = [ $params = array(
'photo[pending]' => 'true', 'photo[pending]' => 'true',
'qqfile' => basename($file) 'qqfile' => basename($file)
]; );
$query_string = '?' . http_build_query($params); $query_string = '?' . http_build_query($params);
$headers = [ $headers = array(
'Accept: application/json', 'Accept: application/json',
'X-Requested-With: XMLHttpRequest', 'X-Requested-With: XMLHttpRequest',
'X-CSRF-Token: ' . $this->csrf_token, 'X-CSRF-Token: ' . $this->csrf_token,
'X-File-Name: ' . basename($file), 'X-File-Name: ' . basename($file),
'Content-Type: application/octet-stream', 'Content-Type: application/octet-stream',
]; );
if ($size = @filesize($file)) { if ($size = @filesize($file)) {
$headers[] = "Content-Length: $size"; $headers[] = "Content-Length: $size";
} }
@ -249,14 +249,14 @@ class Diaspora_Connection {
} }
public function deletePost($id) { public function deletePost($id) {
$headers = ['X-CSRF-Token: ' . $this->csrf_token]; $headers = array('X-CSRF-Token: ' . $this->csrf_token);
$this->doHttpDelete("/posts/$id", [], $headers); $this->doHttpDelete("/posts/$id", array(), $headers);
return (204 === $this->last_http_result->info['http_code']) ? true : false; return (204 === $this->last_http_result->info['http_code']) ? true : false;
} }
public function deleteComment($id) { public function deleteComment($id) {
$headers = ['X-CSRF-Token: ' . $this->csrf_token]; $headers = array('X-CSRF-Token: ' . $this->csrf_token);
$this->doHttpDelete("/comments/$id", [], $headers); $this->doHttpDelete("/comments/$id", array(), $headers);
return (204 === $this->last_http_result->info['http_code']) ? true : false; return (204 === $this->last_http_result->info['http_code']) ? true : false;
} }

View file

@ -9,9 +9,6 @@
require_once("addon/diaspora/Diaspora_Connection.php"); require_once("addon/diaspora/Diaspora_Connection.php");
use Friendica\Core\PConfig;
use Friendica\Database\DBM;
function diaspora_install() { function diaspora_install() {
register_hook('post_local', 'addon/diaspora/diaspora.php', 'diaspora_post_local'); register_hook('post_local', 'addon/diaspora/diaspora.php', 'diaspora_post_local');
register_hook('notifier_normal', 'addon/diaspora/diaspora.php', 'diaspora_send'); register_hook('notifier_normal', 'addon/diaspora/diaspora.php', 'diaspora_send');
@ -34,9 +31,9 @@ function diaspora_jot_nets(&$a,&$b) {
if(! local_user()) if(! local_user())
return; return;
$diaspora_post = PConfig::get(local_user(),'diaspora','post'); $diaspora_post = get_pconfig(local_user(),'diaspora','post');
if(intval($diaspora_post) == 1) { if(intval($diaspora_post) == 1) {
$diaspora_defpost = PConfig::get(local_user(),'diaspora','post_by_default'); $diaspora_defpost = get_pconfig(local_user(),'diaspora','post_by_default');
$selected = ((intval($diaspora_defpost) == 1) ? ' checked="checked" ' : ''); $selected = ((intval($diaspora_defpost) == 1) ? ' checked="checked" ' : '');
$b .= '<div class="profile-jot-net"><input type="checkbox" name="diaspora_enable"' . $selected . ' value="1" /> ' $b .= '<div class="profile-jot-net"><input type="checkbox" name="diaspora_enable"' . $selected . ' value="1" /> '
. t('Post to Diaspora') . '</div>'; . t('Post to Diaspora') . '</div>';
@ -69,9 +66,9 @@ function diaspora_queue_hook(&$a,&$b) {
$userdata = $r[0]; $userdata = $r[0];
$handle = PConfig::get($userdata['uid'],'diaspora','handle'); $handle = get_pconfig($userdata['uid'],'diaspora','handle');
$password = PConfig::get($userdata['uid'],'diaspora','password'); $password = get_pconfig($userdata['uid'],'diaspora','password');
$aspect = PConfig::get($userdata['uid'],'diaspora','aspect'); $aspect = get_pconfig($userdata['uid'],'diaspora','aspect');
$success = false; $success = false;
@ -122,22 +119,22 @@ function diaspora_settings(&$a,&$s) {
/* Get the current state of our config variables */ /* Get the current state of our config variables */
$enabled = PConfig::get(local_user(),'diaspora','post'); $enabled = get_pconfig(local_user(),'diaspora','post');
$checked = (($enabled) ? ' checked="checked" ' : ''); $checked = (($enabled) ? ' checked="checked" ' : '');
$css = (($enabled) ? '' : '-disabled'); $css = (($enabled) ? '' : '-disabled');
$def_enabled = PConfig::get(local_user(),'diaspora','post_by_default'); $def_enabled = get_pconfig(local_user(),'diaspora','post_by_default');
$def_checked = (($def_enabled) ? ' checked="checked" ' : ''); $def_checked = (($def_enabled) ? ' checked="checked" ' : '');
$handle = PConfig::get(local_user(), 'diaspora', 'handle'); $handle = get_pconfig(local_user(), 'diaspora', 'handle');
$password = PConfig::get(local_user(), 'diaspora', 'password'); $password = get_pconfig(local_user(), 'diaspora', 'password');
$aspect = PConfig::get(local_user(),'diaspora','aspect'); $aspect = get_pconfig(local_user(),'diaspora','aspect');
$status = ""; $status = "";
$r = q("SELECT `addr` FROM `contact` WHERE `self` AND `uid` = %d", intval(local_user())); $r = q("SELECT `addr` FROM `contact` WHERE `self` AND `uid` = %d", intval(local_user()));
if (DBM::is_result($r)) { if (dbm::is_result($r)) {
$status = sprintf(t("Please remember: You can always be reached from Diaspora with your Friendica handle %s. "), $r[0]['addr']); $status = sprintf(t("Please remember: You can always be reached from Diaspora with your Friendica handle %s. "), $r[0]['addr']);
$status .= t('This connector is only meant if you still want to use your old Diaspora account for some time. '); $status .= t('This connector is only meant if you still want to use your old Diaspora account for some time. ');
$status .= sprintf(t('However, it is preferred that you tell your Diaspora contacts the new handle %s instead.'), $r[0]['addr']); $status .= sprintf(t('However, it is preferred that you tell your Diaspora contacts the new handle %s instead.'), $r[0]['addr']);
@ -225,11 +222,11 @@ function diaspora_settings_post(&$a,&$b) {
if(x($_POST,'diaspora-submit')) { if(x($_POST,'diaspora-submit')) {
PConfig::set(local_user(),'diaspora','post',intval($_POST['diaspora'])); set_pconfig(local_user(),'diaspora','post',intval($_POST['diaspora']));
PConfig::set(local_user(),'diaspora','post_by_default',intval($_POST['diaspora_bydefault'])); set_pconfig(local_user(),'diaspora','post_by_default',intval($_POST['diaspora_bydefault']));
PConfig::set(local_user(),'diaspora','handle',trim($_POST['handle'])); set_pconfig(local_user(),'diaspora','handle',trim($_POST['handle']));
PConfig::set(local_user(),'diaspora','password',trim($_POST['password'])); set_pconfig(local_user(),'diaspora','password',trim($_POST['password']));
PConfig::set(local_user(),'diaspora','aspect',trim($_POST['aspect'])); set_pconfig(local_user(),'diaspora','aspect',trim($_POST['aspect']));
} }
} }
@ -248,11 +245,11 @@ function diaspora_post_local(&$a,&$b) {
return; return;
} }
$diaspora_post = intval(PConfig::get(local_user(),'diaspora','post')); $diaspora_post = intval(get_pconfig(local_user(),'diaspora','post'));
$diaspora_enable = (($diaspora_post && x($_REQUEST,'diaspora_enable')) ? intval($_REQUEST['diaspora_enable']) : 0); $diaspora_enable = (($diaspora_post && x($_REQUEST,'diaspora_enable')) ? intval($_REQUEST['diaspora_enable']) : 0);
if ($b['api_source'] && intval(PConfig::get(local_user(),'diaspora','post_by_default'))) { if ($b['api_source'] && intval(get_pconfig(local_user(),'diaspora','post_by_default'))) {
$diaspora_enable = 1; $diaspora_enable = 1;
} }
@ -275,37 +272,27 @@ function diaspora_send(&$a,&$b) {
logger('diaspora_send: invoked'); logger('diaspora_send: invoked');
if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) { if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited']))
return; return;
}
if(! strstr($b['postopts'],'diaspora')) { if(! strstr($b['postopts'],'diaspora'))
return; return;
}
if($b['parent'] != $b['id']) { if($b['parent'] != $b['id'])
return; return;
}
// Dont't post if the post doesn't belong to us.
// This is a check for forum postings
$self = dba::selectFirst('contact', ['id'], ['uid' => $b['uid'], 'self' => true]);
if ($b['contact-id'] != $self['id']) {
return;
}
logger('diaspora_send: prepare posting', LOGGER_DEBUG); logger('diaspora_send: prepare posting', LOGGER_DEBUG);
$handle = PConfig::get($b['uid'],'diaspora','handle'); $handle = get_pconfig($b['uid'],'diaspora','handle');
$password = PConfig::get($b['uid'],'diaspora','password'); $password = get_pconfig($b['uid'],'diaspora','password');
$aspect = PConfig::get($b['uid'],'diaspora','aspect'); $aspect = get_pconfig($b['uid'],'diaspora','aspect');
if ($handle && $password) { if ($handle && $password) {
logger('diaspora_send: all values seem to be okay', LOGGER_DEBUG); logger('diaspora_send: all values seem to be okay', LOGGER_DEBUG);
require_once('include/bb2diaspora.php'); require_once('include/bb2diaspora.php');
$tag_arr = []; $tag_arr = array();
$tags = ''; $tags = '';
$x = preg_match_all('/\#\[(.*?)\](.*?)\[/',$b['tag'],$matches,PREG_SET_ORDER); $x = preg_match_all('/\#\[(.*?)\](.*?)\[/',$b['tag'],$matches,PREG_SET_ORDER);
@ -364,7 +351,7 @@ function diaspora_send(&$a,&$b) {
if (count($r)) if (count($r))
$a->contact = $r[0]["id"]; $a->contact = $r[0]["id"];
$s = serialize(['url' => $url, 'item' => $b['id'], 'post' => $body]); $s = serialize(array('url' => $url, 'item' => $b['id'], 'post' => $body));
require_once('include/queue_fn.php'); require_once('include/queue_fn.php');
add_to_queue($a->contact,NETWORK_DIASPORA2,$s); add_to_queue($a->contact,NETWORK_DIASPORA2,$s);
notice(t('Diaspora post failed. Queued for retry.').EOL); notice(t('Diaspora post failed. Queued for retry.').EOL);

View file

@ -9,8 +9,6 @@
* Author: Cat Gray <https://free-haven.org/profile/catness> * Author: Cat Gray <https://free-haven.org/profile/catness>
*/ */
use Friendica\Core\PConfig;
function dwpost_install() { function dwpost_install() {
register_hook('post_local', 'addon/dwpost/dwpost.php', 'dwpost_post_local'); register_hook('post_local', 'addon/dwpost/dwpost.php', 'dwpost_post_local');
register_hook('notifier_normal', 'addon/dwpost/dwpost.php', 'dwpost_send'); register_hook('notifier_normal', 'addon/dwpost/dwpost.php', 'dwpost_send');
@ -33,9 +31,9 @@ function dwpost_jot_nets(&$a,&$b) {
if(! local_user()) if(! local_user())
return; return;
$dw_post = PConfig::get(local_user(),'dwpost','post'); $dw_post = get_pconfig(local_user(),'dwpost','post');
if(intval($dw_post) == 1) { if(intval($dw_post) == 1) {
$dw_defpost = PConfig::get(local_user(),'dwpost','post_by_default'); $dw_defpost = get_pconfig(local_user(),'dwpost','post_by_default');
$selected = ((intval($dw_defpost) == 1) ? ' checked="checked" ' : ''); $selected = ((intval($dw_defpost) == 1) ? ' checked="checked" ' : '');
$b .= '<div class="profile-jot-net"><input type="checkbox" name="dwpost_enable" ' . $selected . ' value="1" /> ' $b .= '<div class="profile-jot-net"><input type="checkbox" name="dwpost_enable" ' . $selected . ' value="1" /> '
. t('Post to Dreamwidth') . '</div>'; . t('Post to Dreamwidth') . '</div>';
@ -54,16 +52,16 @@ function dwpost_settings(&$a,&$s) {
/* Get the current state of our config variables */ /* Get the current state of our config variables */
$enabled = PConfig::get(local_user(),'dwpost','post'); $enabled = get_pconfig(local_user(),'dwpost','post');
$checked = (($enabled) ? ' checked="checked" ' : ''); $checked = (($enabled) ? ' checked="checked" ' : '');
$def_enabled = PConfig::get(local_user(),'dwpost','post_by_default'); $def_enabled = get_pconfig(local_user(),'dwpost','post_by_default');
$def_checked = (($def_enabled) ? ' checked="checked" ' : ''); $def_checked = (($def_enabled) ? ' checked="checked" ' : '');
$dw_username = PConfig::get(local_user(), 'dwpost', 'dw_username'); $dw_username = get_pconfig(local_user(), 'dwpost', 'dw_username');
$dw_password = PConfig::get(local_user(), 'dwpost', 'dw_password'); $dw_password = get_pconfig(local_user(), 'dwpost', 'dw_password');
/* Add some HTML to the existing form */ /* Add some HTML to the existing form */
@ -107,10 +105,10 @@ function dwpost_settings_post(&$a,&$b) {
if(x($_POST,'dwpost-submit')) { if(x($_POST,'dwpost-submit')) {
PConfig::set(local_user(),'dwpost','post',intval($_POST['dwpost'])); set_pconfig(local_user(),'dwpost','post',intval($_POST['dwpost']));
PConfig::set(local_user(),'dwpost','post_by_default',intval($_POST['dw_bydefault'])); set_pconfig(local_user(),'dwpost','post_by_default',intval($_POST['dw_bydefault']));
PConfig::set(local_user(),'dwpost','dw_username',trim($_POST['dw_username'])); set_pconfig(local_user(),'dwpost','dw_username',trim($_POST['dw_username']));
PConfig::set(local_user(),'dwpost','dw_password',trim($_POST['dw_password'])); set_pconfig(local_user(),'dwpost','dw_password',trim($_POST['dw_password']));
} }
@ -129,11 +127,11 @@ function dwpost_post_local(&$a,&$b) {
if($b['private'] || $b['parent']) if($b['private'] || $b['parent'])
return; return;
$dw_post = intval(PConfig::get(local_user(),'dwpost','post')); $dw_post = intval(get_pconfig(local_user(),'dwpost','post'));
$dw_enable = (($dw_post && x($_REQUEST,'dwpost_enable')) ? intval($_REQUEST['dwpost_enable']) : 0); $dw_enable = (($dw_post && x($_REQUEST,'dwpost_enable')) ? intval($_REQUEST['dwpost_enable']) : 0);
if($_REQUEST['api_source'] && intval(PConfig::get(local_user(),'dwpost','post_by_default'))) if($_REQUEST['api_source'] && intval(get_pconfig(local_user(),'dwpost','post_by_default')))
$dw_enable = 1; $dw_enable = 1;
if(! $dw_enable) if(! $dw_enable)
@ -170,8 +168,8 @@ function dwpost_send(&$a,&$b) {
if($x && strlen($x[0]['timezone'])) if($x && strlen($x[0]['timezone']))
$tz = $x[0]['timezone']; $tz = $x[0]['timezone'];
$dw_username = PConfig::get($b['uid'],'dwpost','dw_username'); $dw_username = get_pconfig($b['uid'],'dwpost','dw_username');
$dw_password = PConfig::get($b['uid'],'dwpost','dw_password'); $dw_password = get_pconfig($b['uid'],'dwpost','dw_password');
$dw_blog = 'http://www.dreamwidth.org/interface/xmlrpc'; $dw_blog = 'http://www.dreamwidth.org/interface/xmlrpc';
if($dw_username && $dw_password && $dw_blog) { if($dw_username && $dw_password && $dw_blog) {
@ -221,7 +219,7 @@ EOT;
logger('dwpost: data: ' . $xml, LOGGER_DATA); logger('dwpost: data: ' . $xml, LOGGER_DATA);
if($dw_blog !== 'test') if($dw_blog !== 'test')
$x = post_url($dw_blog,$xml,["Content-Type: text/xml"]); $x = post_url($dw_blog,$xml,array("Content-Type: text/xml"));
logger('posted to dreamwidth: ' . ($x) ? $x : '', LOGGER_DEBUG); logger('posted to dreamwidth: ' . ($x) ? $x : '', LOGGER_DEBUG);
} }

14
editplain/editplain.css Normal file
View file

@ -0,0 +1,14 @@
#editplain-enable-label {
float: left;
width: 200px;
margin-bottom: 25px;
}
#editplain-checkbox {
float: left;
}

86
editplain/editplain.php Normal file
View file

@ -0,0 +1,86 @@
<?php
/**
* Name: Editplain
* Description: This addon is deprecated and has been replaced with the "Advanced Features" setting. Admins should remove this addon when their core code is updated to include advanced feature settings.
* Version: 1.0
* Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
* Status: Unsupported
*
*/
function editplain_install() {
register_hook('plugin_settings', 'addon/editplain/editplain.php', 'editplain_settings');
register_hook('plugin_settings_post', 'addon/editplain/editplain.php', 'editplain_settings_post');
logger("installed editplain");
}
function editplain_uninstall() {
unregister_hook('plugin_settings', 'addon/editplain/editplain.php', 'editplain_settings');
unregister_hook('plugin_settings_post', 'addon/editplain/editplain.php', 'editplain_settings_post');
logger("removed editplain");
}
/**
*
* Callback from the settings post function.
* $post contains the $_POST array.
* We will make sure we've got a valid user account
* and if so set our configuration setting for this person.
*
*/
function editplain_settings_post($a,$post) {
if(! local_user() || (! x($_POST,'editplain-submit')))
return;
set_pconfig(local_user(),'system','plaintext',intval($_POST['editplain']));
info( t('Editplain settings updated.') . EOL);
}
/**
*
* Called from the Plugin Setting form.
* Add our own settings info to the page.
*
*/
function editplain_settings(&$a,&$s) {
if(! local_user())
return;
/* Add our stylesheet to the page so we can make our settings look nice */
$a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . $a->get_baseurl() . '/addon/editplain/editplain.css' . '" media="all" />' . "\r\n";
/* Get the current state of our config variable */
$enabled = get_pconfig(local_user(),'system','plaintext');
$checked = (($enabled) ? ' checked="checked" ' : '');
/* Add some HTML to the existing form */
$s .= '<div class="settings-block">';
$s .= '<h3>' . t('Editplain Settings') . '</h3>';
$s .= '<div id="editplain-enable-wrapper">';
$s .= '<label id="editplain-enable-label" for="editplain-checkbox">' . t('Disable richtext status editor') . '</label>';
$s .= '<input id="editplain-checkbox" type="checkbox" name="editplain" value="1" ' . $checked . '/>';
$s .= '</div><div class="clear"></div>';
/* provide a submit button */
$s .= '<div class="settings-submit-wrapper" ><input type="submit" name="editplain-submit" class="settings-submit" value="' . t('Save Settings') . '" /></div></div>';
}

View file

@ -0,0 +1,34 @@
# ADDON editplain
# Copyright (C)
# This file is distributed under the same license as the Friendica editplain addon package.
#
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-02-27 05:01-0500\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"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: editplain.php:46
msgid "Editplain settings updated."
msgstr ""
#: editplain.php:76
msgid "Editplain Settings"
msgstr ""
#: editplain.php:78
msgid "Disable richtext status editor"
msgstr ""
#: editplain.php:84
msgid "Submit"
msgstr ""

View file

@ -0,0 +1,6 @@
<?php
$a->strings["Editplain settings updated."] = "Actualitzar la configuració de Editplain.";
$a->strings["Editplain Settings"] = "Configuració de Editplain";
$a->strings["Disable richtext status editor"] = "Deshabilitar l'editor d'estatus de texte enriquit";
$a->strings["Submit"] = "Enviar";

View file

@ -0,0 +1,36 @@
# ADDON editplain
# Copyright (C)
# This file is distributed under the same license as the Friendica editplain addon package.
#
#
# Translators:
# Michal Šupler <msupler@gmail.com>, 2014-2015
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
"PO-Revision-Date: 2015-02-11 19:40+0000\n"
"Last-Translator: Michal Šupler <msupler@gmail.com>\n"
"Language-Team: Czech (http://www.transifex.com/projects/p/friendica/language/cs/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: cs\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#: editplain.php:46
msgid "Editplain settings updated."
msgstr "Editplain nastavení aktualizováno"
#: editplain.php:76
msgid "Editplain Settings"
msgstr "Editplain nastavení"
#: editplain.php:78
msgid "Disable richtext status editor"
msgstr "Zakázat richtext status editor"
#: editplain.php:84
msgid "Submit"
msgstr "Odeslat"

View file

@ -0,0 +1,11 @@
<?php
if(! function_exists("string_plural_select_cs")) {
function string_plural_select_cs($n){
return ($n==1) ? 0 : ($n>=2 && $n<=4) ? 1 : 2;;
}}
;
$a->strings["Editplain settings updated."] = "Editplain nastavení aktualizováno";
$a->strings["Editplain Settings"] = "Editplain nastavení";
$a->strings["Disable richtext status editor"] = "Zakázat richtext status editor";
$a->strings["Submit"] = "Odeslat";

View file

@ -0,0 +1,37 @@
# ADDON editplain
# Copyright (C)
# This file is distributed under the same license as the Friendica editplain addon package.
#
#
# Translators:
# Abrax <webmaster@a-zwenkau.de>, 2014
# bavatar <tobias.diekershoff@gmx.net>, 2014
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
"PO-Revision-Date: 2014-10-15 12:19+0000\n"
"Last-Translator: Abrax <webmaster@a-zwenkau.de>\n"
"Language-Team: German (http://www.transifex.com/projects/p/friendica/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: editplain.php:46
msgid "Editplain settings updated."
msgstr "Editplain Einstellungen gespeichert."
#: editplain.php:76
msgid "Editplain Settings"
msgstr "Editplain Einstellungen"
#: editplain.php:78
msgid "Disable richtext status editor"
msgstr "Web-Editor für Beiträge deakivieren"
#: editplain.php:84
msgid "Submit"
msgstr "Senden"

View file

@ -0,0 +1,11 @@
<?php
if(! function_exists("string_plural_select_de")) {
function string_plural_select_de($n){
return ($n != 1);;
}}
;
$a->strings["Editplain settings updated."] = "Editplain Einstellungen gespeichert.";
$a->strings["Editplain Settings"] = "Editplain Einstellungen";
$a->strings["Disable richtext status editor"] = "Web-Editor für Beiträge deakivieren";
$a->strings["Submit"] = "Senden";

View file

@ -0,0 +1,6 @@
<?php
$a->strings["Editplain settings updated."] = "Ĝisdatigis la Editplain agordojn.";
$a->strings["Editplain Settings"] = "Agordoj por Editplain";
$a->strings["Disable richtext status editor"] = "Malŝalti la riĉteksto-redaktilon";
$a->strings["Submit"] = "Sendi";

View file

@ -0,0 +1,36 @@
# ADDON editplain
# Copyright (C)
# This file is distributed under the same license as the Friendica editplain addon package.
#
#
# Translators:
# Alberto Díaz Tormo <albertodiaztormo@gmail.com>, 2016
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
"PO-Revision-Date: 2016-10-23 11:35+0000\n"
"Last-Translator: Alberto Díaz Tormo <albertodiaztormo@gmail.com>\n"
"Language-Team: Spanish (http://www.transifex.com/Friendica/friendica/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: editplain.php:46
msgid "Editplain settings updated."
msgstr "Ajustes de edición sencillos actualizados."
#: editplain.php:76
msgid "Editplain Settings"
msgstr "Ajustes de edición sencillos"
#: editplain.php:78
msgid "Disable richtext status editor"
msgstr "Desactivar el editor de texto enriquecido del estatus"
#: editplain.php:84
msgid "Submit"
msgstr "Enviar"

View file

@ -0,0 +1,11 @@
<?php
if(! function_exists("string_plural_select_es")) {
function string_plural_select_es($n){
return ($n != 1);;
}}
;
$a->strings["Editplain settings updated."] = "Ajustes de edición sencillos actualizados.";
$a->strings["Editplain Settings"] = "Ajustes de edición sencillos";
$a->strings["Disable richtext status editor"] = "Desactivar el editor de texto enriquecido del estatus";
$a->strings["Submit"] = "Enviar";

View file

@ -0,0 +1,36 @@
# ADDON editplain
# Copyright (C)
# This file is distributed under the same license as the Friendica editplain addon package.
#
#
# Translators:
# Nicola Spanti <translations@nicola-spanti.info>, 2015
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
"PO-Revision-Date: 2015-07-27 18:13+0000\n"
"Last-Translator: Nicola Spanti <translations@nicola-spanti.info>\n"
"Language-Team: French (http://www.transifex.com/projects/p/friendica/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: editplain.php:46
msgid "Editplain settings updated."
msgstr ""
#: editplain.php:76
msgid "Editplain Settings"
msgstr ""
#: editplain.php:78
msgid "Disable richtext status editor"
msgstr "Désactiver l'éditeur avancé de statut"
#: editplain.php:84
msgid "Submit"
msgstr "Soumettre"

View file

@ -0,0 +1,11 @@
<?php
if(! function_exists("string_plural_select_fr")) {
function string_plural_select_fr($n){
return ($n > 1);;
}}
;
$a->strings["Editplain settings updated."] = "";
$a->strings["Editplain Settings"] = "";
$a->strings["Disable richtext status editor"] = "Désactiver l'éditeur avancé de statut";
$a->strings["Submit"] = "Soumettre";

View file

@ -0,0 +1,6 @@
<?php
$a->strings["Editplain settings updated."] = "";
$a->strings["Editplain Settings"] = "";
$a->strings["Disable richtext status editor"] = "";
$a->strings["Submit"] = "Senda inn";

View file

@ -0,0 +1,36 @@
# ADDON editplain
# Copyright (C)
# This file is distributed under the same license as the Friendica editplain addon package.
#
#
# Translators:
# fabrixxm <fabrix.xm@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
"PO-Revision-Date: 2014-10-22 07:54+0000\n"
"Last-Translator: fabrixxm <fabrix.xm@gmail.com>\n"
"Language-Team: Italian (http://www.transifex.com/Friendica/friendica/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: editplain.php:46
msgid "Editplain settings updated."
msgstr "Impostazioni 'Editplain' aggiornate."
#: editplain.php:76
msgid "Editplain Settings"
msgstr "Impostazioni Editplain"
#: editplain.php:78
msgid "Disable richtext status editor"
msgstr "Disabilita l'editor di testo visuale"
#: editplain.php:84
msgid "Submit"
msgstr "Invia"

View file

@ -0,0 +1,11 @@
<?php
if(! function_exists("string_plural_select_it")) {
function string_plural_select_it($n){
return ($n != 1);;
}}
;
$a->strings["Editplain settings updated."] = "Impostazioni 'Editplain' aggiornate.";
$a->strings["Editplain Settings"] = "Impostazioni Editplain";
$a->strings["Disable richtext status editor"] = "Disabilita l'editor di testo visuale";
$a->strings["Submit"] = "Invia";

View file

@ -0,0 +1,6 @@
<?php
$a->strings["Editplain settings updated."] = "";
$a->strings["Editplain Settings"] = "";
$a->strings["Disable richtext status editor"] = "";
$a->strings["Submit"] = "Lagre";

View file

@ -0,0 +1,6 @@
<?php
$a->strings["Editplain settings updated."] = "";
$a->strings["Editplain Settings"] = "";
$a->strings["Disable richtext status editor"] = "";
$a->strings["Submit"] = "Potwierdź";

View file

@ -0,0 +1,6 @@
<?php
$a->strings["Editplain settings updated."] = "Configurações Editplain atualizadas.";
$a->strings["Editplain Settings"] = "Configurações Editplain";
$a->strings["Disable richtext status editor"] = "Disabilite o modo de edição richtext";
$a->strings["Submit"] = "Enviar";

View file

@ -0,0 +1,36 @@
# ADDON editplain
# Copyright (C)
# This file is distributed under the same license as the Friendica editplain addon package.
#
#
# Translators:
# Doru DEACONU <dumitrudeaconu@yahoo.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
"PO-Revision-Date: 2014-11-27 14:13+0000\n"
"Last-Translator: Doru DEACONU <dumitrudeaconu@yahoo.com>\n"
"Language-Team: Romanian (Romania) (http://www.transifex.com/projects/p/friendica/language/ro_RO/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ro_RO\n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
#: editplain.php:46
msgid "Editplain settings updated."
msgstr "Configurările Editplain au fost actualizate."
#: editplain.php:76
msgid "Editplain Settings"
msgstr "Configurări Editplain"
#: editplain.php:78
msgid "Disable richtext status editor"
msgstr "Dezactivare editorul status de text îmbogățit"
#: editplain.php:84
msgid "Submit"
msgstr "Trimite"

Some files were not shown because too many files have changed in this diff Show more