Removed many deprecated addons

This commit is contained in:
Michael 2017-10-19 06:31:48 +00:00
parent 8ea198a97e
commit 1b7283c72b
247 changed files with 28554 additions and 0 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 Executable 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

62
appnet/clients.txt Normal file
View File

@ -0,0 +1,62 @@
PDvZfuW8zhzjwU8PF9KEzFbAcTn6T67U - http://wedge.natestedman.com - Wedge
cRWp45kA49pQKtxsZQXdwTnyuU6jBwuA - http://tigerbears.com/felix - Felix
ks4empDNRbXEAauk8BhLTdSvfEeAABvX - http://kiwi-app.net/ - Kiwi
nxz5USfARxELsYVpfPJc3mYaX42USb2E - http://themodernink.com/portfolio/dash-for-app-net/ - Dash
PvANLyCeaDjbMt6VCVWhKvUmgX6TxDXj - https://cauldron-app.herokuapp.com - Cauldron
737a54nLCdLLutcs2VzhtNKGnnMrakc4 - http://riposteapp.net - Riposte
j2TPZ4DyNa8GGhVUrTQJg9qWDw7t6fBn - http://blixt.io - Blixt
5vL9wT7EU7NRgk3hXscWW8Q27D2rYJCP - http://dasdom.de/Dominik_Hauser_Development/hAppy.html - hAppy
caYWDBvjwt2e9HWMm6qyKS6KcATHUkzQ - https://alpha.app.net - Alpha
gM5cMMBD7JJ6xamnBTcbhzkDCnR7xAux - http://robinapp.net - Robin
35UhKXbTqxmE7Hs427haVuRVB8FGzhtx - http://www.floodgap.com/software/texapp/ - Texapp
QHhyYpuARCwurZdGuuR7zjDMHDRkwcKm - http://tapbots.com/software/netbot - Netbot for iOS
xpFjFqgMv2BMtbHJZTFe7JRWsYJSUuHr - http://ferret.undiscoveredsoftware.com - Ferret
SzuHyL9wQy2BN7DDnBvdXpZr9Ue5MHYd - http://appnetizens.com - Appnetizens
C8NUX9JhL8uTW5EERQUTdXxWA3VQQ7Ft - http://dabr.eu/adn/ - Dabr - The Best Mobile Web Experience for App.net
NMYk2JjsJErGuYrjztFqZTcfH6ewq4Vs - http://pilgrimagesoftware.com/products/yawp - Yawp
nwpvwKVqxmEzZ6bEwkv53yaJABVj9ngQ - http://www.windowsphone.com/en-us/store/app/dotdot/dd4e94db-0e2a-4cfb-8c28-8b969e47c3c4 - DotDot
f7AUb7Akar3WbnUWbpfkgUDAZF777tLT - http://treeview.us/ - TreeView
qeqDYzScwCt6zprQTTByapLAHwm24Dgv - http://hashpan.com - #PAN
DhUuGUGFnf9PrJmREsKtQDGB4tz3xUqL - http://chimp.li/ - Chimp
bCyhhBHxCRRAPHJNcLXxxS2KWk4Jq8cg - https://bit.ly/1415pJs - Blue
js4qF6UN4fwXTK87Ax9Bjf3DhEQuK5hA - https://pirati.ca - friendica
QsqkRF7XkqnTyST8YPtJwbKt4v7cnk4u - http://kirbyapp.azurewebsites.net - Kirby
3MTzAfxABSvAXxGs4878jd6ynDJShMKV - https://pastapp.net - Pastapp
2JdaX6Ysmxb3UbfnGmHQwGxGWMM28q2P - http://ineedtojet.com/drift/ - Drift
B58XbrGstDUXvSKxDTxV7FGSStH6vfJZ - http://alpha.jvimedia.org - alpha.jvimedia.org
hFsCGArAjgJkYBHTHbZnUvzTmL4vaLHL - http://www.ayadn-app.net - Ayadn
e6pkUJsErZQMpKSfEqH693Yw2r4JAkUx - http://shawnthroop.com/prose - Prose
KgWW36vGe8LQPN696ftSUqdKUvjzuYqF - https://polls.abrah.am - Polls
424RQtjWS96PQj2KzDzHStWdNazS4naL - http://bli.ms - BLI.MS
Awm347m2hfLu2VZTYvmPq3FkMnXUtjvu - http://monkeystew.org - littlebit
8uJC3sb9PT5AYgUj2DajfXa9WuFj7P3a - http://getstreamapp.net/ - Stream
q6BSdP5DctemahG9EDZVAmCv2x2dbjZJ - https://github.com/appdotnet/adn-comments - App.net Comments
GfhV6dxDc8pERRas7CmSPtpdqcXYQv8G - http://favd.net - Favd
YEpw9MQ9XuBq587pFWDAVRPTsteLUhya - https://hootsuite.com - HootSuite for App.net
zEKkE4JBYNjnarYvEwGZxvFq7zuhEfnU - http://grailbox.com/wry - Wry
w98ZmPF4RSMuyrhPzNHrJBVm89GNmGnJ - http://www.tweetlanes.com - Tweet Lanes
92JGb2kLrhsPFER8CAZezHgBGpdZ3XYC - http://vidcast-app.net/ - Vidcast
qjpU52DDXuurvMw65gzNbv7XCreV5v3m - https://github.com/minego/macaw-enyo - Macaw
Ab2jgbmdrz9Kjk49AKmDSDsGNt4cq4H8 - http://shootingstar.fm/asterisk/ - Asterisk
QRLNj42zZ8KVkBgs6Jm5KwHu98Zs3YTu - https://play.google.com/store/apps/details?id=com.matsumo.bb - アオイトリ(bluebird)
gK89yfgAr8qxH9HZf8nbhry8Snc5fRGV - http://aa.tt/sprinter-ios - Sprinter
X2hcReHMUuK7Mx3uTxGRPnYeCrugx5JX - http://getzephyrapp.com - Zephyr
FS62JKk5qYppVA8JWhZvPepU7A33PXtD - http://www.instadesk-app.com/appetizer - Appetizer
gxwZjynDJw4TjPPwk3z4YMs9fJBNSxVm - http://www.nymphicusapp.com/chapper/ - Chapper
QAH95svvU4pewJ5aKkpyCdUvyzMsBxBk - https://alpha.app.net/network - The Network
WXJyQ6KK2TWy6ZDnJqJKbBDMrzPYYA3g - http://neater.co - Neater
PeVWEPMAEQMBwU2KLSYAjenRrScuWs4a - http://fingernoodle.com/Mention - Mention
Sza4zFMDcbmYqeCCjTusZNpP9DqWEwqJ - http://colorbay.me - Colorbay
cgedd8JNuBcEZfjCstsk74J9hxKnBYef - http://www.MetroAppNet.com - MetroAppNet
rsQM4njhnZnSe2Jaqsw5eVZQHLcM37wv - http://mobileways.de/gravity - Gravity
4M5FBt9NRk5Zu4FqaWcGZHj84ryUxwXh - http://habitatus.net/photolicious - Photolicious
D7vDLagx2fyBrqvGRyH6qZkdQAFvETv8 - http://206.81.100.17:8000/ - Alpha Test
ZcFNVDbEhCTc79z9ALaGbxuvXRqTdDAS - http://watercoolerapp.net - Watercooler
BHKWNEYrz3Fv5CzgvksK6pydcAE6q52r - http://rivolu.com/spoonbill - Spoonbill
dxZBcnnPjcV4ErwbjArvbGBHMcnW4SMB - https://play.google.com/store/apps/details?id=jp.hamsoft.hamoooooon&hl=ja - Hamoooooon
hSyCNZrLZCZHcmsHr6cLFMF2pwQpRmZP - http://getpika.com - Pika
9gbNKzXYsyzErU9K2J7v88XaFRfwsDzN - http://www.planet1107.net - AppNet Rhino
tyLnvDZJPX37U8gZ6WtZ2Ysf9kpTmRXy - https://play.google.com/store/apps/details?id=com.floatboth.antigravity - Antigravity
GLSssckvDjzbCa27B8HZVjJ2DPZgGJL3 - http://lunarguard.co/ - Pegasus
dyJyAJa535BMjqYBQsgftREbxsqdcVLL - http://www.flamingow.com - Flamingow
u6TeYE9yYprhkWPjVNgacJLngkhVrDFw - http://rafaelc.com.br - Sweet(dot)net for iOS

60
appnet/count.php Normal file
View File

@ -0,0 +1,60 @@
<?php
require_once("boot.php");
if(@is_null($a)) {
$a = new App;
}
@include(".htconfig.php");
require_once("dba.php");
dba::connect($db_host, $db_user, $db_pass, $db_data);
unset($db_host, $db_user, $db_pass, $db_data);
$a->set_baseurl(get_config('system','url'));
$token = get_pconfig($b['uid'],'appnet','token');
require_once 'addon/appnet/AppDotNet.php';
$clientId = get_pconfig($b["uid"],'appnet','clientid');
$clientSecret = get_pconfig($b["uid"],'appnet','clientsecret');
$app = new AppDotNet($clientId, $clientSecret);
$app->setAccessToken($token);
$param = array("include_muted" => true, "include_directed_posts" => true, "count" => 3000);
$lastid = @file_get_contents("addon/appnet/lastid.txt");
$clients = @file_get_contents("addon/appnet/clients.txt");
$users = @file_get_contents("addon/appnet/users.txt");
if ($lastid != "")
$param["since_id"] = $lastid;
$posts = $app->getPublicPosts($param);
foreach ($posts AS $post) {
if ($lastid < $post["id"])
$lastid = $post["id"];
if (!isset($post["reply_to"]) AND !strstr($clients, $post["source"]["client_id"]))
continue;
if (isset($post["reply_to"]) AND !strstr($clients, $post["source"]["client_id"]))
$clients .= $post["source"]["client_id"]." - ".$post["source"]["link"]." - ".$post["source"]["name"]."\n";
if (!strstr($users, $post["user"]["canonical_url"]))
$users .= $post["user"]["canonical_url"]." - ".$post["user"]["name"]."\n";
//echo $post["source"]["link"]." ".$post["source"]["name"]."\n";
//echo $post["user"]["name"]."\n";
//echo $post["text"]."\n";
//echo $post["canonical_url"]."\n";
//print_r($post["user"]);
//echo "---------------------------------\n";
}
file_put_contents("addon/appnet/lastid.txt", $lastid);
file_put_contents("addon/appnet/clients.txt", $clients);
file_put_contents("addon/appnet/users.txt", $users);

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"] = "Сохранить настройки";

1
appnet/lastid.txt Normal file
View File

@ -0,0 +1 @@
36406925

514
appnet/sync.php Normal file
View File

@ -0,0 +1,514 @@
<?php
/*
To-Do:
- like empfangen
- Links besser auflösen
Testen:
*/
require_once("boot.php");
if(@is_null($a)) {
$a = new App;
}
@include(".htconfig.php");
require_once("dba.php");
dba::connect($db_host, $db_user, $db_pass, $db_data);
unset($db_host, $db_user, $db_pass, $db_data);
$a->set_baseurl(get_config('system','url'));
//require_once("addon/appnet/appnet.php");
$uid = 1;
appnet_fetchstream($a, $uid);
function appnet_fetchstream($a, $uid) {
require_once("addon/appnet/AppDotNet.php");
require_once('include/items.php');
$token = get_pconfig($uid,'appnet','token');
$clientId = get_pconfig($uid,'appnet','clientid');
$clientSecret = get_pconfig($uid,'appnet','clientsecret');
$app = new AppDotNet($clientId, $clientSecret);
$app->setAccessToken($token);
$r = q("SELECT * FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1",
intval($uid));
if(count($r))
$me = $r[0];
else {
logger("appnet_fetchstream: Own contact not found for user ".$uid, LOGGER_DEBUG);
return;
}
$user = q("SELECT * FROM `user` WHERE `uid` = %d AND `account_expired` = 0 LIMIT 1",
intval($uid)
);
if(count($user))
$user = $user[0];
else {
logger("appnet_fetchstream: Own user not found for user ".$uid, LOGGER_DEBUG);
return;
}
$ownid = get_pconfig($uid,'appnet','ownid');
$param = array("include_annotations" => true);
$post = $app->getPost(32189565, $param);
//$post = $app->getPost(32166492, $param);
//$post = $app->getPost(32166065, $param);
//$post = $app->getPost(32161780, $param);
$postarray = appnet2_createpost($a, $uid, $post, $me, $user, $ownid, false);
print_r($postarray);
// $item = item_store($postarray);
die();
// Fetch stream
$param = array("count" => 200, "include_deleted" => false, "include_directed_posts" => true, "include_html" => false, "include_annotations" => true);
$lastid = get_pconfig($uid, 'appnet', 'laststreamid');
if ($lastid <> "")
$param["since_id"] = $lastid;
try {
$stream = $app->getUserStream($param);
}
catch (AppDotNetException $e) {
logger("appnet_fetchstream: Error fetching stream for user ".$uid);
}
$stream = array_reverse($stream);
foreach ($stream AS $post) {
$postarray = appnet_createpost($a, $uid, $post, $me, $user, $ownid, true);
$item = item_store($postarray);
logger('appnet_fetchstream: User '.$uid.' posted stream item '.$item);
$lastid = $post["id"];
if (($item != 0) AND ($postarray['contact-id'] != $me["id"])) {
$r = q("SELECT `thread`.`iid` AS `parent` FROM `thread`
INNER JOIN `item` ON `thread`.`iid` = `item`.`parent` AND `thread`.`uid` = `item`.`uid`
WHERE `item`.`id` = %d AND `thread`.`mention` LIMIT 1", dbesc($item));
if (count($r)) {
require_once('include/enotify.php');
notification(array(
'type' => NOTIFY_COMMENT,
'notify_flags' => $user['notify-flags'],
'language' => $user['language'],
'to_name' => $user['username'],
'to_email' => $user['email'],
'uid' => $user['uid'],
'item' => $postarray,
'link' => $a->get_baseurl() . '/display/' . $user['nickname'] . '/' . $item,
'source_name' => $postarray['author-name'],
'source_link' => $postarray['author-link'],
'source_photo' => $postarray['author-avatar'],
'verb' => ACTIVITY_POST,
'otype' => 'item',
'parent' => $r[0]["parent"],
));
}
}
}
set_pconfig($uid, 'appnet', 'laststreamid', $lastid);
// Fetch mentions
$param = array("count" => 200, "include_deleted" => false, "include_directed_posts" => true, "include_html" => false, "include_annotations" => true);
$lastid = get_pconfig($uid, 'appnet', 'lastmentionid');
if ($lastid <> "")
$param["since_id"] = $lastid;
try {
$mentions = $app->getUserMentions("me", $param);
}
catch (AppDotNetException $e) {
logger("appnet_fetchstream: Error fetching mentions for user ".$uid);
}
$mentions = array_reverse($mentions);
foreach ($mentions AS $post) {
$postarray = appnet_createpost($a, $uid, $post, $me, $user, $ownid, false);
if (isset($postarray["id"]))
$item = $postarray["id"];
elseif (isset($postarray["body"])) {
$item = item_store($postarray);
logger('appnet_fetchstream: User '.$uid.' posted mention item '.$item);
} else
$item = 0;
$lastid = $post["id"];
if ($item != 0) {
require_once('include/enotify.php');
notification(array(
'type' => NOTIFY_TAGSELF,
'notify_flags' => $user['notify-flags'],
'language' => $user['language'],
'to_name' => $user['username'],
'to_email' => $user['email'],
'uid' => $user['uid'],
'item' => $postarray,
'link' => $a->get_baseurl() . '/display/' . $user['nickname'] . '/' . $item,
'source_name' => $postarray['author-name'],
'source_link' => $postarray['author-link'],
'source_photo' => $postarray['author-avatar'],
'verb' => ACTIVITY_TAG,
'otype' => 'item'
));
}
}
set_pconfig($uid, 'appnet', 'lastmentionid', $lastid);
/* To-Do
$param = array("interaction_actions" => "star");
$interactions = $app->getMyInteractions($param);
foreach ($interactions AS $interaction)
appnet_dolike($a, $uid, $interaction);
*/
}
function appnet2_createpost($a, $uid, $post, $me, $user, $ownid, $createuser, $threadcompletion = true) {
require_once('include/items.php');
if ($post["machine_only"])
return;
if ($post["is_deleted"])
return;
$postarray = array();
$postarray['gravity'] = 0;
$postarray['uid'] = $uid;
$postarray['wall'] = 0;
$postarray['verb'] = ACTIVITY_POST;
$postarray['network'] = dbesc(NETWORK_APPNET);
$postarray['uri'] = "adn::".$post["id"];
$r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
dbesc($postarray['uri']),
intval($uid)
);
// if (count($r))
// return($r[0]);
$r = q("SELECT * FROM `item` WHERE `extid` = '%s' AND `uid` = %d LIMIT 1",
dbesc($postarray['uri']),
intval($uid)
);
// if (count($r))
// return($r[0]);
$postarray['parent-uri'] = "adn::".$post["thread_id"];
if (isset($post["reply_to"]) AND ($post["reply_to"] != "")) {
$postarray['thr-parent'] = "adn::".$post["reply_to"];
// Complete the thread if the parent doesn't exists
if ($threadcompletion) {
$r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
dbesc($postarray['thr-parent']),
intval($uid)
);
if (!count($r)) {
require_once("addon/appnet/AppDotNet.php");
$token = get_pconfig($uid,'appnet','token');
$clientId = get_pconfig($uid,'appnet','clientid');
$clientSecret = get_pconfig($uid,'appnet','clientsecret');
$app = new AppDotNet($clientId, $clientSecret);
$app->setAccessToken($token);
$param = array("count" => 200, "include_deleted" => false, "include_directed_posts" => true, "include_html" => false, "include_annotations" => true);
try {
$thread = $app->getPostReplies($post["thread_id"], $param);
}
catch (AppDotNetException $e) {
logger("appnet_createpost: Error fetching thread for user ".$uid);
}
$thread = array_reverse($thread);
foreach ($thread AS $tpost) {
$threadpost = appnet2_createpost($a, $uid, $tpost, $me, $user, $ownid, $createuser, false);
$item = item_store($threadpost);
}
}
}
} else
$postarray['thr-parent'] = $postarray['uri'];
$postarray['plink'] = $post["canonical_url"];
if ($post["user"]["id"] != $ownid) {
$postarray['owner-name'] = $post["user"]["name"];
$postarray['owner-link'] = $post["user"]["canonical_url"];
$postarray['owner-avatar'] = $post["user"]["avatar_image"]["url"];
$postarray['contact-id'] = appnet_fetchcontact($a, $uid, $post["user"], $me, $createuser);
} else {
$postarray['owner-name'] = $me["name"];
$postarray['owner-link'] = $me["url"];
$postarray['owner-avatar'] = $me["thumb"];
$postarray['contact-id'] = $me["id"];
}
$links = array();
if (is_array($post["repost_of"])) {
$postarray['author-name'] = $post["repost_of"]["user"]["name"];
$postarray['author-link'] = $post["repost_of"]["user"]["canonical_url"];
$postarray['author-avatar'] = $post["repost_of"]["user"]["avatar_image"]["url"];
$content = $post["repost_of"];
} else {
$postarray['author-name'] = $postarray['owner-name'];
$postarray['author-link'] = $postarray['owner-link'];
$postarray['author-avatar'] = $postarray['owner-avatar'];
$content = $post;
}
if (is_array($content["entities"])) {
$converted = appnet_expand_entities($a, $content["text"], $content["entities"]);
$postarray['body'] = $converted["body"];
$postarray['tag'] = $converted["tags"];
} else
$postarray['body'] = $content["text"];
if (is_array($content["annotations"]))
$postarray['body'] = appnet_expand_annotations($a, $postarray['body'], $content["annotations"]);
if (sizeof($content["entities"]["links"]))
foreach($content["entities"]["links"] AS $link) {
$url = normalise_link($link["url"]);
$links[$url] = $url;
}
if (sizeof($content["annotations"]))
foreach($content["annotations"] AS $annotation) {
if (isset($annotation["value"]["embeddable_url"])) {
$url = normalise_link($annotation["value"]["embeddable_url"]);
if (isset($links[$url]))
unset($links[$url]);
}
}
if (sizeof($links)) {
$link = array_pop($links);
$url = "[url=".$link."]".$link."[/url]";
$removedlink = trim(str_replace($url, "", $postarray['body']));
if (($removedlink == "") OR strstr($postarray['body'], $removedlink))
$postarray['body'] = $removedlink;
$postarray['body'] .= add_page_info($link);
}
$postarray['created'] = datetime_convert('UTC','UTC',$post["created_at"]);
$postarray['edited'] = datetime_convert('UTC','UTC',$post["created_at"]);
$postarray['app'] = $post["source"]["name"];
return($postarray);
//print_r($postarray);
//print_r($post);
}
function appnet_expand_entities($a, $body, $entities) {
if (!function_exists('substr_unicode')) {
function substr_unicode($str, $s, $l = null) {
return join("", array_slice(
preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY), $s, $l));
}
}
$tags_arr = array();
$replace = array();
foreach ($entities["mentions"] AS $mention) {
$url = "@[url=https://alpha.app.net/".rawurlencode($mention["name"])."]".$mention["name"]."[/url]";
$tags_arr["@".$mention["name"]] = $url;
$replace[$mention["pos"]] = array("pos"=> $mention["pos"], "len"=> $mention["len"], "replace"=> $url);
}
foreach ($entities["hashtags"] AS $hashtag) {
$url = "#[url=".$a->get_baseurl()."/search?tag=".rawurlencode($hashtag["name"])."]".$hashtag["name"]."[/url]";
$tags_arr["#".$hashtag["name"]] = $url;
$replace[$hashtag["pos"]] = array("pos"=> $hashtag["pos"], "len"=> $hashtag["len"], "replace"=> $url);
}
foreach ($entities["links"] AS $links) {
$url = "[url=".$links["url"]."]".$links["text"]."[/url]";
$replace[$links["pos"]] = array("pos"=> $links["pos"], "len"=> $links["len"], "replace"=> $url);
}
if (sizeof($replace)) {
krsort($replace);
foreach ($replace AS $entity) {
$pre = substr_unicode($body, 0, $entity["pos"]);
$post = substr_unicode($body, $entity["pos"] + $entity["len"]);
$body = $pre.$entity["replace"].$post;
}
}
return(array("body" => $body, "tags" => implode($tags_arr, ",")));
}
function appnet_expand_annotations($a, $body, $annotations) {
foreach ($annotations AS $annotation) {
if ($annotation["value"]["type"] == "photo") {
if (($annotation["value"]["thumbnail_large_url"] != "") AND ($annotation["value"]["url"] != ""))
$body .= "\n[url=".$annotation["value"]["url"]."][img]".$annotation["value"]["thumbnail_large_url"]."[/img][/url]";
elseif ($annotation["value"]["url"] != "")
$body .= "\n[img]".$annotation["value"]["url"]."[/img]";
}
}
return $body;
}
function appnet_fetchcontact($a, $uid, $contact, $me, $create_user) {
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `alias` = '%s' LIMIT 1",
intval($uid), dbesc("adn::".$contact["id"]));
if(!count($r) AND !$create_user)
return($me);
if (count($r) AND ($r[0]["readonly"] OR $r[0]["blocked"])) {
logger("appnet_fetchcontact: Contact '".$r[0]["nick"]."' is blocked or readonly.", LOGGER_DEBUG);
return(-1);
}
if(!count($r)) {
// create contact record
q("INSERT INTO `contact` (`uid`, `created`, `url`, `nurl`, `addr`, `alias`, `notify`, `poll`,
`name`, `nick`, `photo`, `network`, `rel`, `priority`,
`writable`, `blocked`, `readonly`, `pending` )
VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, 0, 0, 0 ) ",
intval($uid),
dbesc(datetime_convert()),
dbesc($contact["canonical_url"]),
dbesc(normalise_link($contact["canonical_url"])),
dbesc($contact["username"]."@app.net"),
dbesc("adn::".$contact["id"]),
dbesc(''),
dbesc("adn::".$contact["id"]),
dbesc($contact["name"]),
dbesc($contact["username"]),
dbesc($contact["avatar_image"]["url"]),
dbesc(NETWORK_APPNET),
intval(CONTACT_IS_FRIEND),
intval(1),
intval(1)
);
$r = q("SELECT * FROM `contact` WHERE `alias` = '%s' AND `uid` = %d LIMIT 1",
dbesc("adn::".$contact["id"]),
intval($uid)
);
if(! count($r))
return(false);
$contact_id = $r[0]['id'];
$g = q("SELECT def_gid FROM user WHERE uid = %d LIMIT 1",
intval($uid)
);
if($g && intval($g[0]['def_gid'])) {
require_once('include/group.php');
group_add_member($uid,'',$contact_id,$g[0]['def_gid']);
}
require_once("Photo.php");
$photos = import_profile_photo($contact["avatar_image"]["url"],$uid,$contact_id);
q("UPDATE `contact` SET `photo` = '%s',
`thumb` = '%s',
`micro` = '%s',
`name-date` = '%s',
`uri-date` = '%s',
`avatar-date` = '%s'
WHERE `id` = %d",
dbesc($photos[0]),
dbesc($photos[1]),
dbesc($photos[2]),
dbesc(datetime_convert()),
dbesc(datetime_convert()),
dbesc(datetime_convert()),
intval($contact_id)
);
} else {
// update profile photos once every two weeks as we have no notification of when they change.
//$update_photo = (($r[0]['avatar-date'] < datetime_convert('','','now -2 days')) ? true : false);
$update_photo = ($r[0]['avatar-date'] < datetime_convert('','','now -12 hours'));
// check that we have all the photos, this has been known to fail on occasion
if((! $r[0]['photo']) || (! $r[0]['thumb']) || (! $r[0]['micro']) || ($update_photo)) {
logger("appnet_fetchcontact: Updating contact ".$contact["username"], LOGGER_DEBUG);
require_once("Photo.php");
$photos = import_profile_photo($contact["avatar_image"]["url"], $uid, $r[0]['id']);
q("UPDATE `contact` SET `photo` = '%s',
`thumb` = '%s',
`micro` = '%s',
`name-date` = '%s',
`uri-date` = '%s',
`avatar-date` = '%s',
`url` = '%s',
`nurl` = '%s',
`addr` = '%s',
`name` = '%s',
`nick` = '%s'
WHERE `id` = %d",
dbesc($photos[0]),
dbesc($photos[1]),
dbesc($photos[2]),
dbesc(datetime_convert()),
dbesc(datetime_convert()),
dbesc(datetime_convert()),
dbesc($contact["canonical_url"]),
dbesc(normalise_link($contact["canonical_url"])),
dbesc($contact["username"]."@app.net"),
dbesc($contact["username"]),
dbesc($contact["name"]),
intval($r[0]['id'])
);
}
}
return($r[0]["id"]);
}
// starPost
// unstarPost
// repost
// deleteRepost

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>

256
appnet/test.php Normal file
View File

@ -0,0 +1,256 @@
<?php
/*
To-Do:
*/
require_once("boot.php");
if(@is_null($a)) {
$a = new App;
}
@include(".htconfig.php");
require_once("dba.php");
dba::connect($db_host, $db_user, $db_pass, $db_data);
unset($db_host, $db_user, $db_pass, $db_data);
$a->set_baseurl(get_config('system','url'));
require_once("addon/appnet/appnet.php");
require_once("include/plaintext.php");
$b['uid'] = 1;
$token = get_pconfig($b['uid'],'appnet','token');
require_once 'addon/appnet/AppDotNet.php';
$clientId = get_pconfig($b["uid"],'appnet','clientid');
$clientSecret = get_pconfig($b["uid"],'appnet','clientsecret');
$app = new AppDotNet($clientId, $clientSecret);
$app->setAccessToken($token);
//$param = array("include_annotations" => true);
//$param = array("include_muted" => true, "include_directed_posts" => true);
$param = array("include_muted" => true, "include_deleted" => false, "include_directed_posts" => true,
"include_html" => false, "include_post_annotations" => true);
//$param = array("include_post_annotations" => true, "include_muted" => true, "include_directed_posts" => true);
//$post = $app->getPost(37154801, $param);
$post = $app->getPost(37189594, $param);
//$post = $app->getPost(36892980, $param);
//$post = $app->getPost(36837961, $param);
//$post = $app->getPost(36843534, $param);
print_r($post);
die();
$r = q("SELECT * FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1",
intval($b['uid']));
if(count($r))
$me = $r[0];
$ownid = get_pconfig($b['uid'],'appnet','ownid');
$user = q("SELECT * FROM `user` WHERE `uid` = %d AND `account_expired` = 0 LIMIT 1",
intval($b['uid'])
);
if(count($user))
$user = $user[0];
$test = appnet_createpost($a, $b['uid'], $post, $me, $user, $ownid, true, false, true);
print_r($test);
die();
/*
$recycle = html_entity_decode("&#x2672; ", ENT_QUOTES, 'UTF-8');
$post = "♲ AdoraBelle (_Adora_Belle_@twitter.com): They are a little tied up... *rofl* @Shysarah2009 @AldiCustCare";
$post = str_replace($recycle, ">> ", $post);
//$post = preg_replace("=".$recycle." (.*) \((.*)@(.*)\)=ism", ">> $1 ($2@$3)", $ppost);
//$post = preg_replace("=".$recycle."(.*)=ism", ">> $1", $ppost);
die($post);
*/
$b["uid"] = 1;
$b["plink"] = "https://pirati.ca/display/heluecht/2834617";
//$b["title"] = "Wenn sich Microsoft per Telefon meldet, sollte man stutzig werden.";
// Image
$b["body"] = "Nur ein kleiner Test, bitte ignorieren. (wird sowieso sofort wieder gelöscht)
[url=https://lh3.googleusercontent.com/-5J1tGHGvELQ/U2EL_6RuAHI/AAAAAAAAX5U/71dlHNFUjXw/30.04.14%2B-%2B1][img=479x640]https://lh3.googleusercontent.com/-5J1tGHGvELQ/U2EL_6RuAHI/AAAAAAAAX5U/71dlHNFUjXw/w506-h750/30.04.14%2B-%2B1[/img]
[/url]";
/*
$b["body"] = "Übrigens: Früher #[url=http://www.dabo.de]war[/url] alles besser.
[bookmark=https://www.youtube.com/watch?v=-8yF9zqlpR4]SALTATIO MORTIS - Früher war alles besser | Napalm Records[/bookmark]";
*/
$b["body"] = "Umfrageergebnisse aus der [url=http://www.heise.de]Hölle.[/url] In [url=http://www.heise.de]Deutschland[/url] wäre das Ergebnis sicherlich ähnlich.
[class=type-link][bookmark=http://www.zeit.de/gesellschaft/zeitgeschehen/2014-05/oesterreich-studie-fuehrer]Studie: Ein Drittel der Österreicher will einen starken Führer[/bookmark]
[img]http://images.zeit.de/politik/ausland/2014-05/oesterreich-umfrage/oesterreich-umfrage-540x304.jpg[/img]
[quote]Wahlen? Parlament? Nicht so wichtig, sagen viele Österreicher laut einer Umfrage. Sie wollen einen Führer, der sich um Demokratie nicht kümmern muss.[/quote]
[/class]";
$b['postopts'] = "appnet";
/*
$b["body"] = "Dies ist ein Testposting, dass wieder gelöscht werden wird.";
*/
$b["body"] = "\"This is the end ...\"
[url=https://pirati.ca/photos/heluecht/image/4ccfc897bf2ab350e0fcce93078365f5][img]https://pirati.ca/photo/4ccfc897bf2ab350e0fcce93078365f5-2.jpg[/img][/url]";
$b["body"] = "[share author='Lukas' profile='https://alpha.app.net/phasenkasper' avatar='https://d2rfichhc2fb9n.cloudfront.net/image/5/1kT9xKMb9JyBVTCBnDHEaHLRUnd7InMiOiJzMyIsImIiOiJhZG4tdXNlci1hc3NldHMiLCJrIjoiYXNzZXRzL3VzZXIvZjkvM2EvNjAvZjkzYTYwMDAwMDAwMDAwMC5wbmciLCJvIjoiIn0' link='https://alpha.app.net/phasenkasper/post/32422435' posted='2014-06-12 11:42:18']
Ich bin immer wieder begeistern wie toll mein Windows läuft. [url=https://photos.app.net/32422435/1]photos.app.net/32422435/1[/url]
[img]https://files.app.net/1/1304673/aHwho5GfB2iXEXGGET4V3lOZVUZ5gyfFNI_CChgQ_iHYTs9sooUCIIMa3MPjLx4DHeFm3qCqEyIlo3ucFM2GDgr5SAHhJcXplNPqYGCzBxx4WP0rKxQAY65YE_tgBTaaxR5f6yMM3RzMBV6ooSH0y6zEmF0yRc6EEgn1WFaddqrSRb5XzT8ThiIspzQOy9b6m[/img][/share]";
$b["body"] = "Ein A380 ist jetzt nicht unbedingt das unwendigste Flugzeug, habe ich das Gefühl.
[share author='Javier Salgado' profile='https://plus.google.com/101295635357824725690' avatar='https://lh6.googleusercontent.com/-uE1alnITTco/AAAAAAAAAAI/AAAAAAAAAcc/jXjCG51oQfg/photo.jpg?sz=50' link='https://plus.google.com/101295635357824725690/posts/CjLEs9pSWFV']Unbelievable Airbus A380 vertical Take-off + Amaz…: http://youtu.be/RJxnwF-MPi0
[class=type-video][bookmark=http://youtu.be/RJxnwF-MPi0]Unbelievable Airbus A380 vertical Take-off + Amazing Air Show ( HD ) Paris Air show 2013[/bookmark]
[/class][/share]";
/*
require_once("include/plaintext.php");
$post = plaintext($a, $b, 256, false, 6);
print_r($post);
die();
*/
/*
$url = "https://pirati.ca/photos/heluecht/image/54d898d7e1a8e9ba032a5fa352f51862";
require_once("mod/parse_url.php");
$data = parseurl_getsiteinfo($url, true);
print_r($data);
die();
*/
//$id = 3949352;
$id = 3949512;
$r = q("SELECT * FROM `item` WHERE `id` = %d", intval($id));
$b = $r[0];
$b['postopts'] = "appnet";
//$data = get_attached_data($b["body"]);
//print_r($data);
$post = plaintext($a, $b, 256, false, 6);
print_r($post);
$data = appnet_create_entities($a, $b, $post);
print_r($data);
die();
appnet_send($a, $b);
die();
$token = get_pconfig($b['uid'],'appnet','token');
require_once 'addon/appnet/AppDotNet.php';
$clientId = get_pconfig($b["uid"],'appnet','clientid');
$clientSecret = get_pconfig($b["uid"],'appnet','clientsecret');
$app = new AppDotNet($clientId, $clientSecret);
$app->setAccessToken($token);
//$param = array("include_annotations" => true);
$param = array("include_muted" => true, "include_directed_posts" => true);
//$param = array("include_post_annotations" => true, "include_muted" => true, "include_directed_posts" => true);
//$post = $app->getPost(32236571, $param);
//$post = $app->getPost(32237235, $param);
//$post = $app->getPost(32217767, $param);
//$post = $app->getPost(32203349, $param);
//$post = $app->getPost(32239275, $param);
//$post = $app->getPost(32261367, $param);
//$post = $app->getPost(32306954, $param);
$post = $app->getPost(32926285, $param);
print_r($post);
die();
$lastid = @file_get_contents("addon/appnet/lastid.txt");
$clients = @file_get_contents("addon/appnet/clients.txt");
$users = @file_get_contents("addon/appnet/users.txt");
if ($lastid != "")
$param["since_id"] = $lastid;
$posts = $app->getPublicPosts($param);
foreach ($posts AS $post) {
$lastid = $post["id"];
if ((count($post["entities"]["mentions"]) == 0) AND !strstr($clients, $post["source"]["client_id"]))
continue;
if ((count($post["entities"]["mentions"]) > 0) AND !strstr($clients, $post["source"]["client_id"]))
$clients .= $post["source"]["client_id"]." - ".$post["source"]["link"]." - ".$post["source"]["name"]."\n";
if (!strstr($userss, $post["user"]["canonical_url"]))
$users .= $post["user"]["canonical_url"]." - ".$post["user"]["username"]."\n";
echo $post["source"]["link"]." ".$post["source"]["name"]."\n";
echo $post["user"]["username"]."\n";
echo $post["text"]."\n";
//print_r($post["entities"]["mentions"]);
echo $post["id"]."\n";
echo "---------------------------------\n";
}
file_put_contents("addon/appnet/lastid.txt", $lastid);
file_put_contents("addon/appnet/clients.txt", $clients);
file_put_contents("addon/appnet/users.txt", $users);
/*
try {
$post = $app->getPost(323069541111, $param);
}
catch (AppDotNetException $e) {
print_r(appnet_error($e->getMessage()));
}
*/
//print_r($post);
die();
$data = array();
$data["annotations"][] = array(
"type" => "net.app.core.crosspost",
"value" => array(
"canonical_url" => $b["plink"]
)
);
$data["annotations"][] = array(
"type" => "com.friendica.post",
"value" => array(
"raw" => $b["body2"]
)
);
$ret = $app->createPost($b["body"], $data);
print_r($ret);

254
appnet/test/ADNRecipes.php Normal file
View File

@ -0,0 +1,254 @@
<?php
/**
* ADNRecipes.php
* App.net PHP library
* https://github.com/jdolitsky/AppDotNetPHP
*
* This class contains some simple recipes for publishing to App.net.
*/
require_once "AppDotNet.php";
class ADNRecipe {
protected $_adn = null;
public function __construct() {
$this->_adn = new AppDotNet(null, null);
}
public function setAccessToken($access_token) {
$this->_adn->setAccessToken($access_token);
}
}
class ADNBroadcastMessageBuilder extends ADNRecipe {
// stores the channel ID for this message
private $_channel_id = null;
// stores the headline
private $_headline = null;
// stores the body text
private $_text = null;
// should we parse markdown links?
private $_parseMarkdownLinks = false;
// should we parse URLs out of the text body?
private $_parseLinks = false;
// stores the read more link
private $_readMoreLink = null;
// stores the photo filename
private $_photo = null;
// stores the attachment filename
private $_attachment = null;
/**
* Sets the destination channel ID. Required.
* @param string $channel_id The App.net Channel ID to send to. Get this
* from the web publisher tools if you don't have one.
*/
public function setChannelID($channel_id) {
$this->_channel_id = $channel_id;
return $this;
}
public function getChannelID() {
return $this->_channel_id;
}
/**
* Sets the broadcast headline. This string shows up in the push
* notifications which are sent to mobile apps, and is the title
* displayed in the UI.
* @param string $headline A short string for a headline.
*/
public function setHeadline($headline) {
$this->_headline = $headline;
return $this;
}
public function getHeadline() {
return $this->_headline;
}
/**
* Sets the broadcast text. This string shows up as a description
* on the broadcast detail page and in the "card" view in the
* mobile apps. Can contain links.
* @param string $text Broadcast body text.
*/
public function setText($text) {
$this->_text = $text;
return $this;
}
public function getText() {
return $this->_text;
}
/**
* Sets a flag which allows links to be parsed out of body text in
* [Markdown](http://daringfireball.net/projects/markdown/)
* format.
* @param bool $parseMarkdownLinks Parse markdown links.
*/
public function setParseMarkdownLinks($parseMarkdownLinks) {
$this->_parseMarkdownLinks = $parseMarkdownLinks;
return $this;
}
public function getParseMarkdownLinks() {
return $this->_parseMarkdownLinks;
}
/**
* Sets a flag which causes bare URLs in body text to be linkified.
* @param bool $parseLinks Parse links.
*/
public function setParseLinks($parseLinks) {
$this->_parseLinks = $parseLinks;
return $this;
}
public function getParseLinks() {
return $this->_parseLinks;
}
/**
* Sets the URL the broadcast should link to.
* @param string $readMoreLink Read more link URL.
*/
public function setReadMoreLink($readMoreLink) {
$this->_readMoreLink = $readMoreLink;
return $this;
}
public function getReadMoreLink() {
return $this->_readMoreLink;
}
/**
* Sets the filename of a photo associated with a broadcast.
* Probably requires the php-imagick extension. File will be
* uploaded to App.net.
* @param string $photo Photo filename.
*/
public function setPhoto($photo) {
$this->_photo = $photo;
return $this;
}
public function getPhoto() {
return $this->_photo;
}
/**
* Sets the filename of a attachment associated with a broadcast.
* File will be uploaded to App.net.
* @param string $attachment Attachment filename.
*/
public function setAttachment($attachment) {
$this->_attachment = $attachment;
return $this;
}
public function getAttachment() {
return $this->_attachment;
}
/**
* Sends the built-up broadcast.
*/
public function send() {
$parseLinks = $this->_parseLinks || $this->_parseMarkdownLinks;
$message = array(
"annotations" => array(),
"entities" => array(
"parse_links" => $parseLinks,
"parse_markdown_links" => $this->_parseMarkdownLinks,
),
);
if (isset($this->_photo)) {
$photoFile = $this->_adn->createFile($this->_photo, array(
type => "com.github.jdolitsky.appdotnetphp.photo",
));
$message["annotations"][] = array(
"type" => "net.app.core.oembed",
"value" => array(
"+net.app.core.file" => array(
"file_id" => $photoFile["id"],
"file_token" => $photoFile["file_token"],
"format" => "oembed",
),
),
);
}
if (isset($this->_attachment)) {
if (isset($this->_attachment)) {
$attachmentFile = $this->_adn->createFile($this->_attachment, array(
type => "com.github.jdolitsky.appdotnetphp.attachment",
));
$message["annotations"][] = array(
"type" => "net.app.core.oembed",
"value" => array(
"+net.app.core.file" => array(
"file_id" => $attachmentFile["id"],
"file_token" => $attachmentFile["file_token"],
"format" => "metadata",
),
),
);
}
}
if (isset($this->_text)) {
$message["text"] = $this->_text;
} else {
$message["machine_only"] = true;
}
if (isset($this->_headline)) {
$message["annotations"][] = array(
"type" => "net.app.core.broadcast.message.metadata",
"value" => array(
"subject" => $this->_headline,
),
);
}
if (isset($this->_readMoreLink)) {
$message["annotations"][] = array(
"type" => "net.app.core.crosspost",
"value" => array(
"canonical_url" => $this->_readMoreLink,
),
);
}
return $this->_adn->createMessage($this->_channel_id, $message);
}
}
?>

94
appnet/test/ConsumeStream.php Executable file
View File

@ -0,0 +1,94 @@
<?php
require_once 'AppDotNet.php';
require_once 'EZsettings.php';
$app = new AppDotNet($app_clientId,$app_clientSecret);
// You need an app token to consume the stream, get the token returned by App.net
// (this also sets the token)
$token = $app->getAppAccessToken();
// getting a 400 error
// 1. first check to make sure you set your app_clientId & app_clientSecret correctly
// if that doesn't fix it, try this
// 2. It's possible you have hit your stream limit (5 stream per app)
// uncomment this to clear all the streams you've previously created
//$app->deleteAllStreams();
// create a stream
// if you already have a stream you can skip this step
// this stream is going to consume posts and stars (but not follows)
$stream = $app->createStream(array('post','star','user_follow'));
// you might want to save $stream['endpoint'] or $stream['id'] for later so
// you don't have to re-create the stream
print "stream id [".$stream['id']."]\n";
//$stream = $app->getStream(XXX);
// we need to create a callback function that will do something with posts/stars
// when they're received from the stream. This function should accept one single
// parameter that will be the php object containing the meta / data for the event.
/*
[meta] => Array
(
[timestamp] => 1352147672891
[type] => post/star/etc...
[id] => 1399341
)
// data is as you would expect it
*/
function handleEvent($event) {
global $counters;
$json=json_encode($event['data']);
$counters[$event['meta']['type']]++;
switch ($event['meta']['type']) {
case 'post':
print $event['meta']['is_deleted']?'p':'P';
break;
case 'star':
print $event['meta']['is_deleted']?'_':'*';
break;
case 'user_follow':
print $event['meta']['is_deleted']?'f':'F';
break;
case 'stream_marker':
print $event['meta']['is_deleted']?'/':'=';
break;
case 'message':
print $event['meta']['is_deleted']?'m':'M';
break;
case 'channel':
print $event['meta']['is_deleted']?'c':'C';
break;
case 'channel_subscription':
print $event['meta']['is_deleted']?'f':'F';
break;
default:
print "Unknwon type [".$event['meta']['type']."]\n";
break;
}
}
// register that function as the stream handler
$app->registerStreamFunction('handleEvent');
// open the stream for reading
$app->openStream($stream['endpoint']);
// now we want to process the stream. We have two options. If all we're doing
// in this script is processing the stream, we can just call:
// $app->processStreamForever();
// otherwise you can create a loop, and call $app->processStream($milliseconds)
// intermittently, like:
while (true) {
$counters=array('post'=>0,'star'=>0,'user_follow'=>0,'stream_marker'=>0,'message'=>0,'channel'=>0,'channel_subscription'=>0);
// now we're going to process the stream for awhile (60 seconds)
$app->processStream(60*1000000);
echo "\n";
// show some stats
echo date('H:i')." [",$counters['post'],"]posts [",$counters['star'],"]stars [",$counters['user_follow'],"]follow [",$counters['stream_marker'],"]mrkrs [",$counters['message'],"]msgs /min\n";
// then do something else...
}
?>

235
appnet/test/EZAppDotNet.php Normal file
View File

@ -0,0 +1,235 @@
<?php
/**
* EZAppDotNet.php
* Class for easy web development
* https://github.com/jdolitsky/AppDotNetPHP
*
* This class does as much of the grunt work as possible in helping you to
* access the App.net API. In theory you don't need to know anything about
* oAuth, tokens, or all the ugly details of how it works, it should "just
* work".
*
* Note this class assumes you're running a web site, and you'll be
* accessing it via a web browser (it expects to be able to do things like
* cookies and sessions). If you're not using a web browser in your App.net
* application, or you want more fine grained control over what's being
* done for you, use the included AppDotNet class, which does much
* less automatically.
*/
// comment these two lines out in production
//error_reporting(E_ALL);
//ini_set('display_errors', 1);
//require_once 'EZsettings.php';
require_once 'AppDotNet.php';
// comment this out if session is started elsewhere
//session_start();
class EZAppDotNet extends AppDotNet {
private $_callbacks = array();
private $_autoShutdownStreams = array();
public function __construct($clientId=null,$clientSecret=null) {
global $app_clientId,$app_clientSecret;
// if client id wasn't passed, and it's in the settings.php file, use it from there
if (!$clientId && isset($app_clientId)) {
// if it's still the default, warn them
if ($app_clientId == 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') {
throw new AppDotNetException('You must change the values defined in EZsettings.php');
}
$clientId = $app_clientId;
$clientSecret = $app_clientSecret;
}
// call the parent with the variables we have
parent::__construct($clientId,$clientSecret);
// set up ez streaming
$this->registerStreamFunction(array($this,'streamEZCallback'));
// make sure we cleanup/destroy any streams when we exit
register_shutdown_function(array($this,'stopStreaming'));
}
public function getAuthUrl($redirectUri=null,$scope=null) {
global $app_redirectUri,$app_scope;
if (is_null($redirectUri)) {
$redirectUri = $app_redirectUri;
}
if (is_null($scope)) {
$scope = $app_scope;
}
return parent::getAuthUrl($redirectUri,$scope);
}
// user login
public function setSession($cookie=0,$callback=null) {
if (!isset($callback)) {
global $app_redirectUri;
$cb=$app_redirectUri;
} else {
$cb=$callback;
}
// try and set the token the original way (eg: if they're logging in)
$token = $this->getAccessToken($cb);
// if that didn't work, check to see if there's an existing token stored somewhere
if (!$token) {
$token = $this->getSession();
}
$_SESSION['AppDotNetPHPAccessToken']=$token;
// if they want to stay logged in via a cookie, set the cookie
if ($token && $cookie) {
$cookie_lifetime = time()+(60*60*24*7);
setcookie('AppDotNetPHPAccessToken',$token,$cookie_lifetime);
}
return $token;
}
// check if user is logged in
public function getSession() {
// first check for cookie
if (isset($_COOKIE['AppDotNetPHPAccessToken']) && $_COOKIE['AppDotNetPHPAccessToken'] != 'expired') {
$this->setAccessToken($_COOKIE['AppDotNetPHPAccessToken']);
return $_COOKIE['AppDotNetPHPAccessToken'];
}
// else check the session for the token (from a previous page load)
else if (isset($_SESSION['AppDotNetPHPAccessToken'])) {
$this->setAccessToken($_SESSION['AppDotNetPHPAccessToken']);
return $_SESSION['AppDotNetPHPAccessToken'];
}
return false;
}
// log the user out
public function deleteSession() {
// clear the session
unset($_SESSION['AppDotNetPHPAccessToken']);
// unset the cookie
setcookie('AppDotNetPHPAccessToken', null, 1);
// clear the access token
$this->setAccessToken(null);
// done!
return true;
}
/**
* Registers a callback function to be called whenever an event of a certain
* type is received from the app.net streaming API. Your function will recieve
* a PHP associative array containing an app.net object. You must register at
* least one callback function before starting to stream (otherwise your data
* would simply be discarded). You can register multiple event types and even
* multiple functions per event (just call this method as many times as needed).
* If you register multiple functions for a single event, each will be called
* every time an event of that type is received.
*
* Note you should not be doing any significant processing in your callback
* functions. Doing so could cause your scripts to fall behind the stream and
* risk getting disconnected. Ideally your callback functions should simply
* drop the data into a file or database to be collected and processed by
* another program.
* @param string $type The type of even your callback would like to recieve.
* At time of writing the possible options are 'post', 'star', 'user_follow'.
*/
public function registerStreamCallback($type,$callback) {
switch ($type) {
case 'post':
case 'star':
case 'user_follow':
if (!array_key_exists($type,$this->_callbacks)) {
$this->_callbacks[$type] = array();
}
$this->_callbacks[$type][] = $callback;
return true;
break;
default:
throw new AppDotNetException('Unknown callback type: '.$type);
}
}
/**
* This is the easy way to start streaming. Register some callback functions
* using registerCallback(), then call startStreaming(). Every time the stream
* gets sent a type of object you have a callback for, your callback function(s)
* will be called with the proper data. When your script exits the streams will
* be cleaned up (deleted).
*
* Do not use this method if you want to spread out streams across multiple
* processes or multiple servers, since the first script that exits/crashes will
* delete the streams for everyone else. Instead use createStream() and openStream().
* @return true
* @see AppDotNetStream::stopStreaming()
* @see AppDotNetStream::createStream()
* @see AppDotNetStream::openStream()
*/
public function startStreaming() {
// only listen for object types that we have registered callbacks for
if (!$this->_callbacks) {
throw new AppDotNetException('You must register at least one callback function before calling startStreaming');
}
// if there's already a stream running, don't allow another
if ($this->_currentStream) {
throw new AppDotNetException('There is already a stream being consumed, only one stream can be consumed per AppDotNetStream instance');
}
$stream = $this->createStream(array_keys($this->_callbacks));
// when the script exits, delete this stream (if it's still around)
$this->_autoShutdownStreams[] = $response['id'];
// start consuming
$this->openStream($response['id']);
return true;
}
/**
* This is the easy way to stop streaming and cleans up the no longer needed stream.
* This method will be called automatically if you started streaming using
* startStreaming().
*
* Do not use this method if you want to spread out streams across multiple
* processes or multiple servers, since it will delete the streams for everyone
* else. Instead use closeStream().
* @return true
* @see AppDotNetStream::startStreaming()
* @see AppDotNetStream::deleteStream()
* @see AppDotNetStream::closeStream()
*/
public function stopStreaming() {
$this->closeStream();
// delete any auto streams
foreach ($this->_autoShutdownStreams as $streamId) {
$this->deleteStream($streamId);
}
return true;
}
/**
* Internal function used to make your streaming easier. I hope.
*/
protected function streamEZCallback($type,$data) {
// if there are defined callbacks for this object type, then...
if (array_key_exists($type,$this->_callbacks)) {
// loop through the callbacks notifying each one in turn
foreach ($this->_callbacks[$type] as $callback) {
call_user_func($callback,$data);
}
}
}
}

View File

@ -0,0 +1,25 @@
<?php
// change these values to your own in order to use EZAppDotNet
$app_clientId = 'js4qF6UN4fwXTK87Ax9Bjf3DhEQuK5hA';
$app_clientSecret = 'Z4hsLHh82d5cQAwNVD2uZtNg3WqFxLXF';
// this must be one of the URLs defined in your App.net application settings
$app_redirectUri = 'https://pirati.ca/addon/appnetpost/appnet.php';
// An array of permissions you're requesting from the user.
// As a general rule you should only request permissions you need for your app.
// By default all permissions are commented out, meaning you'll have access
// to their basic profile only. Uncomment the ones you need.
$app_scope = array(
'basic', // See basic user info (default, required: may be given if not specified)
'stream', // Read the user's personalized stream
// 'email', // Access the user's email address
'write_post', // Post on behalf of the user
// 'follow', // Follow and unfollow other users
'public_messages', // Send and receive public messages as this user
'messages', // Send and receive public and private messages as this user
// 'update_profile', // Update a users name, images, and other profile information
// 'files', // Manage a users files. This is not needed for uploading files.
// 'export', // Export all user data (shows a warning)
);

View File

@ -0,0 +1,106 @@
<?php
/*
* login_with_buffer.php
*
* @(#) $Id: login_with_buffer.php,v 1.1 2014/03/17 09:45:08 mlemos Exp $
*
*/
/*
* Get the http.php file from http://www.phpclasses.org/httpclient
*/
require('http.php');
require('oauth_client.php');
$client = new oauth_client_class;
$client->debug = true;
$client->debug_http = true;
$client->server = '';
$client->oauth_version = '2.0';
$client->dialog_url = 'https://account.app.net/oauth/authenticate?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&scope={SCOPE}&response_type=code&state={STATE}';
$client->access_token_url = 'https://account.app.net/oauth/access_token';
$client->redirect_uri = 'https://'.$_SERVER['HTTP_HOST'].
dirname(strtok($_SERVER['REQUEST_URI'],'?')).'/appnet.php';
$client->client_id = 'js4qF6UN4fwXTK87Ax9Bjf3DhEQuK5hA'; $application_line = __LINE__;
$client->client_secret = 'Z4hsLHh82d5cQAwNVD2uZtNg3WqFxLXF ';
if(strlen($client->client_id) == 0
|| strlen($client->client_secret) == 0)
die('Please create an application in App.net Apps page '.
'https://bufferapp.com/developers/apps/create '.
' and in the line '.$application_line.
' set the client_id to Client ID and client_secret with Client'.
' Secret');
//$client->access_token = 'AQAAAAAACzfmWzVa5o69CFJrV-fBt9PLkV9sd9_0BnnHTI02_NGvvsZDCgz-38eA5_yAgu9AwaFcUzFp0qdCj4y2svy6qUl42g';
/* API permissions
*/
$client->scope = '';
if(($success = $client->Initialize()))
{
if(($success = $client->Process()))
{
if(strlen($client->access_token))
{;
$success = $client->CallAPI(
'https://api.app.net/users/me',
'GET', array(), array('FailOnAccessError'=>true, 'RequestBody'=>true), $user);
/*
$params["text"] = "Nur ein Test";
$params["profile_ids"][] = "52b844df9db82271330000b8";
//$params["profile_ids"][] = "5280e86b5b3c91d77b0000dd";
//$params["profile_ids"][] = "52b844ed9db82271330000bc";
//$params["profile_ids"][] = "52b8463d9db822db340000e1";
$params["shorten"] = false;
$params["now"] = false;
print_r($params);
$success = $client->CallAPI(
'https://api.bufferapp.com/1/updates/create.json',
'POST', $params, array('FailOnAccessError'=>true, 'RequestContentType'=>'application/json'), $user);
*/
}
}
$success = $client->Finalize($success);
}
if($client->exit)
exit;
if($success)
{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>App.net OAuth client results</title>
</head>
<body>
<?php
echo '<h1>', HtmlSpecialChars($user->name),
' you have logged in successfully with App.net!</h1>';
echo '<pre>', HtmlSpecialChars(print_r($user, 1)), '</pre>';
?>
</body>
</html>
<?php
}
else
{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>OAuth client error</title>
</head>
<body>
<h1>OAuth client error</h1>
<pre>Error: <?php echo HtmlSpecialChars($client->error); ?></pre>
</body>
</html>
<?php
}
?>

2122
appnet/test/backup/http.php Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,272 @@
{
"version": "$Id: oauth_configuration.json,v 1.6 2014/04/12 10:24:01 mlemos Exp $",
"comments": [
"The servers entry should be an object with a list of object",
"entries, one for each server type. The server object entry name is",
"the name of the server type. Each server entry is an object with",
"some mandatory properties: oauth_version, dialog_url,",
"access_token_url and request_token_url (just for Oauth 1.0 and",
"1.0a). Check the OAuth client class for the complete list of server",
"properties."
],
"servers":
{
"37Signals":
{
"oauth_version": "2.0",
"dialog_url": "https://launchpad.37signals.com/authorization/new?type=web_server&client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&state={STATE}&scope={SCOPE}",
"access_token_url": "https://launchpad.37signals.com/authorization/token?type=web_server"
},
"Amazon":
{
"oauth_version": "2.0",
"dialog_url": "https://www.amazon.com/ap/oa?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&scope={SCOPE}&response_type=code&state={STATE}",
"access_token_url": "https://api.amazon.com/auth/o2/token"
},
"Bitbucket":
{
"oauth_version": "1.0a",
"request_token_url": "https://bitbucket.org/!api/1.0/oauth/request_token",
"dialog_url": "https://bitbucket.org/!api/1.0/oauth/authenticate",
"access_token_url": "https://bitbucket.org/!api/1.0/oauth/access_token",
"url_parameters": false
},
"Box":
{
"oauth_version": "2.0",
"dialog_url": "https://www.box.com/api/oauth2/authorize?response_type=code&client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&state={STATE}&scope={SCOPE}",
"offline_dialog_url": "https://www.box.com/api/oauth2/authorize?response_type=code&client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&state={STATE}&access_type=offline&approval_prompt=force",
"access_token_url": "https://www.box.com/api/oauth2/token"
},
"Buffer":
{
"oauth_version": "2.0",
"dialog_url": "https://bufferapp.com/oauth2/authorize?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&response_type=code&state={STATE}&scope={SCOPE}",
"access_token_url": "https://api.bufferapp.com/1/oauth2/token.json"
},
"Dailymotion":
{
"oauth_version": "2.0",
"dialog_url": "https://api.dailymotion.com/oauth/authorize?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&response_type=code&state={STATE}&scope={SCOPE}",
"access_token_url": "https://api.dailymotion.com/oauth/token"
},
"Discogs":
{
"oauth_version": "1.0a",
"request_token_url": "http://api.discogs.com/oauth/request_token",
"dialog_url": "http://www.discogs.com/oauth/authorize",
"access_token_url": "http://api.discogs.com/oauth/access_token"
},
"Disqus":
{
"oauth_version": "2.0",
"dialog_url": "https://disqus.com/api/oauth/2.0/authorize/?response_type=code&client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&scope={SCOPE}&state={STATE}",
"access_token_url": "https://disqus.com/api/oauth/2.0/access_token/"
},
"Dropbox":
{
"oauth_version": "1.0",
"request_token_url": "https://api.dropbox.com/1/oauth/request_token",
"dialog_url": "https://www.dropbox.com/1/oauth/authorize",
"access_token_url": "https://api.dropbox.com/1/oauth/access_token",
"authorization_header": false
},
"Dropbox2":
{
"oauth_version": "2.0",
"dialog_url": "https://www.dropbox.com/1/oauth2/authorize?response_type=code&client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&scope={SCOPE}&state={STATE}",
"access_token_url": "https://www.dropbox.com/1/oauth2/token"
},
"Etsy":
{
"oauth_version": "1.0a",
"request_token_url": "https://openapi.etsy.com/v2/oauth/request_token?scope={SCOPE}",
"dialog_url": "automatic",
"access_token_url": "https://openapi.etsy.com/v2/oauth/access_token"
},
"Eventful":
{
"oauth_version": "1.0a",
"request_token_url": "http://eventful.com/oauth/request_token",
"dialog_url": "http://eventful.com/oauth/authorize",
"access_token_url": "http://eventful.com/oauth/access_token",
"authorization_header": false,
"url_parameters": true,
"token_request_method": "POST"
},
"Evernote":
{
"oauth_version": "1.0a",
"request_token_url": "https://sandbox.evernote.com/oauth",
"dialog_url": "https://sandbox.evernote.com/OAuth.action",
"access_token_url": "https://sandbox.evernote.com/oauth",
"url_parameters": true,
"authorization_header": false
},
"Fitbit":
{
"oauth_version": "1.0a",
"request_token_url": "http://api.fitbit.com/oauth/request_token",
"dialog_url": "http://api.fitbit.com/oauth/authorize",
"access_token_url": "http://api.fitbit.com/oauth/access_token"
},
"Flickr":
{
"oauth_version": "1.0a",
"request_token_url": "http://www.flickr.com/services/oauth/request_token",
"dialog_url": "http://www.flickr.com/services/oauth/authorize?perms={SCOPE}",
"access_token_url": "http://www.flickr.com/services/oauth/access_token",
"authorization_header": false
},
"Foursquare":
{
"oauth_version": "2.0",
"dialog_url": "https://foursquare.com/oauth2/authorize?client_id={CLIENT_ID}&scope={SCOPE}&response_type=code&redirect_uri={REDIRECT_URI}&state={STATE}",
"access_token_url": "https://foursquare.com/oauth2/access_token",
"access_token_parameter": "oauth_token"
},
"Google1":
{
"oauth_version": "1.0a",
"dialog_url": "https://www.google.com/accounts/OAuthAuthorizeToken",
"access_token_url": "https://www.google.com/accounts/OAuthGetAccessToken",
"request_token_url": "https://www.google.com/accounts/OAuthGetRequestToken?scope={SCOPE}"
},
"Instagram":
{
"oauth_version": "2.0",
"dialog_url": "https://api.instagram.com/oauth/authorize/?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&scope={SCOPE}&response_type=code&state={STATE}",
"access_token_url": "https://api.instagram.com/oauth/access_token"
},
"Rdio":
{
"oauth_version": "1.0a",
"request_token_url": "http://api.rdio.com/oauth/request_token",
"dialog_url": "https://www.rdio.com/oauth/authorize",
"access_token_url": "http://api.rdio.com/oauth/access_token"
},
"Reddit":
{
"oauth_version": "2.0",
"dialog_url": "https://ssl.reddit.com/api/v1/authorize?response_type=code&client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&scope={SCOPE}&state={STATE}",
"offline_dialog_url": "https://ssl.reddit.com/api/v1/authorize?response_type=code&client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&scope={SCOPE}&state={STATE}&duration=permanent",
"access_token_url": "https://ssl.reddit.com/api/v1/access_token",
"access_token_authentication": "basic"
},
"RightSignature":
{
"oauth_version": "1.0a",
"request_token_url": "https://rightsignature.com/oauth/request_token",
"dialog_url": "https://rightsignature.com/oauth/authorize",
"access_token_url": "https://rightsignature.com/oauth/access_token",
"authorization_header": false
},
"Salesforce":
{
"oauth_version": "2.0",
"dialog_url": "https://login.salesforce.com/services/oauth2/authorize?response_type=code&client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&scope={SCOPE}&state={STATE}",
"access_token_url": "https://login.salesforce.com/services/oauth2/token",
"default_access_token_type": "Bearer",
"store_access_token_response": true
},
"Scoop.it":
{
"oauth_version": "1.0a",
"request_token_url": "https://www.scoop.it/oauth/request",
"dialog_url": "https://www.scoop.it/oauth/authorize",
"access_token_url": "https://www.scoop.it/oauth/access",
"authorization_header": false
},
"StockTwits":
{
"oauth_version": "2.0",
"dialog_url": "https://api.stocktwits.com/api/2/oauth/authorize?client_id={CLIENT_ID}&response_type=code&redirect_uri={REDIRECT_URI}&scope={SCOPE}&state={STATE}",
"access_token_url": "https://api.stocktwits.com/api/2/oauth/token"
},
"SurveyMonkey":
{
"oauth_version": "2.0",
"dialog_url": "https://api.surveymonkey.net/oauth/authorize?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&response_type=code&state={STATE}&api_key={API_KEY}&scope={SCOPE}",
"access_token_url": "https://api.surveymonkey.net/oauth/token?api_key={API_KEY}"
},
"Tumblr":
{
"oauth_version": "1.0a",
"request_token_url": "http://www.tumblr.com/oauth/request_token",
"dialog_url": "http://www.tumblr.com/oauth/authorize",
"access_token_url": "http://www.tumblr.com/oauth/access_token"
},
"Vimeo":
{
"oauth_version": "2.0",
"dialog_url": "https://api.vimeo.com/oauth/authorize?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&response_type=code&state={STATE}&scope={SCOPE}",
"access_token_url": "https://api.vimeo.com/oauth/access_token"
},
"VK":
{
"oauth_version": "2.0",
"dialog_url": "https://oauth.vk.com/authorize?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&scope={SCOPE}&state={STATE}",
"access_token_url": "https://oauth.vk.com/access_token"
},
"Withings":
{
"oauth_version": "1.0",
"request_token_url": "https://oauth.withings.com/account/request_token",
"dialog_url": "https://oauth.withings.com/account/authorize",
"access_token_url": "https://oauth.withings.com/account/access_token",
"authorization_header": false
},
"Wordpress":
{
"oauth_version": "2.0",
"dialog_url": "https://public-api.wordpress.com/oauth2/authorize?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&response_type=code&state={STATE}&scope={SCOPE}",
"access_token_url": "https://public-api.wordpress.com/oauth2/token"
},
"Xero":
{
"oauth_version": "1.0a",
"request_token_url": "https://api.xero.com/oauth/RequestToken",
"dialog_url": "https://api.xero.com/oauth/Authorize",
"access_token_url": "https://api.xero.com/oauth/AccessToken"
},
"XING":
{
"oauth_version": "1.0a",
"request_token_url": "https://api.xing.com/v1/request_token",
"dialog_url": "https://api.xing.com/v1/authorize",
"access_token_url": "https://api.xing.com/v1/access_token",
"authorization_header": false
}
}
}

BIN
appnet/test/master.zip Normal file

Binary file not shown.

29
appnet/test2.php Executable file
View File

@ -0,0 +1,29 @@
<?php
require_once("boot.php");
if(@is_null($a)) {
$a = new App;
}
@include(".htconfig.php");
require_once("dba.php");
dba::connect($db_host, $db_user, $db_pass, $db_data);
unset($db_host, $db_user, $db_pass, $db_data);
$a->set_baseurl(get_config('system','url'));
$items = q("select * from item where id=3602849");
$b = $items[0];
$b["body"] = "[vimeo]http://vimeo.com/91121293[/vimeo]";
$b["body"] = "[share author='KueltuertageAugsburg' profile='https://twitter.com/KueltuertageA' avatar='https://pbs.twimg.com/profile_images/1575855154/logo_kueltuerverein_brief_normal.jpg' link='https://twitter.com/KueltuertageA/status/424977769080958976']Da will eine 'Bürgerinitiative Ausländerstopp' in #Augsburg zur [url=http://www.heise.de]Kommunalwahl[/url] antreten.[/share]";
require_once("include/plaintext.php");
require_once("addon/appnet/appnet.php");
$post = plaintext($a, $b, 256, false, 6);
$text = appnet_create_entities($a, $b, $post);
//print_r($post);
echo $text;

6284
appnet/users.txt Normal file

File diff suppressed because it is too large Load Diff

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"] = "保存设置";

7
convpath/README Executable 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

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>

14
editplain/editplain.css Executable 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 Executable 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"

View File

@ -0,0 +1,11 @@
<?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["Editplain settings updated."] = "Configurările Editplain au fost actualizate.";
$a->strings["Editplain Settings"] = "Configurări Editplain";
$a->strings["Disable richtext status editor"] = "Dezactivare editorul status de text îmbogățit";
$a->strings["Submit"] = "Trimite";

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:
# Stanislav N. <pztrn@pztrn.name>, 2017
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: 2017-04-08 17:10+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"
#: editplain.php:46
msgid "Editplain settings updated."
msgstr "Настройки Editplain обновлены"
#: editplain.php:76
msgid "Editplain Settings"
msgstr "Настройки Editplain"
#: editplain.php:78
msgid "Disable richtext status editor"
msgstr "Отключить richtext status editor"
#: editplain.php:84
msgid "Submit"
msgstr "Добавить"

View File

@ -0,0 +1,11 @@
<?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["Editplain settings updated."] = "Настройки Editplain обновлены";
$a->strings["Editplain Settings"] = "Настройки Editplain";
$a->strings["Disable richtext status editor"] = "Отключить richtext status editor";
$a->strings["Submit"] = "Добавить";

View File

@ -0,0 +1,3 @@
<?php
$a->strings["Submit"] = "Spara";

View File

@ -0,0 +1,6 @@
<?php
$a->strings["Editplain settings updated."] = "Editplain设置更新了";
$a->strings["Editplain Settings"] = "Editplain设置";
$a->strings["Disable richtext status editor"] = "使richtext现状编辑 不能用";
$a->strings["Submit"] = "提交";

29
extcron/extcron.php Executable file
View File

@ -0,0 +1,29 @@
<?php
/**
* Name: external cron
* Description: Use external server or service to run poller regularly
* Version: 1.0
* Author: Mike Macgirvin <https://macgirvin.com/profile/mike>
*
* Notes: External service needs to make a web request to http(s)://yoursite/extcron
* Status: Unsupported
*/
require_once "mod/worker.php";
function extcron_install() {}
function extcron_uninstall() {}
function extcron_module() {}
function extcron_init(&$a) {
worker_init($a);
killme();
// Deactivated
//proc_run('php','include/poller.php');
//killme();
}

View File

19
facebook/README.md Executable file
View File

@ -0,0 +1,19 @@
> # Note
> **Facebook Connector, Facebook Post Connector and Facebook Sync plugins are deprecated.**
> As of the moment you cannot bridge from or to Facebook with Friendica.
Installing the Friendica/Facebook connector
Detailed instructions how to use this plugin can be found at
the [How to: Friendica's Facebook Connector](https://github.com/friendica/friendica/wiki/How-to:-Friendica%E2%80%99s-Facebook-connector) page.
Vidoes and embeds will not be posted if there is no other content. Links
and images will be converted to a format suitable for the Facebook API and
long posts truncated - with a link to view the full post.
Facebook contacts will not be able to view private photos, as they are not able to
authenticate to your site to establish identity. We will address this
in a future release.
Info: please make sure that you understand all aspects due to Friendica's
default licence which is: [MIT License](https://github.com/friendica/friendica/blob/master/LICENSE)

13
facebook/facebook.css Executable file
View File

@ -0,0 +1,13 @@
#facebook-enable-wrapper {
margin-top: 20px;
}
#facebook-disable-wrapper {
margin-top: 20px;
}
#facebook-post-default-form input {
margin-top: 20px;
margin-right: 20px;
}

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