From 42b7c9cd748ac6aa4fc98fba50168ad001c47f92 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Wed, 10 Aug 2016 12:31:54 +0200 Subject: [PATCH 01/60] DE translation --- view/de/messages.po | 1623 ++++++++++++++++++++++--------------------- view/de/strings.php | 321 ++++----- 2 files changed, 985 insertions(+), 959 deletions(-) diff --git a/view/de/messages.po b/view/de/messages.po index 6901a06c31..1e033f32a7 100644 --- a/view/de/messages.po +++ b/view/de/messages.po @@ -35,9 +35,9 @@ msgid "" msgstr "" "Project-Id-Version: friendica\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-08-04 09:06+0200\n" -"PO-Revision-Date: 2016-08-04 09:25+0000\n" -"Last-Translator: Andreas H.\n" +"POT-Creation-Date: 2016-08-09 18:10+0200\n" +"PO-Revision-Date: 2016-08-10 10:19+0000\n" +"Last-Translator: Tobias Diekershoff \n" "Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -238,7 +238,7 @@ msgstr[1] "%d gemeinsame Kontakte" #: include/contact_widgets.php:242 include/ForumManager.php:119 #: include/items.php:2122 mod/content.php:624 object/Item.php:432 -#: view/theme/vier/theme.php:260 boot.php:900 +#: view/theme/vier/theme.php:260 boot.php:903 msgid "show more" msgstr "mehr anzeigen" @@ -548,11 +548,6 @@ msgstr "Foren" msgid "External link to forum" msgstr "Externer Link zum Forum" -#: include/dba.php:56 include/dba_pdo.php:72 -#, php-format -msgid "Cannot locate DNS info for database server '%s'" -msgstr "Kann die DNS Informationen für den Datenbankserver '%s' nicht ermitteln." - #: include/event.php:16 include/bb2diaspora.php:148 mod/localtime.php:12 msgid "l F d, Y \\@ g:i A" msgstr "l, d. F Y\\, H:i" @@ -566,8 +561,8 @@ msgid "Finishes:" msgstr "Endet:" #: include/event.php:39 include/event.php:63 include/bb2diaspora.php:170 -#: include/identity.php:329 mod/directory.php:145 mod/notifications.php:208 -#: mod/contacts.php:628 mod/events.php:495 +#: include/identity.php:329 mod/directory.php:145 mod/contacts.php:628 +#: mod/events.php:495 mod/notifications.php:232 msgid "Location:" msgstr "Ort:" @@ -1024,6 +1019,11 @@ msgstr "$1 hat geschrieben:" msgid "Encrypted content" msgstr "Verschlüsselter Inhalt" +#: include/dba_pdo.php:72 include/dba.php:56 +#, php-format +msgid "Cannot locate DNS info for database server '%s'" +msgstr "Kann die DNS Informationen für den Datenbankserver '%s' nicht ermitteln." + #: include/auth.php:45 msgid "Logged out." msgstr "Abgemeldet." @@ -1174,11 +1174,11 @@ msgid "An error occurred creating your default profile. Please try again." msgstr "Bei der Erstellung des Standardprofils ist ein Fehler aufgetreten. Bitte versuche es noch einmal." #: include/user.php:345 include/user.php:352 include/user.php:359 -#: mod/photos.php:79 mod/photos.php:193 mod/photos.php:770 mod/photos.php:1233 -#: mod/photos.php:1256 mod/photos.php:1850 mod/profile_photo.php:74 -#: mod/profile_photo.php:81 mod/profile_photo.php:88 mod/profile_photo.php:210 -#: mod/profile_photo.php:302 mod/profile_photo.php:311 -#: view/theme/diabook/theme.php:500 +#: mod/profile_photo.php:74 mod/profile_photo.php:81 mod/profile_photo.php:88 +#: mod/profile_photo.php:210 mod/profile_photo.php:302 +#: mod/profile_photo.php:311 mod/photos.php:79 mod/photos.php:193 +#: mod/photos.php:770 mod/photos.php:1233 mod/photos.php:1256 +#: mod/photos.php:1849 view/theme/diabook/theme.php:500 msgid "Profile Photos" msgstr "Profilbilder" @@ -1441,7 +1441,7 @@ msgstr "Bereinige Benachrichtigungen" msgid "@name, !forum, #tags, content" msgstr "@name, !forum, #tags, content" -#: include/nav.php:75 view/theme/frio/theme.php:243 boot.php:1652 +#: include/nav.php:75 view/theme/frio/theme.php:243 boot.php:1655 msgid "Logout" msgstr "Abmelden" @@ -1510,7 +1510,7 @@ msgstr "Persönliche Notizen" msgid "Your personal notes" msgstr "Deine persönlichen Notizen" -#: include/nav.php:94 mod/bookmarklet.php:12 boot.php:1653 +#: include/nav.php:94 mod/bookmarklet.php:12 boot.php:1656 msgid "Login" msgstr "Anmeldung" @@ -1518,8 +1518,8 @@ msgstr "Anmeldung" msgid "Sign in" msgstr "Anmelden" -#: include/nav.php:107 include/nav.php:163 mod/notifications.php:545 -#: view/theme/diabook/theme.php:123 +#: include/nav.php:107 include/nav.php:163 +#: include/NotificationsManager.php:174 view/theme/diabook/theme.php:123 msgid "Home" msgstr "Pinnwand" @@ -1527,7 +1527,7 @@ msgstr "Pinnwand" msgid "Home Page" msgstr "Homepage" -#: include/nav.php:111 mod/register.php:280 boot.php:1628 +#: include/nav.php:111 mod/register.php:280 boot.php:1631 msgid "Register" msgstr "Registrieren" @@ -1608,7 +1608,7 @@ msgstr "Information" msgid "Information about this friendica instance" msgstr "Informationen zu dieser Friendica Instanz" -#: include/nav.php:160 mod/notifications.php:533 mod/admin.php:402 +#: include/nav.php:160 include/NotificationsManager.php:160 mod/admin.php:402 #: view/theme/frio/theme.php:253 msgid "Network" msgstr "Netzwerk" @@ -1625,7 +1625,7 @@ msgstr "Netzwerk zurücksetzen" msgid "Load Network page with no filters" msgstr "Netzwerk-Seite ohne Filter laden" -#: include/nav.php:168 mod/notifications.php:551 +#: include/nav.php:168 include/NotificationsManager.php:181 msgid "Introductions" msgstr "Kontaktanfragen" @@ -1633,7 +1633,7 @@ msgstr "Kontaktanfragen" msgid "Friend Requests" msgstr "Kontaktanfragen" -#: include/nav.php:171 mod/notifications.php:87 +#: include/nav.php:171 mod/notifications.php:96 msgid "Notifications" msgstr "Benachrichtigungen" @@ -1915,39 +1915,39 @@ msgstr "Nachricht/Beitrag" msgid "%1$s marked %2$s's %3$s as favorite" msgstr "%1$s hat %2$s\\s %3$s als Favorit markiert" -#: include/conversation.php:587 mod/content.php:372 mod/photos.php:1635 -#: mod/profiles.php:345 +#: include/conversation.php:587 mod/content.php:372 mod/profiles.php:345 +#: mod/photos.php:1634 msgid "Likes" msgstr "Likes" -#: include/conversation.php:587 mod/content.php:372 mod/photos.php:1635 -#: mod/profiles.php:349 +#: include/conversation.php:587 mod/content.php:372 mod/profiles.php:349 +#: mod/photos.php:1634 msgid "Dislikes" msgstr "Dislikes" #: include/conversation.php:588 include/conversation.php:1471 -#: mod/content.php:373 mod/photos.php:1636 +#: mod/content.php:373 mod/photos.php:1635 msgid "Attending" msgid_plural "Attending" msgstr[0] "Teilnehmend" msgstr[1] "Teilnehmend" -#: include/conversation.php:588 mod/content.php:373 mod/photos.php:1636 +#: include/conversation.php:588 mod/content.php:373 mod/photos.php:1635 msgid "Not attending" msgstr "Nicht teilnehmend" -#: include/conversation.php:588 mod/content.php:373 mod/photos.php:1636 +#: include/conversation.php:588 mod/content.php:373 mod/photos.php:1635 msgid "Might attend" msgstr "Eventuell teilnehmend" #: include/conversation.php:710 mod/content.php:453 mod/content.php:758 -#: mod/photos.php:1710 object/Item.php:133 +#: mod/photos.php:1709 object/Item.php:133 msgid "Select" msgstr "Auswählen" #: include/conversation.php:711 mod/group.php:171 mod/content.php:454 #: mod/content.php:759 mod/admin.php:1391 mod/contacts.php:806 -#: mod/contacts.php:1021 mod/photos.php:1711 mod/settings.php:726 +#: mod/contacts.php:1021 mod/settings.php:726 mod/photos.php:1710 #: object/Item.php:134 msgid "Delete" msgstr "Löschen" @@ -1979,7 +1979,7 @@ msgstr "Im Zusammenhang betrachten" #: include/conversation.php:793 include/conversation.php:1255 #: mod/editpost.php:124 mod/wallmessage.php:156 mod/message.php:356 #: mod/message.php:548 mod/content.php:515 mod/content.php:948 -#: mod/photos.php:1598 object/Item.php:406 +#: mod/photos.php:1597 object/Item.php:406 msgid "Please wait" msgstr "Bitte warten" @@ -2145,7 +2145,7 @@ msgstr "Wo hältst Du Dich jetzt gerade auf?" msgid "Delete item(s)?" msgstr "Einträge löschen?" -#: include/conversation.php:1236 mod/photos.php:1597 +#: include/conversation.php:1236 mod/photos.php:1596 msgid "Share" msgstr "Teilen" @@ -2228,17 +2228,17 @@ msgid "Public post" msgstr "Öffentlicher Beitrag" #: include/conversation.php:1270 mod/editpost.php:145 mod/content.php:737 -#: mod/events.php:505 mod/photos.php:1619 mod/photos.php:1667 -#: mod/photos.php:1755 object/Item.php:729 +#: mod/events.php:505 mod/photos.php:1618 mod/photos.php:1666 +#: mod/photos.php:1754 object/Item.php:729 msgid "Preview" msgstr "Vorschau" #: include/conversation.php:1274 include/items.php:1849 mod/fbrowser.php:101 #: mod/fbrowser.php:136 mod/tagrm.php:11 mod/tagrm.php:94 mod/follow.php:121 #: mod/suggest.php:32 mod/editpost.php:148 mod/message.php:220 -#: mod/dfrn_request.php:875 mod/contacts.php:445 mod/photos.php:248 -#: mod/photos.php:337 mod/settings.php:664 mod/settings.php:690 -#: mod/videos.php:131 +#: mod/dfrn_request.php:875 mod/contacts.php:445 mod/settings.php:664 +#: mod/settings.php:690 mod/videos.php:131 mod/photos.php:248 +#: mod/photos.php:337 msgid "Cancel" msgstr "Abbrechen" @@ -2356,7 +2356,7 @@ msgstr "Cc: E-Mail-Addressen" msgid "Example: bob@example.com, mary@example.com" msgstr "Z.B.: bob@example.com, mary@example.com" -#: include/acl_selectors.php:349 mod/photos.php:1178 mod/photos.php:1563 +#: include/acl_selectors.php:349 mod/photos.php:1178 mod/photos.php:1562 msgid "Permissions" msgstr "Berechtigungen" @@ -2495,13 +2495,13 @@ msgstr "Sichtbarkeit bearbeiten" #: mod/viewcontacts.php:105 mod/allfriends.php:79 mod/cal.php:44 #: mod/suggest.php:98 mod/hovercard.php:80 mod/common.php:123 #: mod/network.php:517 mod/contacts.php:51 mod/contacts.php:626 -#: mod/contacts.php:953 mod/dirfind.php:223 mod/photos.php:42 -#: mod/videos.php:37 +#: mod/contacts.php:953 mod/dirfind.php:223 mod/videos.php:37 +#: mod/photos.php:42 msgid "Forum" msgstr "Forum" #: include/identity.php:331 include/identity.php:614 mod/directory.php:147 -#: mod/notifications.php:214 +#: mod/notifications.php:238 msgid "Gender:" msgstr "Geschlecht:" @@ -2514,11 +2514,11 @@ msgid "Homepage:" msgstr "Homepage:" #: include/identity.php:338 include/identity.php:655 mod/directory.php:153 -#: mod/notifications.php:210 mod/contacts.php:630 +#: mod/contacts.php:630 mod/notifications.php:234 msgid "About:" msgstr "Über:" -#: include/identity.php:420 mod/notifications.php:222 mod/contacts.php:50 +#: include/identity.php:420 mod/contacts.php:50 mod/notifications.php:246 msgid "Network:" msgstr "Netzwerk:" @@ -2583,8 +2583,8 @@ msgstr "Sexuelle Vorlieben:" msgid "Hometown:" msgstr "Heimatort:" -#: include/identity.php:649 mod/follow.php:134 mod/notifications.php:212 -#: mod/contacts.php:632 +#: include/identity.php:649 mod/follow.php:134 mod/contacts.php:632 +#: mod/notifications.php:236 msgid "Tags:" msgstr "Tags:" @@ -2709,13 +2709,14 @@ msgstr "Ja" #: mod/wallmessage.php:79 mod/wallmessage.php:103 mod/api.php:26 #: mod/api.php:31 mod/ostatus_subscribe.php:9 mod/message.php:46 #: mod/message.php:182 mod/manage.php:96 mod/crepair.php:100 -#: mod/notifications.php:65 mod/contacts.php:350 mod/dfrn_confirm.php:57 -#: mod/dirfind.php:11 mod/events.php:190 mod/fsuggest.php:78 mod/item.php:185 -#: mod/item.php:197 mod/mood.php:114 mod/photos.php:172 mod/photos.php:1093 -#: mod/poke.php:150 mod/profile_photo.php:19 mod/profile_photo.php:175 -#: mod/profile_photo.php:186 mod/profile_photo.php:199 mod/profiles.php:166 -#: mod/profiles.php:598 mod/register.php:42 mod/regmod.php:110 -#: mod/settings.php:22 mod/settings.php:128 mod/settings.php:650 index.php:397 +#: mod/contacts.php:350 mod/dfrn_confirm.php:57 mod/dirfind.php:11 +#: mod/events.php:190 mod/fsuggest.php:78 mod/item.php:185 mod/item.php:197 +#: mod/mood.php:114 mod/poke.php:150 mod/profile_photo.php:19 +#: mod/profile_photo.php:175 mod/profile_photo.php:186 +#: mod/profile_photo.php:199 mod/profiles.php:166 mod/profiles.php:598 +#: mod/register.php:42 mod/regmod.php:110 mod/settings.php:22 +#: mod/settings.php:128 mod/settings.php:650 mod/notifications.php:71 +#: mod/photos.php:172 mod/photos.php:1093 index.php:397 msgid "Permission denied." msgstr "Zugriff verweigert." @@ -3008,6 +3009,67 @@ msgstr[1] "%d Kontakte nicht importiert" msgid "Done. You can now login with your username and password" msgstr "Erledigt. Du kannst Dich jetzt mit Deinem Nutzernamen und Passwort anmelden" +#: include/NotificationsManager.php:153 +msgid "System" +msgstr "System" + +#: include/NotificationsManager.php:167 mod/network.php:844 +#: mod/profiles.php:696 +msgid "Personal" +msgstr "Persönlich" + +#: include/NotificationsManager.php:234 include/NotificationsManager.php:245 +#, php-format +msgid "%s commented on %s's post" +msgstr "%s hat %ss Beitrag kommentiert" + +#: include/NotificationsManager.php:244 +#, php-format +msgid "%s created a new post" +msgstr "%s hat einen neuen Beitrag erstellt" + +#: include/NotificationsManager.php:258 +#, php-format +msgid "%s liked %s's post" +msgstr "%s mag %ss Beitrag" + +#: include/NotificationsManager.php:269 +#, php-format +msgid "%s disliked %s's post" +msgstr "%s mag %ss Beitrag nicht" + +#: include/NotificationsManager.php:280 +#, php-format +msgid "%s is attending %s's event" +msgstr "%s nimmt an %s's Event teil" + +#: include/NotificationsManager.php:291 +#, php-format +msgid "%s is not attending %s's event" +msgstr "%s nimmt nicht an %s's Event teil" + +#: include/NotificationsManager.php:302 +#, php-format +msgid "%s may attend %s's event" +msgstr "%s nimmt eventuell an %s's Event teil" + +#: include/NotificationsManager.php:317 +#, php-format +msgid "%s is now friends with %s" +msgstr "%s ist jetzt mit %s befreundet" + +#: include/NotificationsManager.php:750 +msgid "Friend Suggestion" +msgstr "Kontaktvorschlag" + +#: include/NotificationsManager.php:783 +msgid "Friend/Connect Request" +msgstr "Kontakt-/Freundschaftsanfrage" + +#: include/NotificationsManager.php:783 +msgid "New Follower" +msgstr "Neuer Bewunderer" + #: mod/oexchange.php:25 msgid "Post successful." msgstr "Beitrag erfolgreich veröffentlicht." @@ -3027,11 +3089,11 @@ msgstr "Zugriff verweigert." msgid "Welcome to %s" msgstr "Willkommen zu %s" -#: mod/notify.php:60 mod/notifications.php:338 +#: mod/notify.php:60 msgid "No more system notifications." msgstr "Keine weiteren Systembenachrichtigungen." -#: mod/notify.php:64 mod/notifications.php:318 +#: mod/notify.php:64 mod/notifications.php:111 msgid "System Notifications" msgstr "Systembenachrichtigungen" @@ -3041,7 +3103,7 @@ msgstr "Begriff entfernen" #: mod/search.php:93 mod/search.php:99 mod/directory.php:37 #: mod/viewcontacts.php:35 mod/display.php:199 mod/community.php:22 -#: mod/dfrn_request.php:790 mod/photos.php:964 mod/videos.php:197 +#: mod/dfrn_request.php:790 mod/videos.php:197 mod/photos.php:964 msgid "Public access denied." msgstr "Öffentlicher Zugriff verweigert." @@ -3159,7 +3221,7 @@ msgid "" "Password reset failed." msgstr "Anfrage konnte nicht verifiziert werden. (Eventuell hast Du bereits eine ähnliche Anfrage gestellt.) Zurücksetzen des Passworts gescheitert." -#: mod/lostpass.php:109 boot.php:1667 +#: mod/lostpass.php:109 boot.php:1670 msgid "Password Reset" msgstr "Passwort zurücksetzen" @@ -3225,7 +3287,7 @@ msgid "" "your email for further instructions." msgstr "Gib Deine E-Mail-Adresse an und fordere ein neues Passwort an. Es werden Dir dann weitere Informationen per Mail zugesendet." -#: mod/lostpass.php:161 boot.php:1655 +#: mod/lostpass.php:161 boot.php:1658 msgid "Nickname or Email: " msgstr "Spitzname oder E-Mail:" @@ -3256,16 +3318,16 @@ msgstr "Seite nicht gefunden." msgid "Invalid request." msgstr "Ungültige Anfrage" -#: mod/wall_upload.php:151 mod/photos.php:806 mod/profile_photo.php:150 +#: mod/wall_upload.php:151 mod/profile_photo.php:150 mod/photos.php:806 #, php-format msgid "Image exceeds size limit of %s" msgstr "Bildgröße überschreitet das Limit von %s" -#: mod/wall_upload.php:188 mod/photos.php:846 mod/profile_photo.php:159 +#: mod/wall_upload.php:188 mod/profile_photo.php:159 mod/photos.php:846 msgid "Unable to process image." msgstr "Konnte das Bild nicht bearbeiten." -#: mod/wall_upload.php:221 mod/photos.php:873 mod/profile_photo.php:307 +#: mod/wall_upload.php:221 mod/profile_photo.php:307 mod/photos.php:873 msgid "Image upload failed." msgstr "Hochladen des Bildes gescheitert." @@ -3500,24 +3562,23 @@ msgid "" "important, please visit http://friendica.com" msgstr "Für weitere Informationen über das Friendica Projekt und warum wir es für ein wichtiges Projekt halten, besuche bitte http://friendica.com" -#: mod/invite.php:140 mod/install.php:272 mod/install.php:312 -#: mod/localtime.php:45 mod/message.php:357 mod/message.php:547 -#: mod/manage.php:143 mod/crepair.php:154 mod/content.php:728 -#: mod/contacts.php:577 mod/events.php:507 mod/fsuggest.php:107 -#: mod/mood.php:137 mod/photos.php:1125 mod/photos.php:1249 -#: mod/photos.php:1567 mod/photos.php:1618 mod/photos.php:1666 -#: mod/photos.php:1754 mod/poke.php:199 mod/profiles.php:681 -#: object/Item.php:720 view/theme/frio/config.php:59 -#: view/theme/cleanzero/config.php:80 view/theme/quattro/config.php:64 -#: view/theme/dispy/config.php:70 view/theme/vier/config.php:107 -#: view/theme/diabook/theme.php:633 view/theme/diabook/config.php:148 -#: view/theme/duepuntozero/config.php:59 +#: mod/invite.php:140 mod/localtime.php:45 mod/message.php:357 +#: mod/message.php:547 mod/manage.php:143 mod/crepair.php:154 +#: mod/content.php:728 mod/contacts.php:577 mod/events.php:507 +#: mod/fsuggest.php:107 mod/mood.php:137 mod/poke.php:199 mod/profiles.php:681 +#: mod/install.php:272 mod/install.php:312 mod/photos.php:1125 +#: mod/photos.php:1249 mod/photos.php:1566 mod/photos.php:1617 +#: mod/photos.php:1665 mod/photos.php:1753 object/Item.php:720 +#: view/theme/frio/config.php:59 view/theme/cleanzero/config.php:80 +#: view/theme/quattro/config.php:64 view/theme/dispy/config.php:70 +#: view/theme/vier/config.php:107 view/theme/diabook/theme.php:633 +#: view/theme/diabook/config.php:148 view/theme/duepuntozero/config.php:59 msgid "Submit" msgstr "Senden" #: mod/fbrowser.php:41 mod/fbrowser.php:62 mod/photos.php:63 #: mod/photos.php:193 mod/photos.php:1107 mod/photos.php:1233 -#: mod/photos.php:1256 mod/photos.php:1826 mod/photos.php:1838 +#: mod/photos.php:1256 mod/photos.php:1825 mod/photos.php:1837 #: view/theme/diabook/theme.php:499 msgid "Contact Photos" msgstr "Kontaktbilder" @@ -3619,7 +3680,7 @@ msgstr "Ansehen" msgid "Previous" msgstr "Vorherige" -#: mod/cal.php:281 mod/install.php:231 mod/events.php:383 +#: mod/cal.php:281 mod/events.php:383 mod/install.php:231 msgid "Next" msgstr "Nächste" @@ -3701,351 +3762,6 @@ msgstr "Friendica ist ein Gemeinschaftsprojekt, das nicht ohne die Hilfe vieler msgid "- select -" msgstr "- auswählen -" -#: mod/install.php:139 -msgid "Friendica Communications Server - Setup" -msgstr "Friendica-Server für soziale Netzwerke – Setup" - -#: mod/install.php:145 -msgid "Could not connect to database." -msgstr "Verbindung zur Datenbank gescheitert." - -#: mod/install.php:149 -msgid "Could not create table." -msgstr "Tabelle konnte nicht angelegt werden." - -#: mod/install.php:155 -msgid "Your Friendica site database has been installed." -msgstr "Die Datenbank Deiner Friendicaseite wurde installiert." - -#: mod/install.php:160 -msgid "" -"You may need to import the file \"database.sql\" manually using phpmyadmin " -"or mysql." -msgstr "Möglicherweise musst Du die Datei \"database.sql\" manuell mit phpmyadmin oder mysql importieren." - -#: mod/install.php:161 mod/install.php:230 mod/install.php:597 -msgid "Please see the file \"INSTALL.txt\"." -msgstr "Lies bitte die \"INSTALL.txt\"." - -#: mod/install.php:173 -msgid "Database already in use." -msgstr "Die Datenbank wird bereits verwendet." - -#: mod/install.php:227 -msgid "System check" -msgstr "Systemtest" - -#: mod/install.php:232 -msgid "Check again" -msgstr "Noch einmal testen" - -#: mod/install.php:251 -msgid "Database connection" -msgstr "Datenbankverbindung" - -#: mod/install.php:252 -msgid "" -"In order to install Friendica we need to know how to connect to your " -"database." -msgstr "Um Friendica installieren zu können, müssen wir wissen, wie wir mit Deiner Datenbank Kontakt aufnehmen können." - -#: mod/install.php:253 -msgid "" -"Please contact your hosting provider or site administrator if you have " -"questions about these settings." -msgstr "Bitte kontaktiere den Hosting Provider oder den Administrator der Seite, falls Du Fragen zu diesen Einstellungen haben solltest." - -#: mod/install.php:254 -msgid "" -"The database you specify below should already exist. If it does not, please " -"create it before continuing." -msgstr "Die Datenbank, die Du unten angibst, sollte bereits existieren. Ist dies noch nicht der Fall, erzeuge sie bitte bevor Du mit der Installation fortfährst." - -#: mod/install.php:258 -msgid "Database Server Name" -msgstr "Datenbank-Server" - -#: mod/install.php:259 -msgid "Database Login Name" -msgstr "Datenbank-Nutzer" - -#: mod/install.php:260 -msgid "Database Login Password" -msgstr "Datenbank-Passwort" - -#: mod/install.php:261 -msgid "Database Name" -msgstr "Datenbank-Name" - -#: mod/install.php:262 mod/install.php:303 -msgid "Site administrator email address" -msgstr "E-Mail-Adresse des Administrators" - -#: mod/install.php:262 mod/install.php:303 -msgid "" -"Your account email address must match this in order to use the web admin " -"panel." -msgstr "Die E-Mail-Adresse, die in Deinem Friendica-Account eingetragen ist, muss mit dieser Adresse übereinstimmen, damit Du das Admin-Panel benutzen kannst." - -#: mod/install.php:266 mod/install.php:306 -msgid "Please select a default timezone for your website" -msgstr "Bitte wähle die Standardzeitzone Deiner Webseite" - -#: mod/install.php:293 -msgid "Site settings" -msgstr "Server-Einstellungen" - -#: mod/install.php:307 -msgid "System Language:" -msgstr "Systemsprache:" - -#: mod/install.php:307 -msgid "" -"Set the default language for your Friendica installation interface and to " -"send emails." -msgstr "Wähle die Standardsprache für deine Friendica-Installations-Oberfläche und den E-Mail-Versand" - -#: mod/install.php:347 -msgid "Could not find a command line version of PHP in the web server PATH." -msgstr "Konnte keine Kommandozeilenversion von PHP im PATH des Servers finden." - -#: mod/install.php:348 -msgid "" -"If you don't have a command line version of PHP installed on server, you " -"will not be able to run background polling via cron. See 'Setup the poller'" -msgstr "Wenn Du keine Kommandozeilen-Version von PHP auf Deinem Server installiert hast, kannst Du keine Hintergrundprozesse via cron starten. Siehe 'Setup the poller'" - -#: mod/install.php:352 -msgid "PHP executable path" -msgstr "Pfad zu PHP" - -#: mod/install.php:352 -msgid "" -"Enter full path to php executable. You can leave this blank to continue the " -"installation." -msgstr "Gib den kompletten Pfad zur ausführbaren Datei von PHP an. Du kannst dieses Feld auch frei lassen und mit der Installation fortfahren." - -#: mod/install.php:357 -msgid "Command line PHP" -msgstr "Kommandozeilen-PHP" - -#: mod/install.php:366 -msgid "PHP executable is not the php cli binary (could be cgi-fgci version)" -msgstr "Die ausführbare Datei von PHP stimmt nicht mit der PHP cli Version überein (es könnte sich um die cgi-fgci Version handeln)" - -#: mod/install.php:367 -msgid "Found PHP version: " -msgstr "Gefundene PHP Version:" - -#: mod/install.php:369 -msgid "PHP cli binary" -msgstr "PHP CLI Binary" - -#: mod/install.php:380 -msgid "" -"The command line version of PHP on your system does not have " -"\"register_argc_argv\" enabled." -msgstr "Die Kommandozeilenversion von PHP auf Deinem System hat \"register_argc_argv\" nicht aktiviert." - -#: mod/install.php:381 -msgid "This is required for message delivery to work." -msgstr "Dies wird für die Auslieferung von Nachrichten benötigt." - -#: mod/install.php:383 -msgid "PHP register_argc_argv" -msgstr "PHP register_argc_argv" - -#: mod/install.php:404 -msgid "" -"Error: the \"openssl_pkey_new\" function on this system is not able to " -"generate encryption keys" -msgstr "Fehler: Die Funktion \"openssl_pkey_new\" auf diesem System ist nicht in der Lage, Verschlüsselungsschlüssel zu erzeugen" - -#: mod/install.php:405 -msgid "" -"If running under Windows, please see " -"\"http://www.php.net/manual/en/openssl.installation.php\"." -msgstr "Wenn der Server unter Windows läuft, schau Dir bitte \"http://www.php.net/manual/en/openssl.installation.php\" an." - -#: mod/install.php:407 -msgid "Generate encryption keys" -msgstr "Schlüssel erzeugen" - -#: mod/install.php:414 -msgid "libCurl PHP module" -msgstr "PHP: libCurl-Modul" - -#: mod/install.php:415 -msgid "GD graphics PHP module" -msgstr "PHP: GD-Grafikmodul" - -#: mod/install.php:416 -msgid "OpenSSL PHP module" -msgstr "PHP: OpenSSL-Modul" - -#: mod/install.php:417 -msgid "mysqli PHP module" -msgstr "PHP: mysqli-Modul" - -#: mod/install.php:418 -msgid "mb_string PHP module" -msgstr "PHP: mb_string-Modul" - -#: mod/install.php:419 -msgid "mcrypt PHP module" -msgstr "PHP mcrypt Modul" - -#: mod/install.php:420 -msgid "XML PHP module" -msgstr "XML PHP Modul" - -#: mod/install.php:424 mod/install.php:426 -msgid "Apache mod_rewrite module" -msgstr "Apache mod_rewrite module" - -#: mod/install.php:424 -msgid "" -"Error: Apache webserver mod-rewrite module is required but not installed." -msgstr "Fehler: Das Apache-Modul mod-rewrite wird benötigt, es ist allerdings nicht installiert." - -#: mod/install.php:432 -msgid "Error: libCURL PHP module required but not installed." -msgstr "Fehler: Das libCURL PHP Modul wird benötigt, ist aber nicht installiert." - -#: mod/install.php:436 -msgid "" -"Error: GD graphics PHP module with JPEG support required but not installed." -msgstr "Fehler: Das GD-Graphikmodul für PHP mit JPEG-Unterstützung ist nicht installiert." - -#: mod/install.php:440 -msgid "Error: openssl PHP module required but not installed." -msgstr "Fehler: Das openssl-Modul von PHP ist nicht installiert." - -#: mod/install.php:444 -msgid "Error: mysqli PHP module required but not installed." -msgstr "Fehler: Das mysqli-Modul von PHP ist nicht installiert." - -#: mod/install.php:448 -msgid "Error: mb_string PHP module required but not installed." -msgstr "Fehler: mb_string PHP Module wird benötigt ist aber nicht installiert." - -#: mod/install.php:452 -msgid "Error: mcrypt PHP module required but not installed." -msgstr "Fehler: Das mcrypt Modul von PHP ist nicht installiert" - -#: mod/install.php:461 -msgid "" -"If you are using php_cli, please make sure that mcrypt module is enabled in " -"its config file" -msgstr "Wenn du das Modul \"php_cli\" benutzt dann versichere dich, daß das mcrypt Modul in seiner Konfigurationsdatei aktiviert ist. " - -#: mod/install.php:464 -msgid "" -"Function mcrypt_create_iv() is not defined. This is needed to enable RINO2 " -"encryption layer." -msgstr "Die Funktion mcrypt_create_iv() ist nicht festgelegt. Dies ist notwendig um den RINO2-Encryption-Layer zu aktivieren." - -#: mod/install.php:466 -msgid "mcrypt_create_iv() function" -msgstr "mcrypt_create_iv() function" - -#: mod/install.php:474 -msgid "Error, XML PHP module required but not installed." -msgstr "Fehler: XML PHP Modul erforderlich aber nicht installiert." - -#: mod/install.php:489 -msgid "" -"The web installer needs to be able to create a file called \".htconfig.php\"" -" in the top folder of your web server and it is unable to do so." -msgstr "Der Installationswizard muss in der Lage sein, eine Datei im Stammverzeichnis Deines Webservers anzulegen, ist allerdings derzeit nicht in der Lage, dies zu tun." - -#: mod/install.php:490 -msgid "" -"This is most often a permission setting, as the web server may not be able " -"to write files in your folder - even if you can." -msgstr "In den meisten Fällen ist dies ein Problem mit den Schreibrechten. Der Webserver könnte keine Schreiberlaubnis haben, selbst wenn Du sie hast." - -#: mod/install.php:491 -msgid "" -"At the end of this procedure, we will give you a text to save in a file " -"named .htconfig.php in your Friendica top folder." -msgstr "Nachdem Du alles ausgefüllt hast, erhältst Du einen Text, den Du in eine Datei namens .htconfig.php in Deinem Friendica-Wurzelverzeichnis kopieren musst." - -#: mod/install.php:492 -msgid "" -"You can alternatively skip this procedure and perform a manual installation." -" Please see the file \"INSTALL.txt\" for instructions." -msgstr "Alternativ kannst Du diesen Schritt aber auch überspringen und die Installation manuell durchführen. Eine Anleitung dazu (Englisch) findest Du in der Datei INSTALL.txt." - -#: mod/install.php:495 -msgid ".htconfig.php is writable" -msgstr "Schreibrechte auf .htconfig.php" - -#: mod/install.php:505 -msgid "" -"Friendica uses the Smarty3 template engine to render its web views. Smarty3 " -"compiles templates to PHP to speed up rendering." -msgstr "Friendica nutzt die Smarty3 Template Engine um die Webansichten zu rendern. Smarty3 kompiliert Templates zu PHP um das Rendern zu beschleunigen." - -#: mod/install.php:506 -msgid "" -"In order to store these compiled templates, the web server needs to have " -"write access to the directory view/smarty3/ under the Friendica top level " -"folder." -msgstr "Um diese kompilierten Templates zu speichern benötigt der Webserver Schreibrechte zum Verzeichnis view/smarty3/ im obersten Ordner von Friendica." - -#: mod/install.php:507 -msgid "" -"Please ensure that the user that your web server runs as (e.g. www-data) has" -" write access to this folder." -msgstr "Bitte stelle sicher, dass der Nutzer unter dem der Webserver läuft (z.B. www-data) Schreibrechte zu diesem Verzeichnis hat." - -#: mod/install.php:508 -msgid "" -"Note: as a security measure, you should give the web server write access to " -"view/smarty3/ only--not the template files (.tpl) that it contains." -msgstr "Hinweis: aus Sicherheitsgründen solltest Du dem Webserver nur Schreibrechte für view/smarty3/ geben -- Nicht den Templatedateien (.tpl) die sie enthalten." - -#: mod/install.php:511 -msgid "view/smarty3 is writable" -msgstr "view/smarty3 ist schreibbar" - -#: mod/install.php:527 -msgid "" -"Url rewrite in .htaccess is not working. Check your server configuration." -msgstr "Umschreiben der URLs in der .htaccess funktioniert nicht. Überprüfe die Konfiguration des Servers." - -#: mod/install.php:529 -msgid "Url rewrite is working" -msgstr "URL rewrite funktioniert" - -#: mod/install.php:546 -msgid "ImageMagick PHP extension is installed" -msgstr "ImageMagick PHP Erweiterung ist installiert" - -#: mod/install.php:548 -msgid "ImageMagick supports GIF" -msgstr "ImageMagick unterstützt GIF" - -#: mod/install.php:556 -msgid "" -"The database configuration file \".htconfig.php\" could not be written. " -"Please use the enclosed text to create a configuration file in your web " -"server root." -msgstr "Die Konfigurationsdatei \".htconfig.php\" konnte nicht angelegt werden. Bitte verwende den angefügten Text, um die Datei im Stammverzeichnis Deiner Friendica-Installation zu erzeugen." - -#: mod/install.php:595 -msgid "

What next

" -msgstr "

Wie geht es weiter?

" - -#: mod/install.php:596 -msgid "" -"IMPORTANT: You will need to [manually] setup a scheduled task for the " -"poller." -msgstr "WICHTIG: Du musst [manuell] einen Cronjob (o.ä.) für den Poller einrichten." - #: mod/subthread.php:103 #, php-format msgid "%1$s is following %2$s's %3$s" @@ -4106,7 +3822,7 @@ msgstr "Eine persönliche Notiz beifügen:" msgid "Your Identity Address:" msgstr "Adresse Deines Profils:" -#: mod/follow.php:126 mod/notifications.php:219 mod/contacts.php:624 +#: mod/follow.php:126 mod/contacts.php:624 mod/notifications.php:243 msgid "Profile URL" msgstr "Profil URL" @@ -4396,10 +4112,6 @@ msgstr "Neueste Beiträge" msgid "Sort by Post Date" msgstr "Nach Beitragsdatum sortieren" -#: mod/network.php:844 mod/notifications.php:539 mod/profiles.php:696 -msgid "Personal" -msgstr "Persönlich" - #: mod/network.php:847 msgid "Posts that mention or involve you" msgstr "Beiträge, in denen es um Dich geht" @@ -5004,11 +4716,11 @@ msgid_plural "%d comments" msgstr[0] "%d Kommentar" msgstr[1] "%d Kommentare" -#: mod/content.php:638 mod/photos.php:1406 object/Item.php:117 +#: mod/content.php:638 mod/photos.php:1405 object/Item.php:117 msgid "Private Message" msgstr "Private Nachricht" -#: mod/content.php:702 mod/photos.php:1595 object/Item.php:263 +#: mod/content.php:702 mod/photos.php:1594 object/Item.php:263 msgid "I like this (toggle)" msgstr "Ich mag das (toggle)" @@ -5016,7 +4728,7 @@ msgstr "Ich mag das (toggle)" msgid "like" msgstr "mag ich" -#: mod/content.php:703 mod/photos.php:1596 object/Item.php:264 +#: mod/content.php:703 mod/photos.php:1595 object/Item.php:264 msgid "I don't like this (toggle)" msgstr "Ich mag das nicht (toggle)" @@ -5032,14 +4744,14 @@ msgstr "Weitersagen" msgid "share" msgstr "Teilen" -#: mod/content.php:725 mod/photos.php:1615 mod/photos.php:1663 -#: mod/photos.php:1751 object/Item.php:717 +#: mod/content.php:725 mod/photos.php:1614 mod/photos.php:1662 +#: mod/photos.php:1750 object/Item.php:717 msgid "This is you" msgstr "Das bist Du" -#: mod/content.php:727 mod/content.php:945 mod/photos.php:1617 -#: mod/photos.php:1665 mod/photos.php:1753 object/Item.php:403 -#: object/Item.php:719 boot.php:899 +#: mod/content.php:727 mod/content.php:945 mod/photos.php:1616 +#: mod/photos.php:1664 mod/photos.php:1752 object/Item.php:403 +#: object/Item.php:719 boot.php:902 msgid "Comment" msgstr "Kommentar" @@ -5140,165 +4852,6 @@ msgstr "Wall-to-Wall" msgid "via Wall-To-Wall:" msgstr "via Wall-To-Wall:" -#: mod/notifications.php:29 -msgid "Invalid request identifier." -msgstr "Invalid request identifier." - -#: mod/notifications.php:38 mod/notifications.php:143 -#: mod/notifications.php:228 -msgid "Discard" -msgstr "Verwerfen" - -#: mod/notifications.php:54 mod/notifications.php:142 -#: mod/notifications.php:227 mod/contacts.php:606 mod/contacts.php:804 -#: mod/contacts.php:1005 -msgid "Ignore" -msgstr "Ignorieren" - -#: mod/notifications.php:91 -msgid "Show Ignored Requests" -msgstr "Zeige ignorierte Anfragen" - -#: mod/notifications.php:91 -msgid "Hide Ignored Requests" -msgstr "Verberge ignorierte Anfragen" - -#: mod/notifications.php:127 mod/notifications.php:198 -msgid "Notification type: " -msgstr "Benachrichtigungstyp: " - -#: mod/notifications.php:128 -msgid "Friend Suggestion" -msgstr "Kontaktvorschlag" - -#: mod/notifications.php:130 -#, php-format -msgid "suggested by %s" -msgstr "vorgeschlagen von %s" - -#: mod/notifications.php:135 mod/notifications.php:215 mod/contacts.php:613 -msgid "Hide this contact from others" -msgstr "Verbirg diesen Kontakt vor andere" - -#: mod/notifications.php:136 mod/notifications.php:216 -msgid "Post a new friend activity" -msgstr "Neue-Kontakt Nachricht senden" - -#: mod/notifications.php:136 mod/notifications.php:216 -msgid "if applicable" -msgstr "falls anwendbar" - -#: mod/notifications.php:139 mod/notifications.php:225 mod/admin.php:1389 -msgid "Approve" -msgstr "Genehmigen" - -#: mod/notifications.php:159 -msgid "Claims to be known to you: " -msgstr "Behauptet Dich zu kennen: " - -#: mod/notifications.php:160 -msgid "yes" -msgstr "ja" - -#: mod/notifications.php:160 -msgid "no" -msgstr "nein" - -#: mod/notifications.php:161 -msgid "" -"Shall your connection be bidirectional or not? \"Friend\" implies that you " -"allow to read and you subscribe to their posts. \"Fan/Admirer\" means that " -"you allow to read but you do not want to read theirs. Approve as: " -msgstr "Soll Deine Beziehung beidseitig sein oder nicht? \"Kontakt\" bedeutet, ihr könnt gegenseitig die Beiträge des Anderen lesen dürft. \"Fan/Verehrer\", dass du das lesen deiner Beiträge erlaubst aber nicht die Beiträge der anderen Seite lesen möchtest. Genehmigen als:" - -#: mod/notifications.php:164 -msgid "" -"Shall your connection be bidirectional or not? \"Friend\" implies that you " -"allow to read and you subscribe to their posts. \"Sharer\" means that you " -"allow to read but you do not want to read theirs. Approve as: " -msgstr "Soll Deine Beziehung beidseitig sein oder nicht? \"Freund\" bedeutet, ihr gegenseitig die Beiträge des Anderen lesen dürft. \"Teilenden\", das du das lesen deiner Beiträge erlaubst aber nicht die Beiträge der anderen Seite lesen möchtest. Genehmigen als:" - -#: mod/notifications.php:172 -msgid "Friend" -msgstr "Kontakt" - -#: mod/notifications.php:173 -msgid "Sharer" -msgstr "Teilenden" - -#: mod/notifications.php:173 -msgid "Fan/Admirer" -msgstr "Fan/Verehrer" - -#: mod/notifications.php:199 -msgid "Friend/Connect Request" -msgstr "Kontakt-/Freundschaftsanfrage" - -#: mod/notifications.php:199 -msgid "New Follower" -msgstr "Neuer Bewunderer" - -#: mod/notifications.php:234 -msgid "No introductions." -msgstr "Keine Kontaktanfragen." - -#: mod/notifications.php:238 -msgid "Network Notifications" -msgstr "Netzwerk Benachrichtigungen" - -#: mod/notifications.php:265 mod/notifications.php:382 -#: mod/notifications.php:461 -#, php-format -msgid "%s liked %s's post" -msgstr "%s mag %ss Beitrag" - -#: mod/notifications.php:275 mod/notifications.php:392 -#: mod/notifications.php:471 -#, php-format -msgid "%s disliked %s's post" -msgstr "%s mag %ss Beitrag nicht" - -#: mod/notifications.php:290 mod/notifications.php:407 -#: mod/notifications.php:486 -#, php-format -msgid "%s is now friends with %s" -msgstr "%s ist jetzt mit %s befreundet" - -#: mod/notifications.php:297 mod/notifications.php:414 -#, php-format -msgid "%s created a new post" -msgstr "%s hat einen neuen Beitrag erstellt" - -#: mod/notifications.php:298 mod/notifications.php:415 -#: mod/notifications.php:496 -#, php-format -msgid "%s commented on %s's post" -msgstr "%s hat %ss Beitrag kommentiert" - -#: mod/notifications.php:313 -msgid "No more network notifications." -msgstr "Keine weiteren Netzwerk-Benachrichtigungen." - -#: mod/notifications.php:343 -msgid "Personal Notifications" -msgstr "Persönliche Benachrichtigungen" - -#: mod/notifications.php:430 -msgid "No more personal notifications." -msgstr "Keine weiteren persönlichen Benachrichtigungen" - -#: mod/notifications.php:435 -msgid "Home Notifications" -msgstr "Pinnwand Benachrichtigungen" - -#: mod/notifications.php:503 -msgid "No more home notifications." -msgstr "Keine weiteren Pinnwand-Benachrichtigungen" - -#: mod/notifications.php:527 -msgid "System" -msgstr "System" - #: mod/admin.php:92 msgid "Theme settings updated." msgstr "Themeneinstellungen aktualisiert." @@ -6488,6 +6041,10 @@ msgstr "Anfragedatum" msgid "No registrations." msgstr "Keine Neuanmeldungen." +#: mod/admin.php:1389 mod/notifications.php:176 mod/notifications.php:249 +msgid "Approve" +msgstr "Genehmigen" + #: mod/admin.php:1390 msgid "Deny" msgstr "Verwehren" @@ -6831,6 +6388,12 @@ msgstr "Jetzt aktualisieren" msgid "Unignore" msgstr "Ignorieren aufheben" +#: mod/contacts.php:606 mod/contacts.php:804 mod/contacts.php:1005 +#: mod/notifications.php:60 mod/notifications.php:179 +#: mod/notifications.php:251 +msgid "Ignore" +msgstr "Ignorieren" + #: mod/contacts.php:610 msgid "Currently blocked" msgstr "Derzeit geblockt" @@ -6843,6 +6406,10 @@ msgstr "Derzeit ignoriert" msgid "Currently archived" msgstr "Momentan archiviert" +#: mod/contacts.php:613 mod/notifications.php:172 mod/notifications.php:239 +msgid "Hide this contact from others" +msgstr "Verbirg diesen Kontakt vor andere" + #: mod/contacts.php:613 msgid "" "Replies/likes to your public posts may still be visible" @@ -7184,193 +6751,6 @@ msgstr "Stimmung" msgid "Set your current mood and tell your friends" msgstr "Wähle Deine aktuelle Stimmung und erzähle sie Deinen Kontakten" -#: mod/photos.php:101 mod/photos.php:1887 -msgid "Recent Photos" -msgstr "Neueste Fotos" - -#: mod/photos.php:104 mod/photos.php:1308 mod/photos.php:1889 -msgid "Upload New Photos" -msgstr "Neue Fotos hochladen" - -#: mod/photos.php:118 mod/settings.php:36 -msgid "everybody" -msgstr "jeder" - -#: mod/photos.php:182 -msgid "Contact information unavailable" -msgstr "Kontaktinformationen nicht verfügbar" - -#: mod/photos.php:203 -msgid "Album not found." -msgstr "Album nicht gefunden." - -#: mod/photos.php:233 mod/photos.php:245 mod/photos.php:1250 -msgid "Delete Album" -msgstr "Album löschen" - -#: mod/photos.php:243 -msgid "Do you really want to delete this photo album and all its photos?" -msgstr "Möchtest Du wirklich dieses Foto-Album und all seine Foto löschen?" - -#: mod/photos.php:323 mod/photos.php:334 mod/photos.php:1568 -msgid "Delete Photo" -msgstr "Foto löschen" - -#: mod/photos.php:332 -msgid "Do you really want to delete this photo?" -msgstr "Möchtest Du wirklich dieses Foto löschen?" - -#: mod/photos.php:707 -#, php-format -msgid "%1$s was tagged in %2$s by %3$s" -msgstr "%1$s wurde von %3$s in %2$s getaggt" - -#: mod/photos.php:707 -msgid "a photo" -msgstr "einem Foto" - -#: mod/photos.php:814 -msgid "Image file is empty." -msgstr "Bilddatei ist leer." - -#: mod/photos.php:974 -msgid "No photos selected" -msgstr "Keine Bilder ausgewählt" - -#: mod/photos.php:1075 mod/videos.php:308 -msgid "Access to this item is restricted." -msgstr "Zugriff zu diesem Eintrag wurde eingeschränkt." - -#: mod/photos.php:1135 -#, php-format -msgid "You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage." -msgstr "Du verwendest %1$.2f Mbyte von %2$.2f Mbyte des Foto-Speichers." - -#: mod/photos.php:1170 -msgid "Upload Photos" -msgstr "Bilder hochladen" - -#: mod/photos.php:1174 mod/photos.php:1245 -msgid "New album name: " -msgstr "Name des neuen Albums: " - -#: mod/photos.php:1175 -msgid "or existing album name: " -msgstr "oder existierender Albumname: " - -#: mod/photos.php:1176 -msgid "Do not show a status post for this upload" -msgstr "Keine Status-Mitteilung für diesen Beitrag anzeigen" - -#: mod/photos.php:1187 mod/photos.php:1572 mod/settings.php:1250 -msgid "Show to Groups" -msgstr "Zeige den Gruppen" - -#: mod/photos.php:1188 mod/photos.php:1573 mod/settings.php:1251 -msgid "Show to Contacts" -msgstr "Zeige den Kontakten" - -#: mod/photos.php:1189 -msgid "Private Photo" -msgstr "Privates Foto" - -#: mod/photos.php:1190 -msgid "Public Photo" -msgstr "Öffentliches Foto" - -#: mod/photos.php:1258 -msgid "Edit Album" -msgstr "Album bearbeiten" - -#: mod/photos.php:1264 -msgid "Show Newest First" -msgstr "Zeige neueste zuerst" - -#: mod/photos.php:1266 -msgid "Show Oldest First" -msgstr "Zeige älteste zuerst" - -#: mod/photos.php:1294 mod/photos.php:1872 -msgid "View Photo" -msgstr "Foto betrachten" - -#: mod/photos.php:1341 -msgid "Permission denied. Access to this item may be restricted." -msgstr "Zugriff verweigert. Zugriff zu diesem Eintrag könnte eingeschränkt sein." - -#: mod/photos.php:1343 -msgid "Photo not available" -msgstr "Foto nicht verfügbar" - -#: mod/photos.php:1399 -msgid "View photo" -msgstr "Fotos ansehen" - -#: mod/photos.php:1399 -msgid "Edit photo" -msgstr "Foto bearbeiten" - -#: mod/photos.php:1400 -msgid "Use as profile photo" -msgstr "Als Profilbild verwenden" - -#: mod/photos.php:1425 -msgid "View Full Size" -msgstr "Betrachte Originalgröße" - -#: mod/photos.php:1511 -msgid "Tags: " -msgstr "Tags: " - -#: mod/photos.php:1514 -msgid "[Remove any tag]" -msgstr "[Tag entfernen]" - -#: mod/photos.php:1554 -msgid "New album name" -msgstr "Name des neuen Albums" - -#: mod/photos.php:1555 -msgid "Caption" -msgstr "Bildunterschrift" - -#: mod/photos.php:1556 -msgid "Add a Tag" -msgstr "Tag hinzufügen" - -#: mod/photos.php:1556 -msgid "" -"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" -msgstr "Beispiel: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" - -#: mod/photos.php:1557 -msgid "Do not rotate" -msgstr "Nicht rotieren" - -#: mod/photos.php:1558 -msgid "Rotate CW (right)" -msgstr "Drehen US (rechts)" - -#: mod/photos.php:1559 -msgid "Rotate CCW (left)" -msgstr "Drehen EUS (links)" - -#: mod/photos.php:1574 -msgid "Private photo" -msgstr "Privates Foto" - -#: mod/photos.php:1575 -msgid "Public photo" -msgstr "Öffentliches Foto" - -#: mod/photos.php:1801 -msgid "Map" -msgstr "Karte" - -#: mod/photos.php:1878 mod/videos.php:390 -msgid "View Album" -msgstr "Album betrachten" - #: mod/poke.php:192 msgid "Poke/Prod" msgstr "Anstupsen" @@ -7836,6 +7216,10 @@ msgstr "Registrierung für %s wurde zurückgezogen" msgid "Please login." msgstr "Bitte melde Dich an." +#: mod/settings.php:36 mod/photos.php:118 +msgid "everybody" +msgstr "jeder" + #: mod/settings.php:60 msgid "Display" msgstr "Anzeige" @@ -8381,6 +7765,14 @@ msgstr "Standard-Zugriffsrechte für Beiträge" msgid "(click to open/close)" msgstr "(klicke zum öffnen/schließen)" +#: mod/settings.php:1250 mod/photos.php:1187 mod/photos.php:1571 +msgid "Show to Groups" +msgstr "Zeige den Gruppen" + +#: mod/settings.php:1251 mod/photos.php:1188 mod/photos.php:1572 +msgid "Show to Contacts" +msgstr "Zeige den Kontakten" + #: mod/settings.php:1252 msgid "Default Private Post" msgstr "Privater Standardbeitrag" @@ -8503,6 +7895,14 @@ msgstr "Video Löschen" msgid "No videos selected" msgstr "Keine Videos ausgewählt" +#: mod/videos.php:308 mod/photos.php:1075 +msgid "Access to this item is restricted." +msgstr "Zugriff zu diesem Eintrag wurde eingeschränkt." + +#: mod/videos.php:390 mod/photos.php:1877 +msgid "View Album" +msgstr "Album betrachten" + #: mod/videos.php:399 msgid "Recent Videos" msgstr "Neueste Videos" @@ -8511,6 +7911,627 @@ msgstr "Neueste Videos" msgid "Upload New Videos" msgstr "Neues Video hochladen" +#: mod/install.php:139 +msgid "Friendica Communications Server - Setup" +msgstr "Friendica-Server für soziale Netzwerke – Setup" + +#: mod/install.php:145 +msgid "Could not connect to database." +msgstr "Verbindung zur Datenbank gescheitert." + +#: mod/install.php:149 +msgid "Could not create table." +msgstr "Tabelle konnte nicht angelegt werden." + +#: mod/install.php:155 +msgid "Your Friendica site database has been installed." +msgstr "Die Datenbank Deiner Friendicaseite wurde installiert." + +#: mod/install.php:160 +msgid "" +"You may need to import the file \"database.sql\" manually using phpmyadmin " +"or mysql." +msgstr "Möglicherweise musst Du die Datei \"database.sql\" manuell mit phpmyadmin oder mysql importieren." + +#: mod/install.php:161 mod/install.php:230 mod/install.php:602 +msgid "Please see the file \"INSTALL.txt\"." +msgstr "Lies bitte die \"INSTALL.txt\"." + +#: mod/install.php:173 +msgid "Database already in use." +msgstr "Die Datenbank wird bereits verwendet." + +#: mod/install.php:227 +msgid "System check" +msgstr "Systemtest" + +#: mod/install.php:232 +msgid "Check again" +msgstr "Noch einmal testen" + +#: mod/install.php:251 +msgid "Database connection" +msgstr "Datenbankverbindung" + +#: mod/install.php:252 +msgid "" +"In order to install Friendica we need to know how to connect to your " +"database." +msgstr "Um Friendica installieren zu können, müssen wir wissen, wie wir mit Deiner Datenbank Kontakt aufnehmen können." + +#: mod/install.php:253 +msgid "" +"Please contact your hosting provider or site administrator if you have " +"questions about these settings." +msgstr "Bitte kontaktiere den Hosting Provider oder den Administrator der Seite, falls Du Fragen zu diesen Einstellungen haben solltest." + +#: mod/install.php:254 +msgid "" +"The database you specify below should already exist. If it does not, please " +"create it before continuing." +msgstr "Die Datenbank, die Du unten angibst, sollte bereits existieren. Ist dies noch nicht der Fall, erzeuge sie bitte bevor Du mit der Installation fortfährst." + +#: mod/install.php:258 +msgid "Database Server Name" +msgstr "Datenbank-Server" + +#: mod/install.php:259 +msgid "Database Login Name" +msgstr "Datenbank-Nutzer" + +#: mod/install.php:260 +msgid "Database Login Password" +msgstr "Datenbank-Passwort" + +#: mod/install.php:261 +msgid "Database Name" +msgstr "Datenbank-Name" + +#: mod/install.php:262 mod/install.php:303 +msgid "Site administrator email address" +msgstr "E-Mail-Adresse des Administrators" + +#: mod/install.php:262 mod/install.php:303 +msgid "" +"Your account email address must match this in order to use the web admin " +"panel." +msgstr "Die E-Mail-Adresse, die in Deinem Friendica-Account eingetragen ist, muss mit dieser Adresse übereinstimmen, damit Du das Admin-Panel benutzen kannst." + +#: mod/install.php:266 mod/install.php:306 +msgid "Please select a default timezone for your website" +msgstr "Bitte wähle die Standardzeitzone Deiner Webseite" + +#: mod/install.php:293 +msgid "Site settings" +msgstr "Server-Einstellungen" + +#: mod/install.php:307 +msgid "System Language:" +msgstr "Systemsprache:" + +#: mod/install.php:307 +msgid "" +"Set the default language for your Friendica installation interface and to " +"send emails." +msgstr "Wähle die Standardsprache für deine Friendica-Installations-Oberfläche und den E-Mail-Versand" + +#: mod/install.php:347 +msgid "Could not find a command line version of PHP in the web server PATH." +msgstr "Konnte keine Kommandozeilenversion von PHP im PATH des Servers finden." + +#: mod/install.php:348 +msgid "" +"If you don't have a command line version of PHP installed on server, you " +"will not be able to run background polling via cron. See 'Setup the poller'" +msgstr "Wenn Du keine Kommandozeilen-Version von PHP auf Deinem Server installiert hast, kannst Du keine Hintergrundprozesse via cron starten. Siehe 'Setup the poller'" + +#: mod/install.php:352 +msgid "PHP executable path" +msgstr "Pfad zu PHP" + +#: mod/install.php:352 +msgid "" +"Enter full path to php executable. You can leave this blank to continue the " +"installation." +msgstr "Gib den kompletten Pfad zur ausführbaren Datei von PHP an. Du kannst dieses Feld auch frei lassen und mit der Installation fortfahren." + +#: mod/install.php:357 +msgid "Command line PHP" +msgstr "Kommandozeilen-PHP" + +#: mod/install.php:366 +msgid "PHP executable is not the php cli binary (could be cgi-fgci version)" +msgstr "Die ausführbare Datei von PHP stimmt nicht mit der PHP cli Version überein (es könnte sich um die cgi-fgci Version handeln)" + +#: mod/install.php:367 +msgid "Found PHP version: " +msgstr "Gefundene PHP Version:" + +#: mod/install.php:369 +msgid "PHP cli binary" +msgstr "PHP CLI Binary" + +#: mod/install.php:380 +msgid "" +"The command line version of PHP on your system does not have " +"\"register_argc_argv\" enabled." +msgstr "Die Kommandozeilenversion von PHP auf Deinem System hat \"register_argc_argv\" nicht aktiviert." + +#: mod/install.php:381 +msgid "This is required for message delivery to work." +msgstr "Dies wird für die Auslieferung von Nachrichten benötigt." + +#: mod/install.php:383 +msgid "PHP register_argc_argv" +msgstr "PHP register_argc_argv" + +#: mod/install.php:404 +msgid "" +"Error: the \"openssl_pkey_new\" function on this system is not able to " +"generate encryption keys" +msgstr "Fehler: Die Funktion \"openssl_pkey_new\" auf diesem System ist nicht in der Lage, Verschlüsselungsschlüssel zu erzeugen" + +#: mod/install.php:405 +msgid "" +"If running under Windows, please see " +"\"http://www.php.net/manual/en/openssl.installation.php\"." +msgstr "Wenn der Server unter Windows läuft, schau Dir bitte \"http://www.php.net/manual/en/openssl.installation.php\" an." + +#: mod/install.php:407 +msgid "Generate encryption keys" +msgstr "Schlüssel erzeugen" + +#: mod/install.php:414 +msgid "libCurl PHP module" +msgstr "PHP: libCurl-Modul" + +#: mod/install.php:415 +msgid "GD graphics PHP module" +msgstr "PHP: GD-Grafikmodul" + +#: mod/install.php:416 +msgid "OpenSSL PHP module" +msgstr "PHP: OpenSSL-Modul" + +#: mod/install.php:417 +msgid "mysqli PHP module" +msgstr "PHP: mysqli-Modul" + +#: mod/install.php:418 +msgid "mb_string PHP module" +msgstr "PHP: mb_string-Modul" + +#: mod/install.php:419 +msgid "mcrypt PHP module" +msgstr "PHP mcrypt Modul" + +#: mod/install.php:420 +msgid "XML PHP module" +msgstr "XML PHP Modul" + +#: mod/install.php:421 +msgid "iconv module" +msgstr "iconv module" + +#: mod/install.php:425 mod/install.php:427 +msgid "Apache mod_rewrite module" +msgstr "Apache mod_rewrite module" + +#: mod/install.php:425 +msgid "" +"Error: Apache webserver mod-rewrite module is required but not installed." +msgstr "Fehler: Das Apache-Modul mod-rewrite wird benötigt, es ist allerdings nicht installiert." + +#: mod/install.php:433 +msgid "Error: libCURL PHP module required but not installed." +msgstr "Fehler: Das libCURL PHP Modul wird benötigt, ist aber nicht installiert." + +#: mod/install.php:437 +msgid "" +"Error: GD graphics PHP module with JPEG support required but not installed." +msgstr "Fehler: Das GD-Graphikmodul für PHP mit JPEG-Unterstützung ist nicht installiert." + +#: mod/install.php:441 +msgid "Error: openssl PHP module required but not installed." +msgstr "Fehler: Das openssl-Modul von PHP ist nicht installiert." + +#: mod/install.php:445 +msgid "Error: mysqli PHP module required but not installed." +msgstr "Fehler: Das mysqli-Modul von PHP ist nicht installiert." + +#: mod/install.php:449 +msgid "Error: mb_string PHP module required but not installed." +msgstr "Fehler: mb_string PHP Module wird benötigt ist aber nicht installiert." + +#: mod/install.php:453 +msgid "Error: mcrypt PHP module required but not installed." +msgstr "Fehler: Das mcrypt Modul von PHP ist nicht installiert" + +#: mod/install.php:457 +msgid "Error: iconv PHP module required but not installed." +msgstr "Fehler: Das iconv-Modul von PHP ist nicht installiert." + +#: mod/install.php:466 +msgid "" +"If you are using php_cli, please make sure that mcrypt module is enabled in " +"its config file" +msgstr "Wenn du das Modul \"php_cli\" benutzt dann versichere dich, daß das mcrypt Modul in seiner Konfigurationsdatei aktiviert ist. " + +#: mod/install.php:469 +msgid "" +"Function mcrypt_create_iv() is not defined. This is needed to enable RINO2 " +"encryption layer." +msgstr "Die Funktion mcrypt_create_iv() ist nicht festgelegt. Dies ist notwendig um den RINO2-Encryption-Layer zu aktivieren." + +#: mod/install.php:471 +msgid "mcrypt_create_iv() function" +msgstr "mcrypt_create_iv() function" + +#: mod/install.php:479 +msgid "Error, XML PHP module required but not installed." +msgstr "Fehler: XML PHP Modul erforderlich aber nicht installiert." + +#: mod/install.php:494 +msgid "" +"The web installer needs to be able to create a file called \".htconfig.php\"" +" in the top folder of your web server and it is unable to do so." +msgstr "Der Installationswizard muss in der Lage sein, eine Datei im Stammverzeichnis Deines Webservers anzulegen, ist allerdings derzeit nicht in der Lage, dies zu tun." + +#: mod/install.php:495 +msgid "" +"This is most often a permission setting, as the web server may not be able " +"to write files in your folder - even if you can." +msgstr "In den meisten Fällen ist dies ein Problem mit den Schreibrechten. Der Webserver könnte keine Schreiberlaubnis haben, selbst wenn Du sie hast." + +#: mod/install.php:496 +msgid "" +"At the end of this procedure, we will give you a text to save in a file " +"named .htconfig.php in your Friendica top folder." +msgstr "Nachdem Du alles ausgefüllt hast, erhältst Du einen Text, den Du in eine Datei namens .htconfig.php in Deinem Friendica-Wurzelverzeichnis kopieren musst." + +#: mod/install.php:497 +msgid "" +"You can alternatively skip this procedure and perform a manual installation." +" Please see the file \"INSTALL.txt\" for instructions." +msgstr "Alternativ kannst Du diesen Schritt aber auch überspringen und die Installation manuell durchführen. Eine Anleitung dazu (Englisch) findest Du in der Datei INSTALL.txt." + +#: mod/install.php:500 +msgid ".htconfig.php is writable" +msgstr "Schreibrechte auf .htconfig.php" + +#: mod/install.php:510 +msgid "" +"Friendica uses the Smarty3 template engine to render its web views. Smarty3 " +"compiles templates to PHP to speed up rendering." +msgstr "Friendica nutzt die Smarty3 Template Engine um die Webansichten zu rendern. Smarty3 kompiliert Templates zu PHP um das Rendern zu beschleunigen." + +#: mod/install.php:511 +msgid "" +"In order to store these compiled templates, the web server needs to have " +"write access to the directory view/smarty3/ under the Friendica top level " +"folder." +msgstr "Um diese kompilierten Templates zu speichern benötigt der Webserver Schreibrechte zum Verzeichnis view/smarty3/ im obersten Ordner von Friendica." + +#: mod/install.php:512 +msgid "" +"Please ensure that the user that your web server runs as (e.g. www-data) has" +" write access to this folder." +msgstr "Bitte stelle sicher, dass der Nutzer unter dem der Webserver läuft (z.B. www-data) Schreibrechte zu diesem Verzeichnis hat." + +#: mod/install.php:513 +msgid "" +"Note: as a security measure, you should give the web server write access to " +"view/smarty3/ only--not the template files (.tpl) that it contains." +msgstr "Hinweis: aus Sicherheitsgründen solltest Du dem Webserver nur Schreibrechte für view/smarty3/ geben -- Nicht den Templatedateien (.tpl) die sie enthalten." + +#: mod/install.php:516 +msgid "view/smarty3 is writable" +msgstr "view/smarty3 ist schreibbar" + +#: mod/install.php:532 +msgid "" +"Url rewrite in .htaccess is not working. Check your server configuration." +msgstr "Umschreiben der URLs in der .htaccess funktioniert nicht. Überprüfe die Konfiguration des Servers." + +#: mod/install.php:534 +msgid "Url rewrite is working" +msgstr "URL rewrite funktioniert" + +#: mod/install.php:551 +msgid "ImageMagick PHP extension is installed" +msgstr "ImageMagick PHP Erweiterung ist installiert" + +#: mod/install.php:553 +msgid "ImageMagick supports GIF" +msgstr "ImageMagick unterstützt GIF" + +#: mod/install.php:561 +msgid "" +"The database configuration file \".htconfig.php\" could not be written. " +"Please use the enclosed text to create a configuration file in your web " +"server root." +msgstr "Die Konfigurationsdatei \".htconfig.php\" konnte nicht angelegt werden. Bitte verwende den angefügten Text, um die Datei im Stammverzeichnis Deiner Friendica-Installation zu erzeugen." + +#: mod/install.php:600 +msgid "

What next

" +msgstr "

Wie geht es weiter?

" + +#: mod/install.php:601 +msgid "" +"IMPORTANT: You will need to [manually] setup a scheduled task for the " +"poller." +msgstr "WICHTIG: Du musst [manuell] einen Cronjob (o.ä.) für den Poller einrichten." + +#: mod/notifications.php:35 +msgid "Invalid request identifier." +msgstr "Invalid request identifier." + +#: mod/notifications.php:44 mod/notifications.php:180 +#: mod/notifications.php:252 +msgid "Discard" +msgstr "Verwerfen" + +#: mod/notifications.php:105 +msgid "Network Notifications" +msgstr "Netzwerk Benachrichtigungen" + +#: mod/notifications.php:117 +msgid "Personal Notifications" +msgstr "Persönliche Benachrichtigungen" + +#: mod/notifications.php:123 +msgid "Home Notifications" +msgstr "Pinnwand Benachrichtigungen" + +#: mod/notifications.php:152 +msgid "Show Ignored Requests" +msgstr "Zeige ignorierte Anfragen" + +#: mod/notifications.php:152 +msgid "Hide Ignored Requests" +msgstr "Verberge ignorierte Anfragen" + +#: mod/notifications.php:164 mod/notifications.php:222 +msgid "Notification type: " +msgstr "Benachrichtigungstyp: " + +#: mod/notifications.php:167 +#, php-format +msgid "suggested by %s" +msgstr "vorgeschlagen von %s" + +#: mod/notifications.php:173 mod/notifications.php:240 +msgid "Post a new friend activity" +msgstr "Neue-Kontakt Nachricht senden" + +#: mod/notifications.php:173 mod/notifications.php:240 +msgid "if applicable" +msgstr "falls anwendbar" + +#: mod/notifications.php:195 +msgid "Claims to be known to you: " +msgstr "Behauptet Dich zu kennen: " + +#: mod/notifications.php:196 +msgid "yes" +msgstr "ja" + +#: mod/notifications.php:196 +msgid "no" +msgstr "nein" + +#: mod/notifications.php:197 +msgid "" +"Shall your connection be bidirectional or not? \"Friend\" implies that you " +"allow to read and you subscribe to their posts. \"Fan/Admirer\" means that " +"you allow to read but you do not want to read theirs. Approve as: " +msgstr "Soll Deine Beziehung beidseitig sein oder nicht? \"Kontakt\" bedeutet, ihr könnt gegenseitig die Beiträge des Anderen lesen dürft. \"Fan/Verehrer\", dass du das lesen deiner Beiträge erlaubst aber nicht die Beiträge der anderen Seite lesen möchtest. Genehmigen als:" + +#: mod/notifications.php:200 +msgid "" +"Shall your connection be bidirectional or not? \"Friend\" implies that you " +"allow to read and you subscribe to their posts. \"Sharer\" means that you " +"allow to read but you do not want to read theirs. Approve as: " +msgstr "Soll Deine Beziehung beidseitig sein oder nicht? \"Freund\" bedeutet, ihr gegenseitig die Beiträge des Anderen lesen dürft. \"Teilenden\", das du das lesen deiner Beiträge erlaubst aber nicht die Beiträge der anderen Seite lesen möchtest. Genehmigen als:" + +#: mod/notifications.php:209 +msgid "Friend" +msgstr "Kontakt" + +#: mod/notifications.php:210 +msgid "Sharer" +msgstr "Teilenden" + +#: mod/notifications.php:210 +msgid "Fan/Admirer" +msgstr "Fan/Verehrer" + +#: mod/notifications.php:260 +msgid "No introductions." +msgstr "Keine Kontaktanfragen." + +#: mod/notifications.php:299 +msgid "Show unread" +msgstr "Ungelesene anzeigen" + +#: mod/notifications.php:299 +msgid "Show all" +msgstr "Alle anzeigen" + +#: mod/notifications.php:305 +#, php-format +msgid "No more %s notifications." +msgstr "Keine weiteren %s Benachrichtigungen" + +#: mod/photos.php:101 mod/photos.php:1886 +msgid "Recent Photos" +msgstr "Neueste Fotos" + +#: mod/photos.php:104 mod/photos.php:1308 mod/photos.php:1888 +msgid "Upload New Photos" +msgstr "Neue Fotos hochladen" + +#: mod/photos.php:182 +msgid "Contact information unavailable" +msgstr "Kontaktinformationen nicht verfügbar" + +#: mod/photos.php:203 +msgid "Album not found." +msgstr "Album nicht gefunden." + +#: mod/photos.php:233 mod/photos.php:245 mod/photos.php:1250 +msgid "Delete Album" +msgstr "Album löschen" + +#: mod/photos.php:243 +msgid "Do you really want to delete this photo album and all its photos?" +msgstr "Möchtest Du wirklich dieses Foto-Album und all seine Foto löschen?" + +#: mod/photos.php:323 mod/photos.php:334 mod/photos.php:1567 +msgid "Delete Photo" +msgstr "Foto löschen" + +#: mod/photos.php:332 +msgid "Do you really want to delete this photo?" +msgstr "Möchtest Du wirklich dieses Foto löschen?" + +#: mod/photos.php:707 +#, php-format +msgid "%1$s was tagged in %2$s by %3$s" +msgstr "%1$s wurde von %3$s in %2$s getaggt" + +#: mod/photos.php:707 +msgid "a photo" +msgstr "einem Foto" + +#: mod/photos.php:814 +msgid "Image file is empty." +msgstr "Bilddatei ist leer." + +#: mod/photos.php:974 +msgid "No photos selected" +msgstr "Keine Bilder ausgewählt" + +#: mod/photos.php:1135 +#, php-format +msgid "You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage." +msgstr "Du verwendest %1$.2f Mbyte von %2$.2f Mbyte des Foto-Speichers." + +#: mod/photos.php:1170 +msgid "Upload Photos" +msgstr "Bilder hochladen" + +#: mod/photos.php:1174 mod/photos.php:1245 +msgid "New album name: " +msgstr "Name des neuen Albums: " + +#: mod/photos.php:1175 +msgid "or existing album name: " +msgstr "oder existierender Albumname: " + +#: mod/photos.php:1176 +msgid "Do not show a status post for this upload" +msgstr "Keine Status-Mitteilung für diesen Beitrag anzeigen" + +#: mod/photos.php:1189 +msgid "Private Photo" +msgstr "Privates Foto" + +#: mod/photos.php:1190 +msgid "Public Photo" +msgstr "Öffentliches Foto" + +#: mod/photos.php:1258 +msgid "Edit Album" +msgstr "Album bearbeiten" + +#: mod/photos.php:1264 +msgid "Show Newest First" +msgstr "Zeige neueste zuerst" + +#: mod/photos.php:1266 +msgid "Show Oldest First" +msgstr "Zeige älteste zuerst" + +#: mod/photos.php:1294 mod/photos.php:1871 +msgid "View Photo" +msgstr "Foto betrachten" + +#: mod/photos.php:1340 +msgid "Permission denied. Access to this item may be restricted." +msgstr "Zugriff verweigert. Zugriff zu diesem Eintrag könnte eingeschränkt sein." + +#: mod/photos.php:1342 +msgid "Photo not available" +msgstr "Foto nicht verfügbar" + +#: mod/photos.php:1398 +msgid "View photo" +msgstr "Fotos ansehen" + +#: mod/photos.php:1398 +msgid "Edit photo" +msgstr "Foto bearbeiten" + +#: mod/photos.php:1399 +msgid "Use as profile photo" +msgstr "Als Profilbild verwenden" + +#: mod/photos.php:1424 +msgid "View Full Size" +msgstr "Betrachte Originalgröße" + +#: mod/photos.php:1510 +msgid "Tags: " +msgstr "Tags: " + +#: mod/photos.php:1513 +msgid "[Remove any tag]" +msgstr "[Tag entfernen]" + +#: mod/photos.php:1553 +msgid "New album name" +msgstr "Name des neuen Albums" + +#: mod/photos.php:1554 +msgid "Caption" +msgstr "Bildunterschrift" + +#: mod/photos.php:1555 +msgid "Add a Tag" +msgstr "Tag hinzufügen" + +#: mod/photos.php:1555 +msgid "" +"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" +msgstr "Beispiel: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" + +#: mod/photos.php:1556 +msgid "Do not rotate" +msgstr "Nicht rotieren" + +#: mod/photos.php:1557 +msgid "Rotate CW (right)" +msgstr "Drehen US (rechts)" + +#: mod/photos.php:1558 +msgid "Rotate CCW (left)" +msgstr "Drehen EUS (links)" + +#: mod/photos.php:1573 +msgid "Private photo" +msgstr "Privates Foto" + +#: mod/photos.php:1574 +msgid "Public photo" +msgstr "Öffentliches Foto" + +#: mod/photos.php:1800 +msgid "Map" +msgstr "Karte" + #: object/Item.php:370 msgid "via" msgstr "via" @@ -8547,14 +8568,6 @@ msgstr "Größe anpassen - Optimale Größe" msgid "Resize to best fit and retain aspect ratio." msgstr "Größe anpassen - Optimale Größe und Seitenverhältnisse beibehalten" -#: view/theme/frio/theme.php:226 -msgid "Remote" -msgstr "Entferne" - -#: view/theme/frio/theme.php:232 -msgid "Visitor" -msgstr "Besucher" - #: view/theme/frio/config.php:42 msgid "Default" msgstr "Standard" @@ -8595,6 +8608,14 @@ msgstr "Transparanz des Hintergrunds von Beiträgem" msgid "Set the background image" msgstr "Hintergrundbild festlegen" +#: view/theme/frio/theme.php:226 +msgid "Guest" +msgstr "Gast" + +#: view/theme/frio/theme.php:232 +msgid "Visitor" +msgstr "Besucher" + #: view/theme/cleanzero/config.php:83 msgid "Set resize level for images in posts and comments (width and height)" msgstr "Wähle das Vergrößerungsmaß für Bilder in Beiträgen und Kommentaren (Höhe und Breite)" @@ -8774,51 +8795,51 @@ msgstr "Variationen" msgid "toggle mobile" msgstr "auf/von Mobile Ansicht wechseln" -#: boot.php:898 +#: boot.php:901 msgid "Delete this item?" msgstr "Diesen Beitrag löschen?" -#: boot.php:901 +#: boot.php:904 msgid "show fewer" msgstr "weniger anzeigen" -#: boot.php:1515 +#: boot.php:1518 #, php-format msgid "Update %s failed. See error logs." msgstr "Update %s fehlgeschlagen. Bitte Fehlerprotokoll überprüfen." -#: boot.php:1627 +#: boot.php:1630 msgid "Create a New Account" msgstr "Neues Konto erstellen" -#: boot.php:1656 +#: boot.php:1659 msgid "Password: " msgstr "Passwort: " -#: boot.php:1657 +#: boot.php:1660 msgid "Remember me" msgstr "Anmeldedaten merken" -#: boot.php:1660 +#: boot.php:1663 msgid "Or login using OpenID: " msgstr "Oder melde Dich mit Deiner OpenID an: " -#: boot.php:1666 +#: boot.php:1669 msgid "Forgot your password?" msgstr "Passwort vergessen?" -#: boot.php:1669 +#: boot.php:1672 msgid "Website Terms of Service" msgstr "Website Nutzungsbedingungen" -#: boot.php:1670 +#: boot.php:1673 msgid "terms of service" msgstr "Nutzungsbedingungen" -#: boot.php:1672 +#: boot.php:1675 msgid "Website Privacy Policy" msgstr "Website Datenschutzerklärung" -#: boot.php:1673 +#: boot.php:1676 msgid "privacy policy" msgstr "Datenschutzerklärung" diff --git a/view/de/strings.php b/view/de/strings.php index 9de3af7982..2a2331d99a 100644 --- a/view/de/strings.php +++ b/view/de/strings.php @@ -117,7 +117,6 @@ $a->strings["Full Name:\t%1\$s\\nSite Location:\t%2\$s\\nLogin Name:\t%3\$s (%4\ $a->strings["Please visit %s to approve or reject the request."] = "Bitte besuche %s um die Anfrage zu bearbeiten."; $a->strings["Forums"] = "Foren"; $a->strings["External link to forum"] = "Externer Link zum Forum"; -$a->strings["Cannot locate DNS info for database server '%s'"] = "Kann die DNS Informationen für den Datenbankserver '%s' nicht ermitteln."; $a->strings["l F d, Y \\@ g:i A"] = "l, d. F Y\\, H:i"; $a->strings["Starts:"] = "Beginnt:"; $a->strings["Finishes:"] = "Endet:"; @@ -237,6 +236,7 @@ $a->strings["Image/photo"] = "Bild/Foto"; $a->strings["%2\$s %3\$s"] = "%2\$s %3\$s"; $a->strings["$1 wrote:"] = "$1 hat geschrieben:"; $a->strings["Encrypted content"] = "Verschlüsselter Inhalt"; +$a->strings["Cannot locate DNS info for database server '%s'"] = "Kann die DNS Informationen für den Datenbankserver '%s' nicht ermitteln."; $a->strings["Logged out."] = "Abgemeldet."; $a->strings["Login failed."] = "Anmeldung fehlgeschlagen."; $a->strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Beim Versuch Dich mit der von Dir angegebenen OpenID anzumelden trat ein Problem auf. Bitte überprüfe, dass Du die OpenID richtig geschrieben hast."; @@ -700,6 +700,19 @@ $a->strings["%d contact not imported"] = array( 1 => "%d Kontakte nicht importiert", ); $a->strings["Done. You can now login with your username and password"] = "Erledigt. Du kannst Dich jetzt mit Deinem Nutzernamen und Passwort anmelden"; +$a->strings["System"] = "System"; +$a->strings["Personal"] = "Persönlich"; +$a->strings["%s commented on %s's post"] = "%s hat %ss Beitrag kommentiert"; +$a->strings["%s created a new post"] = "%s hat einen neuen Beitrag erstellt"; +$a->strings["%s liked %s's post"] = "%s mag %ss Beitrag"; +$a->strings["%s disliked %s's post"] = "%s mag %ss Beitrag nicht"; +$a->strings["%s is attending %s's event"] = "%s nimmt an %s's Event teil"; +$a->strings["%s is not attending %s's event"] = "%s nimmt nicht an %s's Event teil"; +$a->strings["%s may attend %s's event"] = "%s nimmt eventuell an %s's Event teil"; +$a->strings["%s is now friends with %s"] = "%s ist jetzt mit %s befreundet"; +$a->strings["Friend Suggestion"] = "Kontaktvorschlag"; +$a->strings["Friend/Connect Request"] = "Kontakt-/Freundschaftsanfrage"; +$a->strings["New Follower"] = "Neuer Bewunderer"; $a->strings["Post successful."] = "Beitrag erfolgreich veröffentlicht."; $a->strings["[Embedded content - reload page to view]"] = "[Eingebetteter Inhalt - Seite neu laden zum Betrachten]"; $a->strings["Access denied."] = "Zugriff verweigert."; @@ -844,79 +857,6 @@ $a->strings["No entries."] = "Keine Einträge."; $a->strings["Credits"] = "Credits"; $a->strings["Friendica is a community project, that would not be possible without the help of many people. Here is a list of those who have contributed to the code or the translation of Friendica. Thank you all!"] = "Friendica ist ein Gemeinschaftsprojekt, das nicht ohne die Hilfe vieler Personen möglich wäre. Hier ist eine Aufzählung der Personen, die zum Code oder der Übersetzung beigetragen haben. Dank an alle !"; $a->strings["- select -"] = "- auswählen -"; -$a->strings["Friendica Communications Server - Setup"] = "Friendica-Server für soziale Netzwerke – Setup"; -$a->strings["Could not connect to database."] = "Verbindung zur Datenbank gescheitert."; -$a->strings["Could not create table."] = "Tabelle konnte nicht angelegt werden."; -$a->strings["Your Friendica site database has been installed."] = "Die Datenbank Deiner Friendicaseite wurde installiert."; -$a->strings["You may need to import the file \"database.sql\" manually using phpmyadmin or mysql."] = "Möglicherweise musst Du die Datei \"database.sql\" manuell mit phpmyadmin oder mysql importieren."; -$a->strings["Please see the file \"INSTALL.txt\"."] = "Lies bitte die \"INSTALL.txt\"."; -$a->strings["Database already in use."] = "Die Datenbank wird bereits verwendet."; -$a->strings["System check"] = "Systemtest"; -$a->strings["Check again"] = "Noch einmal testen"; -$a->strings["Database connection"] = "Datenbankverbindung"; -$a->strings["In order to install Friendica we need to know how to connect to your database."] = "Um Friendica installieren zu können, müssen wir wissen, wie wir mit Deiner Datenbank Kontakt aufnehmen können."; -$a->strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Bitte kontaktiere den Hosting Provider oder den Administrator der Seite, falls Du Fragen zu diesen Einstellungen haben solltest."; -$a->strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "Die Datenbank, die Du unten angibst, sollte bereits existieren. Ist dies noch nicht der Fall, erzeuge sie bitte bevor Du mit der Installation fortfährst."; -$a->strings["Database Server Name"] = "Datenbank-Server"; -$a->strings["Database Login Name"] = "Datenbank-Nutzer"; -$a->strings["Database Login Password"] = "Datenbank-Passwort"; -$a->strings["Database Name"] = "Datenbank-Name"; -$a->strings["Site administrator email address"] = "E-Mail-Adresse des Administrators"; -$a->strings["Your account email address must match this in order to use the web admin panel."] = "Die E-Mail-Adresse, die in Deinem Friendica-Account eingetragen ist, muss mit dieser Adresse übereinstimmen, damit Du das Admin-Panel benutzen kannst."; -$a->strings["Please select a default timezone for your website"] = "Bitte wähle die Standardzeitzone Deiner Webseite"; -$a->strings["Site settings"] = "Server-Einstellungen"; -$a->strings["System Language:"] = "Systemsprache:"; -$a->strings["Set the default language for your Friendica installation interface and to send emails."] = "Wähle die Standardsprache für deine Friendica-Installations-Oberfläche und den E-Mail-Versand"; -$a->strings["Could not find a command line version of PHP in the web server PATH."] = "Konnte keine Kommandozeilenversion von PHP im PATH des Servers finden."; -$a->strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron. See 'Setup the poller'"] = "Wenn Du keine Kommandozeilen-Version von PHP auf Deinem Server installiert hast, kannst Du keine Hintergrundprozesse via cron starten. Siehe 'Setup the poller'"; -$a->strings["PHP executable path"] = "Pfad zu PHP"; -$a->strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Gib den kompletten Pfad zur ausführbaren Datei von PHP an. Du kannst dieses Feld auch frei lassen und mit der Installation fortfahren."; -$a->strings["Command line PHP"] = "Kommandozeilen-PHP"; -$a->strings["PHP executable is not the php cli binary (could be cgi-fgci version)"] = "Die ausführbare Datei von PHP stimmt nicht mit der PHP cli Version überein (es könnte sich um die cgi-fgci Version handeln)"; -$a->strings["Found PHP version: "] = "Gefundene PHP Version:"; -$a->strings["PHP cli binary"] = "PHP CLI Binary"; -$a->strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "Die Kommandozeilenversion von PHP auf Deinem System hat \"register_argc_argv\" nicht aktiviert."; -$a->strings["This is required for message delivery to work."] = "Dies wird für die Auslieferung von Nachrichten benötigt."; -$a->strings["PHP register_argc_argv"] = "PHP register_argc_argv"; -$a->strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Fehler: Die Funktion \"openssl_pkey_new\" auf diesem System ist nicht in der Lage, Verschlüsselungsschlüssel zu erzeugen"; -$a->strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Wenn der Server unter Windows läuft, schau Dir bitte \"http://www.php.net/manual/en/openssl.installation.php\" an."; -$a->strings["Generate encryption keys"] = "Schlüssel erzeugen"; -$a->strings["libCurl PHP module"] = "PHP: libCurl-Modul"; -$a->strings["GD graphics PHP module"] = "PHP: GD-Grafikmodul"; -$a->strings["OpenSSL PHP module"] = "PHP: OpenSSL-Modul"; -$a->strings["mysqli PHP module"] = "PHP: mysqli-Modul"; -$a->strings["mb_string PHP module"] = "PHP: mb_string-Modul"; -$a->strings["mcrypt PHP module"] = "PHP mcrypt Modul"; -$a->strings["XML PHP module"] = "XML PHP Modul"; -$a->strings["Apache mod_rewrite module"] = "Apache mod_rewrite module"; -$a->strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Fehler: Das Apache-Modul mod-rewrite wird benötigt, es ist allerdings nicht installiert."; -$a->strings["Error: libCURL PHP module required but not installed."] = "Fehler: Das libCURL PHP Modul wird benötigt, ist aber nicht installiert."; -$a->strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Fehler: Das GD-Graphikmodul für PHP mit JPEG-Unterstützung ist nicht installiert."; -$a->strings["Error: openssl PHP module required but not installed."] = "Fehler: Das openssl-Modul von PHP ist nicht installiert."; -$a->strings["Error: mysqli PHP module required but not installed."] = "Fehler: Das mysqli-Modul von PHP ist nicht installiert."; -$a->strings["Error: mb_string PHP module required but not installed."] = "Fehler: mb_string PHP Module wird benötigt ist aber nicht installiert."; -$a->strings["Error: mcrypt PHP module required but not installed."] = "Fehler: Das mcrypt Modul von PHP ist nicht installiert"; -$a->strings["If you are using php_cli, please make sure that mcrypt module is enabled in its config file"] = "Wenn du das Modul \"php_cli\" benutzt dann versichere dich, daß das mcrypt Modul in seiner Konfigurationsdatei aktiviert ist. "; -$a->strings["Function mcrypt_create_iv() is not defined. This is needed to enable RINO2 encryption layer."] = "Die Funktion mcrypt_create_iv() ist nicht festgelegt. Dies ist notwendig um den RINO2-Encryption-Layer zu aktivieren."; -$a->strings["mcrypt_create_iv() function"] = "mcrypt_create_iv() function"; -$a->strings["Error, XML PHP module required but not installed."] = "Fehler: XML PHP Modul erforderlich aber nicht installiert."; -$a->strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = "Der Installationswizard muss in der Lage sein, eine Datei im Stammverzeichnis Deines Webservers anzulegen, ist allerdings derzeit nicht in der Lage, dies zu tun."; -$a->strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "In den meisten Fällen ist dies ein Problem mit den Schreibrechten. Der Webserver könnte keine Schreiberlaubnis haben, selbst wenn Du sie hast."; -$a->strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Friendica top folder."] = "Nachdem Du alles ausgefüllt hast, erhältst Du einen Text, den Du in eine Datei namens .htconfig.php in Deinem Friendica-Wurzelverzeichnis kopieren musst."; -$a->strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"INSTALL.txt\" for instructions."] = "Alternativ kannst Du diesen Schritt aber auch überspringen und die Installation manuell durchführen. Eine Anleitung dazu (Englisch) findest Du in der Datei INSTALL.txt."; -$a->strings[".htconfig.php is writable"] = "Schreibrechte auf .htconfig.php"; -$a->strings["Friendica uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Friendica nutzt die Smarty3 Template Engine um die Webansichten zu rendern. Smarty3 kompiliert Templates zu PHP um das Rendern zu beschleunigen."; -$a->strings["In order to store these compiled templates, the web server needs to have write access to the directory view/smarty3/ under the Friendica top level folder."] = "Um diese kompilierten Templates zu speichern benötigt der Webserver Schreibrechte zum Verzeichnis view/smarty3/ im obersten Ordner von Friendica."; -$a->strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Bitte stelle sicher, dass der Nutzer unter dem der Webserver läuft (z.B. www-data) Schreibrechte zu diesem Verzeichnis hat."; -$a->strings["Note: as a security measure, you should give the web server write access to view/smarty3/ only--not the template files (.tpl) that it contains."] = "Hinweis: aus Sicherheitsgründen solltest Du dem Webserver nur Schreibrechte für view/smarty3/ geben -- Nicht den Templatedateien (.tpl) die sie enthalten."; -$a->strings["view/smarty3 is writable"] = "view/smarty3 ist schreibbar"; -$a->strings["Url rewrite in .htaccess is not working. Check your server configuration."] = "Umschreiben der URLs in der .htaccess funktioniert nicht. Überprüfe die Konfiguration des Servers."; -$a->strings["Url rewrite is working"] = "URL rewrite funktioniert"; -$a->strings["ImageMagick PHP extension is installed"] = "ImageMagick PHP Erweiterung ist installiert"; -$a->strings["ImageMagick supports GIF"] = "ImageMagick unterstützt GIF"; -$a->strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "Die Konfigurationsdatei \".htconfig.php\" konnte nicht angelegt werden. Bitte verwende den angefügten Text, um die Datei im Stammverzeichnis Deiner Friendica-Installation zu erzeugen."; -$a->strings["

What next

"] = "

Wie geht es weiter?

"; -$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "WICHTIG: Du musst [manuell] einen Cronjob (o.ä.) für den Poller einrichten."; $a->strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s folgt %2\$s %3\$s"; $a->strings["Item not available."] = "Beitrag nicht verfügbar."; $a->strings["Item was not found."] = "Beitrag konnte nicht gefunden werden."; @@ -992,7 +932,6 @@ $a->strings["Commented Order"] = "Neueste Kommentare"; $a->strings["Sort by Comment Date"] = "Nach Kommentardatum sortieren"; $a->strings["Posted Order"] = "Neueste Beiträge"; $a->strings["Sort by Post Date"] = "Nach Beitragsdatum sortieren"; -$a->strings["Personal"] = "Persönlich"; $a->strings["Posts that mention or involve you"] = "Beiträge, in denen es um Dich geht"; $a->strings["New"] = "Neue"; $a->strings["Activity Stream - by date"] = "Aktivitäten-Stream - nach Datum"; @@ -1172,41 +1111,6 @@ $a->strings["I might attend"] = "Ich werde eventuell teilnehmen"; $a->strings["to"] = "zu"; $a->strings["Wall-to-Wall"] = "Wall-to-Wall"; $a->strings["via Wall-To-Wall:"] = "via Wall-To-Wall:"; -$a->strings["Invalid request identifier."] = "Invalid request identifier."; -$a->strings["Discard"] = "Verwerfen"; -$a->strings["Ignore"] = "Ignorieren"; -$a->strings["Show Ignored Requests"] = "Zeige ignorierte Anfragen"; -$a->strings["Hide Ignored Requests"] = "Verberge ignorierte Anfragen"; -$a->strings["Notification type: "] = "Benachrichtigungstyp: "; -$a->strings["Friend Suggestion"] = "Kontaktvorschlag"; -$a->strings["suggested by %s"] = "vorgeschlagen von %s"; -$a->strings["Hide this contact from others"] = "Verbirg diesen Kontakt vor andere"; -$a->strings["Post a new friend activity"] = "Neue-Kontakt Nachricht senden"; -$a->strings["if applicable"] = "falls anwendbar"; -$a->strings["Approve"] = "Genehmigen"; -$a->strings["Claims to be known to you: "] = "Behauptet Dich zu kennen: "; -$a->strings["yes"] = "ja"; -$a->strings["no"] = "nein"; -$a->strings["Shall your connection be bidirectional or not? \"Friend\" implies that you allow to read and you subscribe to their posts. \"Fan/Admirer\" means that you allow to read but you do not want to read theirs. Approve as: "] = "Soll Deine Beziehung beidseitig sein oder nicht? \"Kontakt\" bedeutet, ihr könnt gegenseitig die Beiträge des Anderen lesen dürft. \"Fan/Verehrer\", dass du das lesen deiner Beiträge erlaubst aber nicht die Beiträge der anderen Seite lesen möchtest. Genehmigen als:"; -$a->strings["Shall your connection be bidirectional or not? \"Friend\" implies that you allow to read and you subscribe to their posts. \"Sharer\" means that you allow to read but you do not want to read theirs. Approve as: "] = "Soll Deine Beziehung beidseitig sein oder nicht? \"Freund\" bedeutet, ihr gegenseitig die Beiträge des Anderen lesen dürft. \"Teilenden\", das du das lesen deiner Beiträge erlaubst aber nicht die Beiträge der anderen Seite lesen möchtest. Genehmigen als:"; -$a->strings["Friend"] = "Kontakt"; -$a->strings["Sharer"] = "Teilenden"; -$a->strings["Fan/Admirer"] = "Fan/Verehrer"; -$a->strings["Friend/Connect Request"] = "Kontakt-/Freundschaftsanfrage"; -$a->strings["New Follower"] = "Neuer Bewunderer"; -$a->strings["No introductions."] = "Keine Kontaktanfragen."; -$a->strings["Network Notifications"] = "Netzwerk Benachrichtigungen"; -$a->strings["%s liked %s's post"] = "%s mag %ss Beitrag"; -$a->strings["%s disliked %s's post"] = "%s mag %ss Beitrag nicht"; -$a->strings["%s is now friends with %s"] = "%s ist jetzt mit %s befreundet"; -$a->strings["%s created a new post"] = "%s hat einen neuen Beitrag erstellt"; -$a->strings["%s commented on %s's post"] = "%s hat %ss Beitrag kommentiert"; -$a->strings["No more network notifications."] = "Keine weiteren Netzwerk-Benachrichtigungen."; -$a->strings["Personal Notifications"] = "Persönliche Benachrichtigungen"; -$a->strings["No more personal notifications."] = "Keine weiteren persönlichen Benachrichtigungen"; -$a->strings["Home Notifications"] = "Pinnwand Benachrichtigungen"; -$a->strings["No more home notifications."] = "Keine weiteren Pinnwand-Benachrichtigungen"; -$a->strings["System"] = "System"; $a->strings["Theme settings updated."] = "Themeneinstellungen aktualisiert."; $a->strings["Site"] = "Seite"; $a->strings["Users"] = "Nutzer"; @@ -1465,6 +1369,7 @@ $a->strings["User registrations waiting for confirm"] = "Neuanmeldungen, die auf $a->strings["User waiting for permanent deletion"] = "Nutzer wartet auf permanente Löschung"; $a->strings["Request date"] = "Anfragedatum"; $a->strings["No registrations."] = "Keine Neuanmeldungen."; +$a->strings["Approve"] = "Genehmigen"; $a->strings["Deny"] = "Verwehren"; $a->strings["Block"] = "Sperren"; $a->strings["Unblock"] = "Entsperren"; @@ -1546,9 +1451,11 @@ $a->strings["Last update:"] = "Letzte Aktualisierung: "; $a->strings["Update public posts"] = "Öffentliche Beiträge aktualisieren"; $a->strings["Update now"] = "Jetzt aktualisieren"; $a->strings["Unignore"] = "Ignorieren aufheben"; +$a->strings["Ignore"] = "Ignorieren"; $a->strings["Currently blocked"] = "Derzeit geblockt"; $a->strings["Currently ignored"] = "Derzeit ignoriert"; $a->strings["Currently archived"] = "Momentan archiviert"; +$a->strings["Hide this contact from others"] = "Verbirg diesen Kontakt vor andere"; $a->strings["Replies/likes to your public posts may still be visible"] = "Antworten/Likes auf deine öffentlichen Beiträge könnten weiterhin sichtbar sein"; $a->strings["Notification for new posts"] = "Benachrichtigung bei neuen Beiträgen"; $a->strings["Send a notification of every new post of this contact"] = "Sende eine Benachrichtigung, wann immer dieser Kontakt einen neuen Beitrag schreibt."; @@ -1629,52 +1536,6 @@ $a->strings["Please contact the sender by replying to this post if you do not wi $a->strings["%s posted an update."] = "%s hat ein Update veröffentlicht."; $a->strings["Mood"] = "Stimmung"; $a->strings["Set your current mood and tell your friends"] = "Wähle Deine aktuelle Stimmung und erzähle sie Deinen Kontakten"; -$a->strings["Recent Photos"] = "Neueste Fotos"; -$a->strings["Upload New Photos"] = "Neue Fotos hochladen"; -$a->strings["everybody"] = "jeder"; -$a->strings["Contact information unavailable"] = "Kontaktinformationen nicht verfügbar"; -$a->strings["Album not found."] = "Album nicht gefunden."; -$a->strings["Delete Album"] = "Album löschen"; -$a->strings["Do you really want to delete this photo album and all its photos?"] = "Möchtest Du wirklich dieses Foto-Album und all seine Foto löschen?"; -$a->strings["Delete Photo"] = "Foto löschen"; -$a->strings["Do you really want to delete this photo?"] = "Möchtest Du wirklich dieses Foto löschen?"; -$a->strings["%1\$s was tagged in %2\$s by %3\$s"] = "%1\$s wurde von %3\$s in %2\$s getaggt"; -$a->strings["a photo"] = "einem Foto"; -$a->strings["Image file is empty."] = "Bilddatei ist leer."; -$a->strings["No photos selected"] = "Keine Bilder ausgewählt"; -$a->strings["Access to this item is restricted."] = "Zugriff zu diesem Eintrag wurde eingeschränkt."; -$a->strings["You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."] = "Du verwendest %1$.2f Mbyte von %2$.2f Mbyte des Foto-Speichers."; -$a->strings["Upload Photos"] = "Bilder hochladen"; -$a->strings["New album name: "] = "Name des neuen Albums: "; -$a->strings["or existing album name: "] = "oder existierender Albumname: "; -$a->strings["Do not show a status post for this upload"] = "Keine Status-Mitteilung für diesen Beitrag anzeigen"; -$a->strings["Show to Groups"] = "Zeige den Gruppen"; -$a->strings["Show to Contacts"] = "Zeige den Kontakten"; -$a->strings["Private Photo"] = "Privates Foto"; -$a->strings["Public Photo"] = "Öffentliches Foto"; -$a->strings["Edit Album"] = "Album bearbeiten"; -$a->strings["Show Newest First"] = "Zeige neueste zuerst"; -$a->strings["Show Oldest First"] = "Zeige älteste zuerst"; -$a->strings["View Photo"] = "Foto betrachten"; -$a->strings["Permission denied. Access to this item may be restricted."] = "Zugriff verweigert. Zugriff zu diesem Eintrag könnte eingeschränkt sein."; -$a->strings["Photo not available"] = "Foto nicht verfügbar"; -$a->strings["View photo"] = "Fotos ansehen"; -$a->strings["Edit photo"] = "Foto bearbeiten"; -$a->strings["Use as profile photo"] = "Als Profilbild verwenden"; -$a->strings["View Full Size"] = "Betrachte Originalgröße"; -$a->strings["Tags: "] = "Tags: "; -$a->strings["[Remove any tag]"] = "[Tag entfernen]"; -$a->strings["New album name"] = "Name des neuen Albums"; -$a->strings["Caption"] = "Bildunterschrift"; -$a->strings["Add a Tag"] = "Tag hinzufügen"; -$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Beispiel: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"; -$a->strings["Do not rotate"] = "Nicht rotieren"; -$a->strings["Rotate CW (right)"] = "Drehen US (rechts)"; -$a->strings["Rotate CCW (left)"] = "Drehen EUS (links)"; -$a->strings["Private photo"] = "Privates Foto"; -$a->strings["Public photo"] = "Öffentliches Foto"; -$a->strings["Map"] = "Karte"; -$a->strings["View Album"] = "Album betrachten"; $a->strings["Poke/Prod"] = "Anstupsen"; $a->strings["poke, prod or do other things to somebody"] = "Stupse Leute an oder mache anderes mit ihnen"; $a->strings["Recipient"] = "Empfänger"; @@ -1786,6 +1647,7 @@ $a->strings["Import your profile to this friendica instance"] = "Importiere Dein $a->strings["Account approved."] = "Konto freigegeben."; $a->strings["Registration revoked for %s"] = "Registrierung für %s wurde zurückgezogen"; $a->strings["Please login."] = "Bitte melde Dich an."; +$a->strings["everybody"] = "jeder"; $a->strings["Display"] = "Anzeige"; $a->strings["Social Networks"] = "Soziale Netzwerke"; $a->strings["Connected apps"] = "Verbundene Programme"; @@ -1917,6 +1779,8 @@ $a->strings["Maximum Friend Requests/Day:"] = "Maximale Anzahl vonKontaktanfrage $a->strings["(to prevent spam abuse)"] = "(um SPAM zu vermeiden)"; $a->strings["Default Post Permissions"] = "Standard-Zugriffsrechte für Beiträge"; $a->strings["(click to open/close)"] = "(klicke zum öffnen/schließen)"; +$a->strings["Show to Groups"] = "Zeige den Gruppen"; +$a->strings["Show to Contacts"] = "Zeige den Kontakten"; $a->strings["Default Private Post"] = "Privater Standardbeitrag"; $a->strings["Default Public Post"] = "Öffentlicher Standardbeitrag"; $a->strings["Default Permissions for New Posts"] = "Standardberechtigungen für neue Beiträge"; @@ -1947,8 +1811,149 @@ $a->strings["Resend relocate message to contacts"] = "Umzugsbenachrichtigung ern $a->strings["Do you really want to delete this video?"] = "Möchtest Du dieses Video wirklich löschen?"; $a->strings["Delete Video"] = "Video Löschen"; $a->strings["No videos selected"] = "Keine Videos ausgewählt"; +$a->strings["Access to this item is restricted."] = "Zugriff zu diesem Eintrag wurde eingeschränkt."; +$a->strings["View Album"] = "Album betrachten"; $a->strings["Recent Videos"] = "Neueste Videos"; $a->strings["Upload New Videos"] = "Neues Video hochladen"; +$a->strings["Friendica Communications Server - Setup"] = "Friendica-Server für soziale Netzwerke – Setup"; +$a->strings["Could not connect to database."] = "Verbindung zur Datenbank gescheitert."; +$a->strings["Could not create table."] = "Tabelle konnte nicht angelegt werden."; +$a->strings["Your Friendica site database has been installed."] = "Die Datenbank Deiner Friendicaseite wurde installiert."; +$a->strings["You may need to import the file \"database.sql\" manually using phpmyadmin or mysql."] = "Möglicherweise musst Du die Datei \"database.sql\" manuell mit phpmyadmin oder mysql importieren."; +$a->strings["Please see the file \"INSTALL.txt\"."] = "Lies bitte die \"INSTALL.txt\"."; +$a->strings["Database already in use."] = "Die Datenbank wird bereits verwendet."; +$a->strings["System check"] = "Systemtest"; +$a->strings["Check again"] = "Noch einmal testen"; +$a->strings["Database connection"] = "Datenbankverbindung"; +$a->strings["In order to install Friendica we need to know how to connect to your database."] = "Um Friendica installieren zu können, müssen wir wissen, wie wir mit Deiner Datenbank Kontakt aufnehmen können."; +$a->strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Bitte kontaktiere den Hosting Provider oder den Administrator der Seite, falls Du Fragen zu diesen Einstellungen haben solltest."; +$a->strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "Die Datenbank, die Du unten angibst, sollte bereits existieren. Ist dies noch nicht der Fall, erzeuge sie bitte bevor Du mit der Installation fortfährst."; +$a->strings["Database Server Name"] = "Datenbank-Server"; +$a->strings["Database Login Name"] = "Datenbank-Nutzer"; +$a->strings["Database Login Password"] = "Datenbank-Passwort"; +$a->strings["Database Name"] = "Datenbank-Name"; +$a->strings["Site administrator email address"] = "E-Mail-Adresse des Administrators"; +$a->strings["Your account email address must match this in order to use the web admin panel."] = "Die E-Mail-Adresse, die in Deinem Friendica-Account eingetragen ist, muss mit dieser Adresse übereinstimmen, damit Du das Admin-Panel benutzen kannst."; +$a->strings["Please select a default timezone for your website"] = "Bitte wähle die Standardzeitzone Deiner Webseite"; +$a->strings["Site settings"] = "Server-Einstellungen"; +$a->strings["System Language:"] = "Systemsprache:"; +$a->strings["Set the default language for your Friendica installation interface and to send emails."] = "Wähle die Standardsprache für deine Friendica-Installations-Oberfläche und den E-Mail-Versand"; +$a->strings["Could not find a command line version of PHP in the web server PATH."] = "Konnte keine Kommandozeilenversion von PHP im PATH des Servers finden."; +$a->strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron. See 'Setup the poller'"] = "Wenn Du keine Kommandozeilen-Version von PHP auf Deinem Server installiert hast, kannst Du keine Hintergrundprozesse via cron starten. Siehe 'Setup the poller'"; +$a->strings["PHP executable path"] = "Pfad zu PHP"; +$a->strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Gib den kompletten Pfad zur ausführbaren Datei von PHP an. Du kannst dieses Feld auch frei lassen und mit der Installation fortfahren."; +$a->strings["Command line PHP"] = "Kommandozeilen-PHP"; +$a->strings["PHP executable is not the php cli binary (could be cgi-fgci version)"] = "Die ausführbare Datei von PHP stimmt nicht mit der PHP cli Version überein (es könnte sich um die cgi-fgci Version handeln)"; +$a->strings["Found PHP version: "] = "Gefundene PHP Version:"; +$a->strings["PHP cli binary"] = "PHP CLI Binary"; +$a->strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "Die Kommandozeilenversion von PHP auf Deinem System hat \"register_argc_argv\" nicht aktiviert."; +$a->strings["This is required for message delivery to work."] = "Dies wird für die Auslieferung von Nachrichten benötigt."; +$a->strings["PHP register_argc_argv"] = "PHP register_argc_argv"; +$a->strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Fehler: Die Funktion \"openssl_pkey_new\" auf diesem System ist nicht in der Lage, Verschlüsselungsschlüssel zu erzeugen"; +$a->strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Wenn der Server unter Windows läuft, schau Dir bitte \"http://www.php.net/manual/en/openssl.installation.php\" an."; +$a->strings["Generate encryption keys"] = "Schlüssel erzeugen"; +$a->strings["libCurl PHP module"] = "PHP: libCurl-Modul"; +$a->strings["GD graphics PHP module"] = "PHP: GD-Grafikmodul"; +$a->strings["OpenSSL PHP module"] = "PHP: OpenSSL-Modul"; +$a->strings["mysqli PHP module"] = "PHP: mysqli-Modul"; +$a->strings["mb_string PHP module"] = "PHP: mb_string-Modul"; +$a->strings["mcrypt PHP module"] = "PHP mcrypt Modul"; +$a->strings["XML PHP module"] = "XML PHP Modul"; +$a->strings["iconv module"] = "iconv module"; +$a->strings["Apache mod_rewrite module"] = "Apache mod_rewrite module"; +$a->strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Fehler: Das Apache-Modul mod-rewrite wird benötigt, es ist allerdings nicht installiert."; +$a->strings["Error: libCURL PHP module required but not installed."] = "Fehler: Das libCURL PHP Modul wird benötigt, ist aber nicht installiert."; +$a->strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Fehler: Das GD-Graphikmodul für PHP mit JPEG-Unterstützung ist nicht installiert."; +$a->strings["Error: openssl PHP module required but not installed."] = "Fehler: Das openssl-Modul von PHP ist nicht installiert."; +$a->strings["Error: mysqli PHP module required but not installed."] = "Fehler: Das mysqli-Modul von PHP ist nicht installiert."; +$a->strings["Error: mb_string PHP module required but not installed."] = "Fehler: mb_string PHP Module wird benötigt ist aber nicht installiert."; +$a->strings["Error: mcrypt PHP module required but not installed."] = "Fehler: Das mcrypt Modul von PHP ist nicht installiert"; +$a->strings["Error: iconv PHP module required but not installed."] = "Fehler: Das iconv-Modul von PHP ist nicht installiert."; +$a->strings["If you are using php_cli, please make sure that mcrypt module is enabled in its config file"] = "Wenn du das Modul \"php_cli\" benutzt dann versichere dich, daß das mcrypt Modul in seiner Konfigurationsdatei aktiviert ist. "; +$a->strings["Function mcrypt_create_iv() is not defined. This is needed to enable RINO2 encryption layer."] = "Die Funktion mcrypt_create_iv() ist nicht festgelegt. Dies ist notwendig um den RINO2-Encryption-Layer zu aktivieren."; +$a->strings["mcrypt_create_iv() function"] = "mcrypt_create_iv() function"; +$a->strings["Error, XML PHP module required but not installed."] = "Fehler: XML PHP Modul erforderlich aber nicht installiert."; +$a->strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = "Der Installationswizard muss in der Lage sein, eine Datei im Stammverzeichnis Deines Webservers anzulegen, ist allerdings derzeit nicht in der Lage, dies zu tun."; +$a->strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "In den meisten Fällen ist dies ein Problem mit den Schreibrechten. Der Webserver könnte keine Schreiberlaubnis haben, selbst wenn Du sie hast."; +$a->strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Friendica top folder."] = "Nachdem Du alles ausgefüllt hast, erhältst Du einen Text, den Du in eine Datei namens .htconfig.php in Deinem Friendica-Wurzelverzeichnis kopieren musst."; +$a->strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"INSTALL.txt\" for instructions."] = "Alternativ kannst Du diesen Schritt aber auch überspringen und die Installation manuell durchführen. Eine Anleitung dazu (Englisch) findest Du in der Datei INSTALL.txt."; +$a->strings[".htconfig.php is writable"] = "Schreibrechte auf .htconfig.php"; +$a->strings["Friendica uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Friendica nutzt die Smarty3 Template Engine um die Webansichten zu rendern. Smarty3 kompiliert Templates zu PHP um das Rendern zu beschleunigen."; +$a->strings["In order to store these compiled templates, the web server needs to have write access to the directory view/smarty3/ under the Friendica top level folder."] = "Um diese kompilierten Templates zu speichern benötigt der Webserver Schreibrechte zum Verzeichnis view/smarty3/ im obersten Ordner von Friendica."; +$a->strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Bitte stelle sicher, dass der Nutzer unter dem der Webserver läuft (z.B. www-data) Schreibrechte zu diesem Verzeichnis hat."; +$a->strings["Note: as a security measure, you should give the web server write access to view/smarty3/ only--not the template files (.tpl) that it contains."] = "Hinweis: aus Sicherheitsgründen solltest Du dem Webserver nur Schreibrechte für view/smarty3/ geben -- Nicht den Templatedateien (.tpl) die sie enthalten."; +$a->strings["view/smarty3 is writable"] = "view/smarty3 ist schreibbar"; +$a->strings["Url rewrite in .htaccess is not working. Check your server configuration."] = "Umschreiben der URLs in der .htaccess funktioniert nicht. Überprüfe die Konfiguration des Servers."; +$a->strings["Url rewrite is working"] = "URL rewrite funktioniert"; +$a->strings["ImageMagick PHP extension is installed"] = "ImageMagick PHP Erweiterung ist installiert"; +$a->strings["ImageMagick supports GIF"] = "ImageMagick unterstützt GIF"; +$a->strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "Die Konfigurationsdatei \".htconfig.php\" konnte nicht angelegt werden. Bitte verwende den angefügten Text, um die Datei im Stammverzeichnis Deiner Friendica-Installation zu erzeugen."; +$a->strings["

What next

"] = "

Wie geht es weiter?

"; +$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "WICHTIG: Du musst [manuell] einen Cronjob (o.ä.) für den Poller einrichten."; +$a->strings["Invalid request identifier."] = "Invalid request identifier."; +$a->strings["Discard"] = "Verwerfen"; +$a->strings["Network Notifications"] = "Netzwerk Benachrichtigungen"; +$a->strings["Personal Notifications"] = "Persönliche Benachrichtigungen"; +$a->strings["Home Notifications"] = "Pinnwand Benachrichtigungen"; +$a->strings["Show Ignored Requests"] = "Zeige ignorierte Anfragen"; +$a->strings["Hide Ignored Requests"] = "Verberge ignorierte Anfragen"; +$a->strings["Notification type: "] = "Benachrichtigungstyp: "; +$a->strings["suggested by %s"] = "vorgeschlagen von %s"; +$a->strings["Post a new friend activity"] = "Neue-Kontakt Nachricht senden"; +$a->strings["if applicable"] = "falls anwendbar"; +$a->strings["Claims to be known to you: "] = "Behauptet Dich zu kennen: "; +$a->strings["yes"] = "ja"; +$a->strings["no"] = "nein"; +$a->strings["Shall your connection be bidirectional or not? \"Friend\" implies that you allow to read and you subscribe to their posts. \"Fan/Admirer\" means that you allow to read but you do not want to read theirs. Approve as: "] = "Soll Deine Beziehung beidseitig sein oder nicht? \"Kontakt\" bedeutet, ihr könnt gegenseitig die Beiträge des Anderen lesen dürft. \"Fan/Verehrer\", dass du das lesen deiner Beiträge erlaubst aber nicht die Beiträge der anderen Seite lesen möchtest. Genehmigen als:"; +$a->strings["Shall your connection be bidirectional or not? \"Friend\" implies that you allow to read and you subscribe to their posts. \"Sharer\" means that you allow to read but you do not want to read theirs. Approve as: "] = "Soll Deine Beziehung beidseitig sein oder nicht? \"Freund\" bedeutet, ihr gegenseitig die Beiträge des Anderen lesen dürft. \"Teilenden\", das du das lesen deiner Beiträge erlaubst aber nicht die Beiträge der anderen Seite lesen möchtest. Genehmigen als:"; +$a->strings["Friend"] = "Kontakt"; +$a->strings["Sharer"] = "Teilenden"; +$a->strings["Fan/Admirer"] = "Fan/Verehrer"; +$a->strings["No introductions."] = "Keine Kontaktanfragen."; +$a->strings["Show unread"] = "Ungelesene anzeigen"; +$a->strings["Show all"] = "Alle anzeigen"; +$a->strings["No more %s notifications."] = "Keine weiteren %s Benachrichtigungen"; +$a->strings["Recent Photos"] = "Neueste Fotos"; +$a->strings["Upload New Photos"] = "Neue Fotos hochladen"; +$a->strings["Contact information unavailable"] = "Kontaktinformationen nicht verfügbar"; +$a->strings["Album not found."] = "Album nicht gefunden."; +$a->strings["Delete Album"] = "Album löschen"; +$a->strings["Do you really want to delete this photo album and all its photos?"] = "Möchtest Du wirklich dieses Foto-Album und all seine Foto löschen?"; +$a->strings["Delete Photo"] = "Foto löschen"; +$a->strings["Do you really want to delete this photo?"] = "Möchtest Du wirklich dieses Foto löschen?"; +$a->strings["%1\$s was tagged in %2\$s by %3\$s"] = "%1\$s wurde von %3\$s in %2\$s getaggt"; +$a->strings["a photo"] = "einem Foto"; +$a->strings["Image file is empty."] = "Bilddatei ist leer."; +$a->strings["No photos selected"] = "Keine Bilder ausgewählt"; +$a->strings["You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."] = "Du verwendest %1$.2f Mbyte von %2$.2f Mbyte des Foto-Speichers."; +$a->strings["Upload Photos"] = "Bilder hochladen"; +$a->strings["New album name: "] = "Name des neuen Albums: "; +$a->strings["or existing album name: "] = "oder existierender Albumname: "; +$a->strings["Do not show a status post for this upload"] = "Keine Status-Mitteilung für diesen Beitrag anzeigen"; +$a->strings["Private Photo"] = "Privates Foto"; +$a->strings["Public Photo"] = "Öffentliches Foto"; +$a->strings["Edit Album"] = "Album bearbeiten"; +$a->strings["Show Newest First"] = "Zeige neueste zuerst"; +$a->strings["Show Oldest First"] = "Zeige älteste zuerst"; +$a->strings["View Photo"] = "Foto betrachten"; +$a->strings["Permission denied. Access to this item may be restricted."] = "Zugriff verweigert. Zugriff zu diesem Eintrag könnte eingeschränkt sein."; +$a->strings["Photo not available"] = "Foto nicht verfügbar"; +$a->strings["View photo"] = "Fotos ansehen"; +$a->strings["Edit photo"] = "Foto bearbeiten"; +$a->strings["Use as profile photo"] = "Als Profilbild verwenden"; +$a->strings["View Full Size"] = "Betrachte Originalgröße"; +$a->strings["Tags: "] = "Tags: "; +$a->strings["[Remove any tag]"] = "[Tag entfernen]"; +$a->strings["New album name"] = "Name des neuen Albums"; +$a->strings["Caption"] = "Bildunterschrift"; +$a->strings["Add a Tag"] = "Tag hinzufügen"; +$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Beispiel: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"; +$a->strings["Do not rotate"] = "Nicht rotieren"; +$a->strings["Rotate CW (right)"] = "Drehen US (rechts)"; +$a->strings["Rotate CCW (left)"] = "Drehen EUS (links)"; +$a->strings["Private photo"] = "Privates Foto"; +$a->strings["Public photo"] = "Öffentliches Foto"; +$a->strings["Map"] = "Karte"; $a->strings["via"] = "via"; $a->strings["Repeat the image"] = "Bild wiederholen"; $a->strings["Will repeat your image to fill the background."] = "Wiederholt das Bild um den Hintergrund auszufüllen."; @@ -1958,8 +1963,6 @@ $a->strings["Resize fill and-clip"] = "Größe anpassen - Ausfüllen und abschne $a->strings["Resize to fill and retain aspect ratio."] = "Größe anpassen: Ausfüllen und Seitenverhältnis beibehalten"; $a->strings["Resize best fit"] = "Größe anpassen - Optimale Größe"; $a->strings["Resize to best fit and retain aspect ratio."] = "Größe anpassen - Optimale Größe und Seitenverhältnisse beibehalten"; -$a->strings["Remote"] = "Entferne"; -$a->strings["Visitor"] = "Besucher"; $a->strings["Default"] = "Standard"; $a->strings["Note: "] = "Hinweis:"; $a->strings["Check image permissions if all users are allowed to visit the image"] = "Überprüfe, dass alle Benutzer die Berechtigung haben dieses Bild anzusehen"; @@ -1970,6 +1973,8 @@ $a->strings["Link color"] = "Linkfarbe"; $a->strings["Set the background color"] = "Hintergrundfarbe festlegen"; $a->strings["Content background transparency"] = "Transparanz des Hintergrunds von Beiträgem"; $a->strings["Set the background image"] = "Hintergrundbild festlegen"; +$a->strings["Guest"] = "Gast"; +$a->strings["Visitor"] = "Besucher"; $a->strings["Set resize level for images in posts and comments (width and height)"] = "Wähle das Vergrößerungsmaß für Bilder in Beiträgen und Kommentaren (Höhe und Breite)"; $a->strings["Set font-size for posts and comments"] = "Schriftgröße für Beiträge und Kommentare festlegen"; $a->strings["Set theme width"] = "Theme Breite festlegen"; From 7e65d845779bf14a82ae52ca2d7c0bb20284c0b5 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Wed, 10 Aug 2016 13:07:13 +0200 Subject: [PATCH 02/60] frio: fix for display auto position scroll + some cleanup --- view/theme/frio/js/mod_display.js | 11 +++++++++++ view/theme/frio/js/theme.js | 19 +++++++++++++++++++ .../frio/templates/threaded_conversation.tpl | 15 +-------------- 3 files changed, 31 insertions(+), 14 deletions(-) create mode 100644 view/theme/frio/js/mod_display.js diff --git a/view/theme/frio/js/mod_display.js b/view/theme/frio/js/mod_display.js new file mode 100644 index 0000000000..1faacaeb73 --- /dev/null +++ b/view/theme/frio/js/mod_display.js @@ -0,0 +1,11 @@ +/** + * @brief Javascript for the display module + */ + +// Catch the GUID from the URL +var itemID = window.location.pathname.split("/").pop(); + +$(document).ready(function(){ + // Scroll to the Item by its GUID + scrollToItem(itemID); +}); diff --git a/view/theme/frio/js/theme.js b/view/theme/frio/js/theme.js index 1e26ad7705..27f2c93a79 100644 --- a/view/theme/frio/js/theme.js +++ b/view/theme/frio/js/theme.js @@ -542,3 +542,22 @@ String.prototype.rtrim = function() { var trimmed = this.replace(/\s+$/g, ''); return trimmed; }; + +// Scroll to a specific item and highlight it +// Note: jquery.color.js is needed +function scrollToItem(itemID) { + if( typeof searchValue === "undefined") + return; + + // Define the colors which are used for highlighting + var colWhite = {backgroundColor:'#F5F5F5'}; + var colShiny = {backgroundColor:'#FFF176'}; + + // Scroll to the DIV with the ID (GUID) + $('html, body').animate({ + scrollTop: $('#item-'+itemID).position().top + }, 400, function() { + // Highlight post/commenent with ID (GUID) + $('#item-'+itemID).animate(colWhite, 1000).animate(colShiny).animate(colWhite, 2000); + }); +} diff --git a/view/theme/frio/templates/threaded_conversation.tpl b/view/theme/frio/templates/threaded_conversation.tpl index 3746ba0324..a5402ede5d 100644 --- a/view/theme/frio/templates/threaded_conversation.tpl +++ b/view/theme/frio/templates/threaded_conversation.tpl @@ -1,4 +1,5 @@ +{{if $mode == display}}{{/if}} {{$live_update}} @@ -23,17 +24,3 @@ {{/if}} - - - -{{if $mode == display}} - -{{/if}} - From 531cba5ce53b85ad6ffae73f1f91580feb9f3101 Mon Sep 17 00:00:00 2001 From: rabuzarus Date: Wed, 10 Aug 2016 13:33:49 +0200 Subject: [PATCH 03/60] frio: fix - I used the wrong variable --- view/theme/frio/js/theme.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/theme/frio/js/theme.js b/view/theme/frio/js/theme.js index 27f2c93a79..f153fc33ff 100644 --- a/view/theme/frio/js/theme.js +++ b/view/theme/frio/js/theme.js @@ -546,7 +546,7 @@ String.prototype.rtrim = function() { // Scroll to a specific item and highlight it // Note: jquery.color.js is needed function scrollToItem(itemID) { - if( typeof searchValue === "undefined") + if( typeof itemID === "undefined") return; // Define the colors which are used for highlighting From cf23a81c33eb29153196e01d9a68d45230ff1933 Mon Sep 17 00:00:00 2001 From: rabuzarus Date: Wed, 10 Aug 2016 14:14:58 +0200 Subject: [PATCH 04/60] frio: highlight - use offset() instead of postion() --- view/theme/frio/js/mod_display.js | 4 ++-- view/theme/frio/js/theme.js | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/view/theme/frio/js/mod_display.js b/view/theme/frio/js/mod_display.js index 1faacaeb73..c93d2c0066 100644 --- a/view/theme/frio/js/mod_display.js +++ b/view/theme/frio/js/mod_display.js @@ -3,9 +3,9 @@ */ // Catch the GUID from the URL -var itemID = window.location.pathname.split("/").pop(); +var itemGuid = window.location.pathname.split("/").pop(); $(document).ready(function(){ // Scroll to the Item by its GUID - scrollToItem(itemID); + scrollToItem('item-'+itemGuid); }); diff --git a/view/theme/frio/js/theme.js b/view/theme/frio/js/theme.js index f153fc33ff..1e93be24c0 100644 --- a/view/theme/frio/js/theme.js +++ b/view/theme/frio/js/theme.js @@ -553,11 +553,15 @@ function scrollToItem(itemID) { var colWhite = {backgroundColor:'#F5F5F5'}; var colShiny = {backgroundColor:'#FFF176'}; + // Get the Item Position (we need to substract 100 to match + // correct position + var itemPos = $('#'+itemID).offset().top - 100; + // Scroll to the DIV with the ID (GUID) $('html, body').animate({ - scrollTop: $('#item-'+itemID).position().top + scrollTop: itemPos }, 400, function() { // Highlight post/commenent with ID (GUID) - $('#item-'+itemID).animate(colWhite, 1000).animate(colShiny).animate(colWhite, 2000); + $('#'+itemID).animate(colWhite, 1000).animate(colShiny).animate(colWhite, 600); }); } From 5e440e5359ce77f6fc9b902890876b624e599518 Mon Sep 17 00:00:00 2001 From: rabuzarus Date: Wed, 10 Aug 2016 14:26:16 +0200 Subject: [PATCH 05/60] frio: highlight - wait until the whole page is loaded --- view/theme/frio/js/mod_display.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/theme/frio/js/mod_display.js b/view/theme/frio/js/mod_display.js index c93d2c0066..86608821e5 100644 --- a/view/theme/frio/js/mod_display.js +++ b/view/theme/frio/js/mod_display.js @@ -5,7 +5,7 @@ // Catch the GUID from the URL var itemGuid = window.location.pathname.split("/").pop(); -$(document).ready(function(){ +$(window).load(function(){ // Scroll to the Item by its GUID scrollToItem('item-'+itemGuid); }); From 83e95a5841abe0efa8b2a0540b494a777b0a36eb Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Wed, 10 Aug 2016 14:42:57 +0200 Subject: [PATCH 06/60] frio: highlight - test if the item is available in the dom --- view/theme/frio/js/theme.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/view/theme/frio/js/theme.js b/view/theme/frio/js/theme.js index 1e93be24c0..ffe82c24a5 100644 --- a/view/theme/frio/js/theme.js +++ b/view/theme/frio/js/theme.js @@ -549,19 +549,24 @@ function scrollToItem(itemID) { if( typeof itemID === "undefined") return; + var elm = $('#'+itemID); + // Test if the Item exists + if(!elm.length) + return; + // Define the colors which are used for highlighting var colWhite = {backgroundColor:'#F5F5F5'}; var colShiny = {backgroundColor:'#FFF176'}; // Get the Item Position (we need to substract 100 to match // correct position - var itemPos = $('#'+itemID).offset().top - 100; + var itemPos = $(elm).offset().top - 100; // Scroll to the DIV with the ID (GUID) $('html, body').animate({ scrollTop: itemPos }, 400, function() { // Highlight post/commenent with ID (GUID) - $('#'+itemID).animate(colWhite, 1000).animate(colShiny).animate(colWhite, 600); + $(elm).animate(colWhite, 1000).animate(colShiny).animate(colWhite, 600); }); } From 0ea9af3d7da0d35570de645124f44350bca23397 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 10 Aug 2016 22:51:03 +0200 Subject: [PATCH 07/60] Ping is now using a standard routine to generate the xml. --- include/xml.php | 20 +++-- mod/ping.php | 209 +++++++++++++++++++++++------------------------- 2 files changed, 114 insertions(+), 115 deletions(-) diff --git a/include/xml.php b/include/xml.php index f45d6cade0..3bb376abaf 100644 --- a/include/xml.php +++ b/include/xml.php @@ -61,6 +61,18 @@ class xml { continue; } + $element_parts = explode(":", $key); + if ((count($element_parts) > 1) AND isset($namespaces[$element_parts[0]])) + $namespace = $namespaces[$element_parts[0]]; + elseif (isset($namespaces[""])) { + $namespace = $namespaces[""]; + } else + $namespace = NULL; + + // Remove undefined namespaces from the key + if ((count($element_parts) > 1) AND is_null($namespace)) + $key = $element_parts[1]; + if (substr($key, 0, 11) == "@attributes") { if (!isset($element) OR !is_array($value)) continue; @@ -78,14 +90,6 @@ class xml { continue; } - $element_parts = explode(":", $key); - if ((count($element_parts) > 1) AND isset($namespaces[$element_parts[0]])) - $namespace = $namespaces[$element_parts[0]]; - elseif (isset($namespaces[""])) - $namespace = $namespaces[""]; - else - $namespace = NULL; - if (!is_array($value)) $element = $xml->addChild($key, xmlify($value), $namespace); elseif (is_array($value)) { diff --git a/mod/ping.php b/mod/ping.php index f2e57430d2..4f939eaa0c 100644 --- a/mod/ping.php +++ b/mod/ping.php @@ -4,22 +4,16 @@ require_once('include/bbcode.php'); require_once('include/ForumManager.php'); require_once('include/group.php'); require_once("mod/proxy.php"); +require_once('include/xml.php'); function ping_init(&$a) { - header("Content-type: text/xml"); - - echo " - "; - - $xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">"; - - if(local_user()){ - + if (local_user()){ // Different login session than the page that is calling us. - - if(intval($_GET['uid']) && intval($_GET['uid']) != local_user()) { - echo '1'; + if (intval($_GET['uid']) && intval($_GET['uid']) != local_user()) { + $data = array("invalid" => 1); + header("Content-type: text/xml"); + echo xml::from_array(array("result" => $data)); killme(); } @@ -51,14 +45,14 @@ function ping_init(&$a) { intval(local_user()), intval(local_user()) ); - if(dbm::is_result($r)) { + if (dbm::is_result($r)) { $arr = array('items' => $r); call_hooks('network_ping', $arr); foreach ($r as $it) { - if($it['wall']) + if ($it['wall']) $home ++; else $network ++; @@ -84,20 +78,20 @@ function ping_init(&$a) { if ($it['parent']!=$it['id']) { $comments[] = $it; } else { - if(! $it['wall']) + if (!$it['wall']) $posts[] = $it; } } } } - if($network) { - if(intval(feature_enabled(local_user(),'groups'))) { + if ($network) { + if (intval(feature_enabled(local_user(),'groups'))) { // Find out how unseen network posts are spread across groups $groups_unseen = groups_count_unseen(); } - if(intval(feature_enabled(local_user(),'forumlist_widget'))) { + if (intval(feature_enabled(local_user(),'forumlist_widget'))) { $forums_unseen = ForumManager::count_unseen_items(); } } @@ -128,7 +122,7 @@ function ping_init(&$a) { if ($a->config['register_policy'] == REGISTER_APPROVE && is_site_admin()){ $regs = q("SELECT `contact`.`name`, `contact`.`url`, `contact`.`micro`, `register`.`created`, COUNT(*) as `total` FROM `contact` RIGHT JOIN `register` ON `register`.`uid`=`contact`.`uid` WHERE `contact`.`self`=1"); - if($regs) + if ($regs) $register = $regs[0]['total']; } else { $register = "0"; @@ -150,23 +144,23 @@ function ping_init(&$a) { dbesc(datetime_convert('UTC','UTC','now')) ); - if(dbm::is_result($ev)) { + if (dbm::is_result($ev)) { $all_events = intval($ev[0]['total']); - if($all_events) { + if ($all_events) { $str_now = datetime_convert('UTC',$a->timezone,'now','Y-m-d'); foreach($ev as $x) { $bd = false; - if($x['type'] === 'birthday') { + if ($x['type'] === 'birthday') { $birthdays ++; $bd = true; } else { $events ++; } - if(datetime_convert('UTC',((intval($x['adjust'])) ? $a->timezone : 'UTC'), $x['start'],'Y-m-d') === $str_now) { + if (datetime_convert('UTC',((intval($x['adjust'])) ? $a->timezone : 'UTC'), $x['start'],'Y-m-d') === $str_now) { $all_events_today ++; - if($bd) + if ($bd) $birthdays_today ++; else $events_today ++; @@ -175,92 +169,58 @@ function ping_init(&$a) { } } + $data = array(); + $data["intro"] = $intro; + $data["mail"] = $mail; + $data["net"] = $network; + $data["home"] = $home; - /** - * return xml from notification array - * - * @param array $n Notification array: - * 'href' => notification link - * 'name' => subject name - * 'url' => subject url - * 'photo' => subject photo - * 'date' => notification date - * 'seen' => bool true/false - * 'message' => notification message. "{0}" will be replaced by subject name - **/ - function xmlize($n){ + if ($register!=0) + $data["register"] = $register; - $contact = get_contact_details_by_url($n['url']); - if (isset($contact["micro"])) - $n['photo'] = proxy_url($contact["micro"], false, PROXY_SIZE_MICRO); - else - $n['photo'] = proxy_url($n['photo'], false, PROXY_SIZE_MICRO); + $groups = array(); - $n['message'] = html_entity_decode($n['message'], ENT_COMPAT | ENT_HTML401, "UTF-8"); - $n['name'] = html_entity_decode($n['name'], ENT_COMPAT | ENT_HTML401, "UTF-8"); - - // Are the nofications calles from the regular process or via the friendica app? - $regularnotifications = (intval($_GET['uid']) AND intval($_GET['_'])); - - $a = get_app(); - - if ($a->is_friendica_app() OR !$regularnotifications) - $n['message'] = str_replace("{0}", $n['name'], $n['message']); - - $local_time = datetime_convert('UTC',date_default_timezone_get(),$n['date']); - - call_hooks('ping_xmlize', $n); - $notsxml = '%s'."\n"; - return sprintf ( $notsxml, intval($n['id']), - xmlify($n['href']), xmlify(xmlify($n['name'])), xmlify($n['url']), xmlify($n['photo']), - xmlify(relative_date($n['date'])), xmlify($n['seen']), xmlify(strtotime($local_time)), - xmlify($n['message']) - ); - } - - echo "$intro - $mail - $network - $home\r\n"; - if ($register!=0) echo "$register"; - - if ( dbm::is_result($groups_unseen) ) { - echo ''; + if (dbm::is_result($groups_unseen)) { + $count = 0; foreach ($groups_unseen as $it) - if ($it['count'] > 0) - echo ''.$it['count'].""; - - echo ""; + if ($it['count'] > 0) { + $count++; + $groups[$count.":group"] = $it['count']; + $groups[$count.":@attributes"] = array("id" => $it['id']); + } + $data["groups"] = $groups; } - if ( dbm::is_result($forums_unseen) ) { - echo ''; + $forums = array(); + + if (dbm::is_result($forums_unseen)) { + $count = 0; foreach ($forums_unseen as $it) - if ($it['count'] > 0) - echo ''.$it['count'].""; - - echo ""; + if ($it['count'] > 0) { + $count++; + $forums[$count.":forum"] = $it['count']; + $forums[$count.":@attributes"] = array("id" => $it['id']); + } + $data["forums"] = $forums; } - echo "$all_events - $all_events_today - $events - $events_today - $birthdays - $birthdays_today\r\n"; + $data["all-events"] = $all_events; + $data["all-events-today"] = $all_events_today; + $data["events"] = $events; + $data["events-today"] = $events_today; + $data["birthdays"] = $birthdays; + $data["birthdays-today"] = $birthdays_today; - if (dbm::is_result($notifs) && (! $sysnotify)) { + if (dbm::is_result($notifs) && !$sysnotify) { foreach ($notifs as $zz) { - if($zz['seen'] == 0) + if ($zz['seen'] == 0) $sysnotify ++; } } - echo ' '; - // merge all notification types in one array - if ( dbm::is_result($intros) ) { + if (dbm::is_result($intros)) { foreach ($intros as $i) { $n = array( 'href' => $a->get_baseurl().'/notifications/intros/'.$i['id'], @@ -275,7 +235,7 @@ function ping_init(&$a) { } } - if ( dbm::is_result($mails) ) { + if (dbm::is_result($mails)) { foreach ($mails as $i) { $n = array( 'href' => $a->get_baseurl().'/message/'.$i['id'], @@ -290,7 +250,7 @@ function ping_init(&$a) { } } - if ( dbm::is_result($regs) ) { + if (dbm::is_result($regs)) { foreach ($regs as $i) { $n = array( 'href' => $a->get_baseurl().'/admin/users/', @@ -316,34 +276,69 @@ function ping_init(&$a) { }; usort($notifs, $sort_function); - if( dbm::is_result($notifs) ) { + if (dbm::is_result($notifs)) { + + // Are the nofications calles from the regular process or via the friendica app? + $regularnotifications = (intval($_GET['uid']) AND intval($_GET['_'])); + + $count = 0; foreach($notifs as $n) { - echo xmlize($n); + $count++; + if ($a->is_friendica_app() OR !$regularnotifications) + $n['message'] = str_replace("{0}", $n['name'], $n['message']); + + $notifications[$count.":note"] = $n['message']; + + $contact = get_contact_details_by_url($n['url']); + if (isset($contact["micro"])) + $n['photo'] = proxy_url($contact["micro"], false, PROXY_SIZE_MICRO); + else + $n['photo'] = proxy_url($n['photo'], false, PROXY_SIZE_MICRO); + + $local_time = datetime_convert('UTC',date_default_timezone_get(),$n['date']); + + call_hooks('ping_xmlize', $n); + + $notifications[$count.":@attributes"] = array("id" => $n["id"], + "href" => $n['href'], + "name" => $n['name'], + "url" => $n['url'], + "photo" => $n['photo'], + "date" => relative_date($n['date']), + "seen" => $n['seen'], + "timestamp" => strtotime($local_time)); + } } - - echo " "; + $data["notif"] = $notifications; + $data["@attributes"] = array("count" => $sysnotify + $intro + $mail + $register); } - echo " "; - if(x($_SESSION,'sysmsg')){ + $sysmsg = array(); + + if (x($_SESSION,'sysmsg')){ + $count = 0; foreach ($_SESSION['sysmsg'] as $m){ - echo "".xmlify($m).""; + $count++; + $sysmsg[$count.":notice"] = $m; } unset($_SESSION['sysmsg']); } - if(x($_SESSION,'sysmsg_info')){ + + if (x($_SESSION,'sysmsg_info')){ + $count = 0; foreach ($_SESSION['sysmsg_info'] as $m){ - echo "".xmlify($m).""; + $count++; + $sysmsg[$count.":info"] = $m; } unset($_SESSION['sysmsg_info']); } - echo " "; - echo" - "; + $data["sysmsgs"] = $sysmsg; + header("Content-type: text/xml"); + echo xml::from_array(array("result" => $data)); killme(); } From b6dec53ec1d0db2d9c21c6d076ee76ebf161c32e Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 11 Aug 2016 08:44:03 +0200 Subject: [PATCH 08/60] Bugfix: A parameter in xml::from_array was missing. --- mod/ping.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mod/ping.php b/mod/ping.php index 4f939eaa0c..8c28e74744 100644 --- a/mod/ping.php +++ b/mod/ping.php @@ -8,12 +8,14 @@ require_once('include/xml.php'); function ping_init(&$a) { + $xmlhead = "<"."?xml version='1.0' encoding='UTF-8' ?".">"; + if (local_user()){ // Different login session than the page that is calling us. if (intval($_GET['uid']) && intval($_GET['uid']) != local_user()) { $data = array("invalid" => 1); header("Content-type: text/xml"); - echo xml::from_array(array("result" => $data)); + echo xml::from_array(array("result" => $data), $xml); killme(); } @@ -338,7 +340,7 @@ function ping_init(&$a) { $data["sysmsgs"] = $sysmsg; header("Content-type: text/xml"); - echo xml::from_array(array("result" => $data)); + echo xml::from_array(array("result" => $data), $xml); killme(); } From 1c31526d6e14156a7fda6dde977b7d8e29ddcbc8 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 11 Aug 2016 19:59:07 +0200 Subject: [PATCH 09/60] HTML entities in Notifications aren't a problem anymore --- mod/notifications.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/notifications.php b/mod/notifications.php index d43e2cc04f..af44097c1c 100644 --- a/mod/notifications.php +++ b/mod/notifications.php @@ -285,7 +285,7 @@ function notifications_content(&$a) { '$item_label' => $it['label'], '$item_link' => $it['link'], '$item_image' => $it['image'], - '$item_text' => $it['text'], + '$item_text' => htmlentities($it['text']), '$item_when' => $it['when'], '$item_seen' => $it['seen'], )); From 11e3c3bfad51de30626794fd404a628cc5c322f6 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sat, 13 Aug 2016 12:11:27 +0200 Subject: [PATCH 10/60] DOCS: clarify Settings also discusses the Admin Panel --- doc/Home.md | 2 +- doc/de/Home.md | 2 +- doc/readme.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/Home.md b/doc/Home.md index 1f9b0cfab7..d0f95d0766 100644 --- a/doc/Home.md +++ b/doc/Home.md @@ -28,7 +28,7 @@ Friendica Documentation and Resources **Admin Manual** * [Install](help/Install) -* [Settings](help/Settings) +* [Settings & Admin Panel](help/Settings) * [Installing Connectors (Twitter/GNU Social)](help/Installing-Connectors) * [Install an ejabberd server (XMPP chat) with synchronized credentials](help/install-ejabberd) * [Message Flow](help/Message-Flow) diff --git a/doc/de/Home.md b/doc/de/Home.md index 365e18cb3d..68c026e5c7 100644 --- a/doc/de/Home.md +++ b/doc/de/Home.md @@ -29,7 +29,7 @@ Friendica - Dokumentation und Ressourcen **Technische Dokumentation** * [Installation](help/Install) -* [Konfigurationen](help/Settings) +* [Konfigurationen & Admin-Panel](help/Settings) * [Plugins](help/Plugins) * [Konnektoren (Connectors) installieren (Twitter/GNU Social)](help/Installing-Connectors) * [Installation eines ejabberd Servers (XMPP-Chat) mit synchronisierten Anmeldedaten](help/install-ejabberd) (EN) diff --git a/doc/readme.md b/doc/readme.md index 068d0c9c5c..98b637a22e 100644 --- a/doc/readme.md +++ b/doc/readme.md @@ -27,7 +27,7 @@ Friendica Documentation and Resources **Technical Documentation** * [Install](help/Install) -* [Settings](help/Settings) +* [Settings & Admin Panel](help/Settings) * [Plugins](help/Plugins) * [Installing Connectors (Twitter/GNU Social)](help/Installing-Connectors) * [Install an ejabberd server (XMPP chat) with synchronized credentials](help/install-ejabberd) From 826a13eb23a2eb166a2637f79336903919cbc18c Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Sat, 13 Aug 2016 13:59:55 +0200 Subject: [PATCH 11/60] fix: own calendar is now always exportable for local_user() --- mod/cal.php | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/mod/cal.php b/mod/cal.php index a211a0ead9..ab20617257 100644 --- a/mod/cal.php +++ b/mod/cal.php @@ -304,25 +304,32 @@ function cal_content(&$a) { // Test permissions // Respect the export feature setting for all other /cal pages if it's not the own profile - if( ((local_user() !== $owner_uid)) && ! feature_enabled($owner_uid, "export_calendar")) { + if( ((local_user() !== intval($owner_uid))) && ! feature_enabled($owner_uid, "export_calendar")) { notice( t('Permission denied.') . EOL); - return; + goaway('cal/' . $nick); } // Get the export data by uid $evexport = event_export($owner_uid, $format); - if ($evexport["success"] == false ) { + if (!$evexport["success"]) { if($evexport["content"]) notice( t('This calendar format is not supported') ); else notice( t('No exportable data found')); - return; + // If it the own calendar return to the events page + // otherwise to the profile calendar page + if (local_user() === intval($owner_uid)) + $return_path = "events"; + else + $returnpath = "cal/".$nick; + + goaway($return_path); } // If nothing went wrong we can echo the export content - if ($evexport["success"] == true ) { + if ($evexport["success"]) { header('Content-type: text/calendar'); header('content-disposition: attachment; filename="' . t('calendar') . '-' . $nick . '.' . $evexport["extension"] . '"' ); echo $evexport["content"]; From 2d0c503bf19905be469ddd650c494e7adcc798d0 Mon Sep 17 00:00:00 2001 From: rabuzarus Date: Sat, 13 Aug 2016 18:58:49 +0200 Subject: [PATCH 12/60] frio: fix - permissions string was missing --- mod/events.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mod/events.php b/mod/events.php index 636cf6c579..1b5dfdf31c 100644 --- a/mod/events.php +++ b/mod/events.php @@ -506,7 +506,8 @@ function events_content(&$a) { '$acl' => $acl, '$submit' => t('Submit'), '$basic' => t("Basic"), - '$advanced' => t("Advanced") + '$advanced' => t("Advanced"), + '$permissions' => t('Permissions'), )); From efdb98de6df3b912a3fe553fb23edafd1da9a678 Mon Sep 17 00:00:00 2001 From: rabuzarus Date: Sat, 13 Aug 2016 18:59:59 +0200 Subject: [PATCH 13/60] frio: fix - add string to template --- view/theme/frio/templates/event_form.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/theme/frio/templates/event_form.tpl b/view/theme/frio/templates/event_form.tpl index 97892d186b..55f73ac8e3 100644 --- a/view/theme/frio/templates/event_form.tpl +++ b/view/theme/frio/templates/event_form.tpl @@ -9,7 +9,7 @@ the modal. Changing of the activity status is done by js in event_head.tpl *}}
  • {{$advanced}}
  • - {{if $acl}}
  • Permissions
  • {{/if}} + {{if $acl}}
  • {{$permissions}}
  • {{/if}} {{if $preview}}
  • {{$preview}}
  • {{/if}} {{* commented out because it isn't implemented yet
  • Browser
  • From f79a9f67f17eb4a5f2e0683d1a189cede8722644 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sun, 14 Aug 2016 09:34:50 +0200 Subject: [PATCH 14/60] DOCs we have a new developer forum --- doc/Developers-Intro.md | 4 ++-- doc/Install.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/Developers-Intro.md b/doc/Developers-Intro.md index 8e3cd03b18..068008c281 100644 --- a/doc/Developers-Intro.md +++ b/doc/Developers-Intro.md @@ -16,7 +16,7 @@ Contact us The discussion of Friendica development takes place in the following Friendica forums: -* The main [forum for Friendica development](https://friendika.openmindspace.org/profile/friendicadevelopers) +* The main [forum for Friendica development](https://helpers.pyxis.uberspace.de/profile/developers) * The [forum for Friendica theme development](https://friendica.eu/profile/ftdevs) Help other users @@ -79,7 +79,7 @@ If you want to get involved here: * Look at the first steps that were made (e.g. the clean theme). Ask us to find out whom to talk to about their experiences. * Talk to design people if you know any. -* Let us know about your plans [in the dev forum](https://friendika.openmindspace.org/profile/friendicadevelopers) and the [theme developer forum](https://friendica.eu/profile/ftdevs). +* Let us know about your plans [in the dev forum](https://helpers.pyxis.uberspace.de/profile/developers) and the [theme developer forum](https://friendica.eu/profile/ftdevs). Do not worry about cross-posting. ###Client software diff --git a/doc/Install.md b/doc/Install.md index 5afd5a22c1..9af261e3a8 100644 --- a/doc/Install.md +++ b/doc/Install.md @@ -10,7 +10,7 @@ Not every PHP/MySQL hosting provider will be able to support Friendica. Many will. But **please** review the requirements and confirm these with your hosting provider prior to installation. -Also if you encounter installation issues, please let us know via the [helper](http://helpers.pyxis.uberspace.de/profile/helpers) or the [developer](https://friendika.openmindspace.org/profile/friendicadevelopers) forum or [file an issue](https://github.com/friendica/friendica/issues). +Also if you encounter installation issues, please let us know via the [helper](http://helpers.pyxis.uberspace.de/profile/helpers) or the [developer](https://helpers.pyxis.uberspace.de/profile/developers) forum or [file an issue](https://github.com/friendica/friendica/issues). Please be as clear as you can about your operating environment and provide as much detail as possible about any error messages you may see, so that we can prevent it from happening in the future. Due to the large variety of operating systems and PHP platforms in existence we may have only limited ability to debug your PHP installation or acquire any missing modules - but we will do our best to solve any general code issues. If you do not have a Friendica account yet, you can register a temporary one at [tryfriendica.de](https://tryfriendica.de) and join the forums mentioned above from there. From 67b16507f1747e37b274f170313943b526dd5090 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 14 Aug 2016 21:02:29 +0200 Subject: [PATCH 15/60] Performance improvements for the poller --- boot.php | 14 ++++++- include/poller.php | 7 +++- include/post_update.php | 2 +- include/queue.php | 83 +++++++++++++++++++++-------------------- 4 files changed, 62 insertions(+), 44 deletions(-) diff --git a/boot.php b/boot.php index 679116212c..208293a925 100644 --- a/boot.php +++ b/boot.php @@ -1266,8 +1266,20 @@ class App { function proc_run($args) { // Add the php path if it is a php call - if (count($args) && ($args[0] === 'php' OR is_int($args[0]))) + if (count($args) && ($args[0] === 'php' OR is_int($args[0]))) { + + // If the last worker fork was less than 10 seconds before then don't fork another one. + // This should prevent the forking of masses of workers. + if (get_config("system", "worker")) { + if ((time() - get_config("system", "proc_run_started")) < 10) + return; + + // Set the timestamp of the last proc_run + set_config("system", "proc_run_started", time()); + } + $args[0] = ((x($this->config,'php_path')) && (strlen($this->config['php_path'])) ? $this->config['php_path'] : 'php'); + } // add baseurl to args. cli scripts can't construct it $args[] = $this->get_baseurl(); diff --git a/include/poller.php b/include/poller.php index ecdb9eb0d3..1f4d25732e 100644 --- a/include/poller.php +++ b/include/poller.php @@ -239,10 +239,13 @@ function poller_kill_stale_workers() { $max_duration_defaults = array(PRIORITY_SYSTEM => 360, PRIORITY_HIGH => 10, PRIORITY_MEDIUM => 60, PRIORITY_LOW => 180); $max_duration = $max_duration_defaults[$pid["priority"]]; + $argv = json_decode($pid["parameter"]); + $argv[0] = basename($argv[0]); + // How long is the process already running? $duration = (time() - strtotime($pid["executed"])) / 60; if ($duration > $max_duration) { - logger("Worker process ".$pid["pid"]." (".$pid["parameter"].") took more than ".$max_duration." minutes. It will be killed now."); + logger("Worker process ".$pid["pid"]." (".implode(" ", $argv).") took more than ".$max_duration." minutes. It will be killed now."); posix_kill($pid["pid"], SIGTERM); // We killed the stale process. @@ -254,7 +257,7 @@ function poller_kill_stale_workers() { intval(PRIORITY_LOW), intval($pid["pid"])); } else - logger("Worker process ".$pid["pid"]." now runs for ".round($duration)." of ".$max_duration." allowed minutes. That's okay.", LOGGER_DEBUG); + logger("Worker process ".$pid["pid"]." (".implode(" ", $argv).") now runs for ".round($duration)." of ".$max_duration." allowed minutes. That's okay.", LOGGER_DEBUG); } } diff --git a/include/post_update.php b/include/post_update.php index 6918bf0fa4..d45a51b5f2 100644 --- a/include/post_update.php +++ b/include/post_update.php @@ -159,7 +159,7 @@ function post_update_1198() { logger("Start", LOGGER_DEBUG); // Check if the first step is done (Setting "author-id" and "owner-id" in the item table) - $r = q("SELECT `author-link`, `owner-link`, `uid` FROM `item` WHERE `author-id` = 0 AND `owner-id` = 0 LIMIT 1000"); + $r = q("SELECT `author-link`, `owner-link`, `uid` FROM `item` WHERE `author-id` = 0 AND `owner-id` = 0 LIMIT 100"); if (!$r) { // Are there unfinished entries in the thread table? $r = q("SELECT COUNT(*) AS `total` FROM `thread` diff --git a/include/queue.php b/include/queue.php index 9779a0733d..47a3596bdb 100644 --- a/include/queue.php +++ b/include/queue.php @@ -45,55 +45,57 @@ function queue_run(&$argv, &$argc){ $deadservers = array(); $serverlist = array(); - logger('queue: start'); + if (!$queue_id) { - // Handling the pubsubhubbub requests - proc_run(PRIORITY_HIGH,'include/pubsubpublish.php'); + logger('queue: start'); - $interval = ((get_config('system','delivery_interval') === false) ? 2 : intval(get_config('system','delivery_interval'))); + // Handling the pubsubhubbub requests + proc_run(PRIORITY_HIGH,'include/pubsubpublish.php'); - // If we are using the worker we don't need a delivery interval - if (get_config("system", "worker")) - $interval = false; + $interval = ((get_config('system','delivery_interval') === false) ? 2 : intval(get_config('system','delivery_interval'))); - $r = q("select * from deliverq where 1"); - if($r) { - foreach($r as $rr) { - logger('queue: deliverq'); - proc_run(PRIORITY_HIGH,'include/delivery.php',$rr['cmd'],$rr['item'],$rr['contact']); - if($interval) + // If we are using the worker we don't need a delivery interval + if (get_config("system", "worker")) + $interval = false; + + $r = q("select * from deliverq where 1"); + if($r) { + foreach($r as $rr) { + logger('queue: deliverq'); + proc_run(PRIORITY_HIGH,'include/delivery.php',$rr['cmd'],$rr['item'],$rr['contact']); + if($interval) @time_sleep_until(microtime(true) + (float) $interval); + } } - } - $r = q("SELECT `queue`.*, `contact`.`name`, `contact`.`uid` FROM `queue` - INNER JOIN `contact` ON `queue`.`cid` = `contact`.`id` - WHERE `queue`.`created` < UTC_TIMESTAMP() - INTERVAL 3 DAY"); - if($r) { - foreach($r as $rr) { - logger('Removing expired queue item for ' . $rr['name'] . ', uid=' . $rr['uid']); - logger('Expired queue data :' . $rr['content'], LOGGER_DATA); + $r = q("SELECT `queue`.*, `contact`.`name`, `contact`.`uid` FROM `queue` + INNER JOIN `contact` ON `queue`.`cid` = `contact`.`id` + WHERE `queue`.`created` < UTC_TIMESTAMP() - INTERVAL 3 DAY"); + if($r) { + foreach($r as $rr) { + logger('Removing expired queue item for ' . $rr['name'] . ', uid=' . $rr['uid']); + logger('Expired queue data :' . $rr['content'], LOGGER_DATA); + } + q("DELETE FROM `queue` WHERE `created` < UTC_TIMESTAMP() - INTERVAL 3 DAY"); } - q("DELETE FROM `queue` WHERE `created` < UTC_TIMESTAMP() - INTERVAL 3 DAY"); - } - - if($queue_id) { - $r = q("SELECT `id` FROM `queue` WHERE `id` = %d LIMIT 1", - intval($queue_id) - ); - } - else { // For the first 12 hours we'll try to deliver every 15 minutes // After that, we'll only attempt delivery once per hour. $r = q("SELECT `id` FROM `queue` WHERE ((`created` > UTC_TIMESTAMP() - INTERVAL 12 HOUR && `last` < UTC_TIMESTAMP() - INTERVAL 15 MINUTE) OR (`last` < UTC_TIMESTAMP() - INTERVAL 1 HOUR)) ORDER BY `cid`, `created`"); + } else { + logger('queue: start for id '.$queue_id); + + $r = q("SELECT `id` FROM `queue` WHERE `id` = %d LIMIT 1", + intval($queue_id) + ); } - if(! $r){ + + if (!$r){ return; } - if(! $queue_id) + if (!$queue_id) call_hooks('queue_predeliver', $a, $r); @@ -107,16 +109,17 @@ function queue_run(&$argv, &$argc){ // queue_predeliver hooks may have changed the queue db details, // so check again if this entry still needs processing - if($queue_id) { + if($queue_id) $qi = q("SELECT * FROM `queue` WHERE `id` = %d LIMIT 1", - intval($queue_id) - ); - } - else { + intval($queue_id)); + elseif (get_config("system", "worker")) { + logger('Call queue for id '.$q_item['id']); + proc_run(PRIORITY_LOW, "include/queue.php", $q_item['id']); + continue; + } else $qi = q("SELECT * FROM `queue` WHERE `id` = %d AND `last` < UTC_TIMESTAMP() - INTERVAL 15 MINUTE ", - intval($q_item['id']) - ); - } + intval($q_item['id'])); + if(! count($qi)) continue; From fe5182559fc2f5ce2466943146a2f61a726278c9 Mon Sep 17 00:00:00 2001 From: gerhard6380 Date: Wed, 10 Aug 2016 23:56:17 +0200 Subject: [PATCH 16/60] new API calls for private messsages in Win10 app new API calls used for Windows 10 app (similar calls to existing but extended to include seen id and parent-uri) --- include/api.php | 383 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 383 insertions(+) diff --git a/include/api.php b/include/api.php index a856b747f8..8b8ec4c6f5 100644 --- a/include/api.php +++ b/include/api.php @@ -3664,6 +3664,389 @@ api_register_func('api/friendica/notification', 'api_friendica_notification', true, API_METHOD_GET); + /** + * @brief same as api_format_messages, but output extended by seen and parent-uri as needed + * in Windows 10 client + * + * @param array $item + * @param array $recipient + * @param array $sender + * @return array $ret + */ + function api_format_messages_win($item, $recipient, $sender) { + // standard meta information + $ret=Array( + 'id' => $item['id'], + 'sender_id' => $sender['id'] , + 'text' => "", + 'recipient_id' => $recipient['id'], + 'created_at' => api_date($item['created']), + 'sender_screen_name' => $sender['screen_name'], + 'recipient_screen_name' => $recipient['screen_name'], + 'sender' => $sender, + 'recipient' => $recipient, + 'title' => "", + 'seen' => $item['seen'], + 'parent_uri' => $item['parent-uri'], + ); + + // "uid" and "self" are only needed for some internal stuff, so remove it from here + unset($ret["sender"]["uid"]); + unset($ret["sender"]["self"]); + unset($ret["recipient"]["uid"]); + unset($ret["recipient"]["self"]); + + //don't send title to regular StatusNET requests to avoid confusing these apps + if (x($_GET, 'getText')) { + $ret['title'] = $item['title'] ; + if ($_GET["getText"] == "html") { + $ret['text'] = bbcode($item['body'], false, false); + } + elseif ($_GET["getText"] == "plain") { + $ret['text'] = trim(html2plain(bbcode(api_clean_plain_items($item['body']), false, false, 2, true), 0)); + } + } + else { + $ret['text'] = $item['title']."\n".html2plain(bbcode(api_clean_plain_items($item['body']), false, false, 2, true), 0); + } + if (isset($_GET["getUserObjects"]) && $_GET["getUserObjects"] == "false") { + unset($ret['sender']); + unset($ret['recipient']); + } + + return $ret; + } + + /** + * @brief return direct_messages for Windows 10 App (similar to direct_messages/all, but seen + * and parent-uri added to output + * + * @param App $a + * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' + * @return string + */ + function api_friendica_direct_messages_all($type){ + $a = get_app(); + + if (api_user()===false) throw new ForbiddenException(); + + // params + $count = (x($_GET,'count')?$_GET['count']:20); + $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0); + if ($page<0) $page=0; + + $since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0); + $max_id = (x($_REQUEST,'max_id')?$_REQUEST['max_id']:0); + + $user_id = (x($_REQUEST,'user_id')?$_REQUEST['user_id']:""); + $screen_name = (x($_REQUEST,'screen_name')?$_REQUEST['screen_name']:""); + + // caller user info + unset($_REQUEST["user_id"]); + unset($_GET["user_id"]); + + unset($_REQUEST["screen_name"]); + unset($_GET["screen_name"]); + + $user_info = api_get_user($a); + $profile_url = $user_info["url"]; + + // pagination + $start = $page*$count; + + // filters + $sql_extra = "true"; + + if ($max_id > 0) + $sql_extra .= ' AND `mail`.`id` <= '.intval($max_id); + + if ($user_id !="") { + $sql_extra .= ' AND `mail`.`contact-id` = ' . intval($user_id); + } + elseif($screen_name !=""){ + $sql_extra .= " AND `contact`.`nick` = '" . dbesc($screen_name). "'"; + } + + $r = q("SELECT `mail`.*, `contact`.`nurl` AS `contact-url` FROM `mail`,`contact` WHERE `mail`.`contact-id` = `contact`.`id` AND `mail`.`uid`=%d AND $sql_extra AND `mail`.`id` > %d ORDER BY `mail`.`id` DESC LIMIT %d,%d", + intval(api_user()), + intval($since_id), + intval($start), intval($count) + ); + + // stop execution and return error message if no mails available + if($r == null) { + $answer = array('result' => 'error', 'message' => 'no mails available'); + return api_format_data("direct_messages_all", $type, array('$result' => $answer)); + } + + $ret = Array(); + foreach($r as $item) { + if ($box == "inbox" || $item['from-url'] != $profile_url){ + $recipient = $user_info; + $sender = api_get_user($a,normalise_link($item['contact-url'])); + } + elseif ($box == "sentbox" || $item['from-url'] == $profile_url){ + $recipient = api_get_user($a,normalise_link($item['contact-url'])); + $sender = $user_info; + + } + $ret[]=api_format_messages_win($item, $recipient, $sender); + } + + + $data = array('$messages' => $ret); + switch($type){ + case "atom": + case "rss": + $data = api_rss_extra($a, $data, $user_info); + } + + return api_format_data("direct_messages_all", $type, $data); + + } + api_register_func('api/friendica/direct_messages_all', 'api_friendica_direct_messages_all', true); + + + /** + * @brief update a direct_message to seen state for Windows 10 App + * + * @param App $a + * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' + * @return string + */ + function api_friendica_direct_messages_setseen($type){ + $a = get_app(); + if (api_user()===false) throw new ForbiddenException(); + + // params + $user_info = api_get_user($a); + $uid = $user_info['uid']; + $id = (x($_REQUEST, 'id') ? $_REQUEST['id'] : 0); + + // return error if id is zero + if ($id == "") { + $answer = array('result' => 'error', 'message' => 'message id not specified'); + return api_format_data("direct_messages_setseen", $type, array('$result' => $answer)); + } + + // get data of the specified message id + $r = q("SELECT * FROM `mail` WHERE `id` = %d AND `uid` = %d", + intval($id), + intval($uid)); + // error message if specified id is not in database + if (count($r) == 0) { + $answer = array('result' => 'error', 'message' => 'message id not in database'); + return api_format_data("direct_messages_setseen", $type, array('$result' => $answer)); + } + + // update seen indicator + $result = q("UPDATE `mail` SET `seen` = 1 WHERE `id` = %d AND `uid` = %d", + intval($id), + intval($uid)); + + if ($result) { + // return success + $answer = array('result' => 'ok', 'message' => 'message set to seen'); + return api_format_data("direct_message_setseen", $type, array('$result' => $answer)); + } else { + $answer = array('result' => 'error', 'message' => 'unknown error'); + return api_format_data("direct_messages_setseen", $type, array('$result' => $answer)); + } + } + api_register_func('api/friendica/direct_messages_setseen', 'api_friendica_direct_messages_setseen', true); + + + /** + * @brief delete a direct_message from mail table through api + * + * @param App $a + * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' + * @return string + */ + function api_friendica_direct_messages_delete($type){ + $a = get_app(); + + if (api_user()===false) throw new ForbiddenException(); + + // params + $user_info = api_get_user($a); + $id = (x($_REQUEST,'id') ? $_REQUEST['id'] : 0); + $parenturi = (x($_REQUEST, 'parenturi') ? $_REQUEST['parenturi'] : ""); + $uid = $user_info['uid']; + + // error if no id or parenturi specified + if ($id == 0 || $parenturi == "") { + $answer = array('result' => 'error', 'message' => 'message id or parenturi not specified'); + return api_format_data("direct_messages_delete", $type, array('$result' => $answer)); + } + + // get data of the specified message id + $r = q("SELECT * FROM `mail` WHERE `uid` = %d AND `id` = %d", + intval($uid), + intval($id)); + // error message if specified id is not in database + if (count($r) == 0) { + $answer = array('result' => 'error', 'message' => 'message id not in database'); + return api_format_data("direct_messages_delete", $type, array('$result' => $answer)); + } + + // delete message + $result = q("DELETE FROM `mail` WHERE `uid` = %d AND `id` = %d AND `parent-uri` = '%s'", + intval($uid), + intval($id), + dbesc($parenturi)); + + if ($result) { + // return success + $answer = array('result' => 'ok', 'message' => 'message deleted'); + return api_format_data("direct_message_delete", $type, array('$result' => $answer)); + } + else { + $answer = array('result' => 'error', 'message' => 'unknown error'); + return api_format_data("direct_messages_delete", $type, array('$result' => $answer)); + } + } + api_register_func('api/friendica/direct_messages_delete', 'api_friendica_direct_messages_delete', true); + + + /** + * @brief search for direct_messages containing a searchstring through api + * + * @param App $a + * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' + * @return string + */ + function api_friendica_direct_messages_search($type){ + $a = get_app(); + + if (api_user()===false) throw new ForbiddenException(); + + // params + $user_info = api_get_user($a); + $searchstring = (x($_REQUEST,'searchstring') ? $_REQUEST['searchstring'] : ""); + $uid = $user_info['uid']; + + // error if no searchstring specified + if ($searchstring == "") { + $answer = array('result' => 'error', 'message' => 'searchstring not specified'); + return api_format_data("direct_messages_search", $type, array('$result' => $answer)); + } + + // get data for the specified searchstring + $r = q("SELECT `mail`.*, `contact`.`nurl` AS `contact-url` FROM `mail`,`contact` WHERE `mail`.`contact-id` = `contact`.`id` AND `mail`.`uid`=%d AND `body` LIKE '%s' ORDER BY `mail`.`id` DESC", + intval($uid), + dbesc('%'.$searchstring.'%') + ); + + $profile_url = $user_info["url"]; + // message if nothing was found + if (count($r) == 0) + $success = array('success' => false, 'search_results' => 'nothing found'); + else { + $ret = Array(); + foreach($r as $item) { + if ($box == "inbox" || $item['from-url'] != $profile_url){ + $recipient = $user_info; + $sender = api_get_user($a,normalise_link($item['contact-url'])); + } + elseif ($box == "sentbox" || $item['from-url'] == $profile_url){ + $recipient = api_get_user($a,normalise_link($item['contact-url'])); + $sender = $user_info; + } + $ret[]=api_format_messages_win($item, $recipient, $sender); + } + $success = array('success' => true, 'search_results' => $ret); + } + + return api_format_data("direct_message_search", $type, array('$result' => $success)); + } + api_register_func('api/friendica/direct_messages_search', 'api_friendica_direct_messages_search', true); + + + /** + * @brief returns all messages for a specified parenturi, similar to api/direct_messages/conversation but enhanced to return parenturi and seen state + * + * @param App $a + * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' + * @return string + */ + function api_friendica_direct_messages_conversation($type) { + $a = get_app(); + if (api_user()===false) return false; + + // params + $count = (x($_GET,'count')?$_GET['count']:20); + $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0); + if ($page<0) $page=0; + + $since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0); + $max_id = (x($_REQUEST,'max_id')?$_REQUEST['max_id']:0); + + $user_id = (x($_REQUEST,'user_id')?$_REQUEST['user_id']:""); + $screen_name = (x($_REQUEST,'screen_name')?$_REQUEST['screen_name']:""); + + // caller user info + unset($_REQUEST["user_id"]); + unset($_GET["user_id"]); + + unset($_REQUEST["screen_name"]); + unset($_GET["screen_name"]); + + $user_info = api_get_user($a); + $profile_url = $user_info["url"]; + + + // pagination + $start = $page*$count; + + $sql_extra = "`mail`.`parent-uri`='".dbesc( $_GET["uri"] ) ."'"; + + if ($max_id > 0) + $sql_extra .= ' AND `mail`.`id` <= '.intval($max_id); + + if ($user_id !="") { + $sql_extra .= ' AND `mail`.`contact-id` = ' . intval($user_id); + } + elseif($screen_name !=""){ + $sql_extra .= " AND `contact`.`nick` = '" . dbesc($screen_name). "'"; + } + + $r = q("SELECT `mail`.*, `contact`.`nurl` AS `contact-url` FROM `mail`,`contact` WHERE `mail`.`contact-id` = `contact`.`id` AND `mail`.`uid`=%d AND $sql_extra AND `mail`.`id` > %d ORDER BY `mail`.`id` DESC LIMIT %d,%d", + intval(api_user()), + intval($since_id), + intval($start), intval($count) + ); + + + $ret = Array(); + foreach($r as $item) { + if ($box == "inbox" || $item['from-url'] != $profile_url){ + $recipient = $user_info; + $sender = api_get_user($a,normalise_link($item['contact-url'])); + } + elseif ($box == "sentbox" || $item['from-url'] == $profile_url){ + $recipient = api_get_user($a,normalise_link($item['contact-url'])); + $sender = $user_info; + + } + $ret[]=api_format_messages_win($item, $recipient, $sender); + } + + + $data = array('$messages' => $ret); + switch($type){ + case "atom": + case "rss": + $data = api_rss_extra($a, $data, $user_info); + } + + return api_format_data("direct_messages", $type, $data); + + } + + api_register_func('api/friendica/direct_messages_conversation','api_friendica_direct_messages_conversation',true); + + /* To.Do: [pagename] => api/1.1/statuses/lookup.json From f99a646328aac2345fe186b8f414bc78baafd048 Mon Sep 17 00:00:00 2001 From: gerhard6380 Date: Thu, 11 Aug 2016 17:34:33 +0200 Subject: [PATCH 17/60] remove api_format_messages_win and include new fields in api_format_messages --- include/api.php | 62 +++++-------------------------------------------- 1 file changed, 6 insertions(+), 56 deletions(-) diff --git a/include/api.php b/include/api.php index 8b8ec4c6f5..c60575638a 100644 --- a/include/api.php +++ b/include/api.php @@ -2049,6 +2049,9 @@ 'recipient_screen_name' => $recipient['screen_name'], 'sender' => $sender, 'recipient' => $recipient, + 'title' => "", + 'friendica_seen' => $item['seen'], + 'friendica_parent_uri' => $item['parent-uri'], ); // "uid" and "self" are only needed for some internal stuff, so remove it from here @@ -3664,59 +3667,6 @@ api_register_func('api/friendica/notification', 'api_friendica_notification', true, API_METHOD_GET); - /** - * @brief same as api_format_messages, but output extended by seen and parent-uri as needed - * in Windows 10 client - * - * @param array $item - * @param array $recipient - * @param array $sender - * @return array $ret - */ - function api_format_messages_win($item, $recipient, $sender) { - // standard meta information - $ret=Array( - 'id' => $item['id'], - 'sender_id' => $sender['id'] , - 'text' => "", - 'recipient_id' => $recipient['id'], - 'created_at' => api_date($item['created']), - 'sender_screen_name' => $sender['screen_name'], - 'recipient_screen_name' => $recipient['screen_name'], - 'sender' => $sender, - 'recipient' => $recipient, - 'title' => "", - 'seen' => $item['seen'], - 'parent_uri' => $item['parent-uri'], - ); - - // "uid" and "self" are only needed for some internal stuff, so remove it from here - unset($ret["sender"]["uid"]); - unset($ret["sender"]["self"]); - unset($ret["recipient"]["uid"]); - unset($ret["recipient"]["self"]); - - //don't send title to regular StatusNET requests to avoid confusing these apps - if (x($_GET, 'getText')) { - $ret['title'] = $item['title'] ; - if ($_GET["getText"] == "html") { - $ret['text'] = bbcode($item['body'], false, false); - } - elseif ($_GET["getText"] == "plain") { - $ret['text'] = trim(html2plain(bbcode(api_clean_plain_items($item['body']), false, false, 2, true), 0)); - } - } - else { - $ret['text'] = $item['title']."\n".html2plain(bbcode(api_clean_plain_items($item['body']), false, false, 2, true), 0); - } - if (isset($_GET["getUserObjects"]) && $_GET["getUserObjects"] == "false") { - unset($ret['sender']); - unset($ret['recipient']); - } - - return $ret; - } - /** * @brief return direct_messages for Windows 10 App (similar to direct_messages/all, but seen * and parent-uri added to output @@ -3790,7 +3740,7 @@ $sender = $user_info; } - $ret[]=api_format_messages_win($item, $recipient, $sender); + $ret[]=api_format_messages($item, $recipient, $sender); } @@ -3953,7 +3903,7 @@ $recipient = api_get_user($a,normalise_link($item['contact-url'])); $sender = $user_info; } - $ret[]=api_format_messages_win($item, $recipient, $sender); + $ret[]=api_format_messages($item, $recipient, $sender); } $success = array('success' => true, 'search_results' => $ret); } @@ -4029,7 +3979,7 @@ $sender = $user_info; } - $ret[]=api_format_messages_win($item, $recipient, $sender); + $ret[]=api_format_messages($item, $recipient, $sender); } From f9f1825e333fa2d111ea264bab392fb1be58b3aa Mon Sep 17 00:00:00 2001 From: gerhard6380 Date: Thu, 11 Aug 2016 23:53:00 +0200 Subject: [PATCH 18/60] Removing api_friendica_direct_messages_conversations due to implementing 'seen' and 'parent-uri' into standard api_format_messages() this call is not needed anymore. Adapting comment blocks. --- include/api.php | 108 +++++------------------------------------------- 1 file changed, 11 insertions(+), 97 deletions(-) diff --git a/include/api.php b/include/api.php index c60575638a..fdaf50e661 100644 --- a/include/api.php +++ b/include/api.php @@ -3668,12 +3668,11 @@ /** - * @brief return direct_messages for Windows 10 App (similar to direct_messages/all, but seen - * and parent-uri added to output + * @brief return direct_messages (similar to direct_messages/all, but additional + * error string returned if no mails available to react in client with notification) * - * @param App $a * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' - * @return string + * @return string (error -> No Mails available, success -> return messages) */ function api_friendica_direct_messages_all($type){ $a = get_app(); @@ -3744,25 +3743,24 @@ } - $data = array('$messages' => $ret); + $data = array('direct-messages' => $ret); switch($type){ case "atom": case "rss": $data = api_rss_extra($a, $data, $user_info); } - return api_format_data("direct_messages_all", $type, $data); + return api_format_data("direct-messages", $type, $data); } api_register_func('api/friendica/direct_messages_all', 'api_friendica_direct_messages_all', true); /** - * @brief update a direct_message to seen state for Windows 10 App + * @brief update a direct_message to seen state * - * @param App $a * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' - * @return string + * @return string (success result=ok, error result=error with error message) */ function api_friendica_direct_messages_setseen($type){ $a = get_app(); @@ -3809,9 +3807,8 @@ /** * @brief delete a direct_message from mail table through api * - * @param App $a * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' - * @return string + * @return string (success result=ok, error result=error with error message) */ function api_friendica_direct_messages_delete($type){ $a = get_app(); @@ -3862,9 +3859,10 @@ /** * @brief search for direct_messages containing a searchstring through api * - * @param App $a * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' - * @return string + * @return string (success: success=true if found and search_result contains found messages + * success=false if nothing was found, search_result='nothing found', + * error: result=error with error message) */ function api_friendica_direct_messages_search($type){ $a = get_app(); @@ -3913,90 +3911,6 @@ api_register_func('api/friendica/direct_messages_search', 'api_friendica_direct_messages_search', true); - /** - * @brief returns all messages for a specified parenturi, similar to api/direct_messages/conversation but enhanced to return parenturi and seen state - * - * @param App $a - * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' - * @return string - */ - function api_friendica_direct_messages_conversation($type) { - $a = get_app(); - if (api_user()===false) return false; - - // params - $count = (x($_GET,'count')?$_GET['count']:20); - $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0); - if ($page<0) $page=0; - - $since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0); - $max_id = (x($_REQUEST,'max_id')?$_REQUEST['max_id']:0); - - $user_id = (x($_REQUEST,'user_id')?$_REQUEST['user_id']:""); - $screen_name = (x($_REQUEST,'screen_name')?$_REQUEST['screen_name']:""); - - // caller user info - unset($_REQUEST["user_id"]); - unset($_GET["user_id"]); - - unset($_REQUEST["screen_name"]); - unset($_GET["screen_name"]); - - $user_info = api_get_user($a); - $profile_url = $user_info["url"]; - - - // pagination - $start = $page*$count; - - $sql_extra = "`mail`.`parent-uri`='".dbesc( $_GET["uri"] ) ."'"; - - if ($max_id > 0) - $sql_extra .= ' AND `mail`.`id` <= '.intval($max_id); - - if ($user_id !="") { - $sql_extra .= ' AND `mail`.`contact-id` = ' . intval($user_id); - } - elseif($screen_name !=""){ - $sql_extra .= " AND `contact`.`nick` = '" . dbesc($screen_name). "'"; - } - - $r = q("SELECT `mail`.*, `contact`.`nurl` AS `contact-url` FROM `mail`,`contact` WHERE `mail`.`contact-id` = `contact`.`id` AND `mail`.`uid`=%d AND $sql_extra AND `mail`.`id` > %d ORDER BY `mail`.`id` DESC LIMIT %d,%d", - intval(api_user()), - intval($since_id), - intval($start), intval($count) - ); - - - $ret = Array(); - foreach($r as $item) { - if ($box == "inbox" || $item['from-url'] != $profile_url){ - $recipient = $user_info; - $sender = api_get_user($a,normalise_link($item['contact-url'])); - } - elseif ($box == "sentbox" || $item['from-url'] == $profile_url){ - $recipient = api_get_user($a,normalise_link($item['contact-url'])); - $sender = $user_info; - - } - $ret[]=api_format_messages($item, $recipient, $sender); - } - - - $data = array('$messages' => $ret); - switch($type){ - case "atom": - case "rss": - $data = api_rss_extra($a, $data, $user_info); - } - - return api_format_data("direct_messages", $type, $data); - - } - - api_register_func('api/friendica/direct_messages_conversation','api_friendica_direct_messages_conversation',true); - - /* To.Do: [pagename] => api/1.1/statuses/lookup.json From ef0cc850d4931c893adfa7ae6c06baba152522f4 Mon Sep 17 00:00:00 2001 From: gerhard6380 Date: Fri, 12 Aug 2016 15:40:22 +0200 Subject: [PATCH 19/60] remove api_friendica_direct_messages_all instead included 'friendica_verbose' parameter into standard function api_direct_messages_box() --- include/api.php | 111 +++++++----------------------------------------- 1 file changed, 16 insertions(+), 95 deletions(-) diff --git a/include/api.php b/include/api.php index fdaf50e661..df93c2aefb 100644 --- a/include/api.php +++ b/include/api.php @@ -2808,7 +2808,7 @@ } api_register_func('api/direct_messages/new','api_direct_messages_new',true, API_METHOD_POST); - function api_direct_messages_box($type, $box) { + function api_direct_messages_box($type, $box, $verbose) { $a = get_app(); @@ -2868,7 +2868,13 @@ intval($since_id), intval($start), intval($count) ); - + if ($verbose == "true") { + // stop execution and return error message if no mails available + if($r == null) { + $answer = array('result' => 'error', 'message' => 'no mails available'); + return api_format_data("direct_messages_all", $type, array('$result' => $answer)); + } + } $ret = Array(); foreach($r as $item) { @@ -2897,16 +2903,20 @@ } function api_direct_messages_sentbox($type){ - return api_direct_messages_box($type, "sentbox"); + $verbose = (x($_GET,'friendica_verbose')?strtolower($_GET['friendica_verbose']):"false"); + return api_direct_messages_box($type, "sentbox", $verbose); } function api_direct_messages_inbox($type){ - return api_direct_messages_box($type, "inbox"); + $verbose = (x($_GET,'friendica_verbose')?strtolower($_GET['friendica_verbose']):"false"); + return api_direct_messages_box($type, "inbox", $verbose); } function api_direct_messages_all($type){ - return api_direct_messages_box($type, "all"); + $verbose = (x($_GET,'friendica_verbose')?strtolower($_GET['friendica_verbose']):"false"); + return api_direct_messages_box($type, "all", $verbose); } function api_direct_messages_conversation($type){ - return api_direct_messages_box($type, "conversation"); + $verbose = (x($_GET,'friendica_verbose')?strtolower($_GET['friendica_verbose']):"false"); + return api_direct_messages_box($type, "conversation", $verbose); } api_register_func('api/direct_messages/conversation','api_direct_messages_conversation',true); api_register_func('api/direct_messages/all','api_direct_messages_all',true); @@ -3667,95 +3677,6 @@ api_register_func('api/friendica/notification', 'api_friendica_notification', true, API_METHOD_GET); - /** - * @brief return direct_messages (similar to direct_messages/all, but additional - * error string returned if no mails available to react in client with notification) - * - * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' - * @return string (error -> No Mails available, success -> return messages) - */ - function api_friendica_direct_messages_all($type){ - $a = get_app(); - - if (api_user()===false) throw new ForbiddenException(); - - // params - $count = (x($_GET,'count')?$_GET['count']:20); - $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0); - if ($page<0) $page=0; - - $since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0); - $max_id = (x($_REQUEST,'max_id')?$_REQUEST['max_id']:0); - - $user_id = (x($_REQUEST,'user_id')?$_REQUEST['user_id']:""); - $screen_name = (x($_REQUEST,'screen_name')?$_REQUEST['screen_name']:""); - - // caller user info - unset($_REQUEST["user_id"]); - unset($_GET["user_id"]); - - unset($_REQUEST["screen_name"]); - unset($_GET["screen_name"]); - - $user_info = api_get_user($a); - $profile_url = $user_info["url"]; - - // pagination - $start = $page*$count; - - // filters - $sql_extra = "true"; - - if ($max_id > 0) - $sql_extra .= ' AND `mail`.`id` <= '.intval($max_id); - - if ($user_id !="") { - $sql_extra .= ' AND `mail`.`contact-id` = ' . intval($user_id); - } - elseif($screen_name !=""){ - $sql_extra .= " AND `contact`.`nick` = '" . dbesc($screen_name). "'"; - } - - $r = q("SELECT `mail`.*, `contact`.`nurl` AS `contact-url` FROM `mail`,`contact` WHERE `mail`.`contact-id` = `contact`.`id` AND `mail`.`uid`=%d AND $sql_extra AND `mail`.`id` > %d ORDER BY `mail`.`id` DESC LIMIT %d,%d", - intval(api_user()), - intval($since_id), - intval($start), intval($count) - ); - - // stop execution and return error message if no mails available - if($r == null) { - $answer = array('result' => 'error', 'message' => 'no mails available'); - return api_format_data("direct_messages_all", $type, array('$result' => $answer)); - } - - $ret = Array(); - foreach($r as $item) { - if ($box == "inbox" || $item['from-url'] != $profile_url){ - $recipient = $user_info; - $sender = api_get_user($a,normalise_link($item['contact-url'])); - } - elseif ($box == "sentbox" || $item['from-url'] == $profile_url){ - $recipient = api_get_user($a,normalise_link($item['contact-url'])); - $sender = $user_info; - - } - $ret[]=api_format_messages($item, $recipient, $sender); - } - - - $data = array('direct-messages' => $ret); - switch($type){ - case "atom": - case "rss": - $data = api_rss_extra($a, $data, $user_info); - } - - return api_format_data("direct-messages", $type, $data); - - } - api_register_func('api/friendica/direct_messages_all', 'api_friendica_direct_messages_all', true); - - /** * @brief update a direct_message to seen state * From 01a2eb3555d8c3e07162a181e1ceb53008935bf1 Mon Sep 17 00:00:00 2001 From: gerhard6380 Date: Fri, 12 Aug 2016 18:15:03 +0200 Subject: [PATCH 20/60] Implement api/direct_messages/destroy Twitter compliant call replaces api/friendica/direct_messages_delete; JSON return expected by Twitter API and parameter include_entities not yet implemented --- include/api.php | 123 ++++++++++++++++++++++++++++-------------------- 1 file changed, 73 insertions(+), 50 deletions(-) diff --git a/include/api.php b/include/api.php index df93c2aefb..666bafcec9 100644 --- a/include/api.php +++ b/include/api.php @@ -2808,6 +2808,79 @@ } api_register_func('api/direct_messages/new','api_direct_messages_new',true, API_METHOD_POST); + + /** + * @brief delete a direct_message from mail table through api + * + * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' + * @return string + */ + function api_direct_messages_destroy($type){ + $a = get_app(); + + if (api_user()===false) throw new ForbiddenException(); + + // params + $user_info = api_get_user($a); + //required + $id = (x($_REQUEST,'id') ? $_REQUEST['id'] : 0); + // optional + $parenturi = (x($_REQUEST, 'friendica_parenturi') ? $_REQUEST['friendica_parenturi'] : ""); + $verbose = (x($_GET,'friendica_verbose')?strtolower($_GET['friendica_verbose']):"false"); + // TODO: optional parameter 'include_entities' from Twitter API not yet implemented + + $uid = $user_info['uid']; + // error if no id or parenturi specified (for clients posting parent-uri as well) + if ($verbose == "true") { + if ($id == 0 || $parenturi == "") { + $answer = array('result' => 'error', 'message' => 'message id or parenturi not specified'); + return api_format_data("direct_messages_delete", $type, array('$result' => $answer)); + } + } + + // BadRequestException if no id specified (for clients using Twitter API) + if ($id == 0) throw new BadRequestException('Message id not specified'); + + // add parent-uri to sql command if specified by calling app + $sql_extra = ($parenturi != "" ? " AND `parent-uri` = '" . dbesc($parenturi) . "'" : ""); + + // get data of the specified message id + $r = q("SELECT * FROM `mail` WHERE `uid` = %d AND `id` = %d" . $sql_extra, + intval($uid), + intval($id)); + + // error message if specified id is not in database + if (count($r) == 0) { + if ($verbose == "true") { + $answer = array('result' => 'error', 'message' => 'message id not in database'); + return api_format_data("direct_messages_delete", $type, array('$result' => $answer)); + } + // TODO: BadRequestException ok for Twitter API clients? + throw new BadRequestException('message id not in database'); + } + + // delete message + $result = q("DELETE FROM `mail` WHERE `uid` = %d AND `id` = %d" . $sql_extra, + intval($uid), + intval($id)); + + if ($verbose == "true") { + if ($result) { + // return success + $answer = array('result' => 'ok', 'message' => 'message deleted'); + return api_format_data("direct_message_delete", $type, array('$result' => $answer)); + } + else { + $answer = array('result' => 'error', 'message' => 'unknown error'); + return api_format_data("direct_messages_delete", $type, array('$result' => $answer)); + } + } + // TODO: return JSON data like Twitter API not yet implemented + + } + api_register_func('api/direct_messages/destroy', 'api_direct_messages_destroy', true, API_METHOD_DELETE); + + function api_direct_messages_box($type, $box, $verbose) { $a = get_app(); @@ -3725,56 +3798,6 @@ api_register_func('api/friendica/direct_messages_setseen', 'api_friendica_direct_messages_setseen', true); - /** - * @brief delete a direct_message from mail table through api - * - * @param string $type Known types are 'atom', 'rss', 'xml' and 'json' - * @return string (success result=ok, error result=error with error message) - */ - function api_friendica_direct_messages_delete($type){ - $a = get_app(); - - if (api_user()===false) throw new ForbiddenException(); - - // params - $user_info = api_get_user($a); - $id = (x($_REQUEST,'id') ? $_REQUEST['id'] : 0); - $parenturi = (x($_REQUEST, 'parenturi') ? $_REQUEST['parenturi'] : ""); - $uid = $user_info['uid']; - - // error if no id or parenturi specified - if ($id == 0 || $parenturi == "") { - $answer = array('result' => 'error', 'message' => 'message id or parenturi not specified'); - return api_format_data("direct_messages_delete", $type, array('$result' => $answer)); - } - - // get data of the specified message id - $r = q("SELECT * FROM `mail` WHERE `uid` = %d AND `id` = %d", - intval($uid), - intval($id)); - // error message if specified id is not in database - if (count($r) == 0) { - $answer = array('result' => 'error', 'message' => 'message id not in database'); - return api_format_data("direct_messages_delete", $type, array('$result' => $answer)); - } - - // delete message - $result = q("DELETE FROM `mail` WHERE `uid` = %d AND `id` = %d AND `parent-uri` = '%s'", - intval($uid), - intval($id), - dbesc($parenturi)); - - if ($result) { - // return success - $answer = array('result' => 'ok', 'message' => 'message deleted'); - return api_format_data("direct_message_delete", $type, array('$result' => $answer)); - } - else { - $answer = array('result' => 'error', 'message' => 'unknown error'); - return api_format_data("direct_messages_delete", $type, array('$result' => $answer)); - } - } - api_register_func('api/friendica/direct_messages_delete', 'api_friendica_direct_messages_delete', true); /** From 078767630c306282bef425011bbea8e2ef0aedfa Mon Sep 17 00:00:00 2001 From: gerhard6380 Date: Sat, 13 Aug 2016 13:08:16 +0200 Subject: [PATCH 21/60] improved sql statements for direct_messages calls --- include/api.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/include/api.php b/include/api.php index 666bafcec9..a380845ed1 100644 --- a/include/api.php +++ b/include/api.php @@ -2827,7 +2827,7 @@ // optional $parenturi = (x($_REQUEST, 'friendica_parenturi') ? $_REQUEST['friendica_parenturi'] : ""); $verbose = (x($_GET,'friendica_verbose')?strtolower($_GET['friendica_verbose']):"false"); - // TODO: optional parameter 'include_entities' from Twitter API not yet implemented + /// @todo optional parameter 'include_entities' from Twitter API not yet implemented $uid = $user_info['uid']; // error if no id or parenturi specified (for clients posting parent-uri as well) @@ -2845,17 +2845,17 @@ $sql_extra = ($parenturi != "" ? " AND `parent-uri` = '" . dbesc($parenturi) . "'" : ""); // get data of the specified message id - $r = q("SELECT * FROM `mail` WHERE `uid` = %d AND `id` = %d" . $sql_extra, + $r = q("SELECT `id` FROM `mail` WHERE `uid` = %d AND `id` = %d" . $sql_extra, intval($uid), intval($id)); // error message if specified id is not in database - if (count($r) == 0) { + if (!dbm::is_result($r)) { if ($verbose == "true") { $answer = array('result' => 'error', 'message' => 'message id not in database'); return api_format_data("direct_messages_delete", $type, array('$result' => $answer)); } - // TODO: BadRequestException ok for Twitter API clients? + /// @todo BadRequestException ok for Twitter API clients? throw new BadRequestException('message id not in database'); } @@ -2875,7 +2875,7 @@ return api_format_data("direct_messages_delete", $type, array('$result' => $answer)); } } - // TODO: return JSON data like Twitter API not yet implemented + /// @todo return JSON data like Twitter API not yet implemented } api_register_func('api/direct_messages/destroy', 'api_direct_messages_destroy', true, API_METHOD_DELETE); @@ -3772,11 +3772,11 @@ } // get data of the specified message id - $r = q("SELECT * FROM `mail` WHERE `id` = %d AND `uid` = %d", + $r = q("SELECT `id` FROM `mail` WHERE `id` = %d AND `uid` = %d", intval($id), intval($uid)); // error message if specified id is not in database - if (count($r) == 0) { + if (!dbm::is_result($r)) { $answer = array('result' => 'error', 'message' => 'message id not in database'); return api_format_data("direct_messages_setseen", $type, array('$result' => $answer)); } From 7daaaf0ab88c47d8df0973f9e1063c5eaa620c43 Mon Sep 17 00:00:00 2001 From: gerhard6380 Date: Sat, 13 Aug 2016 13:19:53 +0200 Subject: [PATCH 22/60] updated api documentation to reflect changes on direct_messages added direct_messages/destroy, friendica/direct_messages_setseen --- doc/api.md | 64 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 56 insertions(+), 8 deletions(-) diff --git a/doc/api.md b/doc/api.md index 7d6f440c58..02295a95fe 100644 --- a/doc/api.md +++ b/doc/api.md @@ -104,6 +104,7 @@ Unofficial Twitter command. It shows all direct answers (excluding the original * max_id: maximum id * getText: Defines the format of the status field. Can be "html" or "plain" * include_entities: "true" shows entities for pictures and links (Default: false) +* friendica_verbose: "true" enables different error returns for Windows 10 app (default: "false") #### Unsupported parameters * skip_status @@ -116,6 +117,7 @@ Unofficial Twitter command. It shows all direct answers (excluding the original * since_id: minimal id * max_id: maximum id * getText: Defines the format of the status field. Can be "html" or "plain" +* friendica_verbose: "true" enables different error returns for Windows 10 app (default: "false") --- ### direct_messages/conversation (*; AUTH) @@ -127,6 +129,18 @@ Shows all direct messages of a conversation * max_id: maximum id * getText: Defines the format of the status field. Can be "html" or "plain" * uri: URI of the conversation +* friendica_verbose: "true" enables different error returns for Windows 10 app (default: "false") + +--- +### direct_messages/sent (*; AUTH) +#### Parameters +* count: Items per page (default: 20) +* page: page number +* since_id: minimal id +* max_id: maximum id +* getText: Defines the format of the status field. Can be "html" or "plain" +* include_entities: "true" shows entities for pictures and links (Default: false) +* friendica_verbose: "true" enables different error returns for Windows 10 app (default: "false") --- ### direct_messages/new (POST,PUT; AUTH) @@ -138,14 +152,22 @@ Shows all direct messages of a conversation * title: Title of the direct message --- -### direct_messages/sent (*; AUTH) +### direct_messages/destroy (POST,DELETE; AUTH) #### Parameters -* count: Items per page (default: 20) -* page: page number -* since_id: minimal id -* max_id: maximum id -* getText: Defines the format of the status field. Can be "html" or "plain" -* include_entities: "true" shows entities for pictures and links (Default: false) +* id: id of the message to be deleted +* include_entities: optional, currently not yet implemented +* friendica_parenturi: optional, can be used for increased safety to delete only intended messages +* friendica_verbose: "true" enables different error returns for Windows 10 app (default: "false") + +#### Return values + +On success: +* JSON return as defined for Twitter API not yet implemented +* on friendica_verbose=true: JSON return {"result":"ok","message":"message deleted"} + +On error: +HTTP 400 BadRequest +* on friendica_verbose=true: different JSON returns {"result":"error","message":"xyz"} --- ### favorites (*; AUTH) @@ -694,6 +716,33 @@ xml ``` +--- +### friendica/direct_messages_setseen (GET; AUTH) +#### Parameters +* id: id of the message to be updated as seen + +#### Return values + +On success: +* JSON return {"result":"ok","message":"message set to seen"} + +On error: +* different JSON returns {"result":"error","message":"xyz"} + +--- +### friendica/direct_messages_search (GET; AUTH) +#### Parameters +* searchstring: string for which the API call should search as '%searchstring%' in field 'body' of all messages of the authenticated user (caption ignored) + +#### Return values +Returns only tested with JSON, XML might work as well. + +On success: +* JSON return {"success":"true","search_results": array of found messages} +* JSOn return {"success":"false","search_results":"nothing found"} + +On error: +* different JSON returns {"result":"error","message":"searchstring not specified"} --- ## Not Implemented API calls @@ -718,7 +767,6 @@ The following API calls from the Twitter API aren't implemented neither in Frien * statuses/lookup * direct_messages/show * search/tweets -* direct_messages/destroy * friendships/no_retweets/ids * friendships/incoming * friendships/outgoing From 728fb76f3d58d2c7daa27f216f38d9dd06954a0b Mon Sep 17 00:00:00 2001 From: gerhard6380 Date: Sat, 13 Aug 2016 16:14:12 +0200 Subject: [PATCH 23/60] adapted documentation removed reference to Windows 10 app --- doc/api.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/api.md b/doc/api.md index 02295a95fe..0570e8e990 100644 --- a/doc/api.md +++ b/doc/api.md @@ -104,7 +104,7 @@ Unofficial Twitter command. It shows all direct answers (excluding the original * max_id: maximum id * getText: Defines the format of the status field. Can be "html" or "plain" * include_entities: "true" shows entities for pictures and links (Default: false) -* friendica_verbose: "true" enables different error returns for Windows 10 app (default: "false") +* friendica_verbose: "true" enables different error returns (default: "false") #### Unsupported parameters * skip_status @@ -117,7 +117,7 @@ Unofficial Twitter command. It shows all direct answers (excluding the original * since_id: minimal id * max_id: maximum id * getText: Defines the format of the status field. Can be "html" or "plain" -* friendica_verbose: "true" enables different error returns for Windows 10 app (default: "false") +* friendica_verbose: "true" enables different error returns (default: "false") --- ### direct_messages/conversation (*; AUTH) @@ -129,7 +129,7 @@ Shows all direct messages of a conversation * max_id: maximum id * getText: Defines the format of the status field. Can be "html" or "plain" * uri: URI of the conversation -* friendica_verbose: "true" enables different error returns for Windows 10 app (default: "false") +* friendica_verbose: "true" enables different error returns (default: "false") --- ### direct_messages/sent (*; AUTH) @@ -140,7 +140,7 @@ Shows all direct messages of a conversation * max_id: maximum id * getText: Defines the format of the status field. Can be "html" or "plain" * include_entities: "true" shows entities for pictures and links (Default: false) -* friendica_verbose: "true" enables different error returns for Windows 10 app (default: "false") +* friendica_verbose: "true" enables different error returns (default: "false") --- ### direct_messages/new (POST,PUT; AUTH) @@ -157,7 +157,7 @@ Shows all direct messages of a conversation * id: id of the message to be deleted * include_entities: optional, currently not yet implemented * friendica_parenturi: optional, can be used for increased safety to delete only intended messages -* friendica_verbose: "true" enables different error returns for Windows 10 app (default: "false") +* friendica_verbose: "true" enables different error returns (default: "false") #### Return values From abc301aad80ad52f7e378f08497912eacbfeb5f7 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sun, 14 Aug 2016 22:19:49 +0200 Subject: [PATCH 24/60] regenerated credits --- util/credits.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/util/credits.txt b/util/credits.txt index c8c8f10e8d..3903fd5fde 100644 --- a/util/credits.txt +++ b/util/credits.txt @@ -24,6 +24,7 @@ Carlos Solís Carsten Pfeiffer Cat Gray Chris Case +Christian González Christian M. Grube Christian Vogeley Cohan Robinson @@ -72,6 +73,7 @@ Hubert Kościański Jak Jakob jensp +Jeroen S jeroenpraat Johannes Schwab John Brazil @@ -160,6 +162,7 @@ tomamplius tomtom84 Tony Baldwin TORminator +trebor tschlotfeldt Tubuntu Tupambae.org @@ -174,4 +177,4 @@ Zach Prezkuta Zered zottel Zvi ben Yaakov (a.k.a rdc) -Михаил \ No newline at end of file +Михаил From 1bfdc216d03ec0d87baa03d040135184df38e006 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 16 Aug 2016 21:35:12 +0200 Subject: [PATCH 25/60] Only close the session if it had been opened. --- boot.php | 4 +++- index.php | 6 ++++-- mod/hostxrd.php | 1 - 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/boot.php b/boot.php index 208293a925..ecaa73e6a3 100644 --- a/boot.php +++ b/boot.php @@ -1698,7 +1698,9 @@ function login($register = false, $hiddens=false) { * @brief Used to end the current process, after saving session state. */ function killme() { - session_write_close(); + if (!get_app()->is_backend()) + session_write_close(); + exit; } diff --git a/index.php b/index.php index 6ce348eac5..13c3f6318f 100644 --- a/index.php +++ b/index.php @@ -489,7 +489,8 @@ if (isset($_GET["mode"]) AND ($_GET["mode"] == "raw")) { echo substr($target->saveHTML(), 6, -8); - session_write_close(); + if (!$a->is_backend()) + session_write_close(); exit; } @@ -514,5 +515,6 @@ if(!$template) { require_once($template); -session_write_close(); +if (!$a->is_backend()) + session_write_close(); exit; diff --git a/mod/hostxrd.php b/mod/hostxrd.php index 4121764f1a..647073b056 100644 --- a/mod/hostxrd.php +++ b/mod/hostxrd.php @@ -25,7 +25,6 @@ function hostxrd_init(&$a) { '$zot_post' => z_root() . '/post', '$bigkey' => salmon_key(get_config('system','site_pubkey')), )); - session_write_close(); exit(); } From 212aa99f286bd4f8a0c17af2791f4062796c44e0 Mon Sep 17 00:00:00 2001 From: rabuzarus Date: Wed, 17 Aug 2016 14:32:43 +0200 Subject: [PATCH 26/60] frio: fix contact dropping on contact edit page --- view/theme/frio/templates/contact_edit.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/theme/frio/templates/contact_edit.tpl b/view/theme/frio/templates/contact_edit.tpl index 6170dcef82..34c5023c12 100644 --- a/view/theme/frio/templates/contact_edit.tpl +++ b/view/theme/frio/templates/contact_edit.tpl @@ -25,7 +25,7 @@
  • {{$contact_actions.block.label}}
  • {{$contact_actions.ignore.label}}
  • {{$contact_actions.archive.label}}
  • -
  • {{$contact_actions.delete.label}}
  • +
  • {{$contact_actions.delete.label}}
  • From 37ae63e12024e9370de441db4bfdc76e69cd9db9 Mon Sep 17 00:00:00 2001 From: rabuzarus Date: Wed, 17 Aug 2016 16:51:04 +0200 Subject: [PATCH 27/60] fix contact dropping on contact edit page also for other themes --- view/templates/contact_edit.tpl | 2 +- view/theme/frost-mobile/templates/contact_edit.tpl | 2 +- view/theme/frost/templates/contact_edit.tpl | 2 +- view/theme/vier/templates/contact_edit.tpl | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/view/templates/contact_edit.tpl b/view/templates/contact_edit.tpl index 9e86060885..5e60b36afc 100644 --- a/view/templates/contact_edit.tpl +++ b/view/templates/contact_edit.tpl @@ -22,7 +22,7 @@
  • {{$contact_actions.block.label}}
  • {{$contact_actions.ignore.label}}
  • {{$contact_actions.archive.label}}
  • -
  • {{$contact_actions.delete.label}}
  • +
  • {{$contact_actions.delete.label}}
  • diff --git a/view/theme/frost-mobile/templates/contact_edit.tpl b/view/theme/frost-mobile/templates/contact_edit.tpl index 79dc7da408..3766fb2ee3 100644 --- a/view/theme/frost-mobile/templates/contact_edit.tpl +++ b/view/theme/frost-mobile/templates/contact_edit.tpl @@ -27,7 +27,7 @@
  • {{$contact_actions.block.label}}
  • {{$contact_actions.ignore.label}}
  • {{$contact_actions.archive.label}}
  • -
  • {{$contact_actions.delete.label}}
  • +
  • {{$contact_actions.delete.label}}
  • diff --git a/view/theme/frost/templates/contact_edit.tpl b/view/theme/frost/templates/contact_edit.tpl index 44e55b1cd8..636ebf5629 100644 --- a/view/theme/frost/templates/contact_edit.tpl +++ b/view/theme/frost/templates/contact_edit.tpl @@ -21,7 +21,7 @@
  • {{$contact_actions.block.label}}
  • {{$contact_actions.ignore.label}}
  • {{$contact_actions.archive.label}}
  • -
  • {{$contact_actions.delete.label}}
  • +
  • {{$contact_actions.delete.label}}
  • diff --git a/view/theme/vier/templates/contact_edit.tpl b/view/theme/vier/templates/contact_edit.tpl index 2383c9bc41..db5adb4a58 100644 --- a/view/theme/vier/templates/contact_edit.tpl +++ b/view/theme/vier/templates/contact_edit.tpl @@ -22,7 +22,7 @@
  • {{$contact_actions.block.label}}
  • {{$contact_actions.ignore.label}}
  • {{$contact_actions.archive.label}}
  • -
  • {{$contact_actions.delete.label}}
  • +
  • {{$contact_actions.delete.label}}
  • From 108a1c4ac6fdca09d2c26b57845a9cdfa778f855 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 18 Aug 2016 12:33:17 +0200 Subject: [PATCH 28/60] New priority level for stale processes. --- boot.php | 13 +++++++------ include/poller.php | 13 ++++++------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/boot.php b/boot.php index ecaa73e6a3..dea9b8e8cd 100644 --- a/boot.php +++ b/boot.php @@ -392,11 +392,12 @@ define ( 'GRAVITY_COMMENT', 6); * Process priority for the worker * @{ */ -define('PRIORITY_UNDEFINED', 0); -define('PRIORITY_SYSTEM', 10); -define('PRIORITY_HIGH', 20); -define('PRIORITY_MEDIUM', 30); -define('PRIORITY_LOW', 40); +define('PRIORITY_UNDEFINED', 0); +define('PRIORITY_CRITICAL', 10); +define('PRIORITY_HIGH', 20); +define('PRIORITY_MEDIUM', 30); +define('PRIORITY_LOW', 40); +define('PRIORITY_NEGLIGIBLE',50); /* @}*/ @@ -1410,7 +1411,7 @@ function check_db() { $build = DB_UPDATE_VERSION; } if($build != DB_UPDATE_VERSION) - proc_run(PRIORITY_SYSTEM, 'include/dbupdate.php'); + proc_run(PRIORITY_CRITICAL, 'include/dbupdate.php'); } diff --git a/include/poller.php b/include/poller.php index 1f4d25732e..0835528717 100644 --- a/include/poller.php +++ b/include/poller.php @@ -232,11 +232,11 @@ function poller_kill_stale_workers() { // Kill long running processes // Check if the priority is in a valid range - if (!in_array($pid["priority"], array(PRIORITY_SYSTEM, PRIORITY_HIGH, PRIORITY_MEDIUM, PRIORITY_LOW))) + if (!in_array($pid["priority"], array(PRIORITY_CRITICAL, PRIORITY_HIGH, PRIORITY_MEDIUM, PRIORITY_LOW, PRIORITY_NEGLIGIBLE))) $pid["priority"] = PRIORITY_MEDIUM; // Define the maximum durations - $max_duration_defaults = array(PRIORITY_SYSTEM => 360, PRIORITY_HIGH => 10, PRIORITY_MEDIUM => 60, PRIORITY_LOW => 180); + $max_duration_defaults = array(PRIORITY_CRITICAL => 360, PRIORITY_HIGH => 10, PRIORITY_MEDIUM => 60, PRIORITY_LOW => 180, PRIORITY_NEGLIGIBLE => 360); $max_duration = $max_duration_defaults[$pid["priority"]]; $argv = json_decode($pid["parameter"]); @@ -254,7 +254,7 @@ function poller_kill_stale_workers() { q("UPDATE `workerqueue` SET `executed` = '0000-00-00 00:00:00', `created` = '%s', `priority` = %d, `pid` = 0 WHERE `pid` = %d", dbesc(datetime_convert()), - intval(PRIORITY_LOW), + intval(PRIORITY_NEGLIGIBLE), intval($pid["pid"])); } else logger("Worker process ".$pid["pid"]." (".implode(" ", $argv).") now runs for ".round($duration)." of ".$max_duration." allowed minutes. That's okay.", LOGGER_DEBUG); @@ -294,12 +294,11 @@ function poller_too_much_workers() { $s = q("SELECT `priority` FROM `workerqueue` WHERE `executed` = '0000-00-00 00:00:00' ORDER BY `priority` LIMIT 1"); $top_priority = $s[0]["priority"]; - $s = q("SELECT COUNT(*) AS `total` FROM `workerqueue` WHERE `priority` <= %d AND `executed` != '0000-00-00 00:00:00'", + $s = q("SELECT `id` FROM `workerqueue` WHERE `priority` <= %d AND `executed` != '0000-00-00 00:00:00' LIMIT 1", intval($top_priority)); - $high_running = $s[0]["total"]; + $high_running = dbm::is_result($s); - /// @todo define maximum number of fastlanes - if (($high_running == 0) AND ($top_priority != PRIORITY_UNDEFINED) AND ($top_priority < PRIORITY_LOW)) { + if (!$high_running AND ($top_priority > PRIORITY_UNDEFINED) AND ($top_priority < PRIORITY_NEGLIGIBLE)) { logger("There are jobs with priority ".$top_priority." waiting but none is executed. Open a fastlane.", LOGGER_DEBUG); $queues = $active + 1; } From 24197c30bcccdbdba96845525bc6b38937195c2e Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Fri, 19 Aug 2016 12:38:45 +0200 Subject: [PATCH 29/60] updated the credits --- util/credits.txt | 3 ++- util/make_credits.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/util/credits.txt b/util/credits.txt index 3903fd5fde..aa9f6d1cde 100644 --- a/util/credits.txt +++ b/util/credits.txt @@ -17,6 +17,7 @@ aweiher axelt balderino Beanow +Beatriz Vital Ben Roberts bufalo1973 Calango Jr @@ -177,4 +178,4 @@ Zach Prezkuta Zered zottel Zvi ben Yaakov (a.k.a rdc) -Михаил +Михаил \ No newline at end of file diff --git a/util/make_credits.py b/util/make_credits.py index eacb8707f4..abd6d53001 100755 --- a/util/make_credits.py +++ b/util/make_credits.py @@ -23,7 +23,7 @@ import os, glob, subprocess # not work in some cases. dontinclude = ['root', 'friendica', 'bavatar', 'tony baldwin', 'Taek', 'silke m', 'leberwurscht', 'abinoam', 'fabrixxm', 'FULL NAME', 'Hauke Zuehl', - 'Michal Supler', 'michal_s', 'Manuel Pérez'] + 'Michal Supler', 'michal_s', 'Manuel Pérez', 'rabuzarus'] # this script is in the /util sub-directory of the friendica installation From f344813054884f32fe2dad838f3ca4b976c0d31f Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sat, 20 Aug 2016 16:16:19 +0200 Subject: [PATCH 30/60] events with no finish should not export it to ical --- include/event.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/event.php b/include/event.php index 7b77ee8d61..98307e23e1 100644 --- a/include/event.php +++ b/include/event.php @@ -673,7 +673,7 @@ function event_format_export ($events, $format = 'ical', $timezone) { $dtformat = "%Y%m%dT%H%M%S".$UTC; $o .= 'DTSTART:'.strftime($dtformat, $tmp).PHP_EOL; } - if ($event['finish']) { + if (!$event['nofinish']) { $tmp = strtotime($event['finish']); $dtformat = "%Y%m%dT%H%M%S".$UTC; $o .= 'DTEND:'.strftime($dtformat, $tmp).PHP_EOL; @@ -732,13 +732,13 @@ function events_by_uid($uid = 0, $sql_extra = '') { // requested? then show all of your events, otherwise only those that // don't have limitations set in allow_cid and allow_gid if (local_user() == $uid) { - $r = q("SELECT `start`, `finish`, `adjust`, `summary`, `desc`, `location` + $r = q("SELECT `start`, `finish`, `adjust`, `summary`, `desc`, `location`, `nofinish` FROM `event` WHERE `uid`= %d AND `cid` = 0 ", intval($uid) ); } else { - $r = q("SELECT `start`, `finish`, `adjust`, `summary`, `desc`, `location`FROM `event` - WHERE `uid` = %d AND `cid` = 0 $sql_extra ", + $r = q("SELECT `start`, `finish`, `adjust`, `summary`, `desc`, `location`, `nofinish` + FROM `event` WHERE `uid`= %d AND `cid` = 0 $sql_extra ", intval($uid) ); } From 50dc7a6047c9bdf10d83970d5a624829e4c2eb1d Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 23 Aug 2016 07:40:16 +0200 Subject: [PATCH 31/60] Bugfix: Handle attachments with bbcode inside/handle the [p] bbcode --- include/bbcode.php | 6 ++++-- include/plaintext.php | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/include/bbcode.php b/include/bbcode.php index c22813922b..ed23253648 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -34,7 +34,6 @@ function bb_map_location($match) { function bb_attachment($Text, $simplehtml = false, $tryoembed = true) { $data = get_attachment_data($Text); - if (!$data) return $Text; @@ -85,7 +84,7 @@ function bb_attachment($Text, $simplehtml = false, $tryoembed = true) { $text .= $oembed; if (trim($data["description"]) != "") - $text .= sprintf('
    %s
    ', trim($data["description"])); + $text .= sprintf('
    %s
    ', trim(bbcode($data["description"]))); } } return $data["text"].$text.$data["after"]; @@ -921,6 +920,9 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal $Text = preg_replace("(\[h5\](.*?)\[\/h5\])ism",'
    $1
    ',$Text); $Text = preg_replace("(\[h6\](.*?)\[\/h6\])ism",'
    $1
    ',$Text); + // Check for paragraph + $Text = preg_replace("(\[p\](.*?)\[\/p\])ism",'

    $1

    ',$Text); + // Check for bold text $Text = preg_replace("(\[b\](.*?)\[\/b\])ism",'$1',$Text); diff --git a/include/plaintext.php b/include/plaintext.php index 793f9935a7..539ef020df 100644 --- a/include/plaintext.php +++ b/include/plaintext.php @@ -82,7 +82,7 @@ function get_attachment_data($body) { $data = array(); - if (!preg_match("/(.*)\[attachment(.*)\](.*?)\[\/attachment\](.*)/ism", $body, $match)) + if (!preg_match("/(.*)\[attachment(.*?)\](.*?)\[\/attachment\](.*)/ism", $body, $match)) return get_old_attachment_data($body); $attributes = $match[2]; From 80bfcc7694b4251cc00af7dc76f05d1cf2ff823d Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 23 Aug 2016 07:48:48 +0200 Subject: [PATCH 32/60] The handle (user@domain.tld) for Diaspora contacts must always be lowercase --- include/Probe.php | 3 +++ include/diaspora.php | 8 ++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/include/Probe.php b/include/Probe.php index 7cda542d0b..44824103b4 100644 --- a/include/Probe.php +++ b/include/Probe.php @@ -788,6 +788,9 @@ class Probe { isset($data["pubkey"]) AND ($hcard != "")) { $data["network"] = NETWORK_DIASPORA; + // The Diaspora handle must always be lowercase + $data["addr"] = strtolower($data["addr"]); + // We have to overwrite the detected value for "notify" since Hubzilla doesn't send it $data["notify"] = $data["baseurl"]."/receive/users/".$data["guid"]; $data["batch"] = $data["baseurl"]."/receive/public"; diff --git a/include/diaspora.php b/include/diaspora.php index a1adb9b828..db6844f44d 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -623,7 +623,7 @@ class diaspora { dbesc($arr["photo"]), dbesc($arr["request"]), dbesc($arr["nick"]), - dbesc($arr["addr"]), + dbesc(strtolower($arr["addr"])), dbesc($arr["guid"]), dbesc($arr["batch"]), dbesc($arr["notify"]), @@ -677,7 +677,7 @@ class diaspora { $r = q("SELECT `addr` FROM `gcontact` WHERE `id` = %d AND `addr` != ''", intval($gcontact_id)); if ($r) - return $r[0]["addr"]; + return strtolower($r[0]["addr"]); } $r = q("SELECT `network`, `addr`, `self`, `url`, `nick` FROM `contact` WHERE `id` = %d", @@ -697,7 +697,7 @@ class diaspora { } } - return $handle; + return strtolower($handle); } /** @@ -1652,7 +1652,7 @@ class diaspora { * @return bool Success */ private function receive_profile($importer, $data) { - $author = notags(unxmlify($data->author)); + $author = strtolower(notags(unxmlify($data->author))); $contact = self::contact_by_handle($importer["uid"], $author); if (!$contact) From c1555b623a2993c65a3dfde1a5f8294fb919bf99 Mon Sep 17 00:00:00 2001 From: rabuzarus Date: Fri, 26 Aug 2016 15:47:45 +0200 Subject: [PATCH 33/60] best_link_url: don't use redirect for pending contacts --- include/conversation.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/conversation.php b/include/conversation.php index 0340ad3e4a..9d7b474af9 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -887,7 +887,7 @@ function best_link_url($item,&$sparkle,$ssl_state = false) { $clean_url = normalise_link($item['author-link']); if (local_user()) { - $r = q("SELECT `id` FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `nurl` = '%s' LIMIT 1", + $r = q("SELECT `id` FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `nurl` = '%s' AND NOT `pending` LIMIT 1", dbesc(NETWORK_DFRN), intval(local_user()), dbesc(normalise_link($clean_url))); if ($r) { $best_url = 'redir/'.$r[0]['id']; From a156d59e2a1c5ca26337a156035d55e40a712e52 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 27 Aug 2016 19:50:19 +0200 Subject: [PATCH 34/60] dbstructure: Set the version when updating manually --- include/dbstructure.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/dbstructure.php b/include/dbstructure.php index bd35d0974a..54f16a91d4 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -1071,6 +1071,7 @@ function db_definition() { "indexes" => array( "PRIMARY" => array("id"), "uid" => array("uid"), + "uid_profile" => array("uid", "profile"), "resource-id" => array("resource-id"), "guid" => array("guid"), ) @@ -1453,6 +1454,7 @@ function dbstructure_run(&$argv, &$argc) { switch ($argv[1]) { case "update": update_structure(true, true); + set_config('system','build',DB_UPDATE_VERSION); return; case "dumpsql": print_structure(db_definition()); From e46dae39379eb2dc78028cdc70535ccc6a6cb07c Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 27 Aug 2016 19:53:09 +0200 Subject: [PATCH 35/60] Removed some accidentally written code --- include/dbstructure.php | 1 - 1 file changed, 1 deletion(-) diff --git a/include/dbstructure.php b/include/dbstructure.php index 54f16a91d4..0236f57781 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -1071,7 +1071,6 @@ function db_definition() { "indexes" => array( "PRIMARY" => array("id"), "uid" => array("uid"), - "uid_profile" => array("uid", "profile"), "resource-id" => array("resource-id"), "guid" => array("guid"), ) From 6a167cf8b19eed41693eca752a3b1585cdc3a31d Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 27 Aug 2016 21:05:38 +0000 Subject: [PATCH 36/60] Prevent lowest priority calls from never being called --- include/cron.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/cron.php b/include/cron.php index 6afbeca1bd..3f28e493cf 100644 --- a/include/cron.php +++ b/include/cron.php @@ -70,7 +70,7 @@ function cron_run(&$argv, &$argc){ // run queue delivery process in the background - proc_run(PRIORITY_LOW,"include/queue.php"); + proc_run(PRIORITY_NEGLIGIBLE,"include/queue.php"); // run the process to discover global contacts in the background From 41613ec55df11d6e514ca4c5f207f81cf9cf48f2 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 29 Aug 2016 18:40:40 +0000 Subject: [PATCH 37/60] Bugfix: Fixed two bad sql queries --- include/event.php | 2 +- include/threads.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/event.php b/include/event.php index 98307e23e1..a68e1c4626 100644 --- a/include/event.php +++ b/include/event.php @@ -293,7 +293,7 @@ function event_store($arr) { `location` = '%s', `type` = '%s', `adjust` = %d, - `nofinish` = %d, + `nofinish` = %d WHERE `id` = %d AND `uid` = %d", dbesc($arr['edited']), diff --git a/include/threads.php b/include/threads.php index 0b2b26e8d2..2e02e7ada3 100644 --- a/include/threads.php +++ b/include/threads.php @@ -176,7 +176,7 @@ function delete_thread($itemid, $itemuri = "") { intval($item["uid"]) ); if (!count($r)) { - $r = q("DELETE FROM `item` WHERE `uri` = '%s' AND `uid` = 0)", + $r = q("DELETE FROM `item` WHERE `uri` = '%s' AND `uid` = 0", dbesc($itemuri) ); logger("delete_thread: Deleted shadow for item ".$itemuri." - ".print_r($result, true), LOGGER_DEBUG); From aedd2cfa6096cab93d32ac828c7d25d7030d29f4 Mon Sep 17 00:00:00 2001 From: rabuzarus Date: Wed, 31 Aug 2016 13:49:24 +0200 Subject: [PATCH 38/60] Update identity.php --- include/identity.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/identity.php b/include/identity.php index 9b75ebccdb..91b31c0784 100644 --- a/include/identity.php +++ b/include/identity.php @@ -71,8 +71,8 @@ function profile_load(&$a, $nickname, $profile = 0, $profiledata = array()) { $a->page['title'] = $a->profile['name'] . " @ " . $a->config['sitename']; -// if (!$profiledata) -// $_SESSION['theme'] = $a->profile['theme']; + if (!$profiledata && !get_pconfig(local_user(),'system','always_my_theme')) + $_SESSION['theme'] = $a->profile['theme']; $_SESSION['mobile-theme'] = $a->profile['mobile-theme']; From 9209d88c4a050dc16b9f147bbfe79dc8222694bf Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 1 Sep 2016 03:50:41 +0000 Subject: [PATCH 39/60] Set the charset for the SQL connection for new installations --- htconfig.php | 5 +++++ include/dba.php | 23 +++++++++++++++++++---- view/templates/htconfig.tpl | 5 +++++ 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/htconfig.php b/htconfig.php index fe6c0d82ee..469fa7af61 100644 --- a/htconfig.php +++ b/htconfig.php @@ -16,6 +16,11 @@ $db_user = 'mysqlusername'; $db_pass = 'mysqlpassword'; $db_data = 'mysqldatabasename'; +// Set the database connection charset to UTF8. +// Changing this value will likely corrupt the special characters. +// You have been warned. +$a->config['system']['db_charset'] = "utf8mb4"; + // Choose a legal default timezone. If you are unsure, use "America/Los_Angeles". // It can be changed later and only applies to timestamps for anonymous viewers. diff --git a/include/dba.php b/include/dba.php index b0927265be..5e84b95df5 100644 --- a/include/dba.php +++ b/include/dba.php @@ -66,6 +66,8 @@ class dba { if(! mysqli_connect_errno()) { $this->connected = true; } + if (isset($a->config["system"]["db_charset"])) + $this->db->set_charset($a->config["system"]["db_charset"]); } else { $this->mysqli = false; @@ -73,6 +75,8 @@ class dba { if($this->db && mysql_select_db($db,$this->db)) { $this->connected = true; } + if (isset($a->config["system"]["db_charset"])) + mysql_set_charset($a->config["system"]["db_charset"], $this->db); } if(! $this->connected) { $this->db = null; @@ -95,6 +99,14 @@ class dba { $this->error = ''; + // Check the connection (This can reconnect the connection - if configured) + if ($this->mysqli) + $connected = $this->db->ping(); + else + $connected = mysql_ping($this->db); + + $connstr = ($connected ? "Connected": "Disonnected"); + $stamp1 = microtime(true); if($this->mysqli) @@ -122,14 +134,17 @@ class dba { } if($this->mysqli) { - if($this->db->errno) + if($this->db->errno) { $this->error = $this->db->error; + $this->errorno = $this->db->errno; + } + } elseif(mysql_errno($this->db)) { + $this->error = mysql_error($this->db); + $this->errorno = mysql_errno($this->db); } - elseif(mysql_errno($this->db)) - $this->error = mysql_error($this->db); if(strlen($this->error)) { - logger('dba: ' . $this->error); + logger('DB Error ('.$connstr.') '.$this->errorno.': '.$this->error); } if($this->debug) { diff --git a/view/templates/htconfig.tpl b/view/templates/htconfig.tpl index cbbd14dc4e..df793197ce 100644 --- a/view/templates/htconfig.tpl +++ b/view/templates/htconfig.tpl @@ -15,6 +15,11 @@ $db_user = '{{$dbuser}}'; $db_pass = '{{$dbpass}}'; $db_data = '{{$dbdata}}'; +// Set the database connection charset to UTF8. +// Changing this value will likely corrupt the special characters. +// You have been warned. +$a->config['system']['db_charset'] = "utf8mb4"; + // email adress for the system admin $a->config['admin_email'] = '{{$adminmail}}'; From 59ff309ee5113cc4a07be3a1245d679a5952f4d4 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 1 Sep 2016 04:44:29 +0000 Subject: [PATCH 40/60] Add the new charset parameter to the database creation --- database.sql | 104 ++++++++++++++++++++-------------------- doc/Install.md | 4 +- include/dbstructure.php | 9 +++- 3 files changed, 62 insertions(+), 55 deletions(-) diff --git a/database.sql b/database.sql index b27f69c40e..95a163cfbd 100644 --- a/database.sql +++ b/database.sql @@ -16,7 +16,7 @@ CREATE TABLE IF NOT EXISTS `addon` ( `timestamp` bigint(20) NOT NULL DEFAULT 0, `plugin_admin` tinyint(1) NOT NULL DEFAULT 0, PRIMARY KEY(`id`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE attach @@ -36,7 +36,7 @@ CREATE TABLE IF NOT EXISTS `attach` ( `deny_cid` mediumtext NOT NULL, `deny_gid` mediumtext NOT NULL, PRIMARY KEY(`id`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE auth_codes @@ -48,7 +48,7 @@ CREATE TABLE IF NOT EXISTS `auth_codes` ( `expires` int(11) NOT NULL DEFAULT 0, `scope` varchar(250) NOT NULL DEFAULT '', PRIMARY KEY(`id`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE cache @@ -60,7 +60,7 @@ CREATE TABLE IF NOT EXISTS `cache` ( `updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY(`k`), INDEX `updated` (`updated`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE challenge @@ -73,7 +73,7 @@ CREATE TABLE IF NOT EXISTS `challenge` ( `type` varchar(255) NOT NULL DEFAULT '', `last_update` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY(`id`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE clients @@ -86,7 +86,7 @@ CREATE TABLE IF NOT EXISTS `clients` ( `icon` text, `uid` int(11) NOT NULL DEFAULT 0, PRIMARY KEY(`client_id`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE config @@ -98,7 +98,7 @@ CREATE TABLE IF NOT EXISTS `config` ( `v` text NOT NULL, PRIMARY KEY(`id`), INDEX `cat_k` (`cat`(30),`k`(30)) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE contact @@ -173,7 +173,7 @@ CREATE TABLE IF NOT EXISTS `contact` ( PRIMARY KEY(`id`), INDEX `uid` (`uid`), INDEX `nurl` (`nurl`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE conv @@ -189,7 +189,7 @@ CREATE TABLE IF NOT EXISTS `conv` ( `subject` mediumtext NOT NULL, PRIMARY KEY(`id`), INDEX `uid` (`uid`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE deliverq @@ -200,7 +200,7 @@ CREATE TABLE IF NOT EXISTS `deliverq` ( `item` int(11) NOT NULL DEFAULT 0, `contact` int(11) NOT NULL DEFAULT 0, PRIMARY KEY(`id`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE event @@ -227,7 +227,7 @@ CREATE TABLE IF NOT EXISTS `event` ( `deny_gid` mediumtext NOT NULL, PRIMARY KEY(`id`), INDEX `uid` (`uid`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE fcontact @@ -252,7 +252,7 @@ CREATE TABLE IF NOT EXISTS `fcontact` ( `updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY(`id`), INDEX `addr` (`addr`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE ffinder @@ -263,7 +263,7 @@ CREATE TABLE IF NOT EXISTS `ffinder` ( `cid` int(10) unsigned NOT NULL DEFAULT 0, `fid` int(10) unsigned NOT NULL DEFAULT 0, PRIMARY KEY(`id`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE fserver @@ -275,7 +275,7 @@ CREATE TABLE IF NOT EXISTS `fserver` ( `key` text NOT NULL, PRIMARY KEY(`id`), INDEX `server` (`server`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE fsuggest @@ -291,7 +291,7 @@ CREATE TABLE IF NOT EXISTS `fsuggest` ( `note` text NOT NULL, `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY(`id`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE gcign @@ -303,7 +303,7 @@ CREATE TABLE IF NOT EXISTS `gcign` ( PRIMARY KEY(`id`), INDEX `uid` (`uid`), INDEX `gcid` (`gcid`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE gcontact @@ -340,7 +340,7 @@ CREATE TABLE IF NOT EXISTS `gcontact` ( INDEX `nick` (`nick`), INDEX `addr` (`addr`), INDEX `updated` (`updated`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE glink @@ -356,7 +356,7 @@ CREATE TABLE IF NOT EXISTS `glink` ( INDEX `cid_uid_gcid_zcid` (`cid`,`uid`,`gcid`,`zcid`), INDEX `gcid` (`gcid`), INDEX `zcid` (`zcid`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE group @@ -369,7 +369,7 @@ CREATE TABLE IF NOT EXISTS `group` ( `name` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY(`id`), INDEX `uid` (`uid`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE group_member @@ -381,7 +381,7 @@ CREATE TABLE IF NOT EXISTS `group_member` ( `contact-id` int(10) unsigned NOT NULL DEFAULT 0, PRIMARY KEY(`id`), INDEX `uid_gid_contactid` (`uid`,`gid`,`contact-id`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE gserver @@ -404,7 +404,7 @@ CREATE TABLE IF NOT EXISTS `gserver` ( `last_failure` datetime DEFAULT '0000-00-00 00:00:00', PRIMARY KEY(`id`), INDEX `nurl` (`nurl`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE hook @@ -417,7 +417,7 @@ CREATE TABLE IF NOT EXISTS `hook` ( `priority` int(11) unsigned NOT NULL DEFAULT 0, PRIMARY KEY(`id`), INDEX `hook_file_function` (`hook`(30),`file`(60),`function`(30)) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE intro @@ -435,7 +435,7 @@ CREATE TABLE IF NOT EXISTS `intro` ( `blocked` tinyint(1) NOT NULL DEFAULT 1, `ignore` tinyint(1) NOT NULL DEFAULT 0, PRIMARY KEY(`id`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE item @@ -543,7 +543,7 @@ CREATE TABLE IF NOT EXISTS `item` ( INDEX `uid_eventid` (`uid`,`event-id`), INDEX `uid_authorlink` (`uid`,`author-link`), INDEX `uid_ownerlink` (`uid`,`owner-link`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE item_id @@ -559,7 +559,7 @@ CREATE TABLE IF NOT EXISTS `item_id` ( INDEX `sid` (`sid`), INDEX `service` (`service`), INDEX `iid` (`iid`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE locks @@ -570,7 +570,7 @@ CREATE TABLE IF NOT EXISTS `locks` ( `locked` tinyint(1) NOT NULL DEFAULT 0, `created` datetime DEFAULT '0000-00-00 00:00:00', PRIMARY KEY(`id`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE mail @@ -600,7 +600,7 @@ CREATE TABLE IF NOT EXISTS `mail` ( INDEX `reply` (`reply`), INDEX `uri` (`uri`), INDEX `parent-uri` (`parent-uri`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE mailacct @@ -620,7 +620,7 @@ CREATE TABLE IF NOT EXISTS `mailacct` ( `pubmail` tinyint(1) NOT NULL DEFAULT 0, `last_check` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY(`id`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE manage @@ -631,7 +631,7 @@ CREATE TABLE IF NOT EXISTS `manage` ( `mid` int(11) NOT NULL DEFAULT 0, PRIMARY KEY(`id`), INDEX `uid_mid` (`uid`,`mid`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE notify @@ -654,7 +654,7 @@ CREATE TABLE IF NOT EXISTS `notify` ( `otype` varchar(16) NOT NULL DEFAULT '', PRIMARY KEY(`id`), INDEX `uid` (`uid`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE notify-threads @@ -668,7 +668,7 @@ CREATE TABLE IF NOT EXISTS `notify-threads` ( PRIMARY KEY(`id`), INDEX `master-parent-item` (`master-parent-item`), INDEX `receiver-uid` (`receiver-uid`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE oembed @@ -679,7 +679,7 @@ CREATE TABLE IF NOT EXISTS `oembed` ( `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY(`url`), INDEX `created` (`created`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE parsed_url @@ -692,7 +692,7 @@ CREATE TABLE IF NOT EXISTS `parsed_url` ( `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY(`url`,`guessing`,`oembed`), INDEX `created` (`created`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE pconfig @@ -705,7 +705,7 @@ CREATE TABLE IF NOT EXISTS `pconfig` ( `v` mediumtext NOT NULL, PRIMARY KEY(`id`), INDEX `uid_cat_k` (`uid`,`cat`(30),`k`(30)) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE photo @@ -737,7 +737,7 @@ CREATE TABLE IF NOT EXISTS `photo` ( INDEX `uid` (`uid`), INDEX `resource-id` (`resource-id`), INDEX `guid` (`guid`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE poll @@ -757,7 +757,7 @@ CREATE TABLE IF NOT EXISTS `poll` ( `q9` mediumtext NOT NULL, PRIMARY KEY(`id`), INDEX `uid` (`uid`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE poll_result @@ -769,7 +769,7 @@ CREATE TABLE IF NOT EXISTS `poll_result` ( PRIMARY KEY(`id`), INDEX `poll_id` (`poll_id`), INDEX `choice` (`choice`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE profile @@ -818,7 +818,7 @@ CREATE TABLE IF NOT EXISTS `profile` ( `net-publish` tinyint(1) NOT NULL DEFAULT 0, PRIMARY KEY(`id`), INDEX `hometown` (`hometown`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE profile_check @@ -831,7 +831,7 @@ CREATE TABLE IF NOT EXISTS `profile_check` ( `sec` varchar(255) NOT NULL DEFAULT '', `expire` int(11) NOT NULL DEFAULT 0, PRIMARY KEY(`id`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE push_subscriber @@ -846,7 +846,7 @@ CREATE TABLE IF NOT EXISTS `push_subscriber` ( `last_update` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `secret` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY(`id`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE queue @@ -865,7 +865,7 @@ CREATE TABLE IF NOT EXISTS `queue` ( INDEX `last` (`last`), INDEX `network` (`network`), INDEX `batch` (`batch`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE register @@ -878,7 +878,7 @@ CREATE TABLE IF NOT EXISTS `register` ( `password` varchar(255) NOT NULL DEFAULT '', `language` varchar(16) NOT NULL DEFAULT '', PRIMARY KEY(`id`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE search @@ -890,7 +890,7 @@ CREATE TABLE IF NOT EXISTS `search` ( PRIMARY KEY(`id`), INDEX `uid` (`uid`), INDEX `term` (`term`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE session @@ -903,7 +903,7 @@ CREATE TABLE IF NOT EXISTS `session` ( PRIMARY KEY(`id`), INDEX `sid` (`sid`), INDEX `expire` (`expire`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE sign @@ -916,7 +916,7 @@ CREATE TABLE IF NOT EXISTS `sign` ( `signer` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY(`id`), INDEX `iid` (`iid`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE spam @@ -933,7 +933,7 @@ CREATE TABLE IF NOT EXISTS `spam` ( INDEX `spam` (`spam`), INDEX `ham` (`ham`), INDEX `term` (`term`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE term @@ -958,7 +958,7 @@ CREATE TABLE IF NOT EXISTS `term` ( INDEX `uid_otype_type_term_global_created` (`uid`,`otype`,`type`,`term`,`global`,`created`), INDEX `otype_type_term_tid` (`otype`,`type`,`term`,`tid`), INDEX `guid` (`guid`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE thread @@ -1002,7 +1002,7 @@ CREATE TABLE IF NOT EXISTS `thread` ( INDEX `wall_private_received` (`wall`,`private`,`received`), INDEX `uid_created` (`uid`,`created`), INDEX `uid_commented` (`uid`,`commented`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE tokens @@ -1015,7 +1015,7 @@ CREATE TABLE IF NOT EXISTS `tokens` ( `scope` varchar(200) NOT NULL DEFAULT '', `uid` int(11) NOT NULL DEFAULT 0, PRIMARY KEY(`id`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE user @@ -1065,7 +1065,7 @@ CREATE TABLE IF NOT EXISTS `user` ( `openidserver` text NOT NULL, PRIMARY KEY(`uid`), INDEX `nickname` (`nickname`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE userd @@ -1075,7 +1075,7 @@ CREATE TABLE IF NOT EXISTS `userd` ( `username` varchar(255) NOT NULL, PRIMARY KEY(`id`), INDEX `username` (`username`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; -- -- TABLE workerqueue @@ -1089,5 +1089,5 @@ CREATE TABLE IF NOT EXISTS `workerqueue` ( `executed` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY(`id`), INDEX `created` (`created`) -) DEFAULT CHARSET=utf8; +) DEFAULT CHARSET=utf8mb4; diff --git a/doc/Install.md b/doc/Install.md index 9af261e3a8..d92f7aefd0 100644 --- a/doc/Install.md +++ b/doc/Install.md @@ -26,12 +26,12 @@ Requirements --- * Apache with mod-rewrite enabled and "Options All" so you can use a local .htaccess file -* PHP 5.2+. The later the better. You'll need 5.3 for encryption of key exchange conversations. On a Windows environment, 5.2+ might not work as the function dns_get_record() is only available with version 5.3. +* PHP 5.5+. * PHP *command line* access with register_argc_argv set to true in the php.ini file * curl, gd, mysql, hash and openssl extensions * some form of email server or email gateway such that PHP mail() works * mcrypt (optional; used for server-to-server message encryption) -* Mysql 5.x or an equivalant alternative for MySQL (MariaDB etc.) +* Mysql 5.5.3+ or an equivalant alternative for MySQL (MariaDB, Percona Server etc.) * the ability to schedule jobs with cron (Linux/Mac) or Scheduled Tasks (Windows) (Note: other options are presented in Section 7 of this document.) * Installation into a top-level domain or sub-domain (without a directory/path component in the URL) is preferred. Directory paths will not be as convenient to use and have not been thoroughly tested. * If your hosting provider doesn't allow Unix shell access, you might have trouble getting everything to work. diff --git a/include/dbstructure.php b/include/dbstructure.php index 0236f57781..dedd916a8e 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -260,6 +260,13 @@ function db_field_command($parameters, $create = true) { function db_create_table($name, $fields, $verbose, $action, $indexes=null) { global $a, $db; + if (isset($a->config["system"]["db_charset"])) + $charset = $a->config["system"]["db_charset"]; + elseif ($verbose) + $charset = "utf8mb4"; + else + $charset = "utf8"; + $r = true; $sql = ""; @@ -282,7 +289,7 @@ function db_create_table($name, $fields, $verbose, $action, $indexes=null) { $sql = implode(",\n\t", $sql_rows); - $sql = sprintf("CREATE TABLE IF NOT EXISTS `%s` (\n\t", dbesc($name)).$sql."\n) DEFAULT CHARSET=utf8"; + $sql = sprintf("CREATE TABLE IF NOT EXISTS `%s` (\n\t", dbesc($name)).$sql."\n) DEFAULT CHARSET=".$charset; if ($verbose) echo $sql.";\n"; From 35813ab377971f0787c99353746098875304bf84 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 1 Sep 2016 06:47:36 +0000 Subject: [PATCH 41/60] Set the PHP requirements to php 5.4 --- doc/Install.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/Install.md b/doc/Install.md index d92f7aefd0..e494c1edf0 100644 --- a/doc/Install.md +++ b/doc/Install.md @@ -26,7 +26,7 @@ Requirements --- * Apache with mod-rewrite enabled and "Options All" so you can use a local .htaccess file -* PHP 5.5+. +* PHP 5.4+. * PHP *command line* access with register_argc_argv set to true in the php.ini file * curl, gd, mysql, hash and openssl extensions * some form of email server or email gateway such that PHP mail() works From 3a3161950966dddfffd48336e36701a626730c72 Mon Sep 17 00:00:00 2001 From: gerhard6380 Date: Fri, 2 Sep 2016 17:01:52 +0200 Subject: [PATCH 42/60] API: change friendica_activities to include arrays of users --- include/api.php | 45 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/include/api.php b/include/api.php index a380845ed1..a9c5e7a468 100644 --- a/include/api.php +++ b/include/api.php @@ -2362,29 +2362,54 @@ 'attendno' => array(), 'attendmaybe' => array() ); + $items = q('SELECT * FROM item WHERE uid=%d AND `thr-parent`="%s" AND visible AND NOT deleted', intval($item['uid']), dbesc($item['uri'])); + foreach ($items as $i){ - builtin_activity_puller($i, $activities); + // not used as result should be structured like other user data + //builtin_activity_puller($i, $activities); + + // get user data and add it to the array of the activity + $user = api_get_user($a, $i['author-link']); + switch($i['verb']) { + case ACTIVITY_LIKE: + $activities['like'][] = $user; + break; + case ACTIVITY_DISLIKE: + $activities['dislike'][] = $user; + break; + case ACTIVITY_ATTEND: + $activities['attendyes'][] = $user; + break; + case ACTIVITY_ATTENDNO: + $activities['attendno'][] = $user; + break; + case ACTIVITY_ATTENDMAYBE: + $activities['attendmaybe'][] = $user; + break; + default: + break; + } } if ($type == "xml") { $xml_activities = array(); - foreach ($activities as $k => $v) + foreach ($activities as $k => $v) { + // change xml element from "like" to "friendica:like" $xml_activities["friendica:".$k] = $v; - + // add user data into xml output + $k_user = 0; + foreach ($v as $user) + $xml_activities["friendica:".$k][$k_user++.":user"] = $user; + } $activities = $xml_activities; } - $res = array(); - $uri = $item['uri']."-l"; - foreach($activities as $k => $v) { - $res[$k] = (x($v,$uri)?count($v[$uri]):0); - #$res[$k] = ( x($v,$uri) ? array_map("api_contactlink_to_array", $v[$uri]) : array() ); - } - return $res; + return $activities; + } /** From c02b1c3f36a19bb5e4fb27e2edd9c4c45a8a7b4c Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 3 Sep 2016 12:48:51 +0200 Subject: [PATCH 43/60] The "tagged with" message now works again. --- include/conversation.php | 2 +- object/Item.php | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index 9d7b474af9..e74f4c33f0 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -425,7 +425,7 @@ These Fields are not added below (yet). They are here to for bug search. `item`.`guid`, `item`.`wall`, `item`.`private`, `item`.`starred`, `item`.`title`, `item`.`body`, `item`.`file`, `item`.`event-id`, `item`.`location`, `item`.`coord`, `item`.`app`, - `item`.`rendered-hash`, `item`.`rendered-html`, + `item`.`rendered-hash`, `item`.`rendered-html`, `item`.`object`, `item`.`allow_cid`, `item`.`allow_gid`, `item`.`deny_cid`, `item`.`deny_gid`, `item`.`id` AS `item_id`, `item`.`network` AS `item_network`, diff --git a/object/Item.php b/object/Item.php index ee40d186ce..9f01ac59b0 100644 --- a/object/Item.php +++ b/object/Item.php @@ -89,14 +89,14 @@ class Item extends BaseObject { $a = $this->get_app(); $item = $this->get_data(); - $edited = false; - if (strcmp($item['created'], $item['edited'])<>0) { - $edited = array( - 'label' => t('This entry was edited'), - 'date' => datetime_convert('UTC', date_default_timezone_get(), $item['edited'], 'r'), - 'relative' => relative_date($item['edited']) - ); - } + $edited = false; + if (strcmp($item['created'], $item['edited'])<>0) { + $edited = array( + 'label' => t('This entry was edited'), + 'date' => datetime_convert('UTC', date_default_timezone_get(), $item['edited'], 'r'), + 'relative' => relative_date($item['edited']) + ); + } $commentww = ''; $sparkle = ''; $buttons = ''; @@ -439,10 +439,10 @@ class Item extends BaseObject { } } - if ($this->is_toplevel()) { - $result['total_comments_num'] = "$total_children"; - $result['total_comments_text'] = tt('comment', 'comments', $total_children); - } + if ($this->is_toplevel()) { + $result['total_comments_num'] = "$total_children"; + $result['total_comments_text'] = tt('comment', 'comments', $total_children); + } $result['private'] = $item['private']; $result['toplevel'] = ($this->is_toplevel() ? 'toplevel_item' : ''); From 6df40b116115a9991f51b68ef3dfbdaf786b344c Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 3 Sep 2016 15:06:42 +0000 Subject: [PATCH 44/60] sQL: No "NOT NULL" on text fields. --- database.sql | 206 ++++++++++++++++++++-------------------- include/dbm.php | 4 +- include/dbstructure.php | 206 ++++++++++++++++++++-------------------- 3 files changed, 208 insertions(+), 208 deletions(-) diff --git a/database.sql b/database.sql index 95a163cfbd..03ebc5fe4a 100644 --- a/database.sql +++ b/database.sql @@ -31,10 +31,10 @@ CREATE TABLE IF NOT EXISTS `attach` ( `data` longblob NOT NULL, `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', - `allow_cid` mediumtext NOT NULL, - `allow_gid` mediumtext NOT NULL, - `deny_cid` mediumtext NOT NULL, - `deny_gid` mediumtext NOT NULL, + `allow_cid` mediumtext, + `allow_gid` mediumtext, + `deny_cid` mediumtext, + `deny_gid` mediumtext, PRIMARY KEY(`id`) ) DEFAULT CHARSET=utf8mb4; @@ -55,7 +55,7 @@ CREATE TABLE IF NOT EXISTS `auth_codes` ( -- CREATE TABLE IF NOT EXISTS `cache` ( `k` varchar(255) NOT NULL, - `v` text NOT NULL, + `v` text, `expire_mode` int(11) NOT NULL DEFAULT 0, `updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY(`k`), @@ -95,7 +95,7 @@ CREATE TABLE IF NOT EXISTS `config` ( `id` int(10) unsigned NOT NULL auto_increment, `cat` varchar(255) NOT NULL DEFAULT '', `k` varchar(255) NOT NULL DEFAULT '', - `v` text NOT NULL, + `v` text, PRIMARY KEY(`id`), INDEX `cat_k` (`cat`(30),`k`(30)) ) DEFAULT CHARSET=utf8mb4; @@ -115,29 +115,29 @@ CREATE TABLE IF NOT EXISTS `contact` ( `name` varchar(255) NOT NULL DEFAULT '', `nick` varchar(255) NOT NULL DEFAULT '', `location` varchar(255) NOT NULL DEFAULT '', - `about` text NOT NULL, - `keywords` text NOT NULL, + `about` text, + `keywords` text, `gender` varchar(32) NOT NULL DEFAULT '', `attag` varchar(255) NOT NULL DEFAULT '', `avatar` varchar(255) NOT NULL DEFAULT '', - `photo` text NOT NULL, - `thumb` text NOT NULL, - `micro` text NOT NULL, - `site-pubkey` text NOT NULL, + `photo` text, + `thumb` text, + `micro` text, + `site-pubkey` text, `issued-id` varchar(255) NOT NULL DEFAULT '', `dfrn-id` varchar(255) NOT NULL DEFAULT '', `url` varchar(255) NOT NULL DEFAULT '', `nurl` varchar(255) NOT NULL DEFAULT '', `addr` varchar(255) NOT NULL DEFAULT '', `alias` varchar(255) NOT NULL DEFAULT '', - `pubkey` text NOT NULL, - `prvkey` text NOT NULL, + `pubkey` text, + `prvkey` text, `batch` varchar(255) NOT NULL DEFAULT '', - `request` text NOT NULL, - `notify` text NOT NULL, - `poll` text NOT NULL, - `confirm` text NOT NULL, - `poco` text NOT NULL, + `request` text, + `notify` text, + `poll` text, + `confirm` text, + `poco` text, `aes_allow` tinyint(1) NOT NULL DEFAULT 0, `ret-aes` tinyint(1) NOT NULL DEFAULT 0, `usehub` tinyint(1) NOT NULL DEFAULT 0, @@ -161,15 +161,15 @@ CREATE TABLE IF NOT EXISTS `contact` ( `archive` tinyint(1) NOT NULL DEFAULT 0, `pending` tinyint(1) NOT NULL DEFAULT 1, `rating` tinyint(1) NOT NULL DEFAULT 0, - `reason` text NOT NULL, + `reason` text, `closeness` tinyint(2) NOT NULL DEFAULT 99, - `info` mediumtext NOT NULL, + `info` mediumtext, `profile-id` int(11) NOT NULL DEFAULT 0, `bdyear` varchar(4) NOT NULL DEFAULT '', `bd` date NOT NULL DEFAULT '0000-00-00', `notify_new_posts` tinyint(1) NOT NULL DEFAULT 0, `fetch_further_information` tinyint(1) NOT NULL DEFAULT 0, - `ffi_keyword_blacklist` mediumtext NOT NULL, + `ffi_keyword_blacklist` mediumtext, PRIMARY KEY(`id`), INDEX `uid` (`uid`), INDEX `nurl` (`nurl`) @@ -181,12 +181,12 @@ CREATE TABLE IF NOT EXISTS `contact` ( CREATE TABLE IF NOT EXISTS `conv` ( `id` int(10) unsigned NOT NULL auto_increment, `guid` varchar(64) NOT NULL DEFAULT '', - `recips` mediumtext NOT NULL, + `recips` mediumtext, `uid` int(11) NOT NULL DEFAULT 0, `creator` varchar(255) NOT NULL DEFAULT '', `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', - `subject` mediumtext NOT NULL, + `subject` mediumtext, PRIMARY KEY(`id`), INDEX `uid` (`uid`) ) DEFAULT CHARSET=utf8mb4; @@ -214,17 +214,17 @@ CREATE TABLE IF NOT EXISTS `event` ( `edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `start` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `finish` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', - `summary` text NOT NULL, - `desc` text NOT NULL, - `location` text NOT NULL, + `summary` text, + `desc` text, + `location` text, `type` varchar(255) NOT NULL DEFAULT '', `nofinish` tinyint(1) NOT NULL DEFAULT 0, `adjust` tinyint(1) NOT NULL DEFAULT 1, `ignore` tinyint(1) unsigned NOT NULL DEFAULT 0, - `allow_cid` mediumtext NOT NULL, - `allow_gid` mediumtext NOT NULL, - `deny_cid` mediumtext NOT NULL, - `deny_gid` mediumtext NOT NULL, + `allow_cid` mediumtext, + `allow_gid` mediumtext, + `deny_cid` mediumtext, + `deny_gid` mediumtext, PRIMARY KEY(`id`), INDEX `uid` (`uid`) ) DEFAULT CHARSET=utf8mb4; @@ -248,7 +248,7 @@ CREATE TABLE IF NOT EXISTS `fcontact` ( `priority` tinyint(1) NOT NULL DEFAULT 0, `network` varchar(32) NOT NULL DEFAULT '', `alias` varchar(255) NOT NULL DEFAULT '', - `pubkey` text NOT NULL, + `pubkey` text, `updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY(`id`), INDEX `addr` (`addr`) @@ -272,7 +272,7 @@ CREATE TABLE IF NOT EXISTS `fserver` ( `id` int(11) NOT NULL auto_increment, `server` varchar(255) NOT NULL DEFAULT '', `posturl` varchar(255) NOT NULL DEFAULT '', - `key` text NOT NULL, + `key` text, PRIMARY KEY(`id`), INDEX `server` (`server`) ) DEFAULT CHARSET=utf8mb4; @@ -288,7 +288,7 @@ CREATE TABLE IF NOT EXISTS `fsuggest` ( `url` varchar(255) NOT NULL DEFAULT '', `request` varchar(255) NOT NULL DEFAULT '', `photo` varchar(255) NOT NULL DEFAULT '', - `note` text NOT NULL, + `note` text, `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY(`id`) ) DEFAULT CHARSET=utf8mb4; @@ -321,8 +321,8 @@ CREATE TABLE IF NOT EXISTS `gcontact` ( `last_contact` datetime DEFAULT '0000-00-00 00:00:00', `last_failure` datetime DEFAULT '0000-00-00 00:00:00', `location` varchar(255) NOT NULL DEFAULT '', - `about` text NOT NULL, - `keywords` text NOT NULL, + `about` text, + `keywords` text, `gender` varchar(32) NOT NULL DEFAULT '', `birthday` varchar(32) NOT NULL DEFAULT '0000-00-00', `community` tinyint(1) NOT NULL DEFAULT 0, @@ -330,7 +330,7 @@ CREATE TABLE IF NOT EXISTS `gcontact` ( `nsfw` tinyint(1) NOT NULL DEFAULT 0, `network` varchar(255) NOT NULL DEFAULT '', `addr` varchar(255) NOT NULL DEFAULT '', - `notify` text NOT NULL, + `notify` text, `alias` varchar(255) NOT NULL DEFAULT '', `generation` tinyint(3) NOT NULL DEFAULT 0, `server_url` varchar(255) NOT NULL DEFAULT '', @@ -392,7 +392,7 @@ CREATE TABLE IF NOT EXISTS `gserver` ( `nurl` varchar(255) NOT NULL DEFAULT '', `version` varchar(255) NOT NULL DEFAULT '', `site_name` varchar(255) NOT NULL DEFAULT '', - `info` text NOT NULL, + `info` text, `register_policy` tinyint(1) NOT NULL DEFAULT 0, `poco` varchar(255) NOT NULL DEFAULT '', `noscrape` varchar(255) NOT NULL DEFAULT '', @@ -429,7 +429,7 @@ CREATE TABLE IF NOT EXISTS `intro` ( `contact-id` int(11) NOT NULL DEFAULT 0, `knowyou` tinyint(1) NOT NULL DEFAULT 0, `duplex` tinyint(1) NOT NULL DEFAULT 0, - `note` text NOT NULL, + `note` text, `hash` varchar(255) NOT NULL DEFAULT '', `datetime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `blocked` tinyint(1) NOT NULL DEFAULT 1, @@ -468,27 +468,27 @@ CREATE TABLE IF NOT EXISTS `item` ( `author-link` varchar(255) NOT NULL DEFAULT '', `author-avatar` varchar(255) NOT NULL DEFAULT '', `title` varchar(255) NOT NULL DEFAULT '', - `body` mediumtext NOT NULL, + `body` mediumtext, `app` varchar(255) NOT NULL DEFAULT '', `verb` varchar(255) NOT NULL DEFAULT '', `object-type` varchar(255) NOT NULL DEFAULT '', - `object` text NOT NULL, + `object` text, `target-type` varchar(255) NOT NULL DEFAULT '', - `target` text NOT NULL, - `postopts` text NOT NULL, + `target` text, + `postopts` text, `plink` varchar(255) NOT NULL DEFAULT '', `resource-id` varchar(255) NOT NULL DEFAULT '', `event-id` int(11) NOT NULL DEFAULT 0, - `tag` mediumtext NOT NULL, - `attach` mediumtext NOT NULL, - `inform` mediumtext NOT NULL, - `file` mediumtext NOT NULL, + `tag` mediumtext, + `attach` mediumtext, + `inform` mediumtext, + `file` mediumtext, `location` varchar(255) NOT NULL DEFAULT '', `coord` varchar(255) NOT NULL DEFAULT '', - `allow_cid` mediumtext NOT NULL, - `allow_gid` mediumtext NOT NULL, - `deny_cid` mediumtext NOT NULL, - `deny_gid` mediumtext NOT NULL, + `allow_cid` mediumtext, + `allow_gid` mediumtext, + `deny_cid` mediumtext, + `deny_gid` mediumtext, `private` tinyint(1) NOT NULL DEFAULT 0, `pubmail` tinyint(1) NOT NULL DEFAULT 0, `moderated` tinyint(1) NOT NULL DEFAULT 0, @@ -504,7 +504,7 @@ CREATE TABLE IF NOT EXISTS `item` ( `mention` tinyint(1) NOT NULL DEFAULT 0, `network` varchar(32) NOT NULL DEFAULT '', `rendered-hash` varchar(32) NOT NULL DEFAULT '', - `rendered-html` mediumtext NOT NULL, + `rendered-html` mediumtext, `global` tinyint(1) NOT NULL DEFAULT 0, PRIMARY KEY(`id`), INDEX `guid` (`guid`), @@ -585,7 +585,7 @@ CREATE TABLE IF NOT EXISTS `mail` ( `contact-id` varchar(255) NOT NULL DEFAULT '', `convid` int(11) unsigned NOT NULL DEFAULT 0, `title` varchar(255) NOT NULL DEFAULT '', - `body` mediumtext NOT NULL, + `body` mediumtext, `seen` tinyint(1) NOT NULL DEFAULT 0, `reply` tinyint(1) NOT NULL DEFAULT 0, `replied` tinyint(1) NOT NULL DEFAULT 0, @@ -613,7 +613,7 @@ CREATE TABLE IF NOT EXISTS `mailacct` ( `ssltype` varchar(16) NOT NULL DEFAULT '', `mailbox` varchar(255) NOT NULL DEFAULT '', `user` varchar(255) NOT NULL DEFAULT '', - `pass` text NOT NULL, + `pass` text, `reply_to` varchar(255) NOT NULL DEFAULT '', `action` int(11) NOT NULL DEFAULT 0, `movetofolder` varchar(255) NOT NULL DEFAULT '', @@ -644,7 +644,7 @@ CREATE TABLE IF NOT EXISTS `notify` ( `url` varchar(255) NOT NULL DEFAULT '', `photo` varchar(255) NOT NULL DEFAULT '', `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', - `msg` mediumtext NOT NULL, + `msg` mediumtext, `uid` int(11) NOT NULL DEFAULT 0, `link` varchar(255) NOT NULL DEFAULT '', `iid` int(11) NOT NULL DEFAULT 0, @@ -675,7 +675,7 @@ CREATE TABLE IF NOT EXISTS `notify-threads` ( -- CREATE TABLE IF NOT EXISTS `oembed` ( `url` varchar(255) NOT NULL, - `content` text NOT NULL, + `content` text, `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY(`url`), INDEX `created` (`created`) @@ -688,7 +688,7 @@ CREATE TABLE IF NOT EXISTS `parsed_url` ( `url` varchar(255) NOT NULL, `guessing` tinyint(1) NOT NULL DEFAULT 0, `oembed` tinyint(1) NOT NULL DEFAULT 0, - `content` text NOT NULL, + `content` text, `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY(`url`,`guessing`,`oembed`), INDEX `created` (`created`) @@ -702,7 +702,7 @@ CREATE TABLE IF NOT EXISTS `pconfig` ( `uid` int(11) NOT NULL DEFAULT 0, `cat` varchar(255) NOT NULL DEFAULT '', `k` varchar(255) NOT NULL DEFAULT '', - `v` mediumtext NOT NULL, + `v` mediumtext, PRIMARY KEY(`id`), INDEX `uid_cat_k` (`uid`,`cat`(30),`k`(30)) ) DEFAULT CHARSET=utf8mb4; @@ -719,7 +719,7 @@ CREATE TABLE IF NOT EXISTS `photo` ( `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `title` varchar(255) NOT NULL DEFAULT '', - `desc` text NOT NULL, + `desc` text, `album` varchar(255) NOT NULL DEFAULT '', `filename` varchar(255) NOT NULL DEFAULT '', `type` varchar(128) NOT NULL DEFAULT 'image/jpeg', @@ -729,10 +729,10 @@ CREATE TABLE IF NOT EXISTS `photo` ( `data` mediumblob NOT NULL, `scale` tinyint(3) NOT NULL DEFAULT 0, `profile` tinyint(1) NOT NULL DEFAULT 0, - `allow_cid` mediumtext NOT NULL, - `allow_gid` mediumtext NOT NULL, - `deny_cid` mediumtext NOT NULL, - `deny_gid` mediumtext NOT NULL, + `allow_cid` mediumtext, + `allow_gid` mediumtext, + `deny_cid` mediumtext, + `deny_gid` mediumtext, PRIMARY KEY(`id`), INDEX `uid` (`uid`), INDEX `resource-id` (`resource-id`), @@ -745,16 +745,16 @@ CREATE TABLE IF NOT EXISTS `photo` ( CREATE TABLE IF NOT EXISTS `poll` ( `id` int(11) NOT NULL auto_increment, `uid` int(11) NOT NULL DEFAULT 0, - `q0` mediumtext NOT NULL, - `q1` mediumtext NOT NULL, - `q2` mediumtext NOT NULL, - `q3` mediumtext NOT NULL, - `q4` mediumtext NOT NULL, - `q5` mediumtext NOT NULL, - `q6` mediumtext NOT NULL, - `q7` mediumtext NOT NULL, - `q8` mediumtext NOT NULL, - `q9` mediumtext NOT NULL, + `q0` mediumtext, + `q1` mediumtext, + `q2` mediumtext, + `q3` mediumtext, + `q4` mediumtext, + `q5` mediumtext, + `q6` mediumtext, + `q7` mediumtext, + `q8` mediumtext, + `q9` mediumtext, PRIMARY KEY(`id`), INDEX `uid` (`uid`) ) DEFAULT CHARSET=utf8mb4; @@ -791,26 +791,26 @@ CREATE TABLE IF NOT EXISTS `profile` ( `hometown` varchar(255) NOT NULL DEFAULT '', `gender` varchar(32) NOT NULL DEFAULT '', `marital` varchar(255) NOT NULL DEFAULT '', - `with` text NOT NULL, + `with` text, `howlong` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `sexual` varchar(255) NOT NULL DEFAULT '', `politic` varchar(255) NOT NULL DEFAULT '', `religion` varchar(255) NOT NULL DEFAULT '', - `pub_keywords` text NOT NULL, - `prv_keywords` text NOT NULL, - `likes` text NOT NULL, - `dislikes` text NOT NULL, - `about` text NOT NULL, + `pub_keywords` text, + `prv_keywords` text, + `likes` text, + `dislikes` text, + `about` text, `summary` varchar(255) NOT NULL DEFAULT '', - `music` text NOT NULL, - `book` text NOT NULL, - `tv` text NOT NULL, - `film` text NOT NULL, - `interest` text NOT NULL, - `romance` text NOT NULL, - `work` text NOT NULL, - `education` text NOT NULL, - `contact` text NOT NULL, + `music` text, + `book` text, + `tv` text, + `film` text, + `interest` text, + `romance` text, + `work` text, + `education` text, + `contact` text, `homepage` varchar(255) NOT NULL DEFAULT '', `photo` varchar(255) NOT NULL DEFAULT '', `thumb` varchar(255) NOT NULL DEFAULT '', @@ -857,7 +857,7 @@ CREATE TABLE IF NOT EXISTS `queue` ( `network` varchar(32) NOT NULL DEFAULT '', `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `last` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', - `content` mediumtext NOT NULL, + `content` mediumtext, `batch` tinyint(1) NOT NULL DEFAULT 0, PRIMARY KEY(`id`), INDEX `cid` (`cid`), @@ -898,7 +898,7 @@ CREATE TABLE IF NOT EXISTS `search` ( CREATE TABLE IF NOT EXISTS `session` ( `id` bigint(20) unsigned NOT NULL auto_increment, `sid` varchar(255) NOT NULL DEFAULT '', - `data` text NOT NULL, + `data` text, `expire` int(10) unsigned NOT NULL DEFAULT 0, PRIMARY KEY(`id`), INDEX `sid` (`sid`), @@ -911,8 +911,8 @@ CREATE TABLE IF NOT EXISTS `session` ( CREATE TABLE IF NOT EXISTS `sign` ( `id` int(10) unsigned NOT NULL auto_increment, `iid` int(10) unsigned NOT NULL DEFAULT 0, - `signed_text` mediumtext NOT NULL, - `signature` text NOT NULL, + `signed_text` mediumtext, + `signature` text, `signer` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY(`id`), INDEX `iid` (`iid`) @@ -1009,7 +1009,7 @@ CREATE TABLE IF NOT EXISTS `thread` ( -- CREATE TABLE IF NOT EXISTS `tokens` ( `id` varchar(40) NOT NULL, - `secret` text NOT NULL, + `secret` text, `client_id` varchar(20) NOT NULL DEFAULT '', `expires` int(11) NOT NULL DEFAULT 0, `scope` varchar(200) NOT NULL DEFAULT '', @@ -1035,10 +1035,10 @@ CREATE TABLE IF NOT EXISTS `user` ( `default-location` varchar(255) NOT NULL DEFAULT '', `allow_location` tinyint(1) NOT NULL DEFAULT 0, `theme` varchar(255) NOT NULL DEFAULT '', - `pubkey` text NOT NULL, - `prvkey` text NOT NULL, - `spubkey` text NOT NULL, - `sprvkey` text NOT NULL, + `pubkey` text, + `prvkey` text, + `spubkey` text, + `sprvkey` text, `verified` tinyint(1) unsigned NOT NULL DEFAULT 0, `blocked` tinyint(1) unsigned NOT NULL DEFAULT 0, `blockwall` tinyint(1) unsigned NOT NULL DEFAULT 0, @@ -1058,11 +1058,11 @@ CREATE TABLE IF NOT EXISTS `user` ( `expire_notification_sent` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `service_class` varchar(32) NOT NULL DEFAULT '', `def_gid` int(11) NOT NULL DEFAULT 0, - `allow_cid` mediumtext NOT NULL, - `allow_gid` mediumtext NOT NULL, - `deny_cid` mediumtext NOT NULL, - `deny_gid` mediumtext NOT NULL, - `openidserver` text NOT NULL, + `allow_cid` mediumtext, + `allow_gid` mediumtext, + `deny_cid` mediumtext, + `deny_gid` mediumtext, + `openidserver` text, PRIMARY KEY(`uid`), INDEX `nickname` (`nickname`) ) DEFAULT CHARSET=utf8mb4; @@ -1082,7 +1082,7 @@ CREATE TABLE IF NOT EXISTS `userd` ( -- CREATE TABLE IF NOT EXISTS `workerqueue` ( `id` int(11) NOT NULL auto_increment, - `parameter` text NOT NULL, + `parameter` text, `priority` tinyint(3) unsigned NOT NULL DEFAULT 0, `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `pid` int(11) NOT NULL DEFAULT 0, diff --git a/include/dbm.php b/include/dbm.php index fdd9f40e76..72d309b22e 100644 --- a/include/dbm.php +++ b/include/dbm.php @@ -20,8 +20,8 @@ class dbm { foreach ($r AS $process) { $state = trim($process["State"]); - // Filter out all idle processes - if (!in_array($state, array("", "init", "statistics"))) { + // Filter out all non blocking processes + if (!in_array($state, array("", "init", "statistics", "updating"))) { ++$states[$state]; ++$processes; } diff --git a/include/dbstructure.php b/include/dbstructure.php index dedd916a8e..53b94b46a8 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -372,10 +372,10 @@ function db_definition() { "data" => array("type" => "longblob", "not null" => "1"), "created" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), "edited" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), - "allow_cid" => array("type" => "mediumtext", "not null" => "1"), - "allow_gid" => array("type" => "mediumtext", "not null" => "1"), - "deny_cid" => array("type" => "mediumtext", "not null" => "1"), - "deny_gid" => array("type" => "mediumtext", "not null" => "1"), + "allow_cid" => array("type" => "mediumtext"), + "allow_gid" => array("type" => "mediumtext"), + "deny_cid" => array("type" => "mediumtext"), + "deny_gid" => array("type" => "mediumtext"), ), "indexes" => array( "PRIMARY" => array("id"), @@ -396,7 +396,7 @@ function db_definition() { $database["cache"] = array( "fields" => array( "k" => array("type" => "varchar(255)", "not null" => "1", "primary" => "1"), - "v" => array("type" => "text", "not null" => "1"), + "v" => array("type" => "text"), "expire_mode" => array("type" => "int(11)", "not null" => "1", "default" => "0"), "updated" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), ), @@ -436,7 +436,7 @@ function db_definition() { "id" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), "cat" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "k" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "v" => array("type" => "text", "not null" => "1"), + "v" => array("type" => "text"), ), "indexes" => array( "PRIMARY" => array("id"), @@ -456,29 +456,29 @@ function db_definition() { "name" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "nick" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "location" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "about" => array("type" => "text", "not null" => "1"), - "keywords" => array("type" => "text", "not null" => "1"), + "about" => array("type" => "text"), + "keywords" => array("type" => "text"), "gender" => array("type" => "varchar(32)", "not null" => "1", "default" => ""), "attag" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "avatar" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "photo" => array("type" => "text", "not null" => "1"), - "thumb" => array("type" => "text", "not null" => "1"), - "micro" => array("type" => "text", "not null" => "1"), - "site-pubkey" => array("type" => "text", "not null" => "1"), + "photo" => array("type" => "text"), + "thumb" => array("type" => "text"), + "micro" => array("type" => "text"), + "site-pubkey" => array("type" => "text"), "issued-id" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "dfrn-id" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "url" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "nurl" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "addr" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "alias" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "pubkey" => array("type" => "text", "not null" => "1"), - "prvkey" => array("type" => "text", "not null" => "1"), + "pubkey" => array("type" => "text"), + "prvkey" => array("type" => "text"), "batch" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "request" => array("type" => "text", "not null" => "1"), - "notify" => array("type" => "text", "not null" => "1"), - "poll" => array("type" => "text", "not null" => "1"), - "confirm" => array("type" => "text", "not null" => "1"), - "poco" => array("type" => "text", "not null" => "1"), + "request" => array("type" => "text"), + "notify" => array("type" => "text"), + "poll" => array("type" => "text"), + "confirm" => array("type" => "text"), + "poco" => array("type" => "text"), "aes_allow" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "ret-aes" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "usehub" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), @@ -502,15 +502,15 @@ function db_definition() { "archive" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "pending" => array("type" => "tinyint(1)", "not null" => "1", "default" => "1"), "rating" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), - "reason" => array("type" => "text", "not null" => "1"), + "reason" => array("type" => "text"), "closeness" => array("type" => "tinyint(2)", "not null" => "1", "default" => "99"), - "info" => array("type" => "mediumtext", "not null" => "1"), + "info" => array("type" => "mediumtext"), "profile-id" => array("type" => "int(11)", "not null" => "1", "default" => "0"), "bdyear" => array("type" => "varchar(4)", "not null" => "1", "default" => ""), "bd" => array("type" => "date", "not null" => "1", "default" => "0000-00-00"), "notify_new_posts" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "fetch_further_information" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), - "ffi_keyword_blacklist" => array("type" => "mediumtext", "not null" => "1"), + "ffi_keyword_blacklist" => array("type" => "mediumtext"), ), "indexes" => array( "PRIMARY" => array("id"), @@ -522,12 +522,12 @@ function db_definition() { "fields" => array( "id" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), "guid" => array("type" => "varchar(64)", "not null" => "1", "default" => ""), - "recips" => array("type" => "mediumtext", "not null" => "1"), + "recips" => array("type" => "mediumtext"), "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), "creator" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "created" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), "updated" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), - "subject" => array("type" => "mediumtext", "not null" => "1"), + "subject" => array("type" => "mediumtext"), ), "indexes" => array( "PRIMARY" => array("id"), @@ -555,17 +555,17 @@ function db_definition() { "edited" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), "start" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), "finish" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), - "summary" => array("type" => "text", "not null" => "1"), - "desc" => array("type" => "text", "not null" => "1"), - "location" => array("type" => "text", "not null" => "1"), + "summary" => array("type" => "text"), + "desc" => array("type" => "text"), + "location" => array("type" => "text"), "type" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "nofinish" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "adjust" => array("type" => "tinyint(1)", "not null" => "1", "default" => "1"), "ignore" => array("type" => "tinyint(1) unsigned", "not null" => "1", "default" => "0"), - "allow_cid" => array("type" => "mediumtext", "not null" => "1"), - "allow_gid" => array("type" => "mediumtext", "not null" => "1"), - "deny_cid" => array("type" => "mediumtext", "not null" => "1"), - "deny_gid" => array("type" => "mediumtext", "not null" => "1"), + "allow_cid" => array("type" => "mediumtext"), + "allow_gid" => array("type" => "mediumtext"), + "deny_cid" => array("type" => "mediumtext"), + "deny_gid" => array("type" => "mediumtext"), ), "indexes" => array( "PRIMARY" => array("id"), @@ -589,7 +589,7 @@ function db_definition() { "priority" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "network" => array("type" => "varchar(32)", "not null" => "1", "default" => ""), "alias" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "pubkey" => array("type" => "text", "not null" => "1"), + "pubkey" => array("type" => "text"), "updated" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), ), "indexes" => array( @@ -613,7 +613,7 @@ function db_definition() { "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), "server" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "posturl" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "key" => array("type" => "text", "not null" => "1"), + "key" => array("type" => "text"), ), "indexes" => array( "PRIMARY" => array("id"), @@ -629,7 +629,7 @@ function db_definition() { "url" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "request" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "photo" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "note" => array("type" => "text", "not null" => "1"), + "note" => array("type" => "text"), "created" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), ), "indexes" => array( @@ -662,8 +662,8 @@ function db_definition() { "last_contact" => array("type" => "datetime", "default" => "0000-00-00 00:00:00"), "last_failure" => array("type" => "datetime", "default" => "0000-00-00 00:00:00"), "location" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "about" => array("type" => "text", "not null" => "1"), - "keywords" => array("type" => "text", "not null" => "1"), + "about" => array("type" => "text"), + "keywords" => array("type" => "text"), "gender" => array("type" => "varchar(32)", "not null" => "1", "default" => ""), "birthday" => array("type" => "varchar(32)", "not null" => "1", "default" => "0000-00-00"), "community" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), @@ -671,7 +671,7 @@ function db_definition() { "nsfw" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "network" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "addr" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "notify" => array("type" => "text", "not null" => "1"), + "notify" => array("type" => "text"), "alias" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "generation" => array("type" => "tinyint(3)", "not null" => "1", "default" => "0"), "server_url" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), @@ -733,7 +733,7 @@ function db_definition() { "nurl" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "version" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "site_name" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "info" => array("type" => "text", "not null" => "1"), + "info" => array("type" => "text"), "register_policy" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "poco" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "noscrape" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), @@ -770,7 +770,7 @@ function db_definition() { "contact-id" => array("type" => "int(11)", "not null" => "1", "default" => "0"), "knowyou" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "duplex" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), - "note" => array("type" => "text", "not null" => "1"), + "note" => array("type" => "text"), "hash" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "datetime" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), "blocked" => array("type" => "tinyint(1)", "not null" => "1", "default" => "1"), @@ -809,27 +809,27 @@ function db_definition() { "author-link" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "author-avatar" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "title" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "body" => array("type" => "mediumtext", "not null" => "1"), + "body" => array("type" => "mediumtext"), "app" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "verb" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "object-type" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "object" => array("type" => "text", "not null" => "1"), + "object" => array("type" => "text"), "target-type" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "target" => array("type" => "text", "not null" => "1"), - "postopts" => array("type" => "text", "not null" => "1"), + "target" => array("type" => "text"), + "postopts" => array("type" => "text"), "plink" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "resource-id" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "event-id" => array("type" => "int(11)", "not null" => "1", "default" => "0"), - "tag" => array("type" => "mediumtext", "not null" => "1"), - "attach" => array("type" => "mediumtext", "not null" => "1"), - "inform" => array("type" => "mediumtext", "not null" => "1"), - "file" => array("type" => "mediumtext", "not null" => "1"), + "tag" => array("type" => "mediumtext"), + "attach" => array("type" => "mediumtext"), + "inform" => array("type" => "mediumtext"), + "file" => array("type" => "mediumtext"), "location" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "coord" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "allow_cid" => array("type" => "mediumtext", "not null" => "1"), - "allow_gid" => array("type" => "mediumtext", "not null" => "1"), - "deny_cid" => array("type" => "mediumtext", "not null" => "1"), - "deny_gid" => array("type" => "mediumtext", "not null" => "1"), + "allow_cid" => array("type" => "mediumtext"), + "allow_gid" => array("type" => "mediumtext"), + "deny_cid" => array("type" => "mediumtext"), + "deny_gid" => array("type" => "mediumtext"), "private" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "pubmail" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "moderated" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), @@ -845,7 +845,7 @@ function db_definition() { "mention" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "network" => array("type" => "varchar(32)", "not null" => "1", "default" => ""), "rendered-hash" => array("type" => "varchar(32)", "not null" => "1", "default" => ""), - "rendered-html" => array("type" => "mediumtext", "not null" => "1"), + "rendered-html" => array("type" => "mediumtext"), "global" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), ), "indexes" => array( @@ -926,7 +926,7 @@ function db_definition() { "contact-id" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "convid" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"), "title" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "body" => array("type" => "mediumtext", "not null" => "1"), + "body" => array("type" => "mediumtext"), "seen" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "reply" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "replied" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), @@ -954,7 +954,7 @@ function db_definition() { "ssltype" => array("type" => "varchar(16)", "not null" => "1", "default" => ""), "mailbox" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "user" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "pass" => array("type" => "text", "not null" => "1"), + "pass" => array("type" => "text"), "reply_to" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "action" => array("type" => "int(11)", "not null" => "1", "default" => "0"), "movetofolder" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), @@ -985,7 +985,7 @@ function db_definition() { "url" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "photo" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "date" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), - "msg" => array("type" => "mediumtext", "not null" => "1"), + "msg" => array("type" => "mediumtext"), "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), "link" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "iid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), @@ -1016,7 +1016,7 @@ function db_definition() { $database["oembed"] = array( "fields" => array( "url" => array("type" => "varchar(255)", "not null" => "1", "primary" => "1"), - "content" => array("type" => "text", "not null" => "1"), + "content" => array("type" => "text"), "created" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), ), "indexes" => array( @@ -1029,7 +1029,7 @@ function db_definition() { "url" => array("type" => "varchar(255)", "not null" => "1", "primary" => "1"), "guessing" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0", "primary" => "1"), "oembed" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0", "primary" => "1"), - "content" => array("type" => "text", "not null" => "1"), + "content" => array("type" => "text"), "created" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), ), "indexes" => array( @@ -1043,7 +1043,7 @@ function db_definition() { "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), "cat" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "k" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "v" => array("type" => "mediumtext", "not null" => "1"), + "v" => array("type" => "mediumtext"), ), "indexes" => array( "PRIMARY" => array("id"), @@ -1060,7 +1060,7 @@ function db_definition() { "created" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), "edited" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), "title" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "desc" => array("type" => "text", "not null" => "1"), + "desc" => array("type" => "text"), "album" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "filename" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "type" => array("type" => "varchar(128)", "not null" => "1", "default" => "image/jpeg"), @@ -1070,10 +1070,10 @@ function db_definition() { "data" => array("type" => "mediumblob", "not null" => "1"), "scale" => array("type" => "tinyint(3)", "not null" => "1", "default" => "0"), "profile" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), - "allow_cid" => array("type" => "mediumtext", "not null" => "1"), - "allow_gid" => array("type" => "mediumtext", "not null" => "1"), - "deny_cid" => array("type" => "mediumtext", "not null" => "1"), - "deny_gid" => array("type" => "mediumtext", "not null" => "1"), + "allow_cid" => array("type" => "mediumtext"), + "allow_gid" => array("type" => "mediumtext"), + "deny_cid" => array("type" => "mediumtext"), + "deny_gid" => array("type" => "mediumtext"), ), "indexes" => array( "PRIMARY" => array("id"), @@ -1086,16 +1086,16 @@ function db_definition() { "fields" => array( "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), - "q0" => array("type" => "mediumtext", "not null" => "1"), - "q1" => array("type" => "mediumtext", "not null" => "1"), - "q2" => array("type" => "mediumtext", "not null" => "1"), - "q3" => array("type" => "mediumtext", "not null" => "1"), - "q4" => array("type" => "mediumtext", "not null" => "1"), - "q5" => array("type" => "mediumtext", "not null" => "1"), - "q6" => array("type" => "mediumtext", "not null" => "1"), - "q7" => array("type" => "mediumtext", "not null" => "1"), - "q8" => array("type" => "mediumtext", "not null" => "1"), - "q9" => array("type" => "mediumtext", "not null" => "1"), + "q0" => array("type" => "mediumtext"), + "q1" => array("type" => "mediumtext"), + "q2" => array("type" => "mediumtext"), + "q3" => array("type" => "mediumtext"), + "q4" => array("type" => "mediumtext"), + "q5" => array("type" => "mediumtext"), + "q6" => array("type" => "mediumtext"), + "q7" => array("type" => "mediumtext"), + "q8" => array("type" => "mediumtext"), + "q9" => array("type" => "mediumtext"), ), "indexes" => array( "PRIMARY" => array("id"), @@ -1132,26 +1132,26 @@ function db_definition() { "hometown" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "gender" => array("type" => "varchar(32)", "not null" => "1", "default" => ""), "marital" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "with" => array("type" => "text", "not null" => "1"), + "with" => array("type" => "text"), "howlong" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), "sexual" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "politic" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "religion" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "pub_keywords" => array("type" => "text", "not null" => "1"), - "prv_keywords" => array("type" => "text", "not null" => "1"), - "likes" => array("type" => "text", "not null" => "1"), - "dislikes" => array("type" => "text", "not null" => "1"), - "about" => array("type" => "text", "not null" => "1"), + "pub_keywords" => array("type" => "text"), + "prv_keywords" => array("type" => "text"), + "likes" => array("type" => "text"), + "dislikes" => array("type" => "text"), + "about" => array("type" => "text"), "summary" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "music" => array("type" => "text", "not null" => "1"), - "book" => array("type" => "text", "not null" => "1"), - "tv" => array("type" => "text", "not null" => "1"), - "film" => array("type" => "text", "not null" => "1"), - "interest" => array("type" => "text", "not null" => "1"), - "romance" => array("type" => "text", "not null" => "1"), - "work" => array("type" => "text", "not null" => "1"), - "education" => array("type" => "text", "not null" => "1"), - "contact" => array("type" => "text", "not null" => "1"), + "music" => array("type" => "text"), + "book" => array("type" => "text"), + "tv" => array("type" => "text"), + "film" => array("type" => "text"), + "interest" => array("type" => "text"), + "romance" => array("type" => "text"), + "work" => array("type" => "text"), + "education" => array("type" => "text"), + "contact" => array("type" => "text"), "homepage" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "photo" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "thumb" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), @@ -1198,7 +1198,7 @@ function db_definition() { "network" => array("type" => "varchar(32)", "not null" => "1", "default" => ""), "created" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), "last" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), - "content" => array("type" => "mediumtext", "not null" => "1"), + "content" => array("type" => "mediumtext"), "batch" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), ), "indexes" => array( @@ -1239,7 +1239,7 @@ function db_definition() { "fields" => array( "id" => array("type" => "bigint(20) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), "sid" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "data" => array("type" => "text", "not null" => "1"), + "data" => array("type" => "text"), "expire" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), ), "indexes" => array( @@ -1252,8 +1252,8 @@ function db_definition() { "fields" => array( "id" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), "iid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"), - "signed_text" => array("type" => "mediumtext", "not null" => "1"), - "signature" => array("type" => "text", "not null" => "1"), + "signed_text" => array("type" => "mediumtext"), + "signature" => array("type" => "text"), "signer" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), ), "indexes" => array( @@ -1350,7 +1350,7 @@ function db_definition() { $database["tokens"] = array( "fields" => array( "id" => array("type" => "varchar(40)", "not null" => "1", "primary" => "1"), - "secret" => array("type" => "text", "not null" => "1"), + "secret" => array("type" => "text"), "client_id" => array("type" => "varchar(20)", "not null" => "1", "default" => ""), "expires" => array("type" => "int(11)", "not null" => "1", "default" => "0"), "scope" => array("type" => "varchar(200)", "not null" => "1", "default" => ""), @@ -1376,10 +1376,10 @@ function db_definition() { "default-location" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "allow_location" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "theme" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "pubkey" => array("type" => "text", "not null" => "1"), - "prvkey" => array("type" => "text", "not null" => "1"), - "spubkey" => array("type" => "text", "not null" => "1"), - "sprvkey" => array("type" => "text", "not null" => "1"), + "pubkey" => array("type" => "text"), + "prvkey" => array("type" => "text"), + "spubkey" => array("type" => "text"), + "sprvkey" => array("type" => "text"), "verified" => array("type" => "tinyint(1) unsigned", "not null" => "1", "default" => "0"), "blocked" => array("type" => "tinyint(1) unsigned", "not null" => "1", "default" => "0"), "blockwall" => array("type" => "tinyint(1) unsigned", "not null" => "1", "default" => "0"), @@ -1399,11 +1399,11 @@ function db_definition() { "expire_notification_sent" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), "service_class" => array("type" => "varchar(32)", "not null" => "1", "default" => ""), "def_gid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), - "allow_cid" => array("type" => "mediumtext", "not null" => "1"), - "allow_gid" => array("type" => "mediumtext", "not null" => "1"), - "deny_cid" => array("type" => "mediumtext", "not null" => "1"), - "deny_gid" => array("type" => "mediumtext", "not null" => "1"), - "openidserver" => array("type" => "text", "not null" => "1"), + "allow_cid" => array("type" => "mediumtext"), + "allow_gid" => array("type" => "mediumtext"), + "deny_cid" => array("type" => "mediumtext"), + "deny_gid" => array("type" => "mediumtext"), + "openidserver" => array("type" => "text"), ), "indexes" => array( "PRIMARY" => array("uid"), @@ -1423,7 +1423,7 @@ function db_definition() { $database["workerqueue"] = array( "fields" => array( "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "parameter" => array("type" => "text", "not null" => "1"), + "parameter" => array("type" => "text"), "priority" => array("type" => "tinyint(3) unsigned", "not null" => "1", "default" => "0"), "created" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), "pid" => array("type" => "int(11)", "not null" => "1", "default" => "0"), From 1cb6043aea60d142c7bbe0f9576fcc92b4669d1a Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 4 Sep 2016 18:06:07 +0200 Subject: [PATCH 45/60] Attachments are now displayed again. --- include/conversation.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index e74f4c33f0..057526c547 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -390,7 +390,6 @@ function item_fieldlists() { /* These Fields are not added below (yet). They are here to for bug search. `item`.`type`, -`item`.`object`, `item`.`extid`, `item`.`received`, `item`.`changed`, @@ -399,7 +398,6 @@ These Fields are not added below (yet). They are here to for bug search. `item`.`target`, `item`.`resource-id`, `item`.`tag`, -`item`.`attach`, `item`.`inform`, `item`.`pubmail`, `item`.`visible`, @@ -424,7 +422,7 @@ These Fields are not added below (yet). They are here to for bug search. `item`.`verb`, `item`.`object-type`, `item`.`postopts`, `item`.`plink`, `item`.`guid`, `item`.`wall`, `item`.`private`, `item`.`starred`, `item`.`title`, `item`.`body`, `item`.`file`, `item`.`event-id`, - `item`.`location`, `item`.`coord`, `item`.`app`, + `item`.`location`, `item`.`coord`, `item`.`app`, `item`.`attach`, `item`.`rendered-hash`, `item`.`rendered-html`, `item`.`object`, `item`.`allow_cid`, `item`.`allow_gid`, `item`.`deny_cid`, `item`.`deny_gid`, `item`.`id` AS `item_id`, `item`.`network` AS `item_network`, From 2040cb44734fa8534e1deefe9aedb37c0e6981c5 Mon Sep 17 00:00:00 2001 From: ben-utzer Date: Mon, 5 Sep 2016 00:22:39 +0200 Subject: [PATCH 46/60] Update htconfig.md typo, siehe auch https://github.com/friendica/friendica/pull/2754 --- doc/htconfig.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/htconfig.md b/doc/htconfig.md index f7266604f6..fa26236673 100644 --- a/doc/htconfig.md +++ b/doc/htconfig.md @@ -57,7 +57,7 @@ line to your .htconfig.php: * qsearch_limit - Default value is 100. * relay_server - Experimental Diaspora feature. Address of the relay server where public posts should be send to. For example https://podrelay.net * relay_subscribe (Boolean) - Enables the receiving of public posts from the relay. They will be included in the search and on the community page when it is set up to show all public items. -* relay_scope - Can be "all" or "tags". "all" means that every public post should be received. "tags" means that only posts witt selected tags should be received. +* relay_scope - Can be "all" or "tags". "all" means that every public post should be received. "tags" means that only posts with selected tags should be received. * relay_server_tags - Comma separated list of tags for the "tags" subscription (see "relay_scrope") * relay_user_tags (Boolean) - If enabled, the tags from the saved searches will used for the "tags" subscription in addition to the "relay_server_tags". * remove_multiplicated_lines (Boolean) - If enabled, multiple linefeeds in items are stripped to a single one. From 80ecb64f033f503350a01fe35d7e83cccda80c51 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Tue, 6 Sep 2016 08:30:15 +0200 Subject: [PATCH 47/60] new contributor to the docs --- util/credits.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/util/credits.txt b/util/credits.txt index aa9f6d1cde..d3c7c14f16 100644 --- a/util/credits.txt +++ b/util/credits.txt @@ -19,6 +19,7 @@ balderino Beanow Beatriz Vital Ben Roberts +ben-utzer bufalo1973 Calango Jr Carlos Solís From cb0c8335fac72478bf6d176db63732cb46fe2e26 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Tue, 6 Sep 2016 08:36:47 +0200 Subject: [PATCH 48/60] changes since 3.4.2 --- CHANGELOG | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index b393899df8..3cdf2f806b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,61 @@ +Version 3.5 + Friendica Core: + NEW Optional local directory with possible federated contacts [heluecht] + NEW Autocompletion for @-mentions and BBCode tags [rabuzarus] + NEW Added a composer derived autoloader which allows composer autoloaders in addons/libraries [fabrixxm] + NEW theme: frio [rabuzarus, heluecht, fabrixxm] + Enhance .htaccess file (nerdoc, dissolve) + Updates to the translations (DE, ES, IS, IT, RU) [translation teams] + Updates to the documentation [tobiasd, heluecht, mexcon, silke, rabuzarus, fabrixxm, Olivier Mehani, gerhard6380, ben utzer] + Extended the BBCode by [abstract] tag used for bridged postings to networks with limited character length [heluecht] + Code cleanup [heluecht, QuixOr] + Improvements to the API and Friendica specific extensions [heluecht, fabrixxm, gerhard6380] + Improvements to the RSS/Atom feed import [mexcon] + Improvements to the communication with federated networks (Diaspora, Hubzilla, OStatus) [heluecht] + Improvements on the themes (quattro, vier, frost) [rabuzarus, fabrixxm, stieben, heluecht, Quix0r, tobiasd] + Improvements to the ACL dialog [fabrixxm, rabuzarus] + Improvements to the database structure and optimization of queries [heluecht] + Improvements to the UI (contacts, hotkeys, remember me, ARIA, code hightlighting) [rabuzarus, heluecht, tobiasd] + Improvements to the background process (poller, worker) [heluecht] + Improvements to the admin panel [tobiasd, heluecht, fabrixxm] + Improvements to the performance [heluecht] + Improvements to the installation wizzard (language selection, RINO version, check required PHP modules, default theme is now vier) [tobiasd] + Improvements to the relocation of nodes and accounts [heluecht] + Improvements to the DDoS detection [heluecht] + Improvements to the calendar/events module [heluecht, rabuzarus] + Improvements to OpenID login [strk] + Improvements to the ShaShape font [andi + Reworked the implementation of the DFRN, Diaspora protocols [heluecht] + Reworked the notifications code [fabrixxm, rabuzarus, heluecht] + Reworked the p/config code [fabrixxm, rabuzarus] + Reworked XML generation [heluecht] + Removed now unused simplepie from library [heluecht] + + Friendica Addons + Updated to the translations (DE, ES, IS, NL, PT BR), [translation teams] + Piwik [tobiasd] + Twitter Connector [heluecht] + Pumpio Connector [heluecht] + Rendertime [heluecht] + wppost [heluecht] + showmore [rabuzarus] + fromgplus [heluecht] + app.net Connector [heluecht] + GNU Social Connector [heluecht] + LDAP [Olivier Mehani] + smileybutton [rabuzarus] + retriver [mexon] + mailstream [mexon] + NEW notifyall (port from Hubzilla) [rabuzarus] + DEPRECATED cal (now in core), FB Connector, FB Post Connector, FB Sync + + Closed Issues + 683, 786, 796, 922, 1261, 1576, 1701, 1769, 1970, 1145, 1728, 2063, + 2059, 2078, 2079, 2133, 2165, 2194, 2229, 2230, 2241, 2254, 2242, + 2270, 2277, 2339, 2320, 2345, 2352, 2358, 2367, 2373, 2376, 2378, + 2385, 2395, 2402, 2406, 2433, 2472, 2485, 2492, 2506, 2512, 2516, + 2539, 2540, 2893, 2597, 2611, 2617, 2629, 2645, 2687, 2716 + Version 3.4.3 What's new for the users: Updates to the documentation (silke, tobiasd, annando, rebeka-catalina) From af2929492648dda7ba96ed5c3622cb19b295d8d9 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Tue, 6 Sep 2016 08:39:47 +0200 Subject: [PATCH 49/60] one missing issue --- CHANGELOG | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 3cdf2f806b..480c3e3dc6 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -54,7 +54,7 @@ Version 3.5 2059, 2078, 2079, 2133, 2165, 2194, 2229, 2230, 2241, 2254, 2242, 2270, 2277, 2339, 2320, 2345, 2352, 2358, 2367, 2373, 2376, 2378, 2385, 2395, 2402, 2406, 2433, 2472, 2485, 2492, 2506, 2512, 2516, - 2539, 2540, 2893, 2597, 2611, 2617, 2629, 2645, 2687, 2716 + 2539, 2540, 2893, 2597, 2611, 2617, 2629, 2645, 2687, 2716, 2757 Version 3.4.3 What's new for the users: From ced8923323039c1052d214c23a13726837a5f309 Mon Sep 17 00:00:00 2001 From: rabuzarus Date: Tue, 6 Sep 2016 16:21:14 +0200 Subject: [PATCH 50/60] frio: show attachment icons in posts --- view/theme/frio/css/font-awesome.custom.css | 21 +++++++++++++++++++++ view/theme/frio/css/style.css | 18 ++++++++++++++++-- view/theme/frio/templates/head.tpl | 1 + 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 view/theme/frio/css/font-awesome.custom.css diff --git a/view/theme/frio/css/font-awesome.custom.css b/view/theme/frio/css/font-awesome.custom.css new file mode 100644 index 0000000000..2b16636994 --- /dev/null +++ b/view/theme/frio/css/font-awesome.custom.css @@ -0,0 +1,21 @@ +/* +@fiel view/theme/frio/css/font-awesome.custom.css +@brief This file applies Font Awesome icons to some friendica standard classes +*/ + +.icon:before { + font-family: FontAwesome; + font-weight: normal; + font-style: normal; + display: inline-block; + text-decoration: inherit; + vertical-align: top; + font-size: 1.4em; +} +/* media icons */ +.icon.type-image:before { content: "\f1c5"; } +.icon.type-video:before { content: "\f1c8"; } +.icon.type-audio:before { content: "\f1c7"; } +.icon.type-text:before { content: "\f0f6"; } +.icon.type-application:before { content: "\f016"; } +.icon.type-unkn:before { content: "\f016"; } \ No newline at end of file diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index ca0b4653c4..9a31a0caa7 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -1404,6 +1404,15 @@ section #jotOpen { .wall-item-body > a > img { border-radius: 3px; } +.wall-item-body .body-attach > a { + color: #555; + display: inline-block; +} +.wall-item-body .body-attach > a div { + color: #555; + width: 20px; +} + .shared-wrapper, .vevent { margin-left: 50px; @@ -1486,7 +1495,8 @@ blockquote.shared_content { /* wall item hover effects */ .wall-item-container .wall-item-links, -.wall-item-container .wall-item-actions { +.wall-item-container .wall-item-actions, +.wall-item-container .body-attach > a { opacity: 0.3; -webkit-transition: all 0.25s ease-in-out; -moz-transition: all 0.25s ease-in-out; @@ -1495,7 +1505,8 @@ blockquote.shared_content { transition: all 0.25s ease-in-out; } .wall-item-container:hover .wall-item-links, -.wall-item-container:hover .wall-item-actions { +.wall-item-container:hover .wall-item-actions, +.wall-item-container:hover .body-attach > a { opacity: 0.6; -webkit-transition: all 0.25s ease-in-out; -moz-transition: all 0.25s ease-in-out; @@ -1503,6 +1514,9 @@ blockquote.shared_content { -ms-transition: all 0.25s ease-in-out; transition: all 0.25s ease-in-out; } +.wall-item-container .wall-item-body .body-attach > a:hover { + opacity: 1; +} /* /* Comments diff --git a/view/theme/frio/templates/head.tpl b/view/theme/frio/templates/head.tpl index 72d7cbf077..5b132f35f0 100644 --- a/view/theme/frio/templates/head.tpl +++ b/view/theme/frio/templates/head.tpl @@ -30,6 +30,7 @@ {{* own css files *}} +