Merge pull request #1 from annando/removed-deprecated

Removed many deprecated addons
This commit is contained in:
Tobias Diekershoff 2017-10-19 09:36:32 +02:00 committed by GitHub
commit 24444adef3
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