3651 Commits
2.2 ... 3.6.1

Author SHA1 Message Date
Mario Vavti
d00761628f fix sql empty query error in db update 1216
(cherry picked from commit e4a1286aae)
2018-07-29 08:06:29 +02:00
Mario Vavti
6c10af29ee verrsion bump 2018-07-29 07:09:46 +02:00
Mario Vavti
ae62d6fb86 wrong class name
(cherry picked from commit 5dbd11c6ed)
2018-07-29 07:05:29 +02:00
zotlabs
d2e0ecd6a3 fix unsanitised xchan_name
(cherry picked from commit 9701516228)
2018-07-29 07:05:07 +02:00
zotlabs
13386ddbd7 SECURITY: sanitise vcard fields
(cherry picked from commit 2367d94a42)
2018-07-29 07:04:38 +02:00
zotlabs
17291e04df app update and ownership issues
(cherry picked from commit e28dab17d6)
2018-07-28 21:18:28 +02:00
Mario Vavti
7062a7ce66 fix sql error
(cherry picked from commit ec3a066e4e)
2018-07-26 09:34:48 +02:00
Mario Vavti
52ad5b7df5 version 3.6 2018-07-25 10:28:52 +02:00
Mario Vavti
1b1d11dcf1 Merge branch '3.6RC' 2018-07-25 10:19:19 +02:00
Mario Vavti
35200e5f1b Merge branch '3.6RC' of https://framagit.org/hubzilla/core into 3.6RC 2018-07-25 10:15:23 +02:00
Mario
091ef33f18 Merge branch 'patch-2' into 'dev'
Escape internal quotes in translation on export

See merge request hubzilla/core!1237

(cherry picked from commit 84e57d040b)

64efd07f Escape internal quotes in translation on export
87857fe5 Update hmessages.po
3342fc22 Update hstrings.php
2018-07-23 19:55:25 +02:00
Mario Vavti
aa01c2f4db update changelog
(cherry picked from commit 6be66d6df9)
2018-07-21 22:08:12 +02:00
kostikov
740015339d Add var to respect current hstrings.php format
(cherry picked from commit 062633d312)
2018-07-21 11:39:20 +02:00
kostikov
b7778ca1f9 Update php2po.php
(cherry picked from commit f9b18aa62f)
2018-07-21 11:38:35 +02:00
kostikov
ddd77ee6ee Update update_fail_eml.tpl
(cherry picked from commit 8fc7f2aca1)
2018-07-21 11:37:27 +02:00
kostikov
b625b5f645 Update register_verify_eml.tpl
(cherry picked from commit b6c2c8117e)
2018-07-21 11:36:58 +02:00
kostikov
c9e272a78d Update register_open_eml.tpl
(cherry picked from commit 86a42aad16)
2018-07-21 11:35:30 +02:00
kostikov
9bfb63fd98 Update passchanged_eml.tpl
(cherry picked from commit 8e2e09bb16)
2018-07-21 11:35:07 +02:00
kostikov
21ecf54b73 Update lostpass_eml.tpl
(cherry picked from commit 3713aa210f)
2018-07-21 11:34:42 +02:00
kostikov
429e3ce30a Add new file
(cherry picked from commit a65c23546b)
2018-07-21 11:34:14 +02:00
kostikov
26e20d35c2 Update hstrings.php
(cherry picked from commit 790a9155d4)
2018-07-21 11:32:57 +02:00
kostikov
f40406514c Update hmessages.po
(cherry picked from commit f141b845fd)
2018-07-21 11:32:33 +02:00
Mario Vavti
ed79bef51b prevent double file uploads when dropping files into jot
(cherry picked from commit f6de91bf0f)
2018-07-20 16:45:50 +02:00
Mario Vavti
0cde7f9897 fix jot drag and drop
(cherry picked from commit c72f6e6ea8)
2018-07-20 10:43:38 +02:00
zotlabs
85e21ce617 checkjs fix ($page not bin-hex in all cases)
(cherry picked from commit a94c9d2709)
2018-07-20 09:16:35 +02:00
zotlabs
157a9e895c fix the filtered query string so it can potentially be re-used as is.
(cherry picked from commit 6adbb93f0a)
2018-07-20 09:16:09 +02:00
Mario Vavti
7e2635adfe RC1 2018-07-19 12:27:43 +02:00
Mario
b655d04b34 version 3.4.2 2018-07-19 11:57:35 +02:00
Mario
7f84933cab compatibility fix for future versions 2018-07-19 11:52:12 +02:00
zotlabs
36220fdde8 typo
(cherry picked from commit ec852b0c8d)
2018-07-19 09:21:35 +02:00
zotlabs
67848c03ed query filter was a bit greedy
(cherry picked from commit a05c8ff66b)
2018-07-19 09:21:14 +02:00
Mario
685d05f98b Merge branch 'cherry-pick-5ce50d0a' into '3.6RC'
mangled urls on redirects

See merge request hubzilla/core!1228
2018-07-19 09:20:45 +02:00
zotlabs
931afe98b1 mangled urls on redirects
(cherry picked from commit 5ce50d0a2e)
2018-07-19 09:19:33 +02:00
Mario Vavti
4a6f775334 set the correct album name when moving photos
(cherry picked from commit eb322e8312)
2018-07-18 13:20:20 +02:00
Mario Vavti
5fa3e10701 set the correct album name when moving photos
(cherry picked from commit eb322e8312)
2018-07-18 13:19:35 +02:00
Mario Vavti
896d29d0c0 update composer autoload cache 2018-07-18 11:52:42 +02:00
Mario Vavti
4c633a9fb8 update strings 2018-07-18 11:49:32 +02:00
Mario Vavti
5fd1674d50 version 3.6RC 2018-07-18 11:39:22 +02:00
kostikov
67cbeaa3d4 Update hmessages.po
(cherry picked from commit cbab7d2150)
2018-07-18 08:28:18 +02:00
kostikov
23f3d554b8 Fix wrong plural function logic
(cherry picked from commit 4284088611)
2018-07-18 08:27:53 +02:00
Mario
95355ddec0 Merge branch 'patch-1' into 'master'
Fix wrong plural function logic

See merge request hubzilla/core!1226
2018-07-18 08:27:21 +02:00
kostikov
cbab7d2150 Update hmessages.po 2018-07-18 00:28:04 +02:00
kostikov
4284088611 Fix wrong plural function logic 2018-07-17 21:27:08 +02:00
Mario Vavti
bb70223509 when calling timeago() from mod_mail.js it is called before the translations are applied - move the call to main.js and be more specific with the selector to not trigger calls for other modules (eg network) which is handled elsewhere to not be to much of an performance hog (to many dates at a time) 2018-07-13 11:00:37 +02:00
Mario Vavti
98fb2ec639 let timeago render the date 2018-07-13 10:16:07 +02:00
Mario Vavti
a8cef79b1a let timeago render the date 2018-07-13 10:13:11 +02:00
Mario Vavti
5076e38c1c update jquery.timeago lib 2018-07-13 10:12:11 +02:00
Mario
e000d98cc5 Merge branch 'hookableCSP-mr' into 'dev'
Hookable csp mr

See merge request hubzilla/core!1225
2018-07-13 09:34:48 +02:00
M. Dent
38cc88c861 Hookable csp mr 2018-07-13 09:34:48 +02:00
Mario Vavti
48e74035f2 Merge remote-tracking branch 'mike/master' into dev 2018-07-12 09:16:52 +02:00
zotlabs
38bccecc04 fix to cart behaviour 2018-07-11 18:00:47 -07:00
Andrew Manning
3ebe35f7f7 Merge branch 'patch-1' into 'dev'
Update hstrings.php - spelling - Privatsphäre

See merge request hubzilla/core!1223
2018-07-10 01:36:14 +02:00
Heiko Förster
b81f1111d1 Update hstrings.php - spelling - Privatsphäre 2018-07-08 16:48:37 +02:00
Mario Vavti
ac8db6479e fix css regression 2018-07-07 08:14:11 +02:00
Mario Vavti
d903772831 this is messing with names containing a comma and is superfluous now 2018-07-06 08:44:25 +02:00
zotlabs
cc71e507cb don't provide manage apps button when viewing all available 2018-07-05 22:03:41 -07:00
zotlabs
fe44ebee93 change to import system apps at most once a day per person 2018-07-05 21:55:03 -07:00
zotlabs
c80e009cf3 app store fixes 2018-07-05 21:46:34 -07:00
zotlabs
f6e8ce5516 appstore changes 2018-07-04 23:20:35 -07:00
zotlabs
f808a2b5a1 issue syncing pageflags 2018-07-04 19:53:51 -07:00
zotlabs
51a2e64a89 issue syncing pageflags 2018-07-04 19:51:16 -07:00
zotlabs
bf24a106ce Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-07-04 19:07:52 -07:00
zotlabs
1387b88ba4 remove manage group link from activity_filter, already in personal menu 2018-07-04 19:04:12 -07:00
Mario Vavti
d9ece80fda order nouveau by created instead of received since ordering by received returns unexpected results once old expired items get re-imported 2018-07-04 10:55:38 +02:00
Mario Vavti
b88a9c2627 Revert "add the missing link to manage privacy groups"
This reverts commit c28e27357a.
2018-07-04 10:53:07 +02:00
zotlabs
18dbc490fe remove broken include path hack 2018-07-03 18:26:34 -07:00
zotlabs
d753492382 bad merge 2018-07-01 22:48:05 -07:00
zotlabs
8c26db63dd some changes to support plume 2018-07-01 19:12:45 -07:00
zotlabs
5d7d30f789 propagate expired posts to other networks 2018-06-30 23:57:25 -07:00
zotlabs
63a3f5149a be very precise about what a url looks like 2018-06-30 15:47:06 -07:00
zotlabs
c28e27357a add the missing link to manage privacy groups 2018-06-28 23:17:50 -07:00
zotlabs
fa6e5e4d75 plugins -> addons 2018-06-28 16:43:22 -07:00
zotlabs
cae0a26ac0 String change to reflect the current forum tagging method 2018-06-28 13:38:15 -07:00
zotlabs
156010050c imagick converter: -thumbnail doesn't preserve exif, -resize does 2018-06-26 17:19:32 -07:00
zotlabs
524551a05c do not include system channels in directory results 2018-06-25 23:20:02 -07:00
zotlabs
b89387d608 Merge branch 'dev' of https://framagit.org/hubzilla/core into xdev_merge 2018-06-25 20:58:23 -07:00
Mario Vavti
cef1c09db6 Merge remote-tracking branch 'mike/master' into dev 2018-06-25 23:49:11 +02:00
zotlabs
712759ea4b disable log noise until it is needed 2018-06-25 13:42:21 -07:00
zotlabs
66fc12c928 crc32 is potentially reversible 2018-06-25 13:33:23 -07:00
zotlabs
f66fb8e2a8 SECURITY: logging: hash the session_id in case somebody posts log snippets from active sessions; also provide a hashed process_id if using a daemon process (with no session) for easier tracking of related log events 2018-06-25 13:20:12 -07:00
Mario Vavti
bb786b1f61 version 2018-06-25 14:30:52 +02:00
Mario Vavti
62610b5ec0 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-06-25 14:29:32 +02:00
Mario Vavti
2594178158 updates justified gallery lib to version 3.7 and minor fixes for full template 2018-06-25 14:29:07 +02:00
zotlabs
4866ed5283 remove the white-space pre-wrap property on code blocks. This should probably be done with the word-break property instead 2018-06-24 21:56:58 -07:00
zotlabs
86e93664d0 remote_self wasn't working correctly 2018-06-24 16:56:23 -07:00
Mike Macgirvin
07f0043428 Merge branch 'dev' into 'dev'
2 times the same ;)

See merge request hubzilla/core!1222
2018-06-20 07:50:06 +02:00
Mike Macgirvin
e4f15c078a Merge branch 'patch-1' into 'dev'
NL strings: fix simple error

See merge request hubzilla/core!1221
2018-06-20 07:49:43 +02:00
gia vec
35f29b5d8a Update roadmap.bb 2018-06-19 23:04:50 +02:00
zotlabs
3716f4e809 hiding a channel from the directory also hides them from the cloud rootdir 2018-06-18 22:57:38 -07:00
zotlabs
6cf040d3ee whitespace 2018-06-18 21:11:39 -07:00
zotlabs
48a25b1b85 channel sources: add 'resend' option to discard original author - similar to the Friendica remote_self setting 2018-06-18 20:44:59 -07:00
zotlabs
d448742ae5 translate dos line endings 2018-06-18 20:18:29 -07:00
zotlabs
f801f52274 provide flag to collect_recipients to exclude privacy groups (for federation plugin use) 2018-06-18 17:07:20 -07:00
jeroenpraat
eabbad176d fix simple error 2018-06-18 23:20:35 +02:00
jeroenpraat
e6d7f22ba9 fix simple error 2018-06-18 23:17:29 +02:00
zotlabs
36d73b3da9 consolidate the various project roadmap files and remove stuff that's either finished or abandoned 2018-06-17 21:41:20 -07:00
zotlabs
dcd8fb289e remove admin docs on upgrading from redmatrix; operation is no longer supported 2018-06-17 21:13:46 -07:00
zotlabs
0dc266153d This effectively reverts 438ce44a which symlinked doc/es to a non-existent file (doc/doc/es-es) 2018-06-17 21:01:22 -07:00
zotlabs
7850ecbd95 remove several unused/unreferenced templates 2018-06-17 20:53:05 -07:00
zotlabs
1cb60c7f5e Merge branch 'dev' of https://framagit.org/hubzilla/core into xdev_merge 2018-06-17 17:47:04 -07:00
zotlabs
e4ed0f8acd owa: htmlentity encoding encountered in authentication workflow (possibly introduced during Apache mod_rewrite with QSA flag) 2018-06-17 17:30:09 -07:00
Mario
28043726e6 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-06-17 17:00:17 +02:00
Mario
9c5df51141 some work on mod group 2018-06-17 16:58:12 +02:00
zotlabs
eedfb7de32 slightly more memory efficient way to drop posts of removed connections 2018-06-15 16:28:36 -07:00
zotlabs
3fc955abfd hubzilla core issue #1227 - affinity slider unable to reach 0,99 when slider saved default changes 2018-06-15 15:34:27 -07:00
zotlabs
615fa1119f apply changes to slider defaults across all modules that use buildQuery for updates 2018-06-15 15:32:12 -07:00
zotlabs
7e736c5359 apply changes to slider defaults across all modules that use buildQuery for updates 2018-06-15 15:21:19 -07:00
zotlabs
2f3c3db020 hubzilla core issue #1227 - affinity slider unable to reach 0,99 when slider saved default changes 2018-06-15 02:02:03 -07:00
zotlabs
967d4da30a wiki: word-wrap code on any character 2018-06-14 22:46:20 -07:00
zotlabs
7a144b90fb re-implement/refactor getQuotaInfo() on DAV storage 2018-06-14 20:40:25 -07:00
zotlabs
4a028b6015 Merge branch 'dev' of https://framagit.org/hubzilla/core into xdev_merge 2018-06-13 21:36:29 -07:00
zotlabs
8da0f9d356 optionally report total available space when uploading 2018-06-13 21:06:56 -07:00
Mike Macgirvin
fc396f16ff Merge branch 'dev' into 'dev'
change repo links

See merge request hubzilla/core!1220
2018-06-14 05:46:28 +02:00
zotlabs
b5e4a5f51c SECURITY: provide option to disable the cloud 'root' directory and make the cloud module require a target channel nickname. This is a low impact change as there is currently no disclosure of private information. The presence of a file browser for all the channels on the site could be (and is reported to be) a concern to some people and there is no reason why it shouldn't be optional. 2018-06-13 20:27:10 -07:00
gia vec
77ba647778 Update README.md
(cherry picked from commit 7d73543b84507b74c8058da7dd062d7949c34d61)
2018-06-14 04:33:34 +02:00
gia vec
10491294d8 Update hubzilla-setup.sh
(cherry picked from commit 95f2eb68ca38976b7ca9d3f5c2d89c923d5ef4b5)
2018-06-14 04:26:21 +02:00
zotlabs
65cbc7c2bb uid is integer 2018-06-13 16:37:16 -07:00
zotlabs
1a75e3c24a Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-06-13 16:29:56 -07:00
zotlabs
b0b67fbcc4 Merge branch 'master' of ../hz into dev 2018-06-13 16:28:08 -07:00
zotlabs
254a6be277 null db fields in mod_invite 2018-06-13 16:25:50 -07:00
Mike Macgirvin
fdf920b374 Merge branch 'master' into 'master'
Master

See merge request hubzilla/core!1218
2018-06-13 03:11:05 +02:00
Mike Macgirvin
dffd82cb24 Merge branch 'remove-github-from-README' into 'master'
remove github from link to INSTALL.txt

See merge request hubzilla/core!1215
2018-06-13 03:09:39 +02:00
Mike Macgirvin
633693c94b Merge branch 'fix-addons-links' into 'dev'
fix links to addons repository

See merge request hubzilla/core!1216
2018-06-13 03:07:05 +02:00
gia vec
9840d1ce73 Update hstrings.php 2018-06-12 20:47:19 +02:00
gia vec
6a45bd4372 Update hmessages.po 2018-06-12 20:42:16 +02:00
Herbert Thielen
b361fb4f89 fix links to addons repository 2018-06-11 15:54:22 +02:00
Herbert Thielen
530bc996ca remove github from link to INSTALL.txt 2018-06-11 15:26:30 +02:00
zotlabs
2f2bd03b15 fixes for immediate expire, channel_active not initialised in DB 2018-06-10 22:19:51 -07:00
zotlabs
a8f179145b Merge branch 'master' of ../hz into dev 2018-06-10 22:16:39 -07:00
zotlabs
912ccb31a1 hubzilla core issue #1218 2018-06-10 19:26:35 -07:00
zotlabs
6959c9e423 fixes for immediate expire, channel_active not initialised in DB 2018-06-10 15:27:55 -07:00
Mario Vavti
53363d6808 fix issue #1221
(cherry picked from commit d0f7b1d9b7)
2018-06-10 17:06:12 +02:00
Mario Vavti
1b9a350469 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-06-10 17:05:05 +02:00
Mario Vavti
d0f7b1d9b7 fix issue #1221 2018-06-10 17:04:34 +02:00
Mario
86c0abe67e Merge branch 'dev' into 'dev'
Update symbolic link doc/es

See merge request hubzilla/core!1214

(cherry picked from commit 46cc64f2d8)

438ce44a Update symbolic link doc/es
2018-06-10 16:54:37 +02:00
Mario
46cc64f2d8 Merge branch 'dev' into 'dev'
Update symbolic link doc/es

See merge request hubzilla/core!1214
2018-06-10 16:54:22 +02:00
Mario Vavti
9e29c13678 fix issue #1219 2018-06-09 16:38:15 +02:00
Manuel Jiménez Friaza
438ce44af9 Update symbolic link doc/es 2018-06-09 13:41:13 +02:00
Mario Vavti
e37ccb7a63 move cid filter js to the widget 2018-06-09 13:08:14 +02:00
Mario Vavti
afaa8012c8 bump version 2018-06-09 11:04:56 +02:00
Mario Vavti
c4778e5e24 restrict cid filter to unthreaded order (makes much more sense that way imho and the query is a lot faster) and slighty change order of the filters 2018-06-09 10:58:01 +02:00
Mario Vavti
d5ee8d80ab Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-06-08 23:19:56 +02:00
Mario Vavti
1fbc131469 if unthreaded and cid and not pf, query author only 2018-06-08 23:19:30 +02:00
Mario Vavti
468af29e3e new feature filter network by name 2018-06-08 23:03:05 +02:00
Mario
b05e7943c2 Merge branch 'dev' into 'dev'
Update github.com git repo URLs with framagit.org URLs

See merge request hubzilla/core!1212
2018-06-08 21:04:21 +02:00
Mario
dbf0c1893c Merge branch 'dev' into 'dev'
Update doc/es-es

See merge request hubzilla/core!1213
2018-06-08 21:02:07 +02:00
Manuel Jiménez Friaza
950006a4de Update doc/es-es 2018-06-08 12:49:21 +02:00
Mario Vavti
2f7dfb0286 update changelog
(cherry picked from commit 7c98aea524)
2018-06-08 12:17:33 +02:00
Mario Vavti
7c98aea524 update changelog 2018-06-08 12:16:47 +02:00
Mario
688c5bdd20 bump version 2018-06-08 12:05:06 +02:00
Andrew Manning
4feff1cf89 Update github.com git repo URLs with framagit.org URLs 2018-06-08 05:37:23 -04:00
Andrew Manning
df2d181602 Merge branch 'dev' of framagit.org:hubzilla/core into dev 2018-06-08 05:22:01 -04:00
Mario Vavti
752a9d904c DB update to fix wrong hubloc_url for activitypub hublocs
(cherry picked from commit eb04dbc5ce)
2018-06-08 09:41:35 +02:00
Mario Vavti
a5b9fbaf00 github to framagit transition
(cherry picked from commit 7bf1c5f27b)
2018-06-08 09:05:27 +02:00
Mario Vavti
7bf1c5f27b github to framagit transition 2018-06-08 09:04:19 +02:00
zotlabs
d841303c04 we probably don't need to delivery local items more than once
(cherry picked from commit 139c39c2ce)
2018-06-08 08:38:53 +02:00
zotlabs
5e5b9895df when removing a connection, use the same rules as expire: don't remove items that are starred, filed, or that you replied to.
(cherry picked from commit 5d83469621)
2018-06-08 08:37:36 +02:00
zotlabs
ac8f798e56 don't show forums in forum widget if archived flag is set
(cherry picked from commit 7c05500392)
2018-06-08 08:37:13 +02:00
Manuel Jiménez Friaza
5c8ec5cce4 Initial translations in doc/es-es
(cherry picked from commit ea8ff7037a)
2018-06-08 08:36:19 +02:00
Mario Vavti
19e509d997 escape query string
(cherry picked from commit b3928f3d2a)
2018-06-08 08:33:38 +02:00
Mario Vavti
38b230a128 typo
(cherry picked from commit b47fdd748f)
2018-06-08 08:31:02 +02:00
Mario Vavti
b47fdd748f typo 2018-06-08 08:30:22 +02:00
gia vec
c69c7db4f7 Update developers.bb
(cherry picked from commit 009ecb0ff4)
2018-06-08 08:27:11 +02:00
gia vec
de20d8f73a Update Developers.md
(cherry picked from commit 68ffddafb1)
2018-06-08 08:26:46 +02:00
Mario
5deecfea28 Merge branch 'master' into 'master'
Master

See merge request hubzilla/core!1211
2018-06-08 08:26:15 +02:00
Mario Vavti
dfa48ba17c fixes for search_item.tpl 2018-06-07 23:24:36 +02:00
Mario Vavti
b3928f3d2a escape query string 2018-06-07 22:45:07 +02:00
gia vec
009ecb0ff4 Update developers.bb 2018-06-07 22:13:18 +02:00
gia vec
68ffddafb1 Update Developers.md 2018-06-07 22:10:32 +02:00
Mario Vavti
d3bc50e18d do not query for parents if $conv and $nouveau are set 2018-06-07 21:58:09 +02:00
zotlabs
d3f741a8b6 update a number of links in the code
(cherry picked from commit 2c7597066c)
2018-06-07 14:19:31 +02:00
Mario Vavti
ad4e8fd7f5 Merge remote-tracking branch 'mike/master' into dev 2018-06-07 14:00:18 +02:00
zotlabs
2c7597066c update a number of links in the code 2018-06-06 17:12:20 -07:00
zotlabs
c06c2650e5 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-06-06 16:49:07 -07:00
Mario Vavti
9d664df993 remove gravizot.de from directory fallback servers due to owners request 2018-06-06 22:14:10 +02:00
Mario Vavti
89ecc07eb0 update install instructions 2018-06-06 22:13:27 +02:00
Mario Vavti
9ffb10c0e6 update install instructions 2018-06-06 22:11:55 +02:00
Mario Vavti
dd4b8529c2 Merge remote-tracking branch 'mike/master' into dev 2018-06-06 20:13:03 +02:00
Mario Vavti
5d1d6299cd add the pf argument to the forum notification links 2018-06-06 18:02:25 +02:00
Mario Vavti
4e1c32e610 remove gravizot.de from directory fallback servers due to owners request 2018-06-06 17:59:13 +02:00
zotlabs
d6f98ab88e some work to make menus editable by visitors with webpage write permissions; this needed to revise the link structure so that the page specified an owner channel in the url. Otherwise we could only operate on menus owned by local_channel(). Have done some basic regression testing but have not yet fully tested guest editing functionality. 2018-06-05 21:12:42 -07:00
Mario Vavti
7188e719ef rely on the pf argument to determine if we deal with a forum or not. xchan_pubforum is not set for all public forums in the forum filters for some reason. 2018-06-05 11:56:30 +02:00
Mario Vavti
2328dfc851 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2018-06-05 10:36:54 +02:00
Mario Vavti
30c00df4f3 Merge remote-tracking branch 'mike/master' into dev 2018-06-05 10:36:37 +02:00
zotlabs
e1b85a361c photos not syncing properly if destination is a postgres site 2018-06-04 16:36:13 -07:00
git-marijus
915328d92a Merge pull request #1210 from mjfriaza/dev
Initial Spanish translations in doc/es-es
2018-06-04 16:00:29 +02:00
Mario Vavti
6019a34da2 be specific about the term type and do not sort the results 2018-06-04 15:54:18 +02:00
zotlabs
5a9e6c8a69 sort out some mismatched hovertips on the activity filter 2018-06-03 23:38:03 -07:00
zotlabs
57231a8807 wrong level 2018-06-03 23:16:40 -07:00
zotlabs
dd9f7ef6e9 fix submenunavigation on activity filters 2018-06-03 23:14:01 -07:00
Mario Vavti
8b76b5a0a6 improve network cid query 2018-06-03 23:03:30 +02:00
Mario Vavti
3d3e7bafd5 distinct is needed or it can heavily impact pagination in certain situations (5 per page instead of 20). Add ordering to the select clause to mitigate errors in postgres and add item_thread_top = 1 for slightly better performance. 2018-06-03 17:31:50 +02:00
Mario Vavti
a42ff1e6d4 missing $perm_sql 2018-06-03 13:27:06 +02:00
Manuel Jiménez Friaza
ea8ff7037a Initial translations in doc/es-es 2018-06-03 12:29:27 +02:00
Mario Vavti
2438af1cb5 the pf argument is required here for some functionality in /network 2018-06-03 00:16:46 +02:00
Mario Vavti
a32626e489 add the archived flag 2018-06-02 22:42:20 +02:00
Mario Vavti
3a9f149c80 Merge remote-tracking branch 'mike/master' into dev 2018-06-02 22:39:36 +02:00
Mario Vavti
a0e4f7ddb1 respect the privacy group feature setting in nav 2018-06-02 22:26:08 +02:00
Mario Vavti
8189408190 finalize filters and forum notifications 2018-06-02 22:11:11 +02:00
Mario Vavti
db0a3a7534 some more work on forum notifications 2018-06-02 15:39:38 +02:00
zotlabs
5f612521da Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-06-02 00:01:19 -07:00
Mario Vavti
53efd4e470 unread forum notifications - wip/unfinished 2018-06-01 23:22:52 +02:00
Mario Vavti
22a9e4c9a9 add manage privacy groups entry to the panel channel menu dropdown for now 2018-06-01 21:52:54 +02:00
Mario Vavti
56f0244360 fixes for css fix 2018-06-01 20:59:28 +02:00
Mario Vavti
60a7e68b1b css fix 2018-06-01 13:39:29 +02:00
Mario Vavti
ec6d4f8ac3 add hover effect to dropdown caret 2018-06-01 13:30:02 +02:00
zotlabs
a6ab3dd36a Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-06-01 03:43:11 -07:00
Mario Vavti
6bf0f4225c move file and groups filter to submenu 2018-06-01 12:11:07 +02:00
zotlabs
4df5d44ef9 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-05-31 22:25:01 -07:00
zotlabs
dd962027cc proper pronoun 2018-05-31 21:14:12 -07:00
zotlabs
7c05500392 don't show forums in forum widget if archived flag is set 2018-05-31 16:17:24 -07:00
zotlabs
5d83469621 when removing a connection, use the same rules as expire: don't remove items that are starred, filed, or that you replied to. 2018-05-31 16:11:51 -07:00
Mario Vavti
d03c27d18c implement reset button for filters 2018-05-31 14:02:34 +02:00
Mario Vavti
7e8c7f86f0 change some strings 2018-05-31 13:13:46 +02:00
Mario Vavti
b438ffead4 Merge remote-tracking branch 'mike/master' into dev 2018-05-31 13:06:33 +02:00
Mario Vavti
cbaaa1c57f merge groups and filed posts into activity filters 2018-05-31 13:05:32 +02:00
zotlabs
f0690aadcc typo in unused function 2018-05-30 23:40:01 -07:00
zotlabs
fc31ecdab0 autocomplete private mail addresses based on substring in either the name or webbie (prevously required an '@' to trigger a webbie search) 2018-05-30 17:30:17 -07:00
Mario Vavti
6bfc5aa96c strpos does not work with arrays :( 2018-05-30 23:15:43 +02:00
Mario Vavti
5505f5fa02 restrict the network/channel navbar search to content and hashtags 2018-05-30 22:55:28 +02:00
Mario Vavti
6349a7417f make navbar search use the module search function in /network and /channel 2018-05-30 22:40:22 +02:00
Mario Vavti
e1a55ba471 remove redundant css from default.css 2018-05-30 20:18:13 +02:00
Mario Vavti
881406f82b remove redundant reference for order 2018-05-30 14:54:39 +02:00
Mario Vavti
293e405f5b just query for data we actually need 2018-05-30 14:09:24 +02:00
Mario Vavti
8d6441704b add widget files and templates 2018-05-30 14:06:18 +02:00
Mario Vavti
9fcb3bf2e8 first cut on restructuring the previously called network tabs 2018-05-30 14:02:58 +02:00
zotlabs
7d088c8d56 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-05-29 17:51:36 -07:00
zotlabs
ed3d3b6f27 provide possibility of using different orderings (post, commented) on channel page 2018-05-29 17:35:44 -07:00
Mario Vavti
dcd5f00077 Merge remote-tracking branch 'mike/master' into dev 2018-05-29 09:04:45 +02:00
Manuel Jiménez Friaza
4aa9549828 Some stuff of the Spanish Hubzilla 2018-05-29 08:52:49 +02:00
git-marijus
bca3113fba Merge pull request #1202 from aninf-wo/dev
include photos.php
2018-05-29 08:41:31 +02:00
git-marijus
a8a2c806f2 Merge pull request #1198 from mjfriaza/dev
Some stuff of the Spanish Hubzilla
2018-05-29 08:41:00 +02:00
git-marijus
e00c5c6bf1 Merge pull request #1197 from galettesaucisse/patch-52
Update hstrings.php
2018-05-29 08:40:27 +02:00
git-marijus
7e8c895ccd Merge pull request #1196 from galettesaucisse/patch-51
Update hmessages.po
2018-05-29 08:40:13 +02:00
zotlabs
139c39c2ce we probably don't need to delivery local items more than once 2018-05-28 22:23:40 -07:00
Mario Vavti
6bae91dd7e Merge remote-tracking branch 'mike/master' into dev 2018-05-28 14:59:10 +02:00
zotlabs
c115e8ee60 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-05-27 21:10:52 -07:00
zotlabs
ddebbcc0a0 hubzilla issue #1200 2018-05-27 17:46:25 -07:00
Herbert Thielen
4f3be92a0d include photos.php
required for photo_calculate_scale()
2018-05-27 17:57:35 +02:00
Mario Vavti
9655b27f81 fix js error with catalan language (unescaped strings) 2018-05-27 12:21:20 +02:00
Mario Vavti
5a475453ab fix js error with catalan language (unescaped strings) 2018-05-27 12:20:07 +02:00
Mario Vavti
eb04dbc5ce DB update to fix wrong hubloc_url for activitypub hublocs 2018-05-26 21:15:22 +02:00
Manuel Jiménez Friaza
2bf76928cc Some stuff of the Spanish Hubzilla 2018-05-26 18:09:22 +02:00
Galette Saucisse
89d97c556a Update hstrings.php 2018-05-26 09:18:41 +02:00
Galette Saucisse
4ff2b8ed1b Update hmessages.po 2018-05-26 09:17:04 +02:00
Andrew Manning
ed17e8a649 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2018-05-25 20:07:31 -04:00
Mario Vavti
33700e9cf4 differentiate between direct messages and followers-only messages 2018-05-25 15:29:59 +02:00
git-marijus
13b3594ff3 Merge pull request #1191 from jeroenpraat/master
Finaly update of Dutch language strings
2018-05-25 12:37:11 +02:00
Mario Vavti
eebeb450c3 Merge remote-tracking branch 'mike/master' into dev 2018-05-25 12:34:59 +02:00
Mario Vavti
0fe449ba33 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2018-05-25 12:34:35 +02:00
zotlabs
cd4454100b alternate fix for z_check_dns 2018-05-24 16:32:21 -07:00
Jeroen
fb060c27ef Finaly update of Dutch language strings
Already in dev, but it's up to Mario or Mike to decide if the master may be updated too
2018-05-24 18:25:28 +02:00
Jeroen
fcd9e115c2 Finaly an update of Dutch language strings 2018-05-24 18:22:09 +02:00
git-marijus
cf00a9dbfc Merge pull request #1190 from fadelkon/dev
Update catalan translation for sources changes up to Apr 23rd 2018
2018-05-24 11:55:47 +02:00
git-marijus
bace238e9f Merge pull request #1183 from galettesaucisse/patch-50
Create TermsOfService.md
2018-05-24 11:54:09 +02:00
git-marijus
7586bc9dcf Merge pull request #1182 from galettesaucisse/patch-49
Create gdpr1.md
2018-05-24 11:53:50 +02:00
antil0pa
7a294c3843 Update remote_friends_common.tpl
Found an improperly closed <div> tag. It breaks the way widget are displayed on the page.
2018-05-24 11:50:35 +02:00
git-marijus
2599d78d0c Merge pull request #1185 from antil0pa/patch-1
Update remote_friends_common.tpl
2018-05-24 11:49:35 +02:00
Andrew Manning
fc6b337bbb Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2018-05-24 05:35:50 -04:00
fadelkon
ea17b46e94 Update catalan translation (both po and php) for sources changes up to Apr 23rd 2018, 07:35. 2018-05-24 03:59:01 +02:00
Mario Vavti
9cf8931136 paint the locks on private activitypub items red. their privacy model is "slightly" different from ours 2018-05-23 22:11:13 +02:00
zotlabs
afb29176a4 deal with db failure gracefully 2018-05-23 02:33:46 -07:00
antil0pa
1da0042ee5 Update remote_friends_common.tpl
Found an improperly closed <div> tag. It breaks the way widget are displayed on the page.
2018-05-22 16:24:04 +02:00
zotlabs
76d8e59e9b Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-05-21 21:15:24 -07:00
zotlabs
1061027071 new_channel - make text strings translatable and use the name as a base for the nick if you try to create without entering a nick 2018-05-21 20:17:17 -07:00
zotlabs
a403611ac9 update response types 2018-05-21 19:34:03 -07:00
zotlabs
2b3f931c85 oauth2 discovery per draft-ietf-oauth-discovery-10 2018-05-21 19:25:03 -07:00
zotlabs
9bf26cee6d add hook 'get_system_apps' 2018-05-21 16:19:17 -07:00
zotlabs
d9066ef26b not null violation oauth1 2018-05-21 13:37:55 -07:00
Mario Vavti
4610fa2774 address globbing issue in #1170 2018-05-21 20:01:45 +02:00
Mario Vavti
fff720c00d address globbing issue in #1170 2018-05-21 20:01:03 +02:00
Galette Saucisse
7e26200510 Update gdpr1.md 2018-05-21 10:25:03 +02:00
Galette Saucisse
1dbf89362f Update gdpr1.md 2018-05-21 10:22:19 +02:00
Galette Saucisse
cc1453a8de Update gdpr1.md 2018-05-21 10:16:39 +02:00
Galette Saucisse
a8def37dcf Create TermsOfService.md 2018-05-21 10:08:00 +02:00
Galette Saucisse
355a9ac7ee Create gdpr1.md 2018-05-21 10:05:17 +02:00
Mario Vavti
a8274bbfb3 missing permission description 2018-05-21 09:25:57 +02:00
Mario Vavti
7dadbbbac7 bring jot reset to some more places 2018-05-21 09:13:14 +02:00
zotlabs
49f7d63290 first cut at a general purpose gdpr document. What we would like to do is use a conditional expression so that a site document will be loaded if it exists, and fallback to a project boiler plate document if it does not. This is an exercise for the community. 2018-05-20 23:40:10 -07:00
zotlabs
0044906fab Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-05-20 20:19:11 -07:00
zotlabs
ac8706e919 pleroma does not return a valid JRD when given an accept header of application/jrd+json - it only returns a JRD when passed an accept header of application/json (ahead of anything else because XRD is served at the same endpoint) 2018-05-20 20:15:19 -07:00
Mario
5b48eb3657 update oauth related tables to use bigint/int(10) for user_id column. this is to be more consistent with the rest of the tables and fixes issue #1180 2018-05-20 22:55:13 +02:00
Mario Vavti
43f04e4bc0 improve abconfig queries 2018-05-20 22:55:01 +02:00
Mario Vavti
649260ce44 more local_channel() is not string 2018-05-20 22:54:49 +02:00
Mario Vavti
f091a3c9fc local_channel() is not string 2018-05-20 22:54:36 +02:00
Mario Vavti
18338495af do not update #acl-list-content on every click in jot. we just need this updated when in cutom mode (which is rarely the case). jot interaction was getting sluggish due to this when having lots of contacts. 2018-05-20 22:54:02 +02:00
Mario Vavti
a3f9cf7e97 update to fork-awesome 1.1 and fix an old font-awesome reference 2018-05-20 22:53:19 +02:00
Mario Vavti
ef0f195fe8 fix issue where images were not visible in acl selector after using search 2018-05-20 22:52:33 +02:00
Mario
469809183d update oauth related tables to use bigint/int(10) for user_id column. this is to be more consistent with the rest of the tables and fixes issue #1180 2018-05-20 22:42:47 +02:00
zotlabs
8611e7f8a6 remove unused mindate parameter in the network/stream API method 2018-05-20 13:29:48 -07:00
Mario Vavti
55e1026c98 improve abconfig queries 2018-05-20 20:48:52 +02:00
Mario Vavti
9e1af2492f more local_channel() is not string 2018-05-20 14:15:46 +02:00
Mario Vavti
4eb40528a9 local_channel() is not string 2018-05-20 14:07:30 +02:00
Mario Vavti
6ba77ce0e2 css fix 2018-05-20 13:47:05 +02:00
Mario Vavti
a256195767 remove preview on jot reset 2018-05-20 12:30:08 +02:00
git-marijus
23b53cd1ce Merge pull request #1178 from fadelkon/master
Update catalan translations
2018-05-20 11:44:59 +02:00
git-marijus
26d69796d0 Merge pull request #1176 from galettesaucisse/patch-48
Update hstrings.php
2018-05-20 11:43:22 +02:00
git-marijus
71307d3a2e Merge pull request #1175 from galettesaucisse/patch-47
Update hmessages.po
2018-05-20 11:43:06 +02:00
git-marijus
acb114d0d1 Merge pull request #1174 from anaqreon/dev
Rename Permission Groups to Permission Categories and clarify feature…
2018-05-20 11:42:13 +02:00
git-marijus
1781df006f Merge pull request #1171 from mjfriaza/dev
Added one space & Grammatical consistency error on Spanish translation
2018-05-20 11:41:44 +02:00
Mario Vavti
63f84ece6e backport waitmans changes #1170 from master 2018-05-20 11:39:59 +02:00
git-marijus
d0d14579d1 Merge pull request #1170 from waitman/master
shebang portable
2018-05-20 11:23:15 +02:00
Mario Vavti
b11db26edf do not update #acl-list-content on every click in jot. we just need this updated when in cutom mode (which is rarely the case). jot interaction was getting sluggish due to this when having lots of contacts. 2018-05-20 11:12:39 +02:00
Mario Vavti
6d7e364a0d remove some cruft from initEditor(); 2018-05-20 11:02:18 +02:00
Mario Vavti
7e99931733 implement jot reset button 2018-05-20 09:23:44 +02:00
fadelkon
8733d9f2a6 Update catalan translation (both po and php) for sources changes up to Apr 23rd 2018, 07:35. 2018-05-20 05:59:43 +02:00
fadelkon
29da06c298 Update view/ca/hstrings.php to match the version of view/ca/hmessages.po 2018-05-20 05:46:31 +02:00
Mario Vavti
7a1afc315d update to fork-awesome 1.1 and fix an old font-awesome reference 2018-05-19 22:01:10 +02:00
Mario Vavti
244e813bfa fix issue where images were not visible in acl selector after using search 2018-05-19 21:21:02 +02:00
Mario Vavti
0bc2a4f603 fix issues with attachment labels 2018-05-19 11:04:34 +02:00
Mario Vavti
6abbadf6c8 Merge remote-tracking branch 'mike/master' into dev 2018-05-19 10:20:14 +02:00
zotlabs
8b4af7cf0b hubzilla issue #1086, pending count on admin summary page 2018-05-19 00:54:47 -07:00
Mario Vavti
1ca6ef0f60 Merge remote-tracking branch 'mike/master' into dev 2018-05-19 08:45:41 +02:00
zotlabs
dae89ce91c wrong default param for pubstream_incl (this checkin also picked up a few minor and hopefully non-significant changes) 2018-05-18 16:57:45 -07:00
Mario Vavti
056f3d352c remove debug code 2018-05-18 21:32:18 +02:00
Mario Vavti
620e8f2f0b version 2018-05-18 21:30:58 +02:00
Mario Vavti
7f7e049397 an attempt to fix the new_channel validation situation 2018-05-18 21:30:07 +02:00
Andrew Manning
40d99c1716 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2018-05-18 13:07:24 -04:00
Galette Saucisse
2dd66df8eb Update hstrings.php 2018-05-18 16:05:30 +02:00
Galette Saucisse
eabf804dc9 Update hstrings.php 2018-05-17 16:09:42 +02:00
Galette Saucisse
b955c2d2c5 Update hmessages.po 2018-05-17 16:08:20 +02:00
Mario Vavti
5a6141faa2 display address in contact_format() instead of nick 2018-05-17 12:58:59 +02:00
zotlabs
da460ff32f anybody authenticated not correctly handled in can_comment_on_post() 2018-05-16 10:57:13 +02:00
Mario Vavti
12c571a187 missing include 2018-05-16 10:47:18 +02:00
Andrew Manning
179eeb10a6 Rename Permission Groups to Permission Categories and clarify feature settings text. 2018-05-15 19:57:40 -04:00
zotlabs
aac5fd96cc provide function to fetch photo contents from url 2018-05-15 16:51:04 -07:00
zotlabs
16930c1c54 anybody authenticated not correctly handled in can_comment_on_post() 2018-05-15 16:08:51 -07:00
Manuel Jiménez Friaza
76a2a5c432 Added spaces at PHP replacements & Grammatical consistency error on Spanish translation 2018-05-15 11:58:37 +02:00
Mario Vavti
de63e40a70 we must now provide the full path to the profile image for the cavatar plugin to work 2018-05-15 10:20:20 +02:00
zotlabs
803e85caeb make get_default_profile_photo() pluggable 2018-05-14 23:10:20 -07:00
zotlabs
062dea8e13 code whitespace and formatting 2018-05-14 22:10:21 -07:00
zotlabs
959667c009 If somebody used hooks to create a new permission role, there was no mechanism to insert the new role into the dropdown list of roles at selection time. 2018-05-14 20:23:00 -07:00
zotlabs
46152cc56b ensure all password checking goes through the authenticate plugin hook (for instance in mod_removeme) 2018-05-14 20:17:00 -07:00
zotlabs
c8fc3ad7cd refactor the 'where does the register link point?' logic 2018-05-14 19:19:25 -07:00
zotlabs
301e405769 fine tuning the refactored tag/mention code 2018-05-14 18:27:12 -07:00
zotlabs
229d82c4c7 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-05-14 17:23:19 -07:00
zotlabs
d9759ba63c more refactor tags/mentions 2018-05-14 17:20:25 -07:00
Mario Vavti
2d1dbc8f40 Revert "We're no longer setting a backup ACL for private mention typos."
This reverts commit 356c7003f2.
2018-05-14 09:10:36 +02:00
Mario Vavti
1b160c0a2d Merge remote-tracking branch 'mike/master' into dev 2018-05-14 09:04:40 +02:00
zotlabs
356c7003f2 We're no longer setting a backup ACL for private mention typos. 2018-05-13 15:50:42 -07:00
Mario Vavti
83f8a03964 bump version 2018-05-13 23:10:13 +02:00
Mario Vavti
7ed32a764c consolidate recent autocomplete changes 2018-05-13 23:09:30 +02:00
Mario Vavti
4f69bcfc38 streamline appearence of guest tokens individual perms with those in connedit 2018-05-13 14:29:09 +02:00
Manuel Jiménez Friaza
9a82b8414b Added one space & Grammatical consistency error on Spanish translation 2018-05-13 13:10:39 +02:00
Manuel Jiménez Friaza
0b05203cf4 Added one space & Grammatical consistency error on Spanish translation 2018-05-13 13:07:36 +02:00
Mario Vavti
4135a10211 Merge remote-tracking branch 'mike/master' into dev 2018-05-13 08:07:13 +02:00
zotlabs
7991db14be hubzilla issue #1045 - display pubsites link in info area if invite only 2018-05-12 16:41:09 -07:00
root
1509c9682b replace disable globbing switch 2018-05-12 10:23:45 -07:00
root
e7287152a2 replace disable globbing switch 2018-05-12 10:22:01 -07:00
root
082bd58805 replace disable globbing switch 2018-05-12 10:18:13 -07:00
root
e288f46967 shebang portable 2018-05-12 09:58:19 -07:00
Mario Vavti
efb0ac5996 fix php warning 2018-05-12 13:28:04 +02:00
Mario Vavti
984de8f46f fix postgres issue if register mode is set to yes - with approval 2018-05-12 12:46:38 +02:00
Mario Vavti
2c819c8619 fix postgres issue if register mode is set to yes - with approval 2018-05-12 12:46:09 +02:00
git-marijus
10ce6cc154 Merge pull request #1164 from einervonvielen/install_imagemagick
Install imagemagick. Instructions to avoid DNS check if it fails.
2018-05-11 13:03:28 +02:00
git-marijus
7c1d1f8bd3 Merge pull request #1168 from dawnbreak/dev
Fix composer.json
2018-05-11 13:02:37 +02:00
zotlabs
bcaa0dacdf use '[feed]' in the doc 2018-05-10 21:26:21 -07:00
zotlabs
5dae0ef4f9 add cancel button to editor, fix issue with autosave of categories 2018-05-10 20:54:48 -07:00
zotlabs
62bc5e8051 use Zlib/MessageFilter for sourced messages also 2018-05-10 19:31:51 -07:00
zotlabs
ef6e067a45 add top level posts containing the cid's url to the cid search in mod_network. We could alternatively search for mention tags here for a bit more precision but the sql could get pretty hairy with all the joins going on. 2018-05-10 18:42:58 -07:00
zotlabs
721496f922 hubzilla issue #1169 2018-05-10 17:11:03 -07:00
zotlabs
be225164eb allow either 2018-05-10 13:48:18 -07:00
zotlabs
1650ac2edd tag search not finding articles 2018-05-09 23:44:24 -07:00
zotlabs
bb1aa04689 change the embed from albums hovertip as well to emphasise 'existing' 2018-05-09 21:28:48 -07:00
zotlabs
67bb167cf8 Change hovertip on paperclip button to read 'Attach/Upload file' because a lot of people gravitate to 'insert photo from album' instead, looking for a way to upload into the post. 2018-05-09 21:22:25 -07:00
zotlabs
b4be1da91e thread_author_menu - add some more checks as to whether to show certain links. This should complete work on hubzilla issue #1052 2018-05-09 21:08:12 -07:00
zotlabs
d41556a1ea minor regression on date queries from channel page 2018-05-09 18:20:28 -07:00
zotlabs
50796079fa loose ends discovered while fixing hubzilla #1166 2018-05-09 17:09:38 -07:00
zotlabs
9acf007687 hubzilla issue #1166 2018-05-09 17:03:10 -07:00
Klaus Weidenbach
dafe0afa65 ⬆️ Update libraries.
Updating smarty/smarty (v3.1.31 => v3.1.32)
Updating sabre/vobject (4.1.5 => 4.1.6)
2018-05-09 21:07:25 +02:00
Klaus Weidenbach
30d0f9888c Fix composer.json for recent composer.
The old composer.json is not valid anymore. Make it work with current
composer binaries again.
2018-05-09 21:07:25 +02:00
zotlabs
2bd7d30a5b show/hide dot files only in mod_cloud. For DAV let the OS decide 2018-05-09 01:54:18 -07:00
zotlabs
cab22f228a hide dotfiles by default in /cloud - the web interface (they are still accessible but hidden). Change this behaviour with pconfig system.show_dot_files 2018-05-08 23:01:24 -07:00
zotlabs
0545baaf56 initial backend support for channel page item search 2018-05-08 20:12:49 -07:00
zotlabs
fbd26e8d9d changes made during testing imagick scaling for cover photo thumbnail 2018-05-08 16:50:16 -07:00
zotlabs
6ad4ed87a3 yet another postgres/"group by" issue 2018-05-08 11:48:26 +02:00
zotlabs
3c8de7b59d use imagemagick first stage thumbnail for cover photos, if configured 2018-05-07 23:57:17 -07:00
zotlabs
611e22d676 turn down logging from DAV basicauth until needed 2018-05-07 22:07:44 -07:00
zotlabs
0c43a9bb5d yet another postgres/"group by" issue 2018-05-07 19:33:58 -07:00
zotlabs
eb85d381fd Add supported protocols to siteinfo (not siteinfo.json) 2018-05-07 18:46:42 -07:00
zotlabs
aab16123b5 Simplify first channel creation even further by using a site-configurable default permissions role and removing one more conceptual roadblock for first time registrants. This default role only applies to the first channel an account creates and can be changed from the settings page once they've started to explore. This functionality was always present but optional and not well exposed. Now it is part of the standard workflow and exposed in the admin settings. 2018-05-07 17:31:53 -07:00
zotlabs
1f8b4b14a4 remove the old autocomplete cache mechanism 2018-05-06 20:35:57 -07:00
zotlabs
4640253614 autocomplete after 2 chars instead of 3; this was changed some months back to work around implementation quirks in the custom cache driver that is now disabled. 2018-05-06 20:30:49 -07:00
zotlabs
e646684493 pdf embeds 2018-05-06 19:57:37 -07:00
zotlabs
257dcaaf8b minor tweak to last pull: ensure that feeds have a name besides whitespace characters 2018-05-06 18:25:17 -07:00
zotlabs
a30934c563 ensure that feed xchans have a name 2018-05-06 18:23:39 -07:00
zotlabs
5e6f6e2c3e minor change to test something 2018-05-06 18:10:43 -07:00
zotlabs
620082c16b If one has system.network_page_default set to a different sort order use that order on the 'All Channels' selection of the Collections (privacy group) widget. 2018-05-06 16:55:07 -07:00
zotlabs
83c18f4d4a Back in the day there were good reasons for showing a permission denied photo instead of a null img. It distinguished a 403 from a 404 in an unmistakable way. What we've discovered is that nothing that is gained from this knowledge and it mostly just annoys and confuses people who can't really do anything about it except to express their annoyance/confusion. So just do a 403/404 instead. 2018-05-06 16:12:06 -07:00
zotlabs
b2218574ee allow uninstall of plugins which no longer exists via cmdline tool 2018-05-05 16:19:23 -07:00
Einer von Vielen
1b959a4731 Corrected description for getting a domain. 2018-05-05 21:08:15 +02:00
Einer von Vielen
8ee4a54c10 Corrected description for getting a domain. 2018-05-05 21:01:26 +02:00
Einer von Vielen
acb0604a71 Instructions for imagemagick and failed DNS check. Some minor corrections. 2018-05-05 20:50:06 +02:00
Einer von Vielen
26a7c88ddf Install imagemagick 2018-05-05 20:46:41 +02:00
zotlabs
70a0a83363 more updates and clarifications re: tag/mention documentation 2018-05-05 02:56:57 -07:00
zotlabs
894f5bc79a Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-05-05 02:24:37 -07:00
zotlabs
b47b917eb0 check_item_source: always log uid 2018-05-05 01:52:35 -07:00
zotlabs
c41c04cf11 log all possible return conditions from check_item_source(), use consistent xchan 2018-05-05 01:43:14 -07:00
Mario Vavti
0895756658 Merge remote-tracking branch 'mike/master' into dev 2018-05-05 10:03:57 +02:00
zotlabs
c6e65ec6da support '@' paths 2018-05-05 00:39:53 -07:00
Mario Vavti
192b69b11a update nginx conf to address issue #1155 2018-05-05 08:38:20 +02:00
Mario Vavti
733a5ccb08 use cursor-pointer class instead of fakelink to avoid the link color for the dropdown caret 2018-05-05 07:32:35 +02:00
Mario Vavti
b0ca73c1ba Merge remote-tracking branch 'mike/master' into dev 2018-05-05 07:22:31 +02:00
zotlabs
367937e479 removed the fakelink attribute as it changed the colour of the down arrow. We probably do want to change the hover cursor but not the colour. 2018-05-04 15:20:07 -07:00
zotlabs
6e91d85bcb If somebody precisely clicks the down-arrow on the author photo it should probably also trigger the dropdown 2018-05-04 15:17:15 -07:00
Mario Vavti
f995ef0124 set XML_OPTION_SKIP_WHITE to 1 again 2018-05-04 22:46:43 +02:00
zotlabs
4a26f0d2d4 turn skip white back on - (xml actually doesn't parse if you disable this) 2018-05-04 13:44:34 -07:00
Mario Vavti
90cf238019 fix too big buttons in wiki list 2018-05-04 22:13:45 +02:00
Mario Vavti
97cb108937 missing permission description 2018-05-04 22:03:51 +02:00
Mario Vavti
34f6d9f714 missing basetag 2018-05-04 13:54:12 +02:00
Mario Vavti
76e644e18a bump version 2018-05-04 12:00:59 +02:00
Mario Vavti
a0cefe7fdb Merge remote-tracking branch 'mike/master' into dev 2018-05-04 11:59:46 +02:00
Mario Vavti
be4c9a9598 Merge branch '3.4RC' 2018-05-04 09:46:27 +02:00
Mario Vavti
be852ba857 release version 3.4 2018-05-04 09:45:14 +02:00
Mario Vavti
3370e8516f switch DIRECTORY_FALLBACK_MASTER to https://zotadel.net 2018-05-04 09:43:01 +02:00
Mario Vavti
998dd58206 switch DIRECTORY_FALLBACK_MASTER to https://zotadel.net 2018-05-04 09:37:22 +02:00
Mario Vavti
108cc7b270 update changelog 2018-05-04 09:35:22 +02:00
Mario Vavti
ace8252569 update changelog 2018-05-04 09:34:44 +02:00
zotlabs
56113b0bde check for directories 2018-05-03 23:20:09 -07:00
zotlabs
b52e9731e3 tagging changes: + (old style forum mentions), and underscore space replacement are no longer supported. 2018-05-03 20:14:58 -07:00
zotlabs
61a8a16139 add changes from ae35ac0cec to contact_autocomplete so channel source completion will work correctly 2018-05-03 17:37:16 -07:00
zotlabs
eff72aeb47 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-05-03 17:18:36 -07:00
Mario Vavti
94316da63e RC5 2018-05-03 13:38:54 +02:00
Mario Vavti
ae35ac0cec quick fix for issue #1150 - needs improvement and review of other textcomplete implementations. 2018-05-03 13:14:12 +02:00
Mario Vavti
2f9a044559 Revert "hubzilla issue #1151 - activitypub mention gets bookmarked"
This reverts commit 285781b887.
2018-05-03 12:34:51 +02:00
zotlabs
1f429a0033 hubzilla issue #1151 - activitypub mention gets bookmarked 2018-05-03 12:34:35 +02:00
zotlabs
a3ed0b94cd make the cloud logging a bit less verbose until we actually need it. 2018-05-03 12:33:48 +02:00
Mario Vavti
204838bd10 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2018-05-03 12:29:57 +02:00
Mario Vavti
dd806bd031 update composer autoload cache 2018-05-03 12:27:39 +02:00
git-marijus
8442693d7a Merge pull request #1152 from dawnbreak/dev
Update composer autoload cache.
2018-05-03 12:17:09 +02:00
Mario Vavti
cd526139fb Merge remote-tracking branch 'mike/master' into dev 2018-05-03 09:44:53 +02:00
zotlabs
75c8f656c9 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-05-02 23:18:09 -07:00
zotlabs
459ec78a5e provide easy access to the autoperms setting for forum and repository channels. This may be needed in the future to protect an existing forum from assault by spammers with changing identities. The forum can quickly be turned into membership by approval and either left that way permanently or hopefully reversed at a later date. Previously this would require switching to expert mode or setting a pconfig manually. 2018-05-02 22:59:21 -07:00
zotlabs
6bf5eea646 make the cloud logging a bit less verbose until we actually need it. 2018-05-02 22:05:55 -07:00
zotlabs
e9f49d9d9c admin delete of files 2018-05-02 20:08:59 -07:00
zotlabs
9713436f49 backend work to allow admin to delete photos. Still requires frontend work to give admin access to either the photos and/or the delete link. 2018-05-02 18:23:42 -07:00
zotlabs
406ea67bbc Provide admin delete ability if the viewer is admin but has no existing delete authority. For 3.5+ as a new string is involved. 2018-05-02 17:39:12 -07:00
Klaus Weidenbach
a24d254404 Update composer autoload cache.
Should add to Prepare RC Release documentation:
composer dump-autoload --no-dev
2018-05-02 23:24:48 +02:00
zotlabs
285781b887 hubzilla issue #1151 - activitypub mention gets bookmarked 2018-05-02 13:49:22 -07:00
Mario Vavti
40db68886d RC4 2018-05-02 10:11:05 +02:00
Galette Saucisse
d5088549f8 Create /doc/context/fr/wiki/help.html 2018-05-02 09:49:02 +02:00
Galette Saucisse
03851ee7cc Create /doc/context/fr/webpages/help.html 2018-05-02 09:48:40 +02:00
Galette Saucisse
2d460117fc Create /doc/context/fr/settings/tokens 2018-05-02 09:48:30 +02:00
Galette Saucisse
73cabbf822 Create /doc/context/fr/settings/channel/help.html 2018-05-02 09:48:19 +02:00
Galette Saucisse
411b7964ab Create /doc/context/fr/settings/account/help.html 2018-05-02 09:48:09 +02:00
Galette Saucisse
bc45c5368e Create /doc/context/fr/profile/help.html 2018-05-02 09:47:50 +02:00
Galette Saucisse
7a65b6cfe4 Create /doc/context/photos/help.html 2018-05-02 09:47:39 +02:00
Galette Saucisse
ee464c6589 Create /doc/context/fr/mail/help.html 2018-05-02 09:47:30 +02:00
git-marijus
d83f12e883 Merge pull request #1146 from galettesaucisse/patch-46
Create /doc/context/fr/wiki/help.html
2018-05-02 09:46:24 +02:00
git-marijus
76770c69bf Merge pull request #1145 from galettesaucisse/patch-45
Create /doc/context/fr/webpages/help.html
2018-05-02 09:45:31 +02:00
git-marijus
e9225b15d2 Merge pull request #1144 from galettesaucisse/patch-44
Create /doc/context/fr/settings/tokens
2018-05-02 09:44:49 +02:00
git-marijus
3056b96bb0 Merge pull request #1143 from galettesaucisse/patch-43
Create /doc/context/fr/settings/channel/help.html
2018-05-02 09:44:36 +02:00
git-marijus
856945d838 Merge pull request #1142 from galettesaucisse/patch-42
Create /doc/context/fr/settings/account/help.html
2018-05-02 09:44:10 +02:00
git-marijus
be1c05a03f Merge pull request #1141 from galettesaucisse/patch-40
Create /doc/context/fr/profile/help.html
2018-05-02 09:43:37 +02:00
git-marijus
34717cc83c Merge pull request #1140 from galettesaucisse/patch-39
Create /doc/context/photos/help.html
2018-05-02 09:42:49 +02:00
git-marijus
e73cde1612 Merge pull request #1139 from galettesaucisse/patch-38
Create /doc/context/fr/mail/help.html
2018-05-02 09:42:14 +02:00
zotlabs
a9b71f5b4a The channel import page seems to have missed the big theme cleanup of the last couple of years. 2018-05-02 09:30:45 +02:00
zotlabs
c99fb4b7f1 provide warnings about profile photo and cover photo permissions 2018-05-02 09:30:33 +02:00
zotlabs
b28279241b hubzilla issue #1149, don't duplicate addressbook entries on repeated channel imports 2018-05-02 09:30:23 +02:00
Mario Vavti
5c5ae2969e Revert "Revert "hubzilla issue #1119 - xml2array has issues with some unicode sequences/conversions. Working around it using the older simplexml parser until it can be debugged, as Diaspora does not use complex XML with namespaces; which is where we need the more advaced capabilities of xml2array.""
This reverts commit b223e364c6.
2018-05-02 09:30:05 +02:00
zotlabs
3af691043d parent folder permissions weren't being checked back to the cloud root directory in all cases 2018-05-02 09:29:52 +02:00
Mario Vavti
9615d02b35 Merge remote-tracking branch 'mike/master' into dev 2018-05-02 09:22:23 +02:00
zotlabs
7a55ead97d new feature (post 3.4): allow a different username to be used when importing. 2018-05-01 20:29:07 -07:00
zotlabs
cd200ee706 The channel import page seems to have missed the big theme cleanup of the last couple of years. 2018-05-01 19:38:32 -07:00
zotlabs
db930b794d provide warnings about profile photo and cover photo permissions 2018-05-01 16:54:54 -07:00
zotlabs
08bcd29eee hubzilla issue #1149, don't duplicate addressbook entries on repeated channel imports 2018-05-01 16:15:59 -07:00
Mario Vavti
3f75dd1083 Revert "Revert "hubzilla issue #1119 - xml2array has issues with some unicode sequences/conversions. Working around it using the older simplexml parser until it can be debugged, as Diaspora does not use complex XML with namespaces; which is where we need the more advaced capabilities of xml2array.""
This reverts commit b223e364c6.
2018-05-01 10:34:23 +02:00
Mario Vavti
eb2d6fca3a Merge remote-tracking branch 'mike/master' into dev 2018-05-01 10:19:03 +02:00
zotlabs
32423a7706 parent folder permissions weren't being checked back to the cloud root directory in all cases 2018-04-30 22:30:59 -07:00
Galette Saucisse
57cb4ccb74 Create /doc/context/fr/wiki/help.html 2018-04-30 14:36:19 +02:00
Mario Vavti
12c9e64463 activitypub xchans do not have an xchan_addr. use xchan_url for the follow button if we do not find an xchan_addr 2018-04-30 14:34:25 +02:00
Mario Vavti
d872a0ca86 activitypub xchans do not have an xchan_addr. use xchan_url for the follow button if we do not find an xchan_addr 2018-04-30 14:33:35 +02:00
Galette Saucisse
9c5ddf079a Create /doc/context/fr/webpages/help.html 2018-04-30 14:27:05 +02:00
Galette Saucisse
f094ac19d1 Create /doc/context/fr/settings/tokens 2018-04-30 14:16:02 +02:00
Galette Saucisse
7f244a8039 Create /doc/context/fr/settings/channel/help.html 2018-04-30 14:04:38 +02:00
Galette Saucisse
14953fa5c9 Create /doc/context/fr/settings/account/help.html 2018-04-30 14:02:26 +02:00
Galette Saucisse
75f73fffe1 Create /doc/context/fr/profile/help.html 2018-04-30 12:35:46 +02:00
Galette Saucisse
897dd7f380 Create /doc/context/photos/help.html 2018-04-30 12:30:55 +02:00
Galette Saucisse
95f1366f0c Create /doc/context/fr/mail/help.html 2018-04-30 12:22:42 +02:00
Mario
feb5d3af89 fix another pgsql update error 2018-04-30 11:52:04 +02:00
Mario
875597cde1 fix another pgsql update error 2018-04-30 11:51:14 +02:00
Mario
f15c12376a Merge branch 'master' of https://github.com/redmatrix/hubzilla 2018-04-30 11:34:10 +02:00
Mario Vavti
b223e364c6 Revert "hubzilla issue #1119 - xml2array has issues with some unicode sequences/conversions. Working around it using the older simplexml parser until it can be debugged, as Diaspora does not use complex XML with namespaces; which is where we need the more advaced capabilities of xml2array."
This reverts commit f620274c6a.
2018-04-30 10:28:32 +02:00
Mario Vavti
e1738e8021 Revert "hubzilla issue #1119 - xml2array has issues with some unicode sequences/conversions. Working around it using the older simplexml parser until it can be debugged, as Diaspora does not use complex XML with namespaces; which is where we need the more advaced capabilities of xml2array."
This reverts commit f620274c6a.
2018-04-30 10:27:11 +02:00
Galette Saucisse
a33dfff188 Create /doc/context/fr/events/help.html 2018-04-30 09:59:22 +02:00
git-marijus
0c27fdd944 Merge pull request #1138 from galettesaucisse/patch-37
Create /doc/context/fr/events/help.html
2018-04-30 09:58:35 +02:00
Galette Saucisse
f897cd6bc8 Create /doc/context/fr/connedit/help.html 2018-04-30 09:58:10 +02:00
git-marijus
1bc9672ec8 Merge pull request #1137 from galettesaucisse/patch-36
Create /doc/context/fr/connedit/help.html
2018-04-30 09:57:41 +02:00
Galette Saucisse
dfce7c6ca4 Create /doc/context/fr/connections/ifpending/help.html 2018-04-30 09:56:34 +02:00
git-marijus
6e61e2a45b Merge pull request #1136 from galettesaucisse/patch-35
Create /doc/context/fr/connections/ifpending/help.html
2018-04-30 09:56:12 +02:00
Galette Saucisse
eabed9d0e5 Create /doc/context/fr/connections/help.html 2018-04-30 09:55:45 +02:00
git-marijus
2af61605f2 Merge pull request #1135 from galettesaucisse/patch-34
Create /doc/context/fr/connections/help.html
2018-04-30 09:55:33 +02:00
Galette Saucisse
0992822ce5 Create /doc/context/fr/cloud/help.html 2018-04-30 09:54:57 +02:00
git-marijus
f08777c9ac Merge pull request #1134 from galettesaucisse/patch-33
Create /doc/context/fr/cloud/help.html
2018-04-30 09:54:40 +02:00
HappyPony
472ed909cd Russian translation for cards 2018-04-30 09:54:01 +02:00
git-marijus
3ed19f5b00 Merge pull request #1133 from HappyPony/patch-1
Russian translation for cards
2018-04-30 09:53:49 +02:00
Galette Saucisse
a60b91b21e Create /doc/context/fr/chat/help.html 2018-04-30 09:53:17 +02:00
git-marijus
40dd8aa3d4 Merge pull request #1127 from galettesaucisse/patch-26
Create /doc/context/fr/chat/help.html
2018-04-30 09:53:04 +02:00
Galette Saucisse
02459ebde0 Create /doc/context/fr/cards/help.html 2018-04-30 09:52:47 +02:00
git-marijus
774dc871cc Merge pull request #1126 from galettesaucisse/patch-25
Create /doc/context/fr/cards/help.html
2018-04-30 09:52:32 +02:00
Galette Saucisse
7bb69e20f5 Create /doc/context/fr/apps/edit/help.html 2018-04-30 09:51:43 +02:00
git-marijus
6e0be570dd Merge pull request #1125 from galettesaucisse/patch-24
Create /doc/context/fr/apps/edit/help.html
2018-04-30 09:51:24 +02:00
Galette Saucisse
5dd291fc60 Create /doc/context/fr/appman/help.html 2018-04-30 09:50:49 +02:00
Galette Saucisse
630ccf3810 Create /doc/context/fr/appman/help.html 2018-04-30 09:50:47 +02:00
git-marijus
8d16092171 Merge pull request #1124 from galettesaucisse/patch-23
Create /doc/context/fr/appman/help.html
2018-04-30 09:49:18 +02:00
Galette Saucisse
05c137c1ab Create /doc/context/fr/apps/help.html 2018-04-30 09:48:31 +02:00
git-marijus
83e0442b66 Merge pull request #1123 from galettesaucisse/patch-22
Create /doc/context/fr/apps/help.html
2018-04-30 09:48:13 +02:00
Galette Saucisse
98cfad5f2d Create /doc/context/fr/events/help.html 2018-04-30 09:19:30 +02:00
Mario Vavti
a48e795f8a missing class 2018-04-30 09:14:57 +02:00
zotlabs
f620274c6a hubzilla issue #1119 - xml2array has issues with some unicode sequences/conversions. Working around it using the older simplexml parser until it can be debugged, as Diaspora does not use complex XML with namespaces; which is where we need the more advaced capabilities of xml2array. 2018-04-30 09:14:46 +02:00
zotlabs
ae5b3a83f1 Update issues on postgres 2018-04-30 09:14:32 +02:00
zotlabs
5e23640563 remove unused function 2018-04-30 09:14:22 +02:00
Mario Vavti
7d3dfc3ed8 missing class 2018-04-30 09:13:26 +02:00
Galette Saucisse
5b0991fabc Create /doc/context/fr/connedit/help.html 2018-04-30 09:11:27 +02:00
Mario Vavti
0fa638399f Merge remote-tracking branch 'mike/master' into dev 2018-04-30 09:08:09 +02:00
Galette Saucisse
d59c6aa887 Create /doc/context/fr/connections/ifpending/help.html 2018-04-30 09:00:25 +02:00
Galette Saucisse
b6ec8bf687 Create /doc/context/fr/connections/help.html 2018-04-30 08:56:53 +02:00
Galette Saucisse
f28d6ad59e Create /doc/context/fr/cloud/help.html 2018-04-30 08:46:55 +02:00
zotlabs
e841e48258 hubzilla issue #1119 - xml2array has issues with some unicode sequences/conversions. Working around it using the older simplexml parser until it can be debugged, as Diaspora does not use complex XML with namespaces; which is where we need the more advaced capabilities of xml2array. 2018-04-29 23:05:38 -07:00
HappyPony
c0141a7d5e Russian translation for cards 2018-04-30 06:12:35 +02:00
zotlabs
aa15867c95 Update issues on postgres 2018-04-29 17:50:35 -07:00
Galette Saucisse
8d87b529f5 Create /doc/context/fr/appman/help.html 2018-04-29 20:37:28 +02:00
Galette Saucisse
900663b85f Create /doc/context/fr/chat/help.html 2018-04-29 15:37:19 +02:00
Galette Saucisse
1e79107d0e Create /doc/context/fr/cards/help.html 2018-04-29 15:21:30 +02:00
Galette Saucisse
52803a30b6 Create /doc/context/fr/apps/edit/help.html 2018-04-29 15:09:14 +02:00
Galette Saucisse
eb30658c68 Create /doc/context/fr/appman/help.html 2018-04-29 15:05:41 +02:00
Galette Saucisse
f77aaf1def Create /doc/context/fr/apps/help.html 2018-04-29 14:57:16 +02:00
zotlabs
8c7bf6d2f3 remove unused function 2018-04-28 14:13:56 -07:00
zotlabs
94df121e0a sql error 2018-04-27 14:27:10 +02:00
Mario Vavti
873670594b Merge remote-tracking branch 'mike/master' into dev 2018-04-27 14:24:54 +02:00
zotlabs
09ef1b1bb6 sql error 2018-04-27 02:34:52 -07:00
Mario Vavti
31e9efdae0 RC3 2018-04-27 10:14:04 +02:00
phellmes
bb2103ac45 Update DE translation strings
German strings for development branch and release candidate 3.4
2018-04-27 10:07:25 +02:00
git-marijus
e98c74bce7 Merge pull request #1120 from phellmes/dev
Update DE translation strings
2018-04-27 10:07:06 +02:00
Galette Saucisse
feb03dc194 Update FR toc.html 2018-04-27 10:06:46 +02:00
git-marijus
bb8f73b58a Merge pull request #1117 from galettesaucisse/patch-19
Update FR toc.html
2018-04-27 10:06:11 +02:00
Galette Saucisse
02da3adb5a Delete FR project.bb from wrong folder
apologies
2018-04-27 10:05:54 +02:00
git-marijus
28d1913d84 Merge pull request #1116 from galettesaucisse/patch-18
Delete FR project.bb from wrong folder
2018-04-27 10:04:20 +02:00
Galette Saucisse
051ab698ed Update project.bb 2018-04-27 10:04:00 +02:00
Galette Saucisse
9014524477 Update project.bb and place in correct folder
FR toc.html needs editing
2018-04-27 10:03:55 +02:00
git-marijus
316f68c12d Merge pull request #1115 from galettesaucisse/patch-17
Update project.bb and place in correct folder
2018-04-27 10:01:26 +02:00
mjfriaza
9387be1aa7 New strings: Spanish translation 2018-04-27 10:00:50 +02:00
git-marijus
c3ca257f18 Merge pull request #1113 from mjfriaza/dev
New strings: Spanish translation
2018-04-27 09:59:35 +02:00
zotlabs
d0ba2cf6d4 where possible strip zid parameter from links that get pasted into posts so that they will get a correct zid when rendered 2018-04-27 09:58:17 +02:00
zotlabs
e33d8c288b more testing of attach_move() uncovered some issues 2018-04-27 09:58:07 +02:00
zotlabs
34fbcfdfaa set the 'force' flag on attach_mkdir when initiated from a DAV operation. This will report success if it already exists rather than throwing an exception. 2018-04-27 09:57:57 +02:00
Mario Vavti
2e9738e204 Merge remote-tracking branch 'mike/master' into dev 2018-04-27 09:54:36 +02:00
zotlabs
9a7e8f4d68 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-04-26 20:31:16 -07:00
zotlabs
7b445a5b39 where possible strip zid parameter from links that get pasted into posts so that they will get a correct zid when rendered 2018-04-26 20:27:14 -07:00
zotlabs
ce13fef6aa more testing of attach_move() uncovered some issues 2018-04-26 19:21:08 -07:00
zotlabs
38e99c8354 set the 'force' flag on attach_mkdir when initiated from a DAV operation. This will report success if it already exists rather than throwing an exception. 2018-04-26 17:25:58 -07:00
Mario Vavti
a85b1efa4f minor fixes for dark schema 2018-04-26 22:46:01 +02:00
Mario Vavti
00a95f4b91 minor fixes for dark schema 2018-04-26 22:44:40 +02:00
phellmes
433951ab55 Update DE translation strings
German strings for development branch and release candidate 3.4
2018-04-26 20:58:15 +02:00
Mario Vavti
baa46e105c if there is more than one textarea we need to work through all of them 2018-04-26 20:08:03 +02:00
Mario Vavti
4e389b474a version 2018-04-26 15:41:54 +02:00
Mario Vavti
63c76eae0c a better way to deal with js errors in autocomplete plugins if the object is not available 2018-04-26 15:40:59 +02:00
Mario Vavti
9431785466 omit js error if saved searsches are turned off 2018-04-26 14:53:24 +02:00
Mario Vavti
953391cca9 Merge remote-tracking branch 'mike/master' into dev 2018-04-26 14:22:04 +02:00
Mario Vavti
8e0fc9e762 fix the on select handlers 2018-04-26 13:58:37 +02:00
Mario Vavti
fe4defe752 upgrade to textcomplete (jquery.textcomplete is discontinued), enable built-in cache and unify to start lookup after 3 characters 2018-04-26 12:38:25 +02:00
zotlabs
f32ba06564 work through a few more autocomplete minor nits 2018-04-26 02:42:48 -07:00
zotlabs
a5a6488757 don't load jot autosave content into other document types or edits of other items, but do save these edits in case you need to recover them 2018-04-26 09:58:56 +02:00
zotlabs
b8aabde6c3 malformed embeds from gfycat hubzilla issue #1108 2018-04-26 09:42:54 +02:00
zotlabs
44d4f0a484 generating random numbers too large for 32-bit systems 2018-04-26 09:41:26 +02:00
Mario Vavti
09666ae8e9 Merge remote-tracking branch 'mike/master' into dev 2018-04-26 09:05:47 +02:00
zotlabs
4a60f45220 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-04-25 23:11:23 -07:00
zotlabs
7b9946079f function doc update 2018-04-25 23:10:08 -07:00
zotlabs
fe724acc3b mod_network: privacy group query returning results when group is empty. Notification that the group is empty was also displayed twice. 2018-04-25 22:53:20 -07:00
zotlabs
4409b2b40a don't load jot autosave content into other document types or edits of other items, but do save these edits in case you need to recover them 2018-04-25 21:32:34 -07:00
zotlabs
33f446fcd0 malformed embeds from gfycat hubzilla issue #1108 2018-04-25 20:47:30 -07:00
Mike Macgirvin
953d02e4b7 Update CHANGELOG
more than oauth2
2018-04-26 13:21:14 +10:00
Mike Macgirvin
a124c120f4 Update CHANGELOG
more than oauth2
2018-04-26 13:20:24 +10:00
zotlabs
5f8b093d79 fine tuning 2018-04-25 18:51:30 -07:00
zotlabs
f923d21df3 some tagging work 2018-04-25 18:41:19 -07:00
zotlabs
5a9e9284c2 generating random numbers too large for 32-bit systems 2018-04-25 14:10:11 -07:00
Galette Saucisse
c7c04aba3d Update project.bb 2018-04-25 18:42:46 +02:00
Galette Saucisse
33503349ec Update FR toc.html 2018-04-25 18:12:51 +02:00
Galette Saucisse
ef3994da30 Delete FR project.bb from wrong folder
apologies
2018-04-25 18:11:10 +02:00
Galette Saucisse
2e758f11e7 Update project.bb and place in correct folder
FR toc.html needs editing
2018-04-25 18:08:55 +02:00
Mario Vavti
7283e2e279 bump version 2018-04-25 14:18:17 +02:00
Mario Vavti
352dd364d2 drop box-shadow from generic-content-wrapper (it's probably too 90') and use transparent colors for borders to work better with alternate background colors 2018-04-25 14:17:53 +02:00
Mario Vavti
d5c3363909 bump version 2018-04-25 14:16:47 +02:00
Mario Vavti
2ede8e3675 drop box-shadow from generic-content-wrapper (it's probably too 90') and use transparent colors for borders to work better with alternate background colors 2018-04-25 14:11:41 +02:00
Mario Vavti
fe318d4eb8 changelog 2018-04-25 12:48:53 +02:00
Mario Vavti
c0bf3c8af1 changelog 2018-04-25 12:48:08 +02:00
mjfriaza
175a3c4008 New strings: Spanish translation 2018-04-25 12:46:50 +02:00
Mario Vavti
e9f3095f41 Merge remote-tracking branch 'mike/master' into dev 2018-04-25 11:54:13 +02:00
Mario Vavti
ebf540ffbc rename boxy schema to focus-boxy and bs-default to focus-light 2018-04-25 11:36:22 +02:00
Mario Vavti
4f1031f92b mark simple_* schemas unmaintained and deprecated 2018-04-25 11:36:10 +02:00
Mario Vavti
ddb9db188b rename boxy schema to focus-boxy and bs-default to focus-light 2018-04-25 11:31:10 +02:00
zotlabs
63e8f1f36b undo_post_tagging - don't waste a connection query if we're undoing a hashtag and not a mention. 2018-04-25 02:26:37 -07:00
Mario Vavti
a3f77409a4 mark simple_* schemas unmaintained and deprecated 2018-04-25 11:14:45 +02:00
Mario Vavti
705ff97892 more css fixes for bs-default schema 2018-04-25 11:02:52 +02:00
Mario Vavti
1bb2d0b954 more css fixes for bs-default schema 2018-04-25 11:02:14 +02:00
Mario Vavti
0773b9bf92 css fixes for bs-default schema 2018-04-25 10:58:38 +02:00
Mario Vavti
da775d182a css fixes for bs-default schema 2018-04-25 10:58:08 +02:00
Galette Saucisse
0f836c9d5e Create /doc/fr/project.bb 2018-04-25 10:34:16 +02:00
git-marijus
e77914fe3f Merge pull request #1112 from galettesaucisse/patch-16
Create /doc/fr/project.bb
2018-04-25 10:33:05 +02:00
Mario Vavti
ed785fbb1b Merge remote-tracking branch 'mike/master' into dev 2018-04-25 09:57:28 +02:00
Mario Vavti
25f34d8ad3 show caret-down on item-photo hover to indicate a dropdown menu 2018-04-25 09:56:53 +02:00
Mario Vavti
0a51ea1bfa show caret-down on item-photo hover to indicate a dropdown menu 2018-04-25 09:56:21 +02:00
Galette Saucisse
9ffad65b65 Create /doc/fr/project.bb 2018-04-25 09:40:40 +02:00
zotlabs
8face5a66c make tag autocomplete less scary looking in the editor. If this works out we can simplify and get rid of a huge amount of spaghetti tag logic. 2018-04-24 15:32:24 -07:00
Mario Vavti
edd91a7ed1 changelog 2018-04-24 22:30:52 +02:00
Mario Vavti
c5b32032a7 changelog 2018-04-24 22:30:17 +02:00
Mario Vavti
4bb93c4327 fix regression with forum widget unseen count 2018-04-24 17:11:29 +02:00
Mario Vavti
e11e99b2d1 fix regression with forum widget unseen count 2018-04-24 17:09:51 +02:00
Mario Vavti
2dce7c212f fix php warnings 2018-04-24 15:42:20 +02:00
Mario Vavti
2ea87b65ca fix php warnings 2018-04-24 15:41:35 +02:00
zotlabs
a6c42e8756 added variable to store the raw json string as received, since this is signed and we may need to forward the signed data. 2018-04-23 21:55:16 -07:00
zotlabs
b688dc3995 minor tweak to utf8 usernames after some testing of the underlying encode/decode funations. This probably isn't critical and I do not have a failure case but just trying to cover all bases. 2018-04-23 19:10:35 -07:00
zotlabs
59ac3d04eb Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-04-23 18:15:18 -07:00
zotlabs
97308ad2fb provide a short term compatibility mapping between social_party and social_federation 2018-04-23 16:05:55 -07:00
Mario Vavti
2dff10564c possible fix for issue #1101 2018-04-23 21:13:09 +02:00
Mario Vavti
d401e5e7c4 possible fix for issue #1101 2018-04-23 21:12:31 +02:00
Mario Vavti
67ce5f4c9c version 3.4RC1 2018-04-23 12:05:06 +02:00
Mario Vavti
5bd1ea0b95 Merge branch 'dev' into 3.4RC 2018-04-23 11:52:32 +02:00
Mario Vavti
9ac67b44e4 strings update 2018-04-23 11:37:39 +02:00
Mario Vavti
bc4a1ee500 reverse f325c29b48 - this needs discussion. there is a link to source in the item menu. we might consider linking the timestamp to the source item (like some of the federated networks do) but then remove it from the item dropdown (having things double proved to confuse people). imo the link in the dropdown menu should be sufficient though. 2018-04-23 11:24:13 +02:00
git-marijus
78816f2f74 Merge pull request #1094 from mrjive/dev
Adding link to post source
2018-04-23 11:11:16 +02:00
Mario Vavti
fedb5fbcf5 update zot.php to fix php warning invalid argument supplied for foreach()
- this is taken from pr #1085 which was against wrong branch
2018-04-23 10:47:35 +02:00
Mario Vavti
bb61e672b0 Proposed fix for issue #1091 - mod-help.css
- this is taken from pr #1098 which was against wrong branch
2018-04-23 10:39:46 +02:00
git-marijus
de6f07ec89 Merge pull request #1097 from galettesaucisse/patch-13
Proposed fix for issue #1091 - mod-help.js
2018-04-23 10:28:50 +02:00
git-marijus
d0dc8c1e4c Merge pull request #1093 from mjfriaza/dev
Updated Spanish translation
2018-04-23 10:28:09 +02:00
git-marijus
5ec2e28802 Merge pull request #1090 from galettesaucisse/patch-12
Create /doc/fr/toc.html
2018-04-23 10:27:50 +02:00
git-marijus
391020fd1b Merge pull request #1089 from galettesaucisse/patch-11
delete /doc/fr/about.bb
2018-04-23 10:27:31 +02:00
git-marijus
e46874149d Merge pull request #1088 from galettesaucisse/patch-10
create new file /doc/fr/about/about.bb
2018-04-23 10:27:04 +02:00
git-marijus
7f49f6a45c Merge pull request #1084 from galettesaucisse/patch-9
Update French hmessages.po from Transifex
2018-04-23 10:26:42 +02:00
git-marijus
901b0ac146 Merge pull request #1083 from galettesaucisse/patch-8
Update French hstrings.php from Transifex
2018-04-23 10:26:12 +02:00
Mario Vavti
28bc4089d0 fix permission role test 2018-04-23 10:03:39 +02:00
Mario Vavti
2bca612a92 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2018-04-23 09:49:47 +02:00
zotlabs
66d72d9870 as_fetch depends on the pubcrawl plugin, but is referenced in core. Ensure that it doesn't chuck a wobbly if the function isn't found. This is undergoing significant revision for zot6 so this action is considered a short-term workaround until that work work stabilises. 2018-04-22 22:10:15 -07:00
zotlabs
11624cd83e owa: attempt channel discovery if not found 2018-04-22 19:24:15 -07:00
zotlabs
55b7182136 use consistent naming for 'Channel role and privacy' 2018-04-22 18:48:48 -07:00
zotlabs
55dc6fbc1c imagemagick preserves exif when scaling. GD does not. We do not want to preserve exif on thumbnails which we have rotated, as a browser reading the exif information could rotate them yet again. This checkin adds an abstract function to the generic photo driver which makes the behaviour consistent by stripping EXIF from imagick processed images. However, we will attempt to preserve any ICC colour profiles. See http://php.net/manual/en/imagick.stripimage.php 2018-04-22 18:12:16 -07:00
Jeroen
c446ffb814 back to only nickname 2018-04-22 20:16:04 +02:00
Jeroen
689ced2ac0 back to only nickname 2018-04-22 20:15:14 +02:00
mrjive
51c533536f Merge pull request #10 from redmatrix/dev
Dev
2018-04-22 10:54:41 +02:00
Mike Macgirvin
2431631b46 Update PermissionLimits.php
anon comment permissions fix
2018-04-22 07:00:01 +10:00
Mike Macgirvin
e189f5f887 Update PermissionLimits.php
Difficult for me to do this locally at the moment so updating in git
2018-04-22 06:58:33 +10:00
Mike Macgirvin
5a736d338b Merge pull request #1099 from zotlabs/dev
This is important
2018-04-21 19:09:27 +10:00
zotlabs
95059f2bfd fix permissionlimitstest after recent changes 2018-04-21 00:37:04 -07:00
zotlabs
1bb67f63e3 anonymous comments shouldn't be allowed in StdLimits 2018-04-20 18:58:21 -07:00
zotlabs
b12d254427 fix any misconfigured channel permission limits 2018-04-20 18:58:21 -07:00
zotlabs
af909f66a7 fix any misconfigured channel permission limits 2018-04-20 15:03:16 -07:00
zotlabs
e05f41630b anonymous comments shouldn't be allowed in StdLimits 2018-04-20 14:38:15 -07:00
Galette Saucisse
ba8f8c3403 Proposed fix for issue #1091 2018-04-20 19:17:52 +02:00
mrjive
84e2bdcf76 updated Italian translation 2018-04-20 06:25:40 -07:00
Manuel Jiménez Friaza
a211c16b73 Updated Spanish translation 2018-04-20 11:36:13 +02:00
mrjive
f325c29b48 adding link to post source 2018-04-20 02:29:57 -07:00
zotlabs
d5c451c4a8 This fix needs to go deeper in the code. PermissionLimits::Get is called in a lot of places. If we have no stored setting for a particular permission, return 0 - which is basically no permission except to self. 2018-04-19 23:44:22 -07:00
zotlabs
8d0cbeab38 better fix to permisisons.php - just cast to int. That's exactly what we want. 2018-04-19 23:37:47 -07:00
zotlabs
636fb95e24 permissions php error applying bit compare operation on a (presumed) boolean 2018-04-19 23:35:24 -07:00
zotlabs
2f1ad15645 fix navbar contact autocomplete 'undefined' hovertip 2018-04-19 22:19:52 -07:00
zotlabs
b1ed79f239 fix link to renamed permission roles doc subsection 2018-04-19 19:32:48 -07:00
zotlabs
aea61bf034 rename social - party to social - federation. Cleanup some of the documentation surrounding channels. This checkin contains translatable string changes. 2018-04-19 19:05:13 -07:00
zotlabs
2254262cf0 code booboo may have degraded the performance of the Trending tag query more than necessary 2018-04-19 17:43:50 -07:00
Galette Saucisse
872e4a0513 Create /doc/fr/toc.html
please add translated file toc.html
2018-04-19 18:22:47 +02:00
Galette Saucisse
0e1ea54c32 Update about.bb 2018-04-19 15:30:48 +02:00
Galette Saucisse
ff69413729 delete /doc/fr/about.bb
file is in wrong place, and supersceded by /doc/fr/about/about.bb
2018-04-19 15:11:49 +02:00
Galette Saucisse
a8c2b75b9b create new folder and file about.bb
the current about.bb is under /doc/fr/ and should be under /doc/fr/about/
this file is a complete French translation of the original English file
2018-04-19 15:07:28 +02:00
mrjive
c8ff773b96 Merge pull request #9 from redmatrix/dev
Dev
2018-04-19 09:51:58 +02:00
zotlabs
fa78dc79f3 follow activitypub by webfinger; requires addon update to all federation protocols 2018-04-19 08:44:41 +02:00
zotlabs
1ef31d27c7 relax restrictions to the design tools menu to allow those with write_pages permission; this doesn't fix the underlying modules though as there are some potential security issues at the moment. 2018-04-19 08:44:17 +02:00
zotlabs
f634d15768 do not queue anything which lacks a destination url 2018-04-19 08:42:50 +02:00
zotlabs
9bc9aa123f just provide the trending tags in public stream by default and simplify the query to improve load times; I intend to do additional work on this feature later 2018-04-19 08:42:37 +02:00
Mario Vavti
92b08f1f07 Merge remote-tracking branch 'mike/master' into dev 2018-04-19 08:28:42 +02:00
zotlabs
a81011333f follow activitypub by webfinger; requires addon update to all federation protocols 2018-04-18 19:41:09 -07:00
zotlabs
a2e0706d55 relax restrictions to the design tools menu to allow those with write_pages permission; this doesn't fix the underlying modules though as there are some potential security issues at the moment. 2018-04-18 17:26:05 -07:00
zotlabs
85ccfb4bbc do not queue anything which lacks a destination url 2018-04-18 17:07:29 -07:00
zotlabs
2ec28a5993 just provide the trending tags in public stream by default and simplify the query to improve load times; I intend to do additional work on this feature later 2018-04-18 15:56:57 -07:00
Galette Saucisse
8ff8a3eab9 Update French hmessages.po from Transifex 2018-04-18 17:41:09 +02:00
Galette Saucisse
f5573deb60 Update French hstrings.php from Transifex 2018-04-18 17:39:20 +02:00
Mario Vavti
16dcbc1e67 bump version 2018-04-18 08:52:10 +02:00
Mario Vavti
19782655e6 version bump and strings 2018-04-18 08:39:43 +02:00
zotlabs
c53f788cc8 add alt_pager to mod_moderate, remove legacy $a parameter from all occurrences of alt_pager 2018-04-17 23:36:35 -07:00
Mario Vavti
440ccf19d1 Merge remote-tracking branch 'mike/master' into dev 2018-04-18 08:19:56 +02:00
zotlabs
fc7d9c235c minor code optimisation 2018-04-17 22:23:28 -07:00
zotlabs
0f5ae5cac8 also add the noisy 'rss' tag 2018-04-17 21:55:00 -07:00
zotlabs
6903dbcc0d re-use directory safemode setting for public stream tag filtering since a handful of well-known tags skews the results wildly. Added 'bot' to the list just because it's noisy. A site can customise or nullify this feature if they desire. 2018-04-17 21:48:43 -07:00
zotlabs
a806c68713 fine tuning the public stream tag results 2018-04-17 20:27:36 -07:00
zotlabs
393cd46a82 public stream tag enhancements 2018-04-17 20:08:14 -07:00
zotlabs
0576046d02 when changing cover photo, show existing 2018-04-17 16:29:32 -07:00
Mario Vavti
c0794a83b4 Merge remote-tracking branch 'mike/master' into dev 2018-04-17 19:00:15 +02:00
Mario Vavti
dcd636f7be fix closing parenthesis in wrong spot 2018-04-17 18:56:33 +02:00
Mario Vavti
83e7d89f7e update to bootstrap-4.1 and improve visibility of some text when using custom panel colours 2018-04-17 16:17:44 +02:00
zotlabs
02763811b3 missing update file in the previous update commit 2018-04-16 23:34:47 -07:00
zotlabs
8b9952e770 set the correct webfinger Accept: request header now that Mastodon fixed the bug that we changed it to work around 2018-04-16 23:32:40 -07:00
zotlabs
43e55eb9a6 Active channels information is a bit imprecise. Provide a higher accuracy method. This will require a transition period 2018-04-16 21:40:43 -07:00
zotlabs
120e578a67 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-04-16 20:28:22 -07:00
zotlabs
411b8e48a3 don't save a permcat with empty name 2018-04-16 18:09:14 -07:00
zotlabs
d38b5ed2f5 update the placeholder 2018-04-16 17:40:33 -07:00
zotlabs
04abfdd5a6 update the search js 2018-04-16 17:37:38 -07:00
zotlabs
1662f76f03 hubzilla issue #1078 ; provide content-type header for system emails (was already correct for notification emails) 2018-04-16 16:12:57 -07:00
mrjive
283e5d3a5c Merge pull request #8 from redmatrix/dev
Dev
2018-04-16 17:27:14 +02:00
Mario Vavti
bef5be827d remove some more distinct in queries and observe any regressions. this is related to issue #1079 and commit d47ea20aa8 2018-04-16 11:42:13 +02:00
Mario Vavti
a8b78dc1f5 Merge remote-tracking branch 'mike/master' into dev 2018-04-16 09:24:22 +02:00
zotlabs
19888b95cc draft-cavage issues 2018-04-15 21:04:09 -07:00
zotlabs
3e6a55a295 issue with wiki sync 2018-04-15 17:29:40 -07:00
Mario Vavti
bbe58dd550 css fixes 2018-04-15 10:20:32 +02:00
Mario Vavti
a422063c7d fix regression where in the starred tab only top level posts were visible 2018-04-15 10:15:49 +02:00
zotlabs
518db97962 never mind. dbg(1) now gives you the basic debug result and dbg(2) gives you the verbose debug option with all the results. 2018-04-14 16:56:30 -07:00
zotlabs
fdf5799857 allow dbg(2) to only return the canonical SQL used in the query and the number of results, but not log every single result. Maybe we should use 1 for this and 2 for the full results, but I didn't really want to change the way people do things today. If anybody has a strong opinion about doing this, go ahead and change it and send a note to the developer forum. 2018-04-14 16:47:51 -07:00
mrjive
99dc161483 Merge pull request #7 from redmatrix/dev
Dev
2018-04-14 15:59:30 +02:00
zotlabs
f16dc7afc8 upgrade incutio xmlrpc library to use hubzilla curl wrapper 2018-04-13 17:58:11 -07:00
Galette Saucisse
32cd0cc984 Create /doc/context/fr/settings/features/help.html
French translation for context help
2018-04-13 22:17:48 +02:00
Galette Saucisse
169d75d2d1 Update hstrings.php 2018-04-13 22:17:37 +02:00
Galette Saucisse
6d234daa88 Update hmessages.po 2018-04-13 22:17:27 +02:00
Galette Saucisse
f8f64e853d Create /doc/context/fr/admin/queue/help.html
French translation for context help
2018-04-13 22:17:11 +02:00
Galette Saucisse
823b873e50 Update help.html 2018-04-13 22:16:53 +02:00
Galette Saucisse
5c97280359 translation correction 2018-04-13 22:16:41 +02:00
Galette Saucisse
7e62c3fa29 Create /doc/context/fr/admin/logs/help.html
French translation of context help
2018-04-13 22:16:10 +02:00
Galette Saucisse
c18b6cbd68 Create /doc/context/fr/channel
French translation for context help
2018-04-13 22:15:58 +02:00
git-marijus
29b3950e32 Merge pull request #1067 from galettesaucisse/patch-7
Create /doc/context/fr/settings/features/help.html
2018-04-13 22:14:15 +02:00
git-marijus
17bc11bbd4 Merge pull request #1066 from galettesaucisse/patch-6
Update French hstrings.php
2018-04-13 22:13:33 +02:00
git-marijus
3e937266b2 Merge pull request #1063 from galettesaucisse/patch-5
Update French hmessages.po
2018-04-13 22:13:13 +02:00
git-marijus
a02f22aab7 Merge pull request #1060 from galettesaucisse/patch-4
Create /doc/context/fr/admin/queue/help.html
2018-04-13 22:12:51 +02:00
git-marijus
b31616e5bf Merge pull request #1059 from galettesaucisse/patch-3
Create /doc/context/fr/admin/logs/help.html
2018-04-13 22:12:22 +02:00
git-marijus
b1057e8cd1 Merge pull request #1056 from galettesaucisse/patch-2
Create /doc/context/fr/channel
2018-04-13 22:12:03 +02:00
Mario Vavti
7543e27eae version and strings update 2018-04-13 22:11:08 +02:00
Mario Vavti
8a43bead74 fix illegal string offset warning 2018-04-13 13:20:20 +02:00
Mario Vavti
2867cd2043 fix wrong item key 2018-04-13 12:50:37 +02:00
Mario Vavti
88ca6fc12e Merge remote-tracking branch 'mike/master' into dev 2018-04-13 11:59:09 +02:00
Mario Vavti
e04d3c45a4 provide visible star status for starred posts 2018-04-13 11:58:12 +02:00
mrjive
db586e0c27 Merge pull request #6 from redmatrix/dev
Dev
2018-04-13 10:23:30 +02:00
Mario Vavti
4aaea422bc move the thread author menu to to the wall item photo. the menu list was getting too long. 2018-04-13 10:12:57 +02:00
zotlabs
7fd882a088 autosave comment enhancements 2018-04-12 22:24:25 -07:00
zotlabs
b0396cd646 work on autosave 2018-04-12 21:44:06 -07:00
zotlabs
d5117a62b8 update the tags and mentions section of the member_guide with recent changes 2018-04-12 20:49:20 -07:00
zotlabs
b13328140f accept system_language through either get or post 2018-04-12 18:21:34 -07:00
zotlabs
3be0b0925c remove recipient name from stored notifications but keep them in emails. 2018-04-12 17:55:45 -07:00
Mario Vavti
7c47b9d75c Merge remote-tracking branch 'mike/master' into dev 2018-04-12 14:46:36 +02:00
Mario Vavti
09a8b4b379 fix issue #1047 2018-04-12 10:58:31 +02:00
mrjive
ea36ebd0df Merge pull request #5 from redmatrix/dev
Dev
2018-04-12 10:12:46 +02:00
zotlabs
549f7a53b1 util/dcp (server to cloud file copy) better handling when destination directory is the channel root 2018-04-11 22:27:59 -07:00
zotlabs
739a612824 poll responses: start treating them as hidden activities now so that when this feature gets finished it will work flawlessly for versions greater than today. 2018-04-11 21:51:57 -07:00
zotlabs
953a2fd9b2 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-04-11 17:44:51 -07:00
zotlabs
2fa9645dfc channel delegation: push current identity and pop it on logout from the delegated channel. This fixes the known issue of being forced to log back in after leaving the delegated channel. 2018-04-11 17:40:04 -07:00
Mario Vavti
3bd6450333 also clean localStorage upon logout or channel switch 2018-04-11 12:37:25 +02:00
Mario Vavti
fee258edbe allow to toggle visibility of likes/dislikes in notifications 2018-04-11 11:49:33 +02:00
Mario Vavti
e294dfa760 wrong function 2018-04-11 08:17:30 +02:00
Galette Saucisse
669013f7e6 Create /doc/context/fr/settings/features/help.html
French translation for context help
2018-04-10 19:59:09 +02:00
Galette Saucisse
dde482082e Update hstrings.php 2018-04-10 19:10:11 +02:00
Galette Saucisse
868e9aa058 Update hmessages.po 2018-04-10 18:02:42 +02:00
Galette Saucisse
a815e2e30b Create /doc/context/fr/admin/queue/help.html
French translation for context help
2018-04-10 14:08:26 +02:00
Galette Saucisse
89b76530da Update help.html 2018-04-10 14:06:10 +02:00
Galette Saucisse
e909c2bbce translation correction 2018-04-10 14:05:31 +02:00
Galette Saucisse
ab1e1e9114 Create /doc/context/fr/admin/logs/help.html
French translation of context help
2018-04-10 13:36:38 +02:00
Galette Saucisse
13b0fdadb1 Create /doc/context/fr/channel
French translation for context help
2018-04-10 12:19:29 +02:00
Galette Saucisse
90580a860b Update French hstrings.php
added some missing strings
2018-04-10 12:11:15 +02:00
git-marijus
6d7fdb14f0 Merge pull request #1054 from galettesaucisse/patch-1
Update French hstrings.php
2018-04-10 12:10:45 +02:00
Mario Vavti
a2cb7b9ca4 do not get or set post category if the field is not available. remove logging. 2018-04-10 11:37:57 +02:00
Mario Vavti
91aeb25523 fix autosave content not cleaned after post submission 2018-04-10 11:17:20 +02:00
Galette Saucisse
bb86ee7cc4 Update French hstrings.php
added some missing strings
2018-04-10 09:54:26 +02:00
zotlabs
887a59066b last commented expiration setting in admin 2018-04-10 00:05:20 -07:00
zotlabs
e060135304 add commented_days parameter to item_expire(), default 7. Both expire_days and commented_days have to be exceeded to expire. 2018-04-09 23:39:47 -07:00
zotlabs
6bf2c64aa2 Create catcloud widget and provide a type option which can include 'cards' or 'articles' 2018-04-09 21:44:04 -07:00
Andrew Manning
1aba495a1c Replace pushState with replaceState to prevent browser history clutter in Help pages. 2018-04-09 20:50:41 -04:00
git-marijus
482e26ae26 Merge pull request #1053 from jschweinsberg/fix/pubstream-notifications
Public stream notifications
2018-04-09 22:41:40 +02:00
Julian Schweinsberg
c50105b8c1 Show "Unseen public activity" channel setting when site only public streams are activated 2018-04-09 19:26:35 +02:00
Julian Schweinsberg
530a378aa1 Modified notifications widget to add the public stream when the current user is allowed to see it only 2018-04-09 19:18:53 +02:00
Mario Vavti
04935f139d fix xchan_query() for anon comments 2018-04-09 14:28:41 +02:00
Mario Vavti
5228462363 bump version 2018-04-09 13:19:22 +02:00
git-marijus
9dc831f1ef Merge pull request #1051 from anaqreon/auto-save
Auto-save comment and post text
2018-04-09 13:18:09 +02:00
zotlabs
6844d7c752 don't provide a connect button for transient identities 2018-04-08 22:53:04 -07:00
zotlabs
cda3d23508 more intelligent handling of level 0 - and remove an extraneous logging function 2018-04-08 22:09:08 -07:00
zotlabs
e4ee165e29 more work merging techlevels and features 2018-04-08 22:02:48 -07:00
zotlabs
e0255c0dc4 first cut of feature/techlevel merge 2018-04-08 20:05:30 -07:00
zotlabs
6ce3ca1ce0 anon_identity_init: put anonymous commenters in network 'anon' so that they can be easily distinguished from federated network members and handled appropriately. 2018-04-08 19:28:57 -07:00
zotlabs
c3cd613f42 extend AC 2018-04-08 17:30:46 -07:00
zotlabs
f2078b25ad hubzilla issue #1050 pubstream notifications visible when pubstream is not 2018-04-08 16:51:29 -07:00
Andrew Manning
f9ec3c66ff Added feature setting for auto-save, defaulting to enabled. 2018-04-08 19:44:21 -04:00
Andrew Manning
4760dc9bcb removed Autosavetext.php file since it is not used with localStorage 2018-04-08 14:25:04 -04:00
Andrew Manning
808f362921 Merge branch 'dev' into auto-save 2018-04-08 14:23:34 -04:00
Andrew Manning
43cafcc761 Auto-save post and comment entry using localStorage in browser. 2018-04-08 14:18:10 -04:00
zotlabs
b00c22b69b we shouldn't need distinct here, since ids_to_querystr() will filter duplicates. It might have an effect on pager totals. Need to monitor for a few days. 2018-04-08 12:55:52 +02:00
git-marijus
73248fd227 Merge pull request #1048 from dentm42/plugin-error-trap
Trap plugin install/uninstall load/unload errors to avoid whitescreen
2018-04-08 11:48:05 +02:00
Mario Vavti
7205ffb5c0 Merge remote-tracking branch 'mike/master' into dev 2018-04-08 11:38:31 +02:00
M.Dent
ff77f14f2f Remove remove plugin from \App::[] on uninstall 2018-04-07 23:41:22 -04:00
M.Dent
a0cba6564f Uninstall plugin on Exception on load. 2018-04-07 23:12:39 -04:00
M.Dent
35b4f0a863 Add class for Exceptions 2018-04-07 23:01:18 -04:00
DM42.Net (Matt Dent)
0fba1a777e Add error handler and try/catch for all () calls 2018-04-07 22:17:19 -04:00
zotlabs
d47ea20aa8 we shouldn't need distinct here, since ids_to_querystr() will filter duplicates. It might have an effect on pager totals. Need to monitor for a few days. 2018-04-07 16:54:49 -07:00
Andrew Manning
be6dcb5d0a Merge branch 'dev' into auto-save 2018-04-07 17:48:48 -04:00
Mario Vavti
bddf8cfde4 Merge remote-tracking branch 'mike/master' into dev 2018-04-07 14:16:59 +02:00
Mario Vavti
9369150db7 rename button label in editpost from edit to submit 2018-04-07 14:15:07 +02:00
Mario Vavti
0fd7634339 rename relation to relationship - issue #1044 2018-04-07 13:50:41 +02:00
Mario Vavti
969a91c432 use Title instead of Caption - issue #1037 2018-04-07 13:36:34 +02:00
Mario Vavti
4d08fcf1a7 Use Add Files/Photos instead of Upload to open the upload dialog 2018-04-07 13:29:36 +02:00
zotlabs
8048b7addc channel import failing to provide channel_password value 2018-04-06 16:45:25 -07:00
zotlabs
4499ee178f put directory server in siteinfo - there are a lot of sites using broken directories 2018-04-06 01:24:38 -07:00
zotlabs
b17f741050 bring back the dnt policy document, not sure when it was lost 2018-04-05 22:15:15 -07:00
zotlabs
4a45c35c4e oauth2 client settings page 2018-04-05 21:01:36 -07:00
zotlabs
f4c94ab121 use profile_store_lowlevel() when importing profile structures to ensure all non-null fields are present 2018-04-05 17:31:20 -07:00
zotlabs
64bb1ca2bb Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-04-05 17:18:34 -07:00
zotlabs
b7386a0e88 fix permalinks to children of articles and cards 2018-04-05 16:58:37 -07:00
mrjive
a7ff2cc5ea Merge pull request #3 from redmatrix/dev
Dev
2018-04-05 10:52:39 +02:00
Mario Vavti
dcacdd23c8 Merge remote-tracking branch 'mike/master' into dev 2018-04-05 10:44:00 +02:00
Mario Vavti
8e46b07268 bump version 2018-04-05 10:31:51 +02:00
Mario Vavti
2f4c441074 change hearts for heart in reactions but cheet with the unicode 2018-04-05 10:11:02 +02:00
Mario Vavti
61f85bcb14 use transform to scale emojis. this prevents text jumping on hover 2018-04-05 10:10:26 +02:00
Mario Vavti
699ff644ad fix missing login/out buttons for medium screensize 2018-04-05 09:36:32 +02:00
zotlabs
0877e5b578 wrong function 2018-04-05 09:36:16 +02:00
zotlabs
46114bb24d display and link issues with quoted tags 2018-04-05 09:35:29 +02:00
zotlabs
6208ee3809 don't include the q and PHPSESSID request variables in a redirected rpost 2018-04-05 09:34:09 +02:00
zotlabs
17e341d245 php strpos() empty needle warning when a term entry has no url 2018-04-05 09:33:17 +02:00
zotlabs
f22c7afc59 preserve existing categories when updating an app from an embed source 2018-04-05 09:32:51 +02:00
zotlabs
d7aa24fd2d app sellpage not being stored 2018-04-05 09:32:35 +02:00
Mario Vavti
255c5ae94f new markdown lib seems to handle < and > correct. remove the workaraound. 2018-04-05 09:31:30 +02:00
zotlabs
ab2ff4a520 tagadelic was being overly protective of permissions. 2018-04-05 09:31:00 +02:00
zotlabs
1a53a4bc53 make list mode work in cards and articles 2018-04-05 09:30:01 +02:00
zotlabs
4423f4c930 make alt_pager work for articles/cards 2018-04-05 09:29:51 +02:00
zotlabs
9c512bb645 hubzilla issue #1013 - comments not displayed in single card/article view 2018-04-05 09:28:05 +02:00
git-marijus
bd0959b5a4 Merge pull request #1039 from phellmes/doco-feat-add
add basic structure for additional features documentation
2018-04-05 09:18:15 +02:00
zotlabs
fe401203bd bbcode() - ensure that $options is always an array, as the interface has changed slightly 2018-04-04 23:14:41 -07:00
zotlabs
c86032d4dc oauth2 dynamic client registration update 2018-04-04 20:58:54 -07:00
zotlabs
e864679942 private forum mentions 2018-04-04 18:53:06 -07:00
zotlabs
cadef5924f Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-04-04 18:15:33 -07:00
zotlabs
1a25b0bda7 allow the profile recrods to be cloned separately 2018-04-04 17:54:43 -07:00
zotlabs
f748139606 allow the link target attribute to be modified in bbcode() from much further up the call stack in prepare_page() which will usually refer to a local item. 2018-04-04 16:33:11 -07:00
Andrew Manning
a5aff7d0c9 Post body and title are auto-saved 2018-04-04 15:22:38 -04:00
phellmes
2afe28785c add basic structure for additional features documentation
Setting the raw frame with overview, short descriptions like in code
and already revealing skill levels.

Based on the current (recently modified) structure of the feature settings.

Detailed descriptions in work and coming with later commits as well as
a dedicated admin section for that topic. Better menu integration
may be possible with Andrew's new doco structure work in progress later.
2018-04-04 16:00:34 +02:00
Mario Vavti
aca719ac74 do not use punify() in get_baseurl() due to performance issues 2018-04-04 15:01:16 +02:00
zotlabs
8871f8d0f4 disable the oauth2testvehicle completely until it is safe 2018-04-03 21:58:11 -07:00
zotlabs
29b377d4c5 get rid of dangerous test code 2018-04-03 21:13:26 -07:00
zotlabs
4915a4efbb OAuth2 integration 2018-04-03 21:08:40 -07:00
zotlabs
245142cc07 Merge branch 'master' into oauth2 2018-04-03 19:57:35 -07:00
zotlabs
5ac0f371c7 community tags: allow signature of either author or owner so that it stands a chance of working across multiple delivery chains 2018-04-03 17:52:54 -07:00
zotlabs
cf6d51bee8 some more work on hubzilla issue #1019 2018-04-02 22:47:11 -07:00
zotlabs
d68ce0f345 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-04-02 20:45:18 -07:00
zotlabs
4e21c14ff6 community tagging refactor - we no longer send an edited post/comment to everybody. The post owner approves the tag and this is transmitted along with the tag activity. Recipients check the signature of the approval and add the tag to their local copy of the post. 2018-04-02 20:39:28 -07:00
zotlabs
753e1e4616 commtag refactor 2018-04-02 19:32:22 -07:00
zotlabs
9a1f051068 missing year on profile birthday input, some optimisations to stats 2018-04-02 13:32:10 -07:00
zotlabs
bcffb6cf55 obscurify chats 2018-04-01 16:53:10 -07:00
Mario Vavti
0e09dca952 fix missing login/out buttons for medium screensize 2018-04-01 20:19:56 +02:00
zotlabs
3bd3686acf Merge branch 'oauth2' of https://github.com/anaqreon/hubzilla into oauth2 2018-03-31 14:00:09 -07:00
zotlabs
4493304fa7 wrong function 2018-03-31 13:22:12 -07:00
Andrew Manning
6decffb00c Merge branch 'dev' into oauth2 2018-03-31 13:41:29 -04:00
zotlabs
54e941724f Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-03-31 01:45:26 -07:00
zotlabs
e155e7d9ce undo vcard on display module until we can make it accurate 2018-03-31 01:43:33 -07:00
Mario Vavti
6433ce70a1 Merge remote-tracking branch 'mike/master' into dev 2018-03-31 09:26:58 +02:00
zotlabs
1e086a4ac8 Hubzilla issue #1022 cleanup of post formatting 2018-03-30 17:13:21 -07:00
zotlabs
1c3e669761 Hubzilla issue #1022 - improve the usability 2018-03-30 16:47:47 -07:00
zotlabs
af125fbe4f Hubzilla issue #1022 - provide a way to share wiki pages. Currently this is only implemented in the 'edit' pane and could use some improvement/enhancement 2018-03-30 16:09:25 -07:00
zotlabs
43249bd4be hubzilla issue #1020 - PM using unicode domain for recipient. May require further testing 2018-03-30 15:18:33 -07:00
zotlabs
f54aa4f21e allow case independence of replacements as well as patterns 2018-03-30 01:59:32 -07:00
Mario Vavti
6822415ee2 Merge remote-tracking branch 'mike/master' into dev 2018-03-30 09:07:43 +02:00
zotlabs
6d0e1b0e07 display and link issues with quoted tags 2018-03-29 17:06:23 -07:00
zotlabs
238303d819 add directory keyword links to profile 2018-03-29 15:32:35 -07:00
zotlabs
998f39868f directory: link entry keywords to a directory keyword search 2018-03-29 14:27:26 -07:00
mrjive
20ac91703d Merge pull request #1 from redmatrix/dev
Dev
2018-03-29 17:47:50 +02:00
zotlabs
33bb89729c hubzilla issue #1019 - punycode urls on connedit page when displaying locations 2018-03-29 02:26:25 -07:00
Mario Vavti
e06e64823f bump version 2018-03-29 10:30:32 +02:00
zotlabs
cd485b0fdf hubzilla issue #1015 - login with unicode domain name 2018-03-28 19:25:11 -07:00
zotlabs
1cf0de568d use context method 2018-03-28 18:32:04 -07:00
zotlabs
662316e687 update folder timestamp on uploaded files (fixme - we need to recurse back to the storage root but that is for another day) 2018-03-27 21:13:14 -07:00
zotlabs
14383a4c4a uexport: set content-type to json and add sections info to the default filename if present 2018-03-27 18:43:59 -07:00
Andrew Manning
1dc795722a Merge branch 'dev' into oauth2 2018-03-27 21:11:34 -04:00
zotlabs
08274ffab7 put vcard widget with author of top-level post on display page 2018-03-27 18:01:20 -07:00
zotlabs
5ea11d1222 don't include the q and PHPSESSID request variables in a redirected rpost 2018-03-27 16:27:28 -07:00
zotlabs
35b6c2baad Hard fail imports of removed channels. This is silly. 2018-03-27 15:08:27 -07:00
zotlabs
a92f22a4a4 IDN: force baseurl to be punycode; for consistency and federation all internal urls are US-ASCII, unicode MAY be used for display. 2018-03-25 23:02:41 -07:00
zotlabs
2fc3f381ac php strpos() empty needle warning when a term entry has no url 2018-03-25 21:48:42 -07:00
zotlabs
2a2a21a736 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-03-25 21:17:34 -07:00
zotlabs
5a739ddc47 Merge branch 'newmemberwidget' 2018-03-25 21:16:10 -07:00
zotlabs
4ef2493e95 testing start_menu feature 2018-03-25 21:15:23 -07:00
Mario Vavti
c98776923a Merge remote-tracking branch 'mike/master' into dev 2018-03-25 11:21:24 +02:00
zotlabs
bb4f9eecbe preserve existing categories when updating an app from an embed source 2018-03-24 21:17:15 -07:00
zotlabs
d4e91d5d9b app sellpage not being stored 2018-03-24 15:13:19 -07:00
zotlabs
558e3f8042 code optimisations and de-duplication on updating parent commented timestamp 2018-03-24 02:22:24 -07:00
Mario Vavti
9f9b9dfd82 Merge remote-tracking branch 'mike/master' into dev 2018-03-24 09:12:48 +01:00
zotlabs
a8d81a68d6 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-03-23 21:44:55 -07:00
zotlabs
abe6ab4775 logic fallacy when updating parent timestamp of moderated comment 2018-03-23 21:24:24 -07:00
zotlabs
9a155cf5a5 turn newmember widget into a feature 2018-03-23 19:03:30 -07:00
Mario Vavti
ae9e64cedf prevent reload loop if somebody lands on /ochannel (without channel_address and without trailing slash) 2018-03-23 10:37:10 +01:00
zotlabs
e6d62f6e05 Add Ochannel module for testing OStatus bad behaviour 2018-03-23 10:36:56 +01:00
goofy-bz
09567da292 Update hmessages.po
typofix
2018-03-23 10:30:40 +01:00
fadelkon
a1ce5df74f Update translations for catalan (ca/ca_ES) from transifex 2018-03-23 10:29:57 +01:00
git-marijus
dede5fabeb Merge pull request #1004 from goofy-bz/patch-1
Update hmessages.po
2018-03-23 10:27:56 +01:00
git-marijus
4a4c18b8b3 Merge pull request #1008 from fadelkon/update_cat_translation
Update translations for catalan (ca/ca_ES) from transifex
2018-03-23 10:27:17 +01:00
git-marijus
06026c1c27 Merge pull request #1009 from dawnbreak/QA_testing
👷Extend Travis, add PostgreSQL10.
2018-03-23 10:26:26 +01:00
git-marijus
e2b9162a30 Merge pull request #1010 from dawnbreak/dev
⬆️ Update libraries.
2018-03-23 10:25:58 +01:00
Mario Vavti
eec4d9b5ad an attemot to fix the PermissionRolesTest 2018-03-23 10:16:06 +01:00
Mario Vavti
376091010f Merge remote-tracking branch 'mike/master' into dev 2018-03-23 10:03:54 +01:00
Mario Vavti
ac967db4e8 new markdown lib seems to handle < and > correct. remove the workaraound. 2018-03-23 09:40:24 +01:00
zotlabs
af8cbf000f tagadelic was being overly protective of permissions. 2018-03-22 21:23:12 -07:00
zotlabs
034032c7c2 slight change in mail privacy implementation. If you initiate a private mail conversation and they respond, accept the reply. You can't hide behind your permissions or lack thereof. Often this will be accidental. If you truly want to block them from replying and your permissions otherwise would not allow them to reply, delete the conversation. 2018-03-22 19:52:25 -07:00
zotlabs
05e11844e5 make list mode work in cards and articles 2018-03-22 17:17:00 -07:00
zotlabs
4ba91cf4e3 make alt_pager work for articles/cards 2018-03-22 16:34:27 -07:00
zotlabs
9a52b90f22 hubzilla issue #1013 - comments not displayed in single card/article view 2018-03-22 15:38:00 -07:00
Mario Vavti
8ea8700eef prevent reload loop if somebody lands on /ochannel (without channel_address and without trailing slash) 2018-03-22 13:55:23 +01:00
zotlabs
1f128e84fb Hubzilla issue #1006, fix anonymous comments bump thread before being approved. 2018-03-21 22:52:24 -07:00
zotlabs
1514b0f4e5 initial support for alternative sort orders on the cloud pages. Can be triggered manually but further development is required. 2018-03-21 21:19:18 -07:00
zotlabs
dc066d4c9b Add Ochannel module for testing OStatus bad behaviour 2018-03-21 15:44:56 -07:00
zotlabs
3d6b606792 add the social "party" permission role 2018-03-20 04:08:36 -07:00
Klaus Weidenbach
c80837a9e6 ⬆️ Update libraries.
michelf/php-markdown (1.7.0 => 1.8.0)
ezyang/htmlpurifier (v4.9.3 => v4.10.0)
commerceguys/intl (v0.7.4 => v0.7.5)
sabre/http (4.2.3 => v4.2.4)
sabre/vobject (4.1.3 => 4.1.5)
2018-03-18 02:15:29 +01:00
Klaus Weidenbach
a732b2bca1 👷Extend Travis, add PostgreSQL10.
Add PostgreSQL10 to TravisCI through Docker container.
Use PHP7.2 instead of PHP7.1 as default test environment.
Update to current stable MariaDB 10.2 from stable (GA) 10.1.
2018-03-17 23:27:56 +01:00
Mario Vavti
0009f7f051 do not include pending registrations in accounts and goaway to /admin/accounts after approval or denial of an pending registration 2018-03-17 21:52:56 +01:00
fadelkon
7b04c7e7df Update translations for catalan (ca/ca_ES) from transifex 2018-03-17 19:03:10 +01:00
Mario Vavti
b5cc26fe76 Merge remote-tracking branch 'mike/master' into dev 2018-03-17 09:02:48 +01:00
goofy-bz
b3cb78a598 Update hmessages.po
typofix
2018-03-17 08:24:16 +01:00
zotlabs
60b38a3a52 slight re-org and update of documentation, moving the tutorial to the top. 2018-03-16 15:34:09 -07:00
Mario Vavti
c0a896ff5e change hearts for heart in reactions but cheet with the unicode 2018-03-16 12:03:52 +01:00
Mario Vavti
63bbde2368 use transform to scale emojis. this prevents text jumping on hover 2018-03-16 11:03:22 +01:00
zotlabs
91b710b07d add auth flag to share attributes so we can make a costly determination to use zid at post submission time instead of making multiple calls to is_matrix_url() at render time 2018-03-15 17:51:24 -07:00
Mario Vavti
34fee2a790 match hosts instead of urls to decide if to zid or not to zid 2018-03-15 14:53:18 +01:00
Mario Vavti
6c709551ce do not always zid share links. add missing < 2018-03-15 14:31:50 +01:00
Mario Vavti
aa4f8b2901 add xchan_network = zot and xchan_deleted = 0 to the random_profile() query 2018-03-15 13:34:40 +01:00
Mario Vavti
3003f85a3e fix channel_address 2018-03-15 11:09:58 +01:00
Mario Vavti
33573edafa make the oneway-overlay slightly opaque 2018-03-15 11:09:22 +01:00
Mario Vavti
95c53c7e0b add zotadel.net to directory fallback servers 2018-03-15 10:13:30 +01:00
zotlabs
a94a28bb7e mastodon content-warning cont: only strip nsfw tag if a content warning spoiler is used. Else it's legitimately nsfw. 2018-03-14 20:47:11 -07:00
zotlabs
7b56fdebac more work with unicode usernames 2018-03-14 18:42:07 -07:00
zotlabs
0905018d3b use original exif_read_data() parameters which were lost in a regression; unset automatic nsfw category generated for Mastodon content warning posts, as people use CW as a spoiler mechanism 99% of the time and flagging inappropriate content 1% of the time. 2018-03-14 14:51:33 -07:00
Mario Vavti
9d230b1f4c indicate that there are events today in notifications by changing the badge class from secondary to danger. issue #1001 2018-03-14 21:39:33 +01:00
Mario Vavti
9f4064e03b update justified gallery lib from 3.6.3 to 3.6.5 2018-03-14 11:49:19 +01:00
Mario Vavti
461e86423a Merge remote-tracking branch 'mike/master' into dev 2018-03-14 11:37:24 +01:00
Mario Vavti
f70413a031 fix channel_address 2018-03-14 10:47:36 +01:00
Mario Vavti
26b7a3aca0 make the oneway-overlay slightly opaque 2018-03-14 10:33:23 +01:00
Mario Vavti
75721b7e82 reveal the profile name field only if multi prifiles feature is enabled 2018-03-14 10:24:08 +01:00
Mario Vavti
fa3e7a574f show site registration notifications setting only to site admin 2018-03-14 10:03:17 +01:00
Mario Vavti
d4fa33dddd whitespace 2018-03-14 09:19:06 +01:00
zotlabs
a0cbed80f3 make unicode usernames work in chanview module 2018-03-14 00:50:12 -07:00
zotlabs
128d1f7aa8 somewhere along the line the output of exif_read_data() changed and it no longer provides populated sections. Adjust for the new format and allow for the old because I cannot find documentation of this change anywhere. This affects photo rotation and the photo map feature. 2018-03-13 22:47:11 -07:00
Mario Vavti
09a841f3be add ability to disable newmember widget ahead of time 2018-03-13 15:20:32 +01:00
mrjive
074bf009d8 Partial italina translationhmessages.po hstrings.php 2018-03-13 12:02:06 +01:00
git-marijus
268b96effa Merge pull request #1000 from mrjive/dev
Connections page filtering for active connections
2018-03-13 12:01:23 +01:00
Manuel Jiménez Friaza
5a3c2b19c9 Spanish translation: adapted the new timeago's stuff 2018-03-13 11:59:36 +01:00
git-marijus
b120394b49 Merge pull request #999 from mjfriaza/dev
Spanish translation: adapted the new timeago's stuff
2018-03-13 11:58:40 +01:00
Manuel Jiménez Friaza
46c67e7f2f Spanish translation: adapted the new timeago's stuff 2018-03-13 11:20:08 +01:00
mrjive
790660e612 Merge pull request #18 from redmatrix/dev
Dev
2018-03-13 10:59:21 +01:00
mrjive
2bcfa0c126 small work on connections page 2018-03-13 02:57:08 -07:00
Mario Vavti
e02029ecc6 bump version 2018-03-13 09:46:11 +01:00
Manuel Jiménez Friaza
09e143dc1f Spanish translation: added el before artículo, which is the correct construction. 2018-03-13 09:38:03 +01:00
git-marijus
53c1d3775c Merge pull request #997 from mjfriaza/dev
Spanish translation: added "el" before "artículo", which is the correct construction
2018-03-13 09:37:16 +01:00
zotlabs
62ad32cf2e obscure permission issue with custom permissions when using the highly discouraged advisory privacy modes 2018-03-13 09:08:32 +01:00
Mario Vavti
150e238b02 Merge remote-tracking branch 'mike/master' into dev 2018-03-13 09:05:40 +01:00
zotlabs
ab1d47b36f unicode/emoji usernames. Warning: experimental feature, unstable, untested, disabled by default, use at your own risk, may not federate to other platforms and protocols. May not clone correctly. Bug reports which neglect to include detailed roubleshooting information and patches/pull requests will be ignored. 2018-03-12 20:54:55 -07:00
Andrew Manning
dcd658f12e Merge branch 'dev' into oauth2 2018-03-12 19:50:25 -04:00
zotlabs
34399b8b47 obscure permission issue with custom permissions when using the highly discouraged advisory privacy modes 2018-03-12 15:47:33 -07:00
Mario Vavti
092c1c8c4c add extra firstpage check 2018-03-12 09:54:15 +01:00
Mario Vavti
b265a55b81 Merge remote-tracking branch 'mike/master' into dev 2018-03-12 09:37:29 +01:00
zotlabs
717ae54868 Setup - .htconfig.php write access is now required for automated installation. [String change - leave in dev for the next release] 2018-03-11 16:42:46 -07:00
Mario Vavti
ade11568f9 update mysql schema 2018-03-11 13:53:53 +01:00
Mario Vavti
98541beee3 update mysql schema 2018-03-11 13:53:15 +01:00
Manuel Jiménez Friaza
ec12b78ddf Spanish translation: added el before artículo, which is the correct construction. 2018-03-11 13:07:11 +01:00
zotlabs
08d2adddf5 remove debugging 2018-03-10 13:21:22 -08:00
zotlabs
a417389934 trim expects error ... in admin/site 2018-03-10 13:20:20 -08:00
Andrew Manning
aa6f7481a0 Fixed access_token request bug and returned oauth2-server-php library to unmodified state. 2018-03-10 15:43:13 -05:00
Mario Vavti
ff2935e70c do not use trim on array 2018-03-10 21:22:21 +01:00
Mario Vavti
cd21519de3 do not use trim on array 2018-03-10 21:21:44 +01:00
Andrew Manning
a4de63ca92 Merge branch 'dev' into oauth2 2018-03-10 15:10:09 -05:00
Mario
4baf5eab16 Merge branch '3.2RC' 2018-03-09 11:12:18 +01:00
Mario Vavti
7361af85b5 bump version 2018-03-09 11:07:40 +01:00
Mario Vavti
8ce644af28 update changelog 2018-03-09 11:06:28 +01:00
Mario Vavti
78040330b6 update changelog 2018-03-09 11:06:05 +01:00
zotlabs
3f88a7619f notifications-btn-1 does not actually require the text-white class and this is known to cause issues on dark themes 2018-03-09 09:35:55 +01:00
Mathieu "Matbac" Bacou
056ec81a71 Uniformize title input with other input fields
Add rounded corners to mimic categories input field and main text area.
2018-03-09 09:24:47 +01:00
Mathieu "Matbac" Bacou
bc40651bc2 Remove useless background spec for category field 2018-03-09 09:24:35 +01:00
Mathieu "Matbac" Bacou
442b510b23 Fix background of tags field 2018-03-09 09:24:25 +01:00
Mathieu "Thrar" Bacou
4db112e28e Fix code background in wiki pages
Fix needed after commit c444e40c01
2018-03-09 09:24:14 +01:00
git-marijus
4fdad3b8af Merge pull request #994 from Reylak/dev
RedBasic theme dark schema update
2018-03-09 09:21:52 +01:00
Mario Vavti
9c02c66ed3 remove redundant comma 2018-03-09 09:17:57 +01:00
Mario Vavti
d82bf2b921 Merge remote-tracking branch 'mike/master' into dev 2018-03-09 09:04:14 +01:00
zotlabs
3ee35b83c2 notifications-btn-1 does not actually require the text-white class and this is known to cause issues on dark themes 2018-03-08 14:23:34 -08:00
Mathieu "Matbac" Bacou
500b141341 Uniformize title input with other input fields
Add rounded corners to mimic categories input field and main text area.
2018-03-08 21:12:33 +01:00
Mathieu "Matbac" Bacou
f9cca2422a Remove useless background spec for category field 2018-03-08 21:02:51 +01:00
Mathieu "Matbac" Bacou
76a8006003 Fix background of tags field 2018-03-08 20:56:23 +01:00
Mathieu "Thrar" Bacou
7ac70e1f23 Fix code background in wiki pages
Fix needed after commit c444e40c01
2018-03-08 20:14:44 +01:00
Mario
a0a1246efb use dbunescbin() for cover photos 2018-03-08 10:52:49 +01:00
Mario
8705882e6e use dbunescbin() for cover photos 2018-03-08 10:50:03 +01:00
Mario
2105cfd433 fix syntax error in postgres update 2018-03-08 10:27:43 +01:00
Mario
16f9e7bd40 fix syntax error in postgres update 2018-03-08 10:20:40 +01:00
Mario Vavti
f3a753bda6 Merge remote-tracking branch 'mike/master' into dev 2018-03-08 08:55:25 +01:00
zotlabs
1700aedbed remove extraneous logging 2018-03-07 17:29:01 -08:00
zotlabs
48b1042347 hashtag autocomplete 2018-03-07 16:59:55 -08:00
zotlabs
a454aad124 federated polls: GNU-Social requires us to preserve the original order of the poll answers for use in making a vote, unlike diaspora (which selects by guid) and activitypub (which selects by non-localisable text). 2018-03-07 15:39:14 -08:00
zotlabs
c8afde6f87 process follow from article menu in the background, do not reload page - hubzilla issue #987 2018-03-07 21:41:48 +01:00
Mario Vavti
726576363c RC3 2018-03-07 21:17:07 +01:00
Mario Vavti
d2ffe29343 we need the javascript in the template since strings are involved 2018-03-07 21:15:15 +01:00
Mario Vavti
ce81de1409 more bootstrap accordion fixes 2018-03-07 21:15:04 +01:00
Mario Vavti
89bbf6cd67 we do not support separate mobile themes anymore 2018-03-07 21:14:50 +01:00
Mario Vavti
17c102ebe1 we need the javascript in the template since strings are involved 2018-03-07 21:11:57 +01:00
Mario Vavti
d6812cf75e more bootstrap accordion fixes 2018-03-07 20:47:18 +01:00
Mario Vavti
04f7f99fc3 we do not support separate mobile themes anymore 2018-03-07 20:29:37 +01:00
zotlabs
46a4208b3d don't add pending connections to the default privacy group until accepted 2018-03-07 08:59:29 +01:00
zotlabs
f0f58dade8 federated polls: add poll_author which will be necessary for Diaspora federation 2018-03-06 15:31:45 -08:00
zotlabs
b282e45a02 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-03-06 15:23:05 -08:00
zotlabs
0a876e1518 don't add pending connections to the default privacy group until accepted 2018-03-06 11:39:49 -08:00
Mario Vavti
1d3d713c1c update changelog 2018-03-06 11:16:16 +01:00
Mario Vavti
da9fe27db1 update changelog 2018-03-06 11:15:47 +01:00
Andrew Manning
f91db3ee8e Improve rendering of Readme files in plugin settings 2018-03-06 09:00:33 +01:00
git-marijus
c7351c0922 Merge pull request #991 from anaqreon/dev
Improve rendering of Readme files in plugin settings
2018-03-06 08:49:06 +01:00
Andrew Manning
99247d0c59 Improve rendering of Readme files in plugin settings 2018-03-05 20:42:06 -05:00
Andrew Manning
9b13db1c48 Merge branch 'dev' into oauth2 2018-03-05 20:06:47 -05:00
Mario Vavti
ed79621c76 RC2 2018-03-05 23:06:27 +01:00
Mario Vavti
afdde44061 add pdl file for mod moderate 2018-03-05 23:04:35 +01:00
Mario Vavti
c462d2f15e add pdl file for mod moderate 2018-03-05 23:03:58 +01:00
Mario Vavti
c304361c9b fix javascript error if there are no notifications 2018-03-05 22:59:51 +01:00
Mario Vavti
bae2af09a0 fix javascript error if there are no notifications 2018-03-05 22:59:05 +01:00
Mario Vavti
12ca4caa4a update redbasic theme screenshot 2018-03-05 22:40:23 +01:00
Mario Vavti
a0e0b82067 update redbasic theme screenshot 2018-03-05 22:39:27 +01:00
mrjive
9fb65e10bd Partial italina translationhmessages.po hstrings.php 2018-03-05 05:37:15 -08:00
zotlabs
f02314dfd8 fix some issues with friend suggestions on standalone sites with no 'suggestme' volunteers. This wrongly pulled up a site directory suggesting everybody on the site. While a better outcome than finding nobody, this does not fit with our ethical design goals. If there are no friends of friends, we will only suggest those who volunteer to be on the default suggestion list. Also do not attempt to load poco data from dead sites. 2018-03-05 08:57:47 +01:00
zotlabs
af46c192bf bugfix: unable to reset profile fields to defaults in admin/profs by emptying the textarea 2018-03-05 08:57:35 +01:00
zotlabs
77a8a2b9ac restrict mail messages to max_import_size 2018-03-05 08:57:23 +01:00
Mario Vavti
a0e390c6c8 Merge remote-tracking branch 'mike/master' into dev 2018-03-05 08:54:46 +01:00
phellmes
09b6888526 Update DE translation strings 2018-03-05 08:54:19 +01:00
git-marijus
fd7d3f9286 Merge pull request #989 from phellmes/dev
Update DE translation strings (for 3.2RC)
2018-03-05 08:53:03 +01:00
zotlabs
59a2057fa0 fix some issues with friend suggestions on standalone sites with no 'suggestme' volunteers. This wrongly pulled up a site directory suggesting everybody on the site. While a better outcome than finding nobody, this does not fit with our ethical design goals. If there are no friends of friends, we will only suggest those who volunteer to be on the default suggestion list. Also do not attempt to load poco data from dead sites. 2018-03-04 17:40:38 -08:00
zotlabs
be6619d9c0 bugfix: unable to reset profile fields to defaults in admin/profs by emptying the textarea 2018-03-04 15:29:10 -08:00
phellmes
bb7457f43c Update DE translation strings 2018-03-05 00:24:41 +01:00
zotlabs
14f701f7fc restrict mail messages to max_import_size 2018-03-04 14:30:09 -08:00
Andrew Manning
058f7277b5 Merge branch 'dev' into oauth2 2018-03-04 06:45:07 -05:00
zotlabs
5d18996362 add dummy f= arg to suggestion urls, use directory version of suggest for newmember link instead of the suggest module as the UI is prettier. 2018-03-04 09:49:13 +01:00
zotlabs
ad3f61a215 sigh - missed two strings 2018-03-04 09:49:11 +01:00
zotlabs
1eab488754 There was no pdl for mod_thing; add one because it's only a link away from profile creation and remains on that page until you go elsewhere and new members may need help to find their way out 2018-03-04 09:46:17 +01:00
zotlabs
471c3c4d06 add dummy f= arg to suggestion urls, use directory version of suggest for newmember link instead of the suggest module as the UI is prettier. 2018-03-03 15:54:13 -08:00
zotlabs
ca1022675c There was no pdl for mod_thing; add one because it's only a link away from profile creation and remains on that page until you go elsewhere and new members may need help to find their way out 2018-03-03 15:19:39 -08:00
zotlabs
c3920116f2 more work on federated polls 2018-03-03 13:52:55 -08:00
zotlabs
26e0fd624a Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-03-02 20:08:01 -08:00
zotlabs
4c69c56797 string change "Channel added" -> "Connection added" 2018-03-02 14:09:59 -08:00
zotlabs
df03805579 process follow from article menu in the background, do not reload page - hubzilla issue #987 2018-03-02 13:15:28 -08:00
zotlabs
b38ce967f3 sort settings/featured 2018-03-02 12:41:50 -08:00
zotlabs
dbe73cdcbe add icon to any addon settings blocks which don't already have one 2018-03-02 12:04:23 -08:00
git-marijus
2f0ebdeade Merge pull request #985 from mjfriaza/dev
Updated Spanish translation (hmessages.po/php and register_verify_member.tpl).
2018-03-02 20:46:34 +01:00
git-marijus
98e3e7ff9b Merge pull request #986 from mjfriaza/3.2RC
Updated Spanish translation (hmessages.po/php and register_verify_member.tpl).
2018-03-02 20:46:18 +01:00
zotlabs
226aad357d add federation property to webfinger 2018-03-02 20:40:45 +01:00
Mario Vavti
7c5f1e814b Merge remote-tracking branch 'mike/master' into dev 2018-03-02 20:25:17 +01:00
Manuel Jiménez Friaza
49a236345f New strings for Spanish translation. 2018-03-02 18:32:01 +01:00
Manuel Jiménez Friaza
840cea680c New strings for Spanish translation. 2018-03-02 18:28:42 +01:00
Mario Vavti
83365840af update DB update 1205 to mitigate
ERROR 1069 (42000): Too many keys specified; max 64 keys allowed
2018-03-02 13:10:44 +01:00
Mario Vavti
5c46e66694 update DB update 1205 to mitigate
ERROR 1069 (42000): Too many keys specified; max 64 keys allowed
2018-03-02 11:38:21 +01:00
Mario Vavti
b44e46f8be db update to drop index resource_type. we have uid_resource_type now. 2018-03-02 10:28:56 +01:00
Mario Vavti
bca05dc89f bump version 2018-03-02 10:23:53 +01:00
Mario Vavti
6ee6285670 db update to drop index resource_type. we have uid_resource_type now. 2018-03-02 10:10:29 +01:00
zotlabs
dcfe9bc64f background work for caldav integration continued, modify mod_follow to allow it to be called from ajax without redirecting. 2018-03-02 01:03:14 -08:00
zotlabs
8fd619da71 zot revision => 6.0a, not yet needed or referenced 2018-03-01 16:42:32 -08:00
zotlabs
1620691cbe add federation property to webfinger 2018-03-01 16:38:14 -08:00
zotlabs
49bd859136 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-03-01 16:16:58 -08:00
zotlabs
93a11ade04 sigh - missed two strings 2018-03-01 16:11:30 -08:00
Manuel Jiménez Friaza
343982a2f9 Updated Spanish translation (hmessages.po/php and register_verify_member.tpl). 2018-03-01 19:49:55 +01:00
Manuel Jiménez Friaza
3da9107354 Updated Spanish translation (hmessages.po/php and register_verify_member.tpl). 2018-03-01 19:41:59 +01:00
Mario Vavti
f5169bdbbb fix issues with accordions in settings and comment out jquery.textinputs.js 2018-03-01 13:47:46 +01:00
Mario Vavti
d32f583fda Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2018-03-01 13:46:39 +01:00
Mario Vavti
bab00731a8 fix issues with accordions in settings and comment out jquery.textinputs.js 2018-03-01 13:46:25 +01:00
git-marijus
8cd539e125 Merge pull request #984 from dawnbreak/dev
Update composer autoload cache.
2018-03-01 12:08:31 +01:00
git-marijus
3b8a0d4773 Merge pull request #983 from dawnbreak/QA_testing
 Unit Test for HTTPSig.
2018-03-01 12:07:37 +01:00
Klaus Weidenbach
b60098ec68 Update composer autoload cache. 2018-03-01 11:29:15 +01:00
Mario Vavti
321611f865 update strings 2018-03-01 08:54:48 +01:00
Mario Vavti
de02fddf89 update strings 2018-03-01 08:54:09 +01:00
Mario Vavti
2e058c9abc version 2018-03-01 08:42:02 +01:00
Mario Vavti
a7b48b9650 bump version 3.2RC1 2018-03-01 08:40:10 +01:00
Mario Vavti
844bef5070 Merge branch 'dev' into 3.2RC 2018-03-01 08:38:17 +01:00
zotlabs
6210b7727f profile edit: empty dob is set to the date of the first profile save unless you clear it first 2018-02-28 21:39:52 -08:00
zotlabs
01015bc0d5 several email validation issues 2018-02-28 21:15:26 -08:00
zotlabs
2b910eb5aa Create one and only one 'registration successful, check your email' popup. 2018-02-28 20:31:06 -08:00
zotlabs
9672d35d8c hide newmember widget if a new account was used to create a clone of an old channel 2018-02-28 20:02:08 -08:00
zotlabs
14e14c6c92 provide new member widget which sits beneath the notifications for the first 60 days after an account creation. 2018-02-28 19:49:33 -08:00
zotlabs
1c07880c01 important bugfix: if logged in locally and mod_display returns nothing owned by your uid, retry with known public uids rather than issue 'permission denied'. Affects the ability to view search results for otherwise public posts 'in context'. 2018-02-28 18:01:51 -08:00
Andrew Manning
39fe80a196 Merge branch 'dev' into oauth2 2018-02-28 20:47:14 -05:00
Klaus Weidenbach
7c28a40c3e Unit Test for HTTPSig. 2018-02-28 16:04:13 +01:00
Mario Vavti
029d155a07 erge remote-tracking branch 'mike/master' into dev 2018-02-28 13:02:22 +01:00
Mario Vavti
97e329906e typo 2018-02-28 10:28:35 +01:00
Mario Vavti
c92bc60cec typo 2018-02-28 10:28:06 +01:00
Mario Vavti
551eea05ed missed one index in the last update 2018-02-28 10:21:55 +01:00
Mario Vavti
6593dff9f5 missed one index in the last update 2018-02-28 10:21:22 +01:00
Mario Vavti
90c82e4394 missed some string for translation - update strings 2018-02-28 08:39:57 +01:00
Mario Vavti
924c8db712 missed some string for translation - update strings 2018-02-28 08:38:56 +01:00
zotlabs
6c60be9e8d rename Addon/Feature settings to addon settings [string change] 2018-02-27 19:51:29 -08:00
zotlabs
be5187718c provide usage hint on addon settings page to save each panel before opening another. [String change, not for 3.2] 2018-02-27 19:34:51 -08:00
zotlabs
14183b8fb5 move privacy groups to the newly created Access Control and Permissions tab. Not for 3.2 as it requires string changes from the prior checkin. 2018-02-27 19:18:53 -08:00
zotlabs
f34e6d8977 move oauth_client management and guest access tokens to features rather than auto-enabling at various feature levels. This involves string changes and should *not* go into 3.2RC. 2018-02-27 19:15:12 -08:00
Mario Vavti
58ee2a49fa bump version 2018-02-27 10:43:19 +01:00
Mario Vavti
68c6d7a099 fix syntax error 2018-02-27 09:55:10 +01:00
zotlabs
6c37a38980 fix public stream app permission check to match the recent fixes to the Module 2018-02-26 21:50:17 -08:00
zotlabs
5277e79fa2 change undo_post_tagging() to emit quoted tags rather than using underscore replacement if they contain spaces. 2018-02-26 20:30:36 -08:00
Andrew Manning
1035c453ea Merge branch 'dev' into oauth2 2018-02-26 19:48:15 -05:00
zotlabs
afe2ba3690 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-02-26 16:45:04 -08:00
zotlabs
01776e767d update directory fallback servers 2018-02-26 16:41:47 -08:00
zotlabs
87079e8071 require directory servers to be using some modern form of encryption; which means we only currently have 2. 2018-02-26 16:39:12 -08:00
zotlabs
f83b7c2d52 issues with delivery of edited posts to forums 2018-02-26 15:46:29 -08:00
Andrew Manning
45e0fc6802 Successful OAuth2 sequence demonstrated with the test vehicle, including an authenticated API call using an access_token. 2018-02-26 18:16:43 -05:00
zotlabs
cbcf389f50 fix autoname test 2018-02-26 14:30:04 -08:00
Mario Vavti
fe7fba4789 update strings 2018-02-26 20:40:55 +01:00
Mario Vavti
3bd2288ea9 fix icon position and make string translatable 2018-02-26 20:17:53 +01:00
Mario Vavti
f8f69767b7 missing clearfix 2018-02-26 15:13:53 +01:00
Mario Vavti
ee5fd8a0bd fix minor issue with custom acl selector 2018-02-26 15:09:46 +01:00
Mario Vavti
032cbca651 slightly improve custom acl selector 2018-02-26 13:57:13 +01:00
Mario Vavti
be3e0ca9a1 change fontname in css and fix issue with unicode characters 2018-02-26 12:54:26 +01:00
Mario Vavti
a5f843ba9b switch to fork-awesome 2018-02-26 11:05:48 +01:00
Mario Vavti
4781a8cb6b Merge remote-tracking branch 'mike/master' into dev 2018-02-26 10:42:13 +01:00
Mario Vavti
a38c8cc75c bump versio 2018-02-26 10:03:08 +01:00
Mario Vavti
51c0e5a988 another DB upgrade to address some long running maintenance queries 2018-02-26 09:58:42 +01:00
zotlabs
d2ed3a9abb provide opt-out link and text with notification emails 2018-02-25 21:40:19 -08:00
zotlabs
1b1550fb31 mention the hidden setting for #972 in doc/hidden_configs 2018-02-25 19:35:45 -08:00
zotlabs
04ec35d9cc hubzilla issue #979 - alter image selection widget to accept/submit on choose (jot, wiki, cover_photo, profile_photo) 2018-02-25 19:25:00 -08:00
Andrew Manning
e3095ce6b2 Merge branch 'dev' into oauth2 2018-02-25 08:36:52 -05:00
Andrew Manning
70b8f3240f An authorization token is received, but I had to modify the Request class in vendor/bshaffer/oauth2-server-php/ to accept $_REQUEST instead of $_POST. 2018-02-25 08:36:40 -05:00
Mario Vavti
673cf8d35e Merge remote-tracking branch 'mike/master' into dev 2018-02-25 13:01:23 +01:00
Mario Vavti
fed61c082c do not overwrite abook flags if we are not owner 2018-02-25 13:00:43 +01:00
zotlabs
d406e2aae2 siteinfo.json - if hide_in_statistics is set only include the total channels count and no other statistical info 2018-02-24 14:38:28 -08:00
zotlabs
3153129e2e make the profile photo image picker work correctly with multiple profiles. 2018-02-24 13:20:59 -08:00
Mario Vavti
c618bfc607 mark connections where we do not have post_comments permissions with an no entry sign. 2018-02-24 19:42:39 +01:00
Andrew Manning
497ebca54f Merge branch 'dev' into oauth2 2018-02-24 06:48:56 -05:00
Andrew Manning
64ee42fc3d Add channel ID to user_id in clients table. Added TODO comments about dynamic client registration protocol. 2018-02-24 06:48:30 -05:00
Mario Vavti
f6d024cb3f Merge remote-tracking branch 'mike/master' into dev 2018-02-24 08:42:25 +01:00
zotlabs
e6f9f284bf open_pubstream logic was messy and wrong 2018-02-23 22:12:29 -08:00
zotlabs
7ddf51722c style the buttons even more 2018-02-23 19:43:05 -08:00
zotlabs
59dafb610d style the 'use existing' button a wee bit 2018-02-23 19:36:46 -08:00
zotlabs
2d91aed183 use embed photos javascript widget to select existing photos for profile and cover photos 2018-02-23 19:23:17 -08:00
zotlabs
3dd64e7916 usability: click your own profile photo to change it instead of hunting it down in the profile edit navmenu. We still need work on the 'or use a photo from your albums' to use something like the photo selection widget in the post editor as you otherwise have to track down the 'use as profile photo' entry in the photo detail navmenu instead of just clicking an image. 2018-02-23 13:24:50 -08:00
zotlabs
048a636315 Usability and member experience: remove street address info from the default basic profile fields, mention that the site banner can be full HTML, mention on the techlevel setting that this also controls what additional features may be visible. 2018-02-23 12:44:07 -08:00
Mario Vavti
1c750dac41 fix issues with DB update 1204 2018-02-23 12:58:03 +01:00
zotlabs
5e53f36f34 mod_new_channel: don't require nickname validation after name validation (which generates a valid nickname). Enable the submit button as long as there are no errors. 2018-02-22 23:54:43 -08:00
zotlabs
8f95b8a824 handle error logging in on cloud page (post method not implemented), politely ask viewer to refresh the page rather than alert 'unknown error'. 2018-02-22 21:54:28 -08:00
zotlabs
5456ee7f65 cloud 'view-as-tiles' toggle wasn't available (at all) for guests and they are the most likely to prefer that view. Fix that and make tiles the default view for guests, and list mode the default view for the channel owner. 2018-02-22 21:45:00 -08:00
zotlabs
277da43631 provide DB compatibility for poll and voting implementations across several platforms 2018-02-22 20:52:39 -08:00
Andrew Manning
70719c67d3 Merge branch 'dev' into oauth2 2018-02-22 15:10:20 -05:00
Andrew Manning
43fca182e3 The authorization step with client registration and authorization code retrieval working. Might not conform perfectly to OAuth2 spec, but it is a start. 2018-02-22 15:10:05 -05:00
Mario Vavti
80ce2def46 also sort by id to not make mysql change the queryplan if offset is > 0 after recent index changes 2018-02-22 12:01:53 +01:00
Mario Vavti
a1f9d40d08 Merge remote-tracking branch 'mike/master' into dev 2018-02-22 10:11:18 +01:00
Mario Vavti
bdcee4fc30 query for what we need instead of what we do not need 2018-02-22 10:10:46 +01:00
zotlabs
bb2ec5d8dc remove the unused ZotDriver and ProtoDriver classes 2018-02-21 21:29:55 -08:00
zotlabs
56d1c08317 move dreport from zot to lib 2018-02-21 21:18:54 -08:00
zotlabs
2d69b419ff move Zotlabs\Zot\Verify to Zotlabs\Lib\Verify as part of the z6 re-org 2018-02-21 20:59:30 -08:00
zotlabs
fef3155e6a cleanup the recent crypto code modifications. We need this stuff to be readable. 2018-02-21 16:41:33 -08:00
zotlabs
1a2f722cdb Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-02-21 16:00:06 -08:00
zotlabs
8fc48f2d43 add event resource_id to iconfig so Diaspora can search on it without looking inside JSON objects. 2018-02-21 15:56:51 -08:00
mrjive
2d17e1c677 Merge pull request #15 from redmatrix/dev
Dev
2018-02-21 12:55:29 +01:00
Mario Vavti
a829256bc4 bump version 2018-02-21 09:38:29 +01:00
zotlabs
b6d34bffcc trim non-existent/deprecated plugins from siteinfo plugin list 2018-02-20 21:31:40 -08:00
Andrew Manning
8e5c1135c3 Merge branch 'dev' into oauth2 2018-02-20 21:11:59 -05:00
Andrew Manning
89a825cd03 OAuth2TestVehicle module can create and delete oauth2 database tables. 2018-02-20 21:11:38 -05:00
zotlabs
ce8349662d Add 'Validate' button to new_channel page and disable submit until validated. This is to get around the issue that clicking submit without ever focusing and blurring the nickname field won't actually submit the form but only provide validation. It needs to be clicked again to submit. The first click processed the blur but remained on the page with no feedback. If somebody has better workarounds, please provide. The goal is to ensure that the name and the nickname are both validated before we can submit. 2018-02-20 17:20:35 -08:00
zotlabs
02575f46a6 move the zot6 delivery to zot_fetch where it makes more sense. Exhaustively hand tested. 2018-02-20 17:18:08 -08:00
zotlabs
441cdeff3f zot6 delivery cleanup 2018-02-20 16:13:43 -08:00
Mario Vavti
85a6dd6031 Merge remote-tracking branch 'mike/master' into dev 2018-02-20 23:58:17 +01:00
zotlabs
b4dad81767 copy/paste error resulting in bad behaviour 2018-02-20 14:41:46 -08:00
Mario Vavti
6d0b88e242 Merge remote-tracking branch 'mike/master' into dev 2018-02-20 21:00:22 +01:00
zotlabs
dbeee4707b don't try to handle OAEP for plugin crypto methods; let them do it if desired 2018-02-20 11:56:51 -08:00
zotlabs
ae8623e3af encrypt/decrypt function not found 2018-02-20 11:51:59 -08:00
Mario Vavti
41da5af721 remove order by clause 2018-02-20 10:36:05 +01:00
Mario Vavti
93d4a16017 missing file 2018-02-20 10:29:22 +01:00
Mario Vavti
6ef0116f09 more index finetuning to fix the expire query 2018-02-20 10:26:32 +01:00
zotlabs
76b5c68646 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-02-19 16:19:14 -08:00
zotlabs
b6b4827680 OAEP padding mismatch on some newer encryption methods 2018-02-19 15:44:18 -08:00
zotlabs
a310cb2fbb more logging 2018-02-19 14:37:49 -08:00
zotlabs
67069beddc add logging 2018-02-19 14:27:27 -08:00
zotlabs
331fe92b9e and fix the typo 2018-02-19 14:14:45 -08:00
zotlabs
f0d68a1a25 fix the fix for precision 2018-02-19 14:13:44 -08:00
Mario Vavti
66309a3fea Merge remote-tracking branch 'mike/master' into dev 2018-02-19 22:21:50 +01:00
zotlabs
04185b05ab target zot6 deliveries with more precision to ensure we handle a very precise type of content until the mechanism is extended to other types in the future 2018-02-19 11:57:47 -08:00
Mario Vavti
2047801b85 updates 1201 and 1200 should return success for postgres. notifications: remove class show and session storage entry when we mark all notifications seen 2018-02-19 20:23:13 +01:00
Mario Vavti
43992dc463 do not show summary if it is equal to body and some styling for the summary/article toggle links 2018-02-19 14:11:58 +01:00
git-marijus
fac5d81790 Merge pull request #981 from anaqreon/dev
Update code tag styling so bbcode [code] blocks and wiki markdown ...
2018-02-19 11:11:31 +01:00
git-marijus
b56633e1d6 Merge pull request #980 from dawnbreak/dev
Refactor OAuth2Server a bit.
2018-02-19 11:11:08 +01:00
Mario Vavti
1732ffed7a backport update 1201 to the new update system and move dummy update to 1202 2018-02-19 10:59:21 +01:00
Andrew Manning
7d0c1bb737 Created test vehicle module oauth2test 2018-02-18 20:24:41 -05:00
Andrew Manning
c444e40c01 Update code tag styling so bbcode [code] blocks and wiki markdown inline code render nicely. 2018-02-18 10:09:05 -05:00
zotlabs
46cb45d94b crypto improvements (use pkcs1_oaep_padding instead of the older pkcs1_padding) 2018-02-16 18:45:15 -08:00
Klaus Weidenbach
4a5d1076ed Refactor OAuth2Server a bit. 2018-02-17 01:49:01 +01:00
zotlabs
4e6072fb29 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-02-16 16:42:45 -08:00
zotlabs
f492f808f4 refactor of the DB update system. Updates are now stored individually in Zotlabs/Update/_nnnn.php and are objects; so only the pending updates need to be loaded and executed rather than all historical updates. There is one single number (DB_UPDATE_VERSION) representing the current version and it is EQUAL TO the last known update. A dummy update _1201 was created to address the difference in counting behaviour; it will be executed on the next change of DB_UPDATE_VERSION as well as the next update. The database config values are also loaded from disk on every update immediately before setting the update lock in order to reduce timing conflicts and race conditions. 2018-02-16 12:42:02 -08:00
Mario Vavti
547ef772ab Merge remote-tracking branch 'mike/master' into dev 2018-02-16 20:47:20 +01:00
zotlabs
27cd26ec1e extend the oauth2 storage driver so that we can use our own channel table 2018-02-15 18:47:56 -08:00
Mario Vavti
2216c3dd32 bump version 2018-02-15 19:41:24 +01:00
Mario Vavti
9e251a1abc some more DB tuning. 2018-02-15 19:24:15 +01:00
Mario Vavti
45b42cbc1c Merge remote-tracking branch 'mike/master' into dev 2018-02-15 09:00:52 +01:00
zotlabs
c11ebd12d5 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-02-14 15:37:35 -08:00
zotlabs
465d89129c provide option to block the public stream unless authenticated, since there could be legal issues with unmoderated content 2018-02-14 15:32:33 -08:00
Mario Vavti
0336082920 Merge remote-tracking branch 'mike/master' into dev 2018-02-14 10:29:36 +01:00
zotlabs
24da5d82db Merge branch 'share' 2018-02-13 20:09:55 -08:00
zotlabs
64809dd277 turn shares into activities - make certain to pull addons or JSON-LD will chuck a wobbly 2018-02-13 20:07:57 -08:00
zotlabs
6ca3442ba3 defperms: bad query 2018-02-13 12:13:37 -08:00
Mario Vavti
27baf46eb5 fix item link in fsprint 2018-02-13 12:33:49 +01:00
Mario Vavti
d2dcb93866 match against item verb 2018-02-13 12:04:48 +01:00
Mario Vavti
d826515ba8 since we only save the parent mid in notify we must look for thr_parent when dealing with likes 2018-02-13 11:01:58 +01:00
Mario Vavti
b221c68e4b fix parent id for likes in status notifications. 2018-02-13 10:29:32 +01:00
zotlabs
fd81a4bdc4 initial share refactor 2018-02-12 21:43:04 -08:00
Mario Vavti
b7fb78245a if always_show_in_notices is set to 1 also show likes and dislikes 2018-02-12 22:48:53 +01:00
Mario Vavti
571a9642a5 slightly improve cropper style 2018-02-12 11:06:21 +01:00
Mario Vavti
9e2424ee76 fix issue with new cropping lib and whitespace 2018-02-12 10:43:20 +01:00
zotlabs
6d2661a8f7 the 'each' function (used in startup() to revert magic quotes) is deprecated in php7.2. Since magic quotes themselves have been deprecated as a default condition for several years, the cleaning of globals should no longer be required and was also removed. 2018-02-11 20:11:18 -08:00
zotlabs
0f8d2d4e58 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-02-11 19:36:37 -08:00
zotlabs
63107f5b2f second part of hubzilla issue #972 2018-02-11 18:17:17 -08:00
zotlabs
a31331bfd9 hubzilla issue #972 - provide system toggle to allow/disallow anonymous comments 2018-02-11 18:02:28 -08:00
zotlabs
07d33a1183 use new forum tag style in forum search postings 2018-02-11 15:34:34 -08:00
zotlabs
0dbb024c99 purify summary 2018-02-11 14:12:24 -08:00
git-marijus
ba954b8cfe Merge pull request #976 from phellmes/time-ago-strings
more flexibility for relative date/time translations
2018-02-11 22:50:39 +01:00
Mario Vavti
3fa809ae79 this might seem rediculous but it helps mysql to find the better index for this query 2018-02-11 20:53:27 +01:00
phellmes
1a9c1ecfb1 update DE translation strings for new relative date/time options
temporary manual string update in relation to last commit
until changes reach Transifex and can be updated there
2018-02-11 17:01:47 +01:00
phellmes
c6b2652c01 add flexibility to prefix/suffix string translations for jquery.timeago
In addition to use the defaults or any other translated strings this allows
now to force an empty string by setting the translation to NONE.
Translators can choose to either use prefixes only, suffixes only,
none of them or both of them - whatever sounds best in their language.
2018-02-11 16:08:34 +01:00
zotlabs
5a9ea29614 hubzilla issue #975 (searching for title as well as body could present a performance issue, so perhaps the tradeoffs should be debated) 2018-02-09 14:08:29 -08:00
Mario Vavti
6cc3294395 finally fix channel query 2018-02-09 20:36:14 +01:00
Mario Vavti
5f229d81e9 use distinct in channel item query and minor notification cache improvement 2018-02-09 14:06:59 +01:00
Mario Vavti
cb70192f36 bump version 2018-02-09 10:36:43 +01:00
Mario Vavti
2227de5f65 Merge remote-tracking branch 'mike/master' into dev 2018-02-09 06:58:12 +01:00
zotlabs
3dfafb710c cosmetic 2018-02-08 21:32:18 -08:00
zotlabs
9f5d44fa32 turn the logs down again 2018-02-08 16:30:44 -08:00
zotlabs
cd1e5d4171 zot6 testing 2018-02-08 16:22:10 -08:00
zotlabs
beec49847f missing quote 2018-02-08 15:45:33 -08:00
zotlabs
e4503f743e logging 2018-02-08 15:36:22 -08:00
zotlabs
635c5e532b z6 testing 2018-02-08 15:32:54 -08:00
Mario Vavti
384cb215be wrong link 2018-02-08 10:26:49 +01:00
Mario Vavti
9e64ce7da7 Merge remote-tracking branch 'mike/master' into dev 2018-02-08 10:12:04 +01:00
Mario Vavti
661c20e452 more db and queries finetuning 2018-02-08 09:47:49 +01:00
zotlabs
4c27fa5c37 debug the crypto function 2018-02-07 22:04:53 -08:00
zotlabs
6cf2e9945a encrypt the httpsig for zot6 transport 2018-02-07 21:53:47 -08:00
zotlabs
b21a5c3ce9 compatibility: fallback to legacy zot if OWA succeeds but no data['msg'] is present 2018-02-07 20:17:32 -08:00
zotlabs
5057a4bd4c zot6 delivery work 2018-02-07 19:15:56 -08:00
zotlabs
3a0db39fa0 more zot6 delivery work 2018-02-07 18:38:10 -08:00
zotlabs
1d8d2c6e55 Merge branch 'master' into z6 2018-02-07 17:54:21 -08:00
zotlabs
dc88ccdc0b remove dead code 2018-02-07 17:53:54 -08:00
Mario Vavti
b512780e37 do not spam the log 2018-02-07 10:27:00 +01:00
Mario Vavti
91dda86a74 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2018-02-07 09:03:49 +01:00
zotlabs
4171854e2f slight improvement in ostatus protocol detection from xml feed 2018-02-06 17:00:56 -08:00
git-marijus
24a650d7ec Merge pull request #971 from dawnbreak/QA_testing
UnitTests for database classes and bit cleanup and docu
2018-02-06 12:48:34 +01:00
zotlabs
cb042e32bc code cleanup 2018-02-05 20:57:07 -08:00
zotlabs
5e94187d03 remove dead code 2018-02-05 20:31:24 -08:00
zotlabs
cadd958339 remove mobile_detect (outdated and unmaintainable) 2018-02-05 18:06:25 -08:00
zotlabs
b06c52553d fix manual queue invocation (was using the web argc/argv from the cli) 2018-02-05 16:08:01 -08:00
zotlabs
b41c5f3497 Merge branch 'master' into z6 2018-02-05 15:58:28 -08:00
zotlabs
930e1fdbdc feedutils: separate the parsing of author information from the parsing of item/activity information 2018-02-05 15:14:57 -08:00
zotlabs
f15fd93f90 implode can take its arguments in either order, but let's try to be consistent 2018-02-04 17:01:59 -08:00
zotlabs
6ad14f4ca0 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-02-04 15:53:56 -08:00
Mario Vavti
9d55a254dc this will fix the cards query and keep the rest intact 2018-02-04 22:37:30 +01:00
Mario Vavti
f9aecf5d4c superfluous , 2018-02-04 21:17:41 +01:00
Mario Vavti
c57b2d25b2 remove indices from mysql schema file 2018-02-04 21:13:24 +01:00
Mario Vavti
3cc756f302 remove some never used indices which prevented our item queries to find the right query execution plan in mysql and adjust some queries to optimze the result 2018-02-04 20:42:40 +01:00
zotlabs
3e7dffb676 decomplicate cont. 2018-02-03 12:50:07 -08:00
mrjive
d7ecaa8b23 Merge pull request #14 from redmatrix/dev
Dev
2018-02-02 09:23:55 +01:00
zotlabs
512f3a7643 provide summaries in feeds under very limited cases, but never in compat (GNU-Social) mode 2018-02-01 21:26:34 -08:00
zotlabs
c1eb796cbd document the tag changes 2018-02-01 20:12:34 -08:00
zotlabs
dd35cad62a some feed cleanup 2018-02-01 19:52:40 -08:00
zotlabs
5f972e00fe Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-02-01 17:47:37 -08:00
zotlabs
cc0cd0b292 more generalisation of commonly used code constructs 2018-02-01 17:17:23 -08:00
zotlabs
c92bb6176a more separation of complex code into separate functions 2018-02-01 15:09:51 -08:00
Mario Vavti
fffb95299e Merge remote-tracking branch 'mike/master' into dev 2018-02-01 13:14:52 +01:00
Mario Vavti
40cdb70b2f we need to manualy take care to mark the notification read in this case 2018-01-31 20:41:31 +01:00
zotlabs
feae454481 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-01-30 21:38:49 -08:00
zotlabs
71c2cc79e5 cosmetic readme changes, code cleanup 2018-01-30 18:16:20 -08:00
mrjive
7ac4b47702 Merge pull request #13 from redmatrix/dev
Dev
2018-01-30 16:13:30 +01:00
Mario Vavti
d24cf0b85b Merge remote-tracking branch 'mike/master' into dev 2018-01-30 14:31:06 +01:00
zotlabs
0e2c539d93 remove logging 2018-01-29 19:57:43 -08:00
zotlabs
4f24cc7377 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-01-29 18:57:15 -08:00
zotlabs
9bf83a57bd don't show jot bb-edit buttons if a mimetype other than text/bbcode is selected (:todo: also disable bbcode autocomplete) 2018-01-29 18:43:20 -08:00
zotlabs
668f56807a unable to delete accounts using tickboxes on admin/accounts - make all the action names consistent 2018-01-29 17:43:11 -08:00
zotlabs
8d479aa1c7 redirect to the email_validation page if login was attempted after account creation but prior to successful verification. This presents the link to resend the verification email and/or allows you to enter it. 2018-01-29 16:58:55 -08:00
Mario Vavti
296117124c Merge remote-tracking branch 'mike/master' into dev 2018-01-29 22:44:38 +01:00
git-marijus
0d21c6f863 Merge pull request #967 from dawnbreak/dev
Fix a PHP7.2 warning when a channel has no cards.
2018-01-29 22:18:31 +01:00
git-marijus
b787865fbb Merge pull request #970 from mrjive/patch-1
small details on connections.tpl
2018-01-29 22:15:43 +01:00
Klaus Weidenbach
210c91398d Make it little bit less likely to erase a real database.
Changed the default PHPUnit database environment variables to make it
little bit less likely to truncate accidently a real database.
2018-01-29 22:01:40 +01:00
mrjive
7a377e72e7 small details
Just changed the icon from sort to filter (it's what it does, it filters) and changed id to class in connection-wrapper clearfix (line 28)
2018-01-29 16:37:34 +01:00
mrjive
c2abbe2c23 small changes
changed icon from sort to filter and changed id to class in content-wrapper clearfix
2018-01-29 16:33:54 +01:00
mrjive
5f6f87a7cd Update connections.tpl 2018-01-29 16:32:32 +01:00
zotlabs
e4eff6a32b fix workflow for form based email validation when auto_channel_create is in effect. Eventually we will need to rework the workflow logic because it is getting a bit tangled. 2018-01-29 02:41:45 -08:00
zotlabs
c1e44c0f54 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-01-28 21:43:50 -08:00
zotlabs
5cf2bf6b29 change the image - make it bland and neutral 2018-01-28 20:50:37 -08:00
zotlabs
56d1614ea6 provide a default video image if nothing else is available. Allow sites to change it. 2018-01-28 20:35:05 -08:00
zotlabs
c3e365ef47 Surface the ability to change the landing page after channel creation and create a 'go' module to present several possible things to do at this point. Change the default from 'settings' to 'profiles' so that the focus is more on you rather than the software configuration. 2018-01-28 15:56:31 -08:00
Klaus Weidenbach
4bf0c9e36a Add tests for non existent tables.
Prevent PHP warnings "Undefined variable" in dba_pdo::q();
2018-01-28 23:02:46 +01:00
Klaus Weidenbach
509844fd7e 🔥 Cleanup old database related files.
Remove non used database drivers, remove unused methods.
Improve documentation.
2018-01-28 23:02:15 +01:00
Klaus Weidenbach
fb111e6d95 Unit Test for dba_pdo driver class. 2018-01-28 22:56:21 +01:00
Klaus Weidenbach
e177462c90 Unit Test for \DBA factory. 2018-01-28 22:56:21 +01:00
Klaus Weidenbach
82f19e6278 Fix a PHP7.2 warning when a channel has no cards. 2018-01-28 21:38:25 +01:00
Mario Vavti
edf6ad9eda do not always look first in chache when receiving the *open* status from cache 2018-01-28 19:35:01 +01:00
Mario Vavti
a86b260f73 query optimisations for notifications - use a specific index only 2018-01-28 12:09:47 +01:00
zotlabs
21f464a557 Guranteed somebody will paste the verification link and not the token, especially before all the translations are completed. But even then... 2018-01-27 15:20:43 -08:00
Mario Vavti
423274b923 Merge remote-tracking branch 'mike/master' into dev 2018-01-28 00:18:29 +01:00
Mario Vavti
6c4054c20b fix syntax error 2018-01-27 23:55:44 +01:00
zotlabs
69099a2732 registration testing 2018-01-27 14:16:52 -08:00
Mario Vavti
4bd6cf5652 accidently reverted a fix from yesterday in ma previous commit 2018-01-27 23:05:26 +01:00
zotlabs
d99a51e5b7 typo 2018-01-27 13:41:37 -08:00
Mario Vavti
843d631111 Merge remote-tracking branch 'mike/master' into dev 2018-01-27 22:25:46 +01:00
Mario Vavti
2e4e56f7cc if startpage is /hq redirect all notifications links to /hq and minor notifications and hq fixes 2018-01-27 22:23:47 +01:00
zotlabs
bd0f63980b Usability improvements to registration/verification workflow. This requires additional testing. 2018-01-27 12:51:48 -08:00
zotlabs
4eead1c688 typo from previous checkin and partial fix to hubzilla #965 - show any connection without comment permission as archived in contact_block(). 2018-01-26 13:42:53 -08:00
zotlabs
d70c42b495 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-01-26 12:51:04 -08:00
zotlabs
660079bd2a Issue with configurable site age limit, vagueness when informing about email validation policy; added email validation resend ability and the option to input a verification code at a webpage though both require additional work to provide these abilities. 2018-01-26 12:16:47 -08:00
Mario Vavti
7c600b0380 preserve open state of notifications 2018-01-26 11:44:24 +01:00
Mario Vavti
e982698de1 Merge remote-tracking branch 'mike/master' into dev 2018-01-26 10:33:55 +01:00
mrjive
4b7967b938 Merge pull request #12 from redmatrix/dev
Dev
2018-01-26 09:43:47 +01:00
zotlabs
e3c7200b6f don't do any bbcode translation within code blocks (except baseurl, observer, and linefeeds) 2018-01-25 16:18:16 -08:00
Mario Vavti
4656856dfb move template out of #notifications and revert reset timer on manual trigger 2018-01-25 17:27:48 +01:00
Mario Vavti
019dcefeca reset timer on manual update trigger 2018-01-25 12:56:52 +01:00
zotlabs
f7309b926b improve browser language detection by offering fallback of (for instance) fr-fr to fr if no other language matches could be found 2018-01-24 21:56:25 -08:00
zotlabs
217c324a98 remove unused prototype importer template and obsolete reflection cms importer 2018-01-24 21:35:41 -08:00
Mario Vavti
a0cfa769bd fix some issues with bootstrap accordion (this needs fixing in some other places too) 2018-01-24 23:26:43 +01:00
Mario Vavti
7df62589ac update to bootstrap 4 stable 2018-01-24 23:06:03 +01:00
Mario Vavti
93259e4e92 consolidate notifications caching and loading 2018-01-24 22:46:36 +01:00
mrjive
f560a3c98f Merge pull request #11 from redmatrix/dev
Dev
2018-01-24 18:30:59 +01:00
Mario Vavti
add9890754 bump version 2018-01-24 11:23:45 +01:00
Mario Vavti
503b2225f0 Merge remote-tracking branch 'mike/master' into dev 2018-01-24 11:17:25 +01:00
Mario Vavti
e3a6b0012e implement caching of notifications in browser session storage 2018-01-24 11:16:51 +01:00
zotlabs
304085606f some code cleanup and simplification in mod_like 2018-01-23 20:03:17 -08:00
zotlabs
5d4110375a add units to css 2018-01-23 16:44:11 -08:00
zotlabs
5902528bae undo and redo adding new cropper library as it had a .git config from the original project 2018-01-23 16:42:24 -08:00
zotlabs
1e8dcaffc9 cleanup git issue 2018-01-23 16:40:23 -08:00
zotlabs
4b7947d98c replace image cropping library 2018-01-23 16:36:56 -08:00
zotlabs
c034fab4da annual license update 2018-01-22 20:59:33 -08:00
zotlabs
4cfd7b65fb siteinfo embellishments 2018-01-22 20:07:08 -08:00
zotlabs
5967360991 hubzilla issue #920 - unable to delete permission groups with space in name 2018-01-22 16:49:45 -08:00
zotlabs
deede8e2dd Merge branch 'dev' 2018-01-22 11:58:12 -08:00
zotlabs
f85c6d76de better notifications for edit post/comments which may have been originally posted long ago 2018-01-22 11:54:53 -08:00
mrjive
131baa9f45 Merge pull request #10 from redmatrix/dev
Dev
2018-01-22 09:34:08 +01:00
zotlabs
629c915f36 ensure filter words are not empty 2018-01-21 23:30:08 -08:00
zotlabs
c994f26dbd preserve reverse date sort in mod_search after changes 2018-01-21 18:11:04 -08:00
zotlabs
886a1a5381 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-01-21 17:09:12 -08:00
zotlabs
d4c81d8e0e Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2018-01-21 17:08:39 -08:00
zotlabs
a4588af0f8 mod_search: fix the group by mess 2018-01-21 17:06:38 -08:00
Mario Vavti
1709dbd376 make sure we deal with lowercase string in all situations 2018-01-21 10:27:50 +01:00
Mario Vavti
9937fea2e7 css fix 2018-01-20 08:14:16 +01:00
Mario Vavti
d6fc85f460 use var instead of this 2018-01-19 21:14:32 +01:00
Mario Vavti
db25f2024e wrong class 2018-01-19 20:55:54 +01:00
Mario Vavti
395cf86607 make sure we deal with strings 2018-01-19 20:53:22 +01:00
Mario Vavti
4fb9989b4f input event is catching more situations than keyup 2018-01-19 13:32:08 +01:00
Mario Vavti
40a8e50471 only show clear button if there is something to clear 2018-01-19 12:24:03 +01:00
Mario Vavti
66e1e5b1b6 bootstrap seems to heavy for this - use custom css 2018-01-19 12:18:59 +01:00
Mario Vavti
ecd161d678 provide a button to clear the name filter 2018-01-19 11:40:16 +01:00
Mario Vavti
e9f32ef94e Merge remote-tracking branch 'mike/master' into dev 2018-01-19 09:16:51 +01:00
git-marijus
2cf4381e19 Merge pull request #960 from einervonvielen/CalDAV-CardDAV-on-Android
How to use CalDAV and CardDAV with Androids DAVDroid
2018-01-19 09:15:49 +01:00
git-marijus
0844fb8d8a Merge pull request #962 from dawnbreak/dev
Change dsn port handling in dba_pdo.
2018-01-19 09:10:28 +01:00
zotlabs
764d6e3407 zot api: provide channel list function (list all channel usernames [e.g. channel_address] associated with the logged in account) 2018-01-18 17:20:30 -08:00
zotlabs
b2ab906483 remove deprecated 'qcomment' feature; unused since 2012 2018-01-18 17:02:59 -08:00
zotlabs
6943960f99 Merge branch 'dev' of https://github.com/dawnbreak/hubzilla 2018-01-18 16:08:27 -08:00
zotlabs
858a6270d5 simplify webserver logic flow, remove obsolete $a from router 2018-01-18 15:36:46 -08:00
Klaus Weidenbach
8a60bb4619 Change dsn port handling in dba_pdo. 2018-01-18 23:46:49 +01:00
zotlabs
03d3cbdbf8 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-01-18 14:17:48 -08:00
zotlabs
89aa882c95 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2018-01-18 14:17:33 -08:00
zotlabs
0fba1bb868 simplify interactions with the get_features hook by calling it before any filtering takes place 2018-01-18 14:11:15 -08:00
Einer von Vielen
fad381586c How to use CalDAV and CardDAV with Androids DAVDroid 2018-01-18 22:39:17 +01:00
Mario Vavti
a0e1a8e0a2 Merge remote-tracking branch 'mike/master' into dev 2018-01-18 13:20:23 +01:00
Mario Vavti
a486c90686 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2018-01-18 12:44:57 +01:00
Mario Vavti
53e353abf2 consolidate navbar tucson and some javascript cleanup 2018-01-18 12:44:40 +01:00
git-marijus
dd45d0a8b2 Merge pull request #957 from einervonvielen/homeinstall-fix-cron-dev
Fixed poller. Use Master.php
2018-01-18 11:39:23 +01:00
git-marijus
577da0eb9e Merge pull request #956 from einervonvielen/homeinstall-fix-cron
Fixed poller. Use Master.php
2018-01-18 11:38:34 +01:00
Mario Vavti
eee037f7c2 raise the queue threshold default from 300 to 3000 2018-01-18 11:31:32 +01:00
Mario Vavti
23a20ba6a5 raise the queue threshold default from 300 to 3000 2018-01-18 11:30:33 +01:00
Mario Vavti
299b9e9014 bump version 2018-01-18 11:25:59 +01:00
Mario Vavti
21d081e175 implement notifications name filter and slightly change the way we load notification to the ui 2018-01-18 11:22:30 +01:00
mrjive
8e475810a7 Merge pull request #8 from redmatrix/dev
section-content-info-wrapper for register text
2018-01-18 10:40:15 +01:00
zotlabs
eb86ffefbf provide local pubstream option (content from this site only). 2018-01-17 21:30:19 -08:00
zotlabs
f1afb0ddfe simplify dir_tagadelic dramatically 2018-01-17 20:10:49 -08:00
zotlabs
561372e203 use mid/parent_mid to trigger $top_level_post 2018-01-17 18:28:13 -08:00
zotlabs
66f48847c9 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-01-17 18:28:02 -08:00
zotlabs
62e3083f23 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2018-01-17 18:27:45 -08:00
zotlabs
c331e585b8 remove sendzid core code from core (put in plugin where it belongs) 2018-01-17 15:25:30 -08:00
zotlabs
05de59d4ad initial z6 delivery 2018-01-16 20:08:10 -08:00
zotlabs
2de1285121 z6 deliver 2018-01-16 18:15:58 -08:00
Mario Vavti
647a9b2740 section-content-info-wrapper for register text 2018-01-16 22:10:52 +01:00
mrjive
e81949bb09 Merge pull request #7 from redmatrix/dev
Dev
2018-01-16 11:45:01 +01:00
Mario Vavti
42878c40fc fix some regressions with permission roles 2018-01-16 09:53:00 +01:00
Mario Vavti
9aadcb0bd4 Merge remote-tracking branch 'mike/master' into dev 2018-01-16 08:55:42 +01:00
zotlabs
82306682c6 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-01-15 21:49:48 -08:00
zotlabs
05f9f0a393 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2018-01-15 21:49:28 -08:00
zotlabs
03f692f24f surface the article feature 2018-01-15 21:46:27 -08:00
zotlabs
014a1f0158 add summary bbcode tag 2018-01-15 20:47:32 -08:00
Mario Vavti
746ea5a369 fix some regressions with permission roles 2018-01-15 11:34:42 +01:00
Mario Vavti
d868ebe4ba Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2018-01-15 08:56:41 +01:00
Mario Vavti
b49e09939a Merge remote-tracking branch 'mike/master' into dev 2018-01-15 08:56:15 +01:00
zotlabs
91db66b32d move markdown-in-posts/comments feature to plugin 2018-01-14 18:22:58 -08:00
zotlabs
f0faa7f9b0 support tables in markdown posts/comments (but not table alignment); and do not support iframes from html source. 2018-01-14 16:45:33 -08:00
Andrew Manning
ef11b3eb2b Added minimum registration age to /admin/site settings page 2018-01-14 15:02:43 -05:00
Einer von Vielen
3ab92ba9d9 Fixed poller. Use Master.php 2018-01-14 18:33:08 +01:00
Einer von Vielen
949cce094e Fixed poller. Use Master.php 2018-01-14 18:25:41 +01:00
Mario
09abba3dd0 bump version 2018-01-14 08:15:38 +01:00
zotlabs
84105c3b05 cleanup of last fix 2018-01-14 07:46:59 +01:00
zotlabs
a70db805b7 unexpected openssl result 2018-01-14 07:46:47 +01:00
zotlabs
750e0a8d11 improve owa logging 2018-01-14 07:46:39 +01:00
Mario Vavti
8970d30c93 Merge remote-tracking branch 'mike/master' into dev 2018-01-14 07:42:58 +01:00
zotlabs
75285fd452 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-01-13 15:55:04 -08:00
zotlabs
76c8bbf7b8 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2018-01-13 15:54:45 -08:00
zotlabs
eb3e43feec cleanup of last fix 2018-01-13 14:08:15 -08:00
zotlabs
08bea83c03 unexpected openssl result 2018-01-13 13:45:33 -08:00
zotlabs
8892568652 improve owa logging 2018-01-13 12:24:55 -08:00
Mario Vavti
ce10a44e72 Merge remote-tracking branch 'mike/master' into dev 2018-01-12 22:44:59 +01:00
Mario Vavti
0f5bc00586 update league/html-to-markdown via composer 2018-01-12 22:32:42 +01:00
Mario Vavti
50ec3b300b fix some breaking changes with bootstrap 4 beta3 2018-01-12 22:23:05 +01:00
Mario Vavti
2c5b6cf8dc update to bootstrap 4 beta3 2018-01-12 22:03:06 +01:00
Mario Vavti
f2ec84fb13 typo 2018-01-12 16:03:41 +01:00
Mario Vavti
51d791d824 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2018-01-12 15:54:41 +01:00
Mario Vavti
db08e2cea0 mod hq: stick to show latest unseen toplevel post on load 2018-01-12 15:54:27 +01:00
zotlabs
619f8f752b Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-01-12 01:26:21 -08:00
zotlabs
e8958b1fb8 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2018-01-12 01:26:01 -08:00
git-marijus
07b67963f1 Merge pull request #951 from dawnbreak/docu
💡 Add source documentation from recent conversations.
2018-01-12 10:15:43 +01:00
zotlabs
b0a491eaa8 ability to parse info blocks in third-party (or system) widgets 2018-01-12 00:25:43 -08:00
zotlabs
be3bfa3806 OpenWebAuth: can fail after site re-installs; this may need to be pushed forward to master 2018-01-12 09:20:25 +01:00
Mario Vavti
47c14d3ca1 Merge remote-tracking branch 'mike/master' into dev 2018-01-12 09:16:56 +01:00
zotlabs
6a8c583220 expose settings for site sellpage and site location 2018-01-11 14:29:00 -08:00
zotlabs
468e976a88 OpenWebAuth: can fail after site re-installs; this may need to be pushed forward to master 2018-01-11 12:15:38 -08:00
Mario Vavti
25a63dc413 continue working on hq 2018-01-11 10:58:46 +01:00
Mario Vavti
61e019e176 Merge remote-tracking branch 'mike/master' into dev 2018-01-11 08:46:13 +01:00
zotlabs
894b3706e7 tag nav_featured_app to apps that the corresponding features may not be enabled by default, so that they will become visible in the app menu when enabled 2018-01-10 23:32:56 -08:00
zotlabs
e59237e680 provide de-de language since some browsers do not offer de on its own 2018-01-10 23:06:54 -08:00
zotlabs
b05c1c391c db issue reported in hubzilla #953 - this does not do anything about the auth issue 2018-01-10 15:42:02 -08:00
zotlabs
c09bab466a hubzilla issue #945 continued: We previously blocked directory keywords when searching the local directory as it produced errant results and included results from the entire directory space (an issue that was resolved satisfactorily by that fix sometime in the past). As a result of issue #945 this was reworked so that we should return correct results for keywords when searching either the local directory or a standalone directory. 2018-01-10 15:32:04 -08:00
Mario Vavti
46cc360e4e Merge remote-tracking branch 'mike/master' into dev 2018-01-10 11:39:02 +01:00
Mario Vavti
d6ff8dc9b6 introduce datasrc2src(selector) js function 2018-01-10 11:34:37 +01:00
zotlabs
d0d72c7fd2 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-01-09 17:05:58 -08:00
zotlabs
f0798f7833 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2018-01-09 17:05:39 -08:00
zotlabs
3ce79dd6e1 scrutinizer mods 2018-01-09 17:04:02 -08:00
Mario Vavti
ef7225b4f6 Merge remote-tracking branch 'mike/master' into dev 2018-01-09 10:27:26 +01:00
Mario
4f4d0e416e Merge branch '3.0RC' 2018-01-09 09:00:20 +01:00
Mario
8fde0f01b8 bump version 2018-01-09 08:59:50 +01:00
Mario Vavti
757489beb7 changelog 2018-01-09 08:57:38 +01:00
Mario Vavti
906cbbe45d changelog 2018-01-09 08:56:35 +01:00
zotlabs
dfb75840b8 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2018-01-08 14:51:16 -08:00
zotlabs
75804d7ce5 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2018-01-08 14:50:58 -08:00
zotlabs
62f0266f46 scrutinizer issues: none worthy of including in 3.0, there will likely be a few hundred more before all is said and done. 2018-01-08 14:45:21 -08:00
Mario Vavti
7773ef0ff4 fix regression in app categories 2018-01-08 11:12:28 +01:00
Mario Vavti
0600817ef7 fix regression in app categories 2018-01-08 11:11:17 +01:00
zotlabs
2f5990962c issues with feed parameters 2018-01-07 20:57:35 +01:00
Mario Vavti
214fa81ec6 Merge remote-tracking branch 'mike/master' into dev 2018-01-07 19:53:03 +01:00
Mario
81ae0fa252 bump version 2018-01-07 19:48:58 +01:00
Mario Vavti
fefc78a849 start with nonactive state for the notifications button and display some text if there are no notifications on small screens only 2018-01-07 19:47:48 +01:00
Mario Vavti
98fd311891 start with nonactive state for the notifications button and display some text if there are no notifications on small screens only 2018-01-07 19:14:19 +01:00
zotlabs
0d415fb3c9 hubzilla issue #946 2018-01-07 02:34:37 -08:00
Mario Vavti
ffe058d48f make active notifications filter sticky 2018-01-06 12:18:53 +01:00
Mario Vavti
8d0cdf5c9a make active notifications filter sticky 2018-01-06 12:16:45 +01:00
Klaus Weidenbach
aa63c23839 💡 Add source documentation from recent conversations.
There have been some conversations in the last weeks which explained
several parts of the code, so add it to the source code documentation.
Also some other small source code documentation improvements.
2018-01-05 01:38:20 +01:00
Mario
57214fd659 bump version 2018-01-04 11:34:57 +01:00
Mario Vavti
5a2b17a1da fix nav update regressions - fixes issue #950 2018-01-04 11:34:12 +01:00
Mario Vavti
0bb5f38ba5 bump version 2018-01-04 11:33:09 +01:00
Mario Vavti
6f21b3dc34 fix nav update regressions - fixes issue #950 2018-01-04 11:31:48 +01:00
Mario Vavti
ae3067200b update changelog 2018-01-03 22:27:37 +01:00
Mario Vavti
e13d7beac4 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2018-01-03 20:19:32 +01:00
Mario Vavti
4562e1cc1c update changelog 2018-01-03 20:18:11 +01:00
git-marijus
568cf2a9e4 Merge pull request #948 from einervonvielen/3.0RC-fix-homeinstall
3.0 rc fix homeinstall
2018-01-03 19:27:08 +01:00
git-marijus
67dd9c2930 Merge pull request #949 from einervonvielen/dev-fix-homeinstall
Dev fix homeinstall
2018-01-03 19:25:28 +01:00
Einer von Vielen
e9c91a3ef3 Typo 2018-01-03 17:26:31 +01:00
Einer von Vielen
4cde513523 Fixed homeinstall for dev as in 3.0RC 2018-01-03 17:21:41 +01:00
Einer von Vielen
c2ad28a000 Typo 2018-01-03 17:08:17 +01:00
Einer von Vielen
f7ad5bbaad Changed some install instruction for homeinstall 2018-01-03 17:02:03 +01:00
Einer von Vielen
2a8c4bfbae log local db size in daily script 2018-01-03 16:35:45 +01:00
Einer von Vielen
c0f7b8879d removed backup to internal disk if no USB is mounted 2018-01-03 15:59:43 +01:00
Einer von Vielen
3a347d7a56 removed installation of git 2018-01-03 15:50:22 +01:00
Einer von Vielen
c735503f7e Fixed installation of hzaddons 2018-01-03 15:48:00 +01:00
Einer von Vielen
b0f4929d41 Fixed 3.0RC. Forgot to change the setup script 2018-01-03 15:31:53 +01:00
zotlabs
10a1569c9a hubzilla issue #947 2018-01-03 12:16:23 +01:00
zotlabs
301e5383c7 this should finish up hubzilla issue #113 2018-01-03 12:16:05 +01:00
zotlabs
66d0b4d0d5 provide warning if ffmpeg not found and video thumbnail is requested 2018-01-03 12:15:46 +01:00
zotlabs
94212766cc update file thumbnails when imported/synced 2018-01-03 12:15:09 +01:00
zotlabs
5b436d8fc3 possibly fix hubzilla #673 (prev/next buttons on connedit can show deleted connections). We cannot actually determine that a connection has been deleted (this is typically accomplished by removing the abook record), but we can determine if the corresponding xchan has been deleted. 2018-01-03 12:13:54 +01:00
zotlabs
cd2d1ff02a cleanup 2018-01-03 12:13:42 +01:00
zotlabs
4ab4224277 Make affinity widget settings work. It's entirely possible they never did work correctly. I'm not comfortable over-riding the network_page_default config in this way but this is the way I've always set the affinity and it has worked just fine for me for several years and there haven't been any other requests to extend the network page default options. 2018-01-03 12:12:48 +01:00
Matthew Dent
b5b2e34da5 Fix whitespace formatting 2018-01-03 12:09:12 +01:00
M.Dent
34d28e7ba9 fix dupe bug in content hooks 2018-01-03 12:08:45 +01:00
zotlabs
ada578e7e3 issues with feed parameters 2018-01-02 14:04:43 -08:00
Mario Vavti
f826c09abc Merge remote-tracking branch 'mike/master' into dev 2018-01-02 22:14:31 +01:00
zotlabs
3bd7133ba3 hubzilla issue #947 2018-01-01 12:25:43 -08:00
zotlabs
ce38350e00 this should finish up hubzilla issue #113 2017-12-31 14:45:42 -08:00
zotlabs
45923f408f provide warning if ffmpeg not found and video thumbnail is requested 2017-12-30 23:24:24 -08:00
zotlabs
94e92bb4bf update file thumbnails when imported/synced 2017-12-30 23:15:47 -08:00
zotlabs
3fadedcc54 test of new affinity preset code (post 3.0) 2017-12-30 22:48:06 -08:00
zotlabs
e095cb8113 possibly fix hubzilla #673 (prev/next buttons on connedit can show deleted connections). We cannot actually determine that a connection has been deleted (this is typically accomplished by removing the abook record), but we can determine if the corresponding xchan has been deleted. 2017-12-30 15:35:18 -08:00
zotlabs
1fcf59ff94 cleanup 2017-12-28 15:16:50 -08:00
zotlabs
5cfb63da50 a different (hopefully better) implementation of affinity presets, but not for 3.0 because strings have changed. 2017-12-28 15:12:20 -08:00
zotlabs
38646fe0e1 Make affinity widget settings work. It's entirely possible they never did work correctly. I'm not comfortable over-riding the network_page_default config in this way but this is the way I've always set the affinity and it has worked just fine for me for several years and there haven't been any other requests to extend the network page default options. 2017-12-28 14:06:30 -08:00
Mario
259f425050 changelog 2017-12-28 21:19:29 +01:00
Mario
e418a6b3d4 changelog 2017-12-28 21:18:50 +01:00
zotlabs
340d437ab2 hubzilla issue #945 - directory keywords returned from twkn in standalone mode 2017-12-28 21:00:09 +01:00
zotlabs
34f576f540 sort cloud directory by 1. is_dir and 2. name until we can figure out a way to request different sort orders 2017-12-28 20:59:56 +01:00
zotlabs
64a97d42ff document that imagick calls/execs ffmpeg for mp4 video thumbnails 2017-12-28 20:59:43 +01:00
zotlabs
beb51040c2 util/dcp - argument warning when arguments are correct 2017-12-28 20:59:29 +01:00
zotlabs
8fc9d87b1b cannot use file_get/put_contents in attach_store, must use pipe_streams 2017-12-28 20:59:12 +01:00
git-marijus
ab1dec813b Merge pull request #944 from dentm42/fix-dupe-bug-in-content-hooks
Fix dupe bug in content hooks
2017-12-27 16:50:17 +01:00
Mario
4a71fb0831 Merge remote-tracking branch 'mike/master' into dev 2017-12-27 16:45:33 +01:00
zotlabs
5a8efc10d8 hubzilla issue #945 - directory keywords returned from twkn in standalone mode 2017-12-26 13:19:27 -08:00
zotlabs
1aa9ce8fe5 sort cloud directory by 1. is_dir and 2. name until we can figure out a way to request different sort orders 2017-12-25 16:25:04 -08:00
zotlabs
32dfa4e868 document that imagick calls/execs ffmpeg for mp4 video thumbnails 2017-12-25 16:06:24 -08:00
zotlabs
b507ac1f98 util/dcp - argument warning when arguments are correct 2017-12-25 15:18:12 -08:00
zotlabs
601706b7b5 cannot use file_get/put_contents in attach_store, must use pipe_streams 2017-12-25 14:59:08 -08:00
Matthew Dent
ef952a41b3 Fix whitespace formatting 2017-12-23 11:09:37 -05:00
M.Dent
e7f6cd2cfa fix dupe bug in content hooks 2017-12-23 10:58:51 -05:00
Mario
8e626a0142 changelog 2017-12-23 14:26:24 +01:00
Mario
9845272522 changelog 2017-12-23 14:25:27 +01:00
zotlabs
d4af870bb6 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-12-22 14:39:14 -08:00
zotlabs
7b77e05f3a hubzilla-addons issue #74 - delayed posts not honoured for GNU-Social
There is a very high probability this will also fix hubzilla-addons issue #75
2017-12-22 20:25:16 +01:00
Mario
a284e1f9d8 more changelog 2017-12-22 20:23:35 +01:00
Mario
89fbb86c7b more changelog 2017-12-22 20:20:33 +01:00
git-marijus
8e4dea2334 Merge pull request #939 from einervonvielen/Debian9
Debian9 - Changes for Debian 9 and several fixes
2017-12-22 11:15:56 +01:00
git-marijus
8340d152e1 Merge pull request #940 from einervonvielen/Doku-homeinstall-Debian-9
Changes for homeinstall for Debian 9
2017-12-22 11:15:32 +01:00
git-marijus
ec11ebbd54 Merge pull request #938 from einervonvielen/3.0RC
3.0 rc - Changes for Debian 9
2017-12-22 11:15:00 +01:00
zotlabs
f825e27f1a Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-12-21 13:36:58 -08:00
zotlabs
e7143a265a Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-12-21 13:36:33 -08:00
zotlabs
c087d1e18b hubzilla-addons issue #74 - delayed posts not honoured for GNU-Social
There is a very high probability this will also fix hubzilla-addons issue #75
2017-12-21 13:34:59 -08:00
Einer von Vielen
51d9c37f6b Changes for homeinstall for Debian 9 2017-12-21 16:59:35 +01:00
Einer von Vielen
057da80f2f Changes for Debian 9. Serveral fixes. 2017-12-21 16:29:53 +01:00
Einer von Vielen
edf804ea67 Typo 2017-12-21 16:12:45 +01:00
Einer von Vielen
6f586ae11a Changes for Debian 9. Several fixes. 2017-12-21 16:08:37 +01:00
git-marijus
22c89b6c66 Merge pull request #937 from einervonvielen/debian9
Debian9
2017-12-21 10:49:40 +01:00
Mario Vavti
cfae618c60 add url and headings to bbco_autocomplete() 2017-12-21 09:41:37 +01:00
Mario Vavti
7766db40f5 remove additional linebreaks after headings 2017-12-21 09:41:29 +01:00
Mario Vavti
9c72963d7c add url and headings to bbco_autocomplete() 2017-12-21 09:27:40 +01:00
Mario Vavti
64fe15b6f5 remove additional linebreaks after headings 2017-12-21 09:07:37 +01:00
Mario Vavti
18349efccc html2bbcode: use headings bbcode for headings 2017-12-20 11:11:59 +01:00
Mario Vavti
73766caa81 html2bbcode: use headings bbcode for headings 2017-12-20 11:11:18 +01:00
Einer von Vielen
1c5630ef5a Typo 2017-12-19 18:04:20 +01:00
Einer von Vielen
03d95ec089 Excluded third party plugins and themes from installation. Fixed backup for changed config of rsnapshot. Added autoremove of for apt-get. Added disclaimers in README.md. Added sanitiy check for Debian version 9. 2017-12-19 17:35:14 +01:00
phellmes
09d84b5b68 Update DE translation strings 2017-12-19 14:02:35 +01:00
git-marijus
d92ceed737 Merge pull request #936 from phellmes/dev
Update DE translation strings (for 3.0RC too)
2017-12-19 14:02:02 +01:00
Mario Vavti
9d16666484 changelog 2017-12-19 14:01:00 +01:00
phellmes
4ff533769a Update DE translation strings 2017-12-19 13:07:00 +01:00
Mario Vavti
e3ce0496f5 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-12-19 12:43:36 +01:00
Mario Vavti
8ef422a79b changelog 2017-12-19 12:43:02 +01:00
git-marijus
4a6e6ba1b2 Merge pull request #933 from dawnbreak/dev
Don't drop PHP7.0 compatibility for dev yet.
2017-12-19 08:48:23 +01:00
Einer von Vielen
bb4dcbe89e Debian 8 not supported (without adjustments). 2017-12-18 23:31:36 +01:00
Einer von Vielen
8a8c757327 Increase upload file size to 100M in php.ini. 2017-12-18 23:27:57 +01:00
Einer von Vielen
8c75ace6ec Changes for Debian 9 (Stretch). Tested on a Raspberry 3 under Raspian (Debian 9.3) along with a FREE SUBDOMAIN registered at https://freedns.afraid.org. Changes for letsencrypt. Removed support for Debian 8. 2017-12-18 23:03:10 +01:00
Klaus Weidenbach
8b3535bd0f Don't drop PHP7.0 compatibility for dev yet.
There is no need yet to drop PHP7.0 compatibility for running tests in
TravisCI.
The next PHPUnit release in Feb 2018 will drop PHP7.0, but current
version with PHP7.0 will be supported until 2019.
2017-12-18 22:12:33 +01:00
Mario Vavti
28b2db93dc actually add the smarty lib 2017-12-18 15:53:44 +01:00
Mario Vavti
439d41b194 install smarty via composer and update other php libs 2017-12-18 15:48:49 +01:00
Mario Vavti
08a8f195e7 do not use text-muted class for $sitelocation 2017-12-18 14:58:29 +01:00
Mario Vavti
eb5dfcc9df update composer autoload cache 2017-12-18 14:14:45 +01:00
zotlabs
a29c84b522 since api_zot (doc page) is now referenced from the project webpage, include a mention of the twitter/statusnet API plugin since that enables some degree of compatibility with dozens of third-party apps out of the box. 2017-12-18 12:47:40 +01:00
Mario Vavti
ab3b126ff6 notifications: only handle item otype notify_ids 2017-12-18 12:47:29 +01:00
Mario Vavti
fe960d7c28 notifications: only handle item otype notify_ids 2017-12-18 12:46:37 +01:00
Mario Vavti
07b628b667 Merge remote-tracking branch 'mike/master' into dev 2017-12-18 12:43:31 +01:00
git-marijus
fcb3674ce4 Merge pull request #932 from dawnbreak/dev
Update classmap caches and add phpunit/dbunit.
2017-12-18 10:32:50 +01:00
zotlabs
ad487ec9f7 since api_zot (doc page) is now referenced from the project webpage, include a mention of the twitter/statusnet API plugin since that enables some degree of compatibility with dozens of third-party apps out of the box. 2017-12-17 14:26:33 -08:00
Klaus Weidenbach
7cfe4c0f01 Update classmap caches and add phpunit/dbunit.
In preparation for DB unit tests add phpunit/dbunit and update dev
libraries.
Update autoload classmap caches.
2017-12-17 22:47:51 +01:00
git-marijus
77ffc385ab Merge pull request #930 from mjfriaza/dev
Updated Spanish translation.
2017-12-17 11:12:45 +01:00
git-marijus
6a17da9b08 Merge pull request #931 from mjfriaza/3.0RC
Updated Spanish translation.
2017-12-17 11:11:58 +01:00
zotlabs
fca405741a reverse the logic so we zidify by default 2017-12-17 10:58:14 +01:00
zotlabs
715847bf74 don't zidify all permalinks, only zot permalinks 2017-12-17 10:58:01 +01:00
Mario Vavti
78146d6417 merge red master into dev 2017-12-17 09:49:10 +01:00
zotlabs
59779f2a0e reverse the logic so we zidify by default 2017-12-16 15:14:28 -08:00
zotlabs
b1e191ce21 don't zidify all permalinks, only zot permalinks 2017-12-16 15:10:43 -08:00
Mario Vavti
01289048a9 silence PHP7.2 warning 2017-12-16 20:33:53 +01:00
Mario Vavti
dc90f103d4 fix undefined constant warning 2017-12-16 20:33:43 +01:00
Mario Vavti
7181cf9012 silence PHP7.2 warning 2017-12-16 20:33:07 +01:00
Mario Vavti
d304821977 fix undefined constant warning 2017-12-16 20:30:42 +01:00
Manuel Jiménez Friaza
2f026b66a2 Updated Spanish translation. 2017-12-16 13:15:11 +01:00
Manuel Jiménez Friaza
55f3198c9c Updated Spanish translation. 2017-12-16 10:55:46 +01:00
Mario Vavti
48db3a189f only use effective uid if we deal with sys channel content 2017-12-15 08:54:55 +01:00
zotlabs
08820fd655 hubzilla issue #928 2017-12-15 08:54:39 +01:00
Mario Vavti
a3d39b223d Merge remote-tracking branch 'mike/master' into dev 2017-12-15 08:51:39 +01:00
Mario Vavti
5c5fc0a62f only use effective uid if we deal with sys channel content 2017-12-15 08:51:05 +01:00
Mario Vavti
66991a0778 fix another PHP7.2 warningg 2017-12-14 22:43:28 +01:00
Mario Vavti
26b92c8564 fix another PHP7.2 warningg 2017-12-14 22:41:11 +01:00
zotlabs
f965d9dc9e wrong constant name 2017-12-14 13:38:56 -08:00
zotlabs
538845cbf5 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-12-14 13:33:20 -08:00
zotlabs
684b572aa8 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-12-14 13:32:58 -08:00
zotlabs
869126259b hubzilla issue #928 2017-12-14 13:30:31 -08:00
Mario Vavti
814dfcd4ac fix some more PHP7.2 warnings 2017-12-14 22:11:17 +01:00
Mario Vavti
a61c72b3b2 fix some more PHP7.2 warnings 2017-12-14 22:10:56 +01:00
Mario Vavti
48be6ad5c4 make remote homelink link to the home host and not to the home channel 2017-12-14 21:49:03 +01:00
Mario Vavti
a07b5ba4dd make remote homelink link to the home host and not to the home channel 2017-12-14 21:48:30 +01:00
Mario Vavti
412f177c56 bump version 2017-12-14 10:24:16 +01:00
Mario Vavti
fbc2bb02b4 strings and version bump 2017-12-13 13:25:27 +01:00
Mario Vavti
861bd15c72 fix issue with long filenames in mod cloud 2017-12-13 12:34:14 +01:00
Mario Vavti
b8fcfc7698 Merge remote-tracking branch 'mike/master' into dev 2017-12-13 11:38:42 +01:00
zotlabs
494ce9b872 hubzilla #475 continued - show photos in root folder. Part of Andrew's fix for this wasn't in my repository and hopefully won't conflict; as it appears to have been lost somewhere. It also needed a small change to the folder permissions check. 2017-12-12 14:18:34 -08:00
zotlabs
a984cd2b27 hubzilla issue #475, item 3 2017-12-12 13:50:25 -08:00
zotlabs
215d615fc3 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-12-12 11:54:26 -08:00
Mario Vavti
7a7bfd9de7 Revert "try as best we can to keep the directory table (cloud list mode) inside the containing div. It looks pretty bad when you have a long filename."
This reverts commit 4d7acdd44d.
2017-12-12 11:10:12 +01:00
Mario Vavti
d0956eb39d Merge remote-tracking branch 'mike/master' into dev 2017-12-12 10:37:04 +01:00
zotlabs
4d7acdd44d try as best we can to keep the directory table (cloud list mode) inside the containing div. It looks pretty bad when you have a long filename. 2017-12-11 15:47:54 -08:00
Mario Vavti
5b1ef760a0 notification: slight animation for loading... and do not remove public stream items on click (we can not mark them read) 2017-12-11 16:50:25 +01:00
zotlabs
4859e6e11a sql compliance issue 2017-12-10 19:43:54 -08:00
zotlabs
c2990964f0 regression in channel sources delivery 2017-12-10 18:38:50 -08:00
zotlabs
d4bb6c17d1 auto promote beginner (techlevel 0) accounts to level 1 after they show signs of active participation. 2017-12-10 16:41:03 -08:00
zotlabs
fca1a7506e go back to including the photo thumbnail data in the export file. We have the ability to fetch each thumbnail directly if there is a problem with resource consumption, but this is the most efficient way to deal with it and most sites should be able to handle the memory consumption of our thumbnail data. The original full scale photo is a different issue; these can exhaust memory even before base64. 2017-12-10 15:54:40 -08:00
zotlabs
27bc5fa4b0 improvements to file import/export 2017-12-10 15:25:44 -08:00
zotlabs
ad6cb63e07 xlink_rating_text default value 2017-12-09 12:56:11 -08:00
zotlabs
adec67d5fa hubzilla-addons issues #73 2017-12-09 12:49:28 -08:00
zotlabs
85b7c90637 strip acct: from OWA auth to API endpoints 2017-12-07 18:56:26 -08:00
zotlabs
e9ae51cfbc fix loading of theme-specific widgets 2017-12-07 14:34:51 -08:00
zotlabs
979c05b24d Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-12-07 11:49:25 -08:00
git-marijus
3dac1a8d4a Merge pull request #924 from dentm42/bugfix-pr922
Fix 'unable to add pages with spaces' (pr 922)
2017-12-07 13:24:09 +01:00
zotlabs
d326e7a75c hubzilla issue #680, implement IMoveTarget and recursive file/directory move/rename 2017-12-06 16:07:40 -08:00
zotlabs
4c08d7c480 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-12-06 14:30:00 -08:00
zotlabs
e5653945d3 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-12-06 14:29:36 -08:00
zotlabs
ffaab27e77 synchronise an attach_move operation to clones 2017-12-06 14:20:17 -08:00
M.Dent
9ba72a06b3 Fix 'unable to add pages with spaces' (pr 922) 2017-12-06 07:51:34 -05:00
Mario Vavti
a604236d89 missed a spot while resolving merge conflict 2017-12-06 12:40:27 +01:00
Mario Vavti
5024fe3e2d Merge branch 'dentm42-wiki-create-missing' into dev 2017-12-06 09:13:49 +01:00
Mario Vavti
44cb68a356 resolve merge conflict 2017-12-06 09:12:28 +01:00
zotlabs
157966eb11 don't force tile photos to be square, as there's no way to sensibly auto-crop; increase the tile size slightly to compensate 2017-12-05 21:06:41 -08:00
zotlabs
b7ca2b41cc mod_cloud: provide a themed page with an error notification on errors instead of an obtuse XML error structure 2017-12-05 18:20:38 -08:00
zotlabs
8451ee20c9 disallow backslashes in wiki and wiki-page names 2017-12-05 16:33:24 -08:00
zotlabs
d4acf41192 explain what happened here 2017-12-04 21:39:53 -08:00
zotlabs
24d256e253 fix mod display and others that require a non-zero profile_uid for updates 2017-12-04 21:18:10 -08:00
zotlabs
cb39d9435d We only require one Update module. The rest are superfluous. 2017-12-04 15:14:58 -08:00
zotlabs
0a55d6d511 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-12-04 14:28:00 -08:00
Mario Vavti
0305983360 fix another PHP 7.2 warning 2017-12-04 20:46:06 +01:00
Mario Vavti
11c703cb4b hq template 2017-12-04 11:16:51 +01:00
Mario Vavti
657ec75c3d Merge remote-tracking branch 'mike/master' into dev 2017-12-04 08:58:19 +01:00
Mario Vavti
a79b268438 fix typo in HTTPSig 2017-12-04 08:57:07 +01:00
Mario Vavti
5c12b56e87 PHP 7.2 silence some warnings 2017-12-04 08:56:01 +01:00
Mario Vavti
11b03ca4d2 mod hq: do not 404 if we have no item 2017-12-04 08:54:56 +01:00
zotlabs
91e3c5c34e render installable elements as buttons instead of links 2017-12-03 19:30:36 -08:00
zotlabs
1c821640ce pagetitle lost importing a pdl element from conversation 2017-12-03 19:12:55 -08:00
zotlabs
7ed80bf443 js warning - getelementbyid (id doesn't exist) 2017-12-03 17:38:39 -08:00
zotlabs
1c32c5fd2a rename button 2017-12-03 17:25:00 -08:00
zotlabs
ba547c2257 chunked uploads for photos page 2017-12-03 17:22:18 -08:00
Mario
dae0107dd0 fix some pubstream on/off weirdness 2017-12-03 12:31:41 +01:00
zotlabs
d5763ba476 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-12-02 17:32:19 -08:00
zotlabs
95311ad07e Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-12-02 17:31:59 -08:00
zotlabs
8a8689c191 remove warning for large files on cloud upload 2017-12-02 17:31:18 -08:00
Mario Vavti
dd2c4c37ff fix acl issue in mod cloud 2017-12-02 12:38:13 +01:00
Mario Vavti
0afdb3ed4d bump version 2017-12-01 21:07:31 +01:00
Mario Vavti
9a04b49585 add a cursor-pointer class 2017-12-01 21:06:44 +01:00
Mario Vavti
dcad9ce26a add a filter for notification to show new posts only 2017-12-01 21:00:39 +01:00
zotlabs
3b6d7e3066 make sure we get a file upload progress indicator in the tiles view. 2017-11-30 21:40:37 -08:00
zotlabs
3d8de8cf0a remove logging line 2017-11-30 19:11:26 -08:00
zotlabs
19ec8488e0 Merge branch 'chunk' 2017-11-30 19:06:00 -08:00
zotlabs
0e8e0b48b3 more or less working chunked uploads on /cloud now. 2017-11-30 19:05:24 -08:00
zotlabs
cc0d53e695 made it to prepareHtml 2017-11-30 16:24:18 -08:00
zotlabs
cce2b08e6b progress on chunked uploads in /cloud 2017-11-30 15:28:53 -08:00
zotlabs
ef4a0e5af5 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-11-30 14:56:08 -08:00
Mario
a68e2999f1 fix issue #921 - default addressbook has no name 2017-11-30 13:42:49 +01:00
Mario
fc5b688716 fix issue #921 - default addressbook has no name 2017-11-30 13:40:36 +01:00
Mario Vavti
6b327f9f4c Merge remote-tracking branch 'mike/master' into dev 2017-11-30 08:54:15 +01:00
zotlabs
d59c1bb6bf more chunk stuff 2017-11-29 18:34:16 -08:00
zotlabs
6a4050cc93 use the same variable name consistently 2017-11-29 14:08:30 -08:00
zotlabs
5abcb8c978 use httpsig auth for getfile 2017-11-29 13:51:54 -08:00
Mario Vavti
aa7f6111a6 use typeof if checking for undefined var and always clear timeout before setting a new one 2017-11-29 12:01:36 +01:00
Mario Vavti
b1f82257e8 load the profile images in the custom acl selector only if we actually need them 2017-11-29 11:35:13 +01:00
Mario Vavti
bc0f4b4fa5 an additional on touch event might improve things for mobile handling 2017-11-29 11:26:33 +01:00
Mario Vavti
e6a59ad36f allow an optional notify_id arg for liveUpdate() 2017-11-29 11:22:59 +01:00
Mario Vavti
e375224dfe bump version to prevent caching issues related to recent updates to main.js 2017-11-29 08:40:18 +01:00
Mario Vavti
f55ef7e728 remove the updateCountsOnly variable which is not used anymore now 2017-11-29 08:38:58 +01:00
Mario Vavti
bf1ec44186 rework liveUpdate() and notificationsUpdate() (aka ping) to first do the liveUpdate and when this is done only do the ping once. rename initLiveUpdate() to initUpdate() and more main.js cleanup. 2017-11-29 08:34:47 +01:00
zotlabs
e47c08ed72 more chunk 2017-11-28 20:40:01 -08:00
zotlabs
e1a209a3da more chunk work 2017-11-28 18:01:04 -08:00
zotlabs
76703dee84 more chunk work 2017-11-28 17:37:18 -08:00
zotlabs
df45c13f62 first integration attempt with /cloud and blueimp uploader 2017-11-28 14:30:46 -08:00
zotlabs
3acc5b0508 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-11-28 14:18:17 -08:00
Mario Vavti
455720ae93 check for updateCountsOnly in NavUpdate() 2017-11-28 16:06:07 +01:00
Mario Vavti
8073be87da set profile_uid in mod hq 2017-11-28 12:28:49 +01:00
Mario Vavti
8d3bf59b7b Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-11-28 11:15:32 +01:00
Mario Vavti
d5c56c0f5d split liveUpdateInit() out of NavUpdate() so we do not need to wait for initial ping to complete before we can init liveUpdate(). clean up main.js and bump version. 2017-11-28 11:15:19 +01:00
zotlabs
981631752a Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-11-27 15:13:02 -08:00
git-marijus
f3c0e212bf Merge pull request #918 from albigro/dev
Update dark.css
2017-11-27 20:08:40 +01:00
albigro
7092458945 Update dark.css 2017-11-27 13:25:23 +01:00
Mario Vavti
56772e4807 do not stop click propagation 2017-11-27 12:59:14 +01:00
Mario Vavti
3e7ab8e113 Merge remote-tracking branch 'mike/master' into dev 2017-11-27 12:33:01 +01:00
git-marijus
53fca8a248 Merge pull request #916 from dawnbreak/QA_testing
Improve Travis CI
2017-11-27 12:04:10 +01:00
git-marijus
1c712ce93e Merge pull request #917 from anaqreon/minimum-age
Provide system config option for minimum registration age.
2017-11-27 12:03:06 +01:00
zotlabs
dc53573975 unset item_wall and item_origin on pubstream to channel copy 2017-11-27 02:47:57 -08:00
Mario Vavti
1ad1b74512 fix mod like after recent changes 2017-11-27 10:07:45 +01:00
zotlabs
0e91810ed6 pubstream comments and a few other bugfixes that were discovered along the way 2017-11-26 18:29:24 -08:00
zotlabs
4471f580d7 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-11-25 14:08:15 -08:00
Klaus Weidenbach
063654373d Fix a PHP error in a unit test for PHP7.2. 2017-11-25 21:49:51 +01:00
Klaus Weidenbach
ee929752e3 👷Improve Travis, add PHP7.2.
Improve Travis CI configuration a bit and add PHP7.2 to the test matrix.
Add PHPUnit Testdox output and optionally deploy test results on release tags.
Add a configuration file for infection (Mutation Testing Framework).
2017-11-25 21:49:51 +01:00
Mario Vavti
88ebfe6edb fix double html ids in caldav widget if more than one sharee 2017-11-25 16:15:33 +01:00
Mario Vavti
e1fdac3278 fix double html ids in caldav widget if more than one sharee 2017-11-25 16:14:04 +01:00
Mario
d65740311b fix regression in cdav calendar widget 2017-11-25 14:35:07 +01:00
Mario
55868ad02d Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-11-25 14:34:34 +01:00
Mario
014b629928 fix regression in cdav calendar widget 2017-11-25 14:33:57 +01:00
Mario Vavti
4bffa49add Merge remote-tracking branch 'mike/master' into dev 2017-11-25 12:11:34 +01:00
zotlabs
fe37b03757 blah is not author or owner 2017-11-25 03:01:25 -08:00
Mario
4b2bd871b7 implement pubstream items in mod hq 2017-11-25 10:44:47 +01:00
Mario Vavti
2108173e74 Merge remote-tracking branch 'mike/master' into dev 2017-11-25 07:17:52 +01:00
zotlabs
08900b730b this may fix pubstream comments/likes 2017-11-24 18:23:53 -08:00
zotlabs
9dd545f420 don't include invisible "update activities" in category widget 2017-11-24 15:39:00 -08:00
zotlabs
fda5231a71 default profile assign 2017-11-24 14:55:39 -08:00
Mario Vavti
b03545f899 mod hq: minor query change 2017-11-24 22:48:15 +01:00
Andrew Manning
e327b8cb9a Provide system config option for minimum registration age. 2017-11-24 13:50:29 -05:00
Mario Vavti
64c81ed174 missing files 2017-11-24 15:12:40 +01:00
Mario Vavti
87eaa6d8e5 some more work on mod hq 2017-11-24 15:01:34 +01:00
zotlabs
874cff1a87 sync packet not generated when deleting a file using the web browser interface 2017-11-24 00:12:19 -08:00
zotlabs
3bb0efd2cb remove deprecated $a argument from advanced_profile() 2017-11-23 20:35:34 -08:00
zotlabs
a99ebd42ec change to bbcode calling parameters: important: will require pulling addons;
also some extra checking of server headers in upload functions
2017-11-23 15:21:50 -08:00
zotlabs
0cfe2ecd7b Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-11-23 14:00:43 -08:00
zotlabs
e5141dd91b Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-11-23 14:00:24 -08:00
Mario Vavti
14f1292743 fix typo in pipe_streams() 2017-11-23 20:22:50 +01:00
zotlabs
c96f1dbbe2 mod_file_upload: provide a handler for chunked uploads for when we eventually support this on the client side 2017-11-22 20:24:43 -08:00
zotlabs
8fcf16ee63 optional divider between item header and body 2017-11-22 18:39:23 -08:00
zotlabs
9936670f44 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-11-22 15:43:48 -08:00
zotlabs
4fc8416c3c disable until completed 2017-11-22 15:41:09 -08:00
zotlabs
6c178d4485 article feature 2017-11-22 15:39:06 -08:00
zotlabs
8bd8af7d16 initial articles feature 2017-11-22 11:49:28 -08:00
zotlabs
b4f8f4df7b allow toggle to 'SMBC' scaling mode. 'SMBC' mode is named thusly for Saturday Morning Breakfast Cereal cartoons which are very tall. If you scale the image to constrain both dimensions, the cartoon text is illegible. So we allow the height to float and only constrain the width. The new flag allows you to overide this mode and force both dimensions to always be evaluated and constrained to the provided limit. 2017-11-21 19:47:59 -08:00
zotlabs
98e2b2a60b add thumbnail hook documentation pointer 2017-11-21 17:59:02 -08:00
zotlabs
eb69f6c346 add thumbnail hook 2017-11-21 17:56:23 -08:00
zotlabs
2cb3ccbf14 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-11-21 17:32:09 -08:00
zotlabs
6ac3fc4e07 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-11-21 17:30:40 -08:00
zotlabs
fb1e3cba8b expose the security setting for SVG thumbnails 2017-11-21 16:22:17 -08:00
zotlabs
94d6461568 Video thumbnail generator 2017-11-21 16:06:03 -08:00
zotlabs
09f1e4bdfb pdf thumbnails 2017-11-21 15:10:23 -08:00
zotlabs
8dceb8e3a7 thumbnail generator for epubs 2017-11-21 14:30:26 -08:00
Mario Vavti
d942818bd9 use item_thread_top = 1 instead of mid = parent_mid and make sure local_channel is intval 2017-11-21 22:10:09 +01:00
zotlabs
1acef2e242 after shrinking the tile icons they can be a bit darker. At the larger size the darkness was harsh. 2017-11-21 01:41:35 -08:00
Mario Vavti
e2814f5d80 Merge remote-tracking branch 'mike/master' into dev 2017-11-21 10:20:41 +01:00
Mario Vavti
542d9130b5 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-11-21 10:19:57 +01:00
Mario Vavti
159d6469fd make browser history buttons work with ajax calls in /display and /hq 2017-11-21 10:19:50 +01:00
zotlabs
53445ba6bd fix album cover thumb generator 2017-11-20 18:14:44 -08:00
zotlabs
1810edae93 more work theming the tile view 2017-11-20 16:05:24 -08:00
zotlabs
7f9ab491f2 add mp3 audio thumbnail generator 2017-11-20 15:44:25 -08:00
zotlabs
77190cca92 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-11-20 15:04:20 -08:00
zotlabs
babe14410c Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-11-20 15:04:08 -08:00
zotlabs
d2e3e3003a set display_path for photo_upload from the DAV File interface 2017-11-20 15:02:23 -08:00
zotlabs
56d981c8ef provide a generalised interface for thumbnail generators to support various content types 2017-11-20 14:48:29 -08:00
Mike Macgirvin
250d758d74 Merge pull request #913 from dawnbreak/dev
Add ID3Parser library.
2017-11-21 06:40:48 +11:00
Klaus Weidenbach
e32f9e0354 Add ID3Parser library.
https://github.com/LukasReschke/ID3Parser.git
2017-11-20 20:14:04 +01:00
Mario Vavti
0325efeb35 Merge remote-tracking branch 'mike/master' into dev 2017-11-20 14:27:20 +01:00
Mario Vavti
9ab33f1e13 we need a mid also if there is no unseen items 2017-11-20 11:05:08 +01:00
Mario Vavti
66c0ac591c order by created instead of id 2017-11-20 10:00:13 +01:00
Mario Vavti
6241967112 speed up initial query if no mid is provided 2017-11-20 09:57:07 +01:00
zotlabs
250d947667 cloud tiles: use folder-o for folders and set the icon colour to something a bit less harsh than the link colour for system icons. Dark solid blue folders are a bit overwhelming, as is the default text_colour (black) 2017-11-19 21:51:21 -08:00
zotlabs
6a49e3124e Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-11-19 17:39:42 -08:00
zotlabs
4cd0b745cb Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-11-19 17:39:19 -08:00
zotlabs
16f584608f text thumbnails in cloud tile mode 2017-11-19 16:56:59 -08:00
Mario Vavti
88d0bf94d8 hq: $item_normal was defined to late 2017-11-19 23:09:15 +01:00
Mario Vavti
241a0829dc fix issues with apporder related to recent pinned apps changes 2017-11-19 22:42:16 +01:00
Mario Vavti
66a0b4790e fix pinned apps not available in mobile view 2017-11-19 22:15:51 +01:00
Mario Vavti
46ab7ca786 bump version to catch media breakpoint changes 2017-11-19 21:51:30 +01:00
Mario Vavti
3efe144fa0 revisit media breakpoints - do not switch to mobile view to early. 2017-11-19 21:41:45 +01:00
Mario Vavti
744960d36d only provide notify id if otype == item 2017-11-19 20:40:50 +01:00
Mario Vavti
727b49c8ab do not double encode already encoded mid 2017-11-19 20:37:58 +01:00
Mario Vavti
0aa01740d1 Merge remote-tracking branch 'mike/master' into dev 2017-11-19 20:12:55 +01:00
Mario Vavti
1c75e71eb3 pubstream is not yet supported in mod hq 2017-11-18 22:31:32 +01:00
Mario Vavti
fbc57fa8e3 some more work on mod hq 2017-11-18 22:16:06 +01:00
zotlabs
60fcb5f4f2 don't include pending connections in poco 2017-11-18 12:29:20 -08:00
zotlabs
eb1e9edd33 svg thumbnails have security concerns. Added thumbnail security setting and hook to generate other thumbnails - a plugin for text file thumbnails isn't too difficult (using imagemagick lib), however it's a tossup whether we do this at file submission time or at render time for performance reasons. Perhaps both options should be available. 2017-11-17 13:54:16 -08:00
Mario Vavti
6b6c2ccfa3 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-11-17 21:25:31 +01:00
Mario Vavti
8a4ee0506c use substr() instead of str_replace() 2017-11-17 21:25:18 +01:00
Andrew Manning
ee2ba21246 Add French to help pages language dropdown selector 2017-11-17 10:27:17 -05:00
Mario Vavti
8e6ebd4f7b remove obsolete variable 2017-11-17 14:12:10 +01:00
Mario Vavti
76af8fa754 inroduce the HQ module - a module with the potential to become a nice landing page for hubzilla. It is nothing more than a downgraded mod display atm. 2017-11-17 13:54:53 +01:00
Mario Vavti
601ebee969 strip author name from notify messages in notifications - fix issue #911 2017-11-17 10:40:34 +01:00
Mario Vavti
becd5f1446 Merge remote-tracking branch 'mike/master' into dev 2017-11-17 09:14:16 +01:00
zotlabs
ab363e3132 improve the icon mappings for cloud tile view 2017-11-16 19:58:09 -08:00
zotlabs
7c655c8d61 allow svg image previews in cloud browser when using tile mode. 2017-11-16 19:26:56 -08:00
zotlabs
7386fa57c8 remove column item.diaspora_meta, action items 2 and 3 of hubzilla issue #828 2017-11-16 17:13:48 -08:00
Mario Vavti
3f2b7d756c add > pin and remove > unpin 2017-11-16 21:42:39 +01:00
Mario Vavti
cba602bf64 compare strpos result against false 2017-11-16 13:10:08 +01:00
Mario Vavti
78c9f752af provide ability to pin apps to navbar from /apps. this removes the ability to have per custom navbar pinned apps - this can be added later if desired 2017-11-16 11:11:06 +01:00
zotlabs
d13a6180be Add private forums to forum widget. The link redirects to the remote channel page rather than a filtered view of your network page because you cannot post to a private forum from your own site. 2017-11-15 20:16:51 -08:00
zotlabs
d479ed00e4 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-11-15 12:41:24 -08:00
zotlabs
cf4588f16f Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-11-15 12:41:03 -08:00
zotlabs
67b6d41d57 This should sort out hubzilla issue #826 but requires a bit more testing. It may also sort out some reported issues with commenting and liking items in the public stream. 2017-11-15 11:26:14 -08:00
Mario Vavti
601f1eb624 Merge remote-tracking branch 'mike/master' into dev 2017-11-15 10:48:24 +01:00
Mario Vavti
301b41eaa4 typo - fixes issue #910 2017-11-15 09:40:14 +01:00
Mario Vavti
ed0d7890ab move notifications style to widgets.css 2017-11-15 09:07:33 +01:00
Mario Vavti
f50ae07560 fix notifications again after recent changes 2017-11-15 09:01:57 +01:00
zotlabs
8e53491867 sort out a few more large image upload issues 2017-11-14 17:39:33 -08:00
zotlabs
d43542dd7a Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-11-14 14:50:36 -08:00
Mario Vavti
3c3c0ed342 change button id to not interfere with the upload submit button 2017-11-14 22:52:04 +01:00
Mario Vavti
8d9c47acdf move notifications full-screen handling to notifications widget 2017-11-14 22:35:58 +01:00
Mario Vavti
9d69792e08 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-11-14 10:07:23 +01:00
Mario Vavti
5b4aa71878 Merge remote-tracking branch 'mike/master' into dev 2017-11-14 09:47:13 +01:00
git-marijus
240db7b602 Merge pull request #907 from dawnbreak/QA_testing
Unit tests for Zotlabs\Access classes.
2017-11-14 08:47:25 +01:00
zotlabs
aff476d0d4 move mailhost settings from plugin to core 2017-11-13 15:21:49 -08:00
zotlabs
d5ff82bbe4 issue with group_rmv 2017-11-13 14:40:46 -08:00
Mario Vavti
c8dbcf8a2a sort combined private mail conversations by latest updated conversation instead of created parent 2017-11-13 22:01:37 +01:00
Mario Vavti
d893eb67b8 fix php warnings on photo delete 2017-11-13 19:57:53 +01:00
Mario Vavti
5dad444026 fix php warnings on photo delete 2017-11-13 19:55:09 +01:00
Mario Vavti
217a684e5f also filter atokens on acl search 2017-11-13 10:08:51 +01:00
zotlabs
1ef558d7e6 encrypt the owa token 2017-11-13 09:06:44 +01:00
zotlabs
7b6ddeb859 allow a site to block (public) the directory separately from other resources. 2017-11-12 21:43:46 -08:00
zotlabs
b12dc89bb1 improve removed_channel final cleanup. Hubzilla issue #386 2017-11-12 21:37:06 -08:00
zotlabs
a387868540 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-11-12 16:07:20 -08:00
zotlabs
59caf141d1 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-11-12 16:07:04 -08:00
zotlabs
1ac35dd047 fix some conflicts between private tags and forum tags 2017-11-12 15:07:12 -08:00
zotlabs
458f2e748d cleanup of upload_to_comments test; we actually don't care about the profile owner. We only care that we're logged in locally and our storage is public by default. 2017-11-12 14:14:20 -08:00
Mario Vavti
b62dee4c90 removed underline only for testing purpose - revert 2017-11-12 21:06:41 +01:00
Mario Vavti
6ea7ef43e0 removed underline only for testing purpose - revert 2017-11-12 21:04:43 +01:00
Mario Vavti
3838472a8e fix some schema issues 2017-11-12 20:19:29 +01:00
Mario Vavti
064464a553 fix some schema issues 2017-11-12 20:18:18 +01:00
Mario Vavti
9bf366b7d4 more changelog 2017-11-11 21:52:11 +01:00
Mario Vavti
4668f36ddd more changelog 2017-11-11 21:48:58 +01:00
zotlabs
a68308b164 set os_syspath in DAV file put operation so that photos will scale correctly. 2017-11-11 21:43:52 +01:00
zotlabs
f7e3d0dbf6 hubzilla issue #901 - unicode characters in urls tripping up url regexes - these regexes have been modified to accept unicode "letters" which may preclude emojis and control sequences and symbols in url links; but should suffice for most legal URLs containing language context "text" glyphs. 2017-11-11 21:42:49 +01:00
Mario Vavti
bd3bc503ed Merge remote-tracking branch 'mike/master' into dev 2017-11-11 21:35:56 +01:00
Mario
e2eb36ded6 bump version 2017-11-11 21:34:22 +01:00
Mario Vavti
4ac3cec66e changelog 2017-11-11 21:33:52 +01:00
Mario Vavti
823729d2c1 changelog 2017-11-11 21:25:59 +01:00
zotlabs
34b38f06e0 also disable uploading in comments if the channel permissionlimits for view_storage aren't PERMS_PUBLIC. 2017-11-11 12:23:20 -08:00
Mario Vavti
0fef599341 fix wiki pages not updating after creating new page 2017-11-11 20:28:46 +01:00
Mario Vavti
124e08efde animate fast 2017-11-11 20:28:35 +01:00
Mario Vavti
66338a5757 dedicate the first click to slideup the cover again but make sure the nav buttons remain functional 2017-11-11 20:28:22 +01:00
Mario Vavti
ebee3e208c revert back to get the mid from enotify - otherwise we can not distinct between posts and likes 2017-11-11 20:28:00 +01:00
Mario Vavti
f8cf68ab53 get the path infos from pathname instead of seperate data attribute 2017-11-11 20:27:48 +01:00
Mario Vavti
28c85cf3ae load notifications links to /display via ajax if we are already in /display 2017-11-11 20:27:31 +01:00
zotlabs
cf4e2b2953 unable to change permissions on wiki with space in name 2017-11-11 20:27:17 +01:00
Mario Vavti
f3d3ec5744 css fixes 2017-11-11 20:26:14 +01:00
Mario Vavti
29829eb011 only show nav app link if we have a selected app 2017-11-11 20:26:03 +01:00
Mario
129e6bddde truncate nav-app-link if appropriate 2017-11-11 20:25:52 +01:00
Mario Vavti
8260817cf7 rename channel app events to calendar and add nav_set_selected() to /cal 2017-11-11 20:25:32 +01:00
Mario Vavti
47d15f3bf4 move style out of template 2017-11-11 20:25:21 +01:00
Mario Vavti
96d439bcee add location info to the navbar 2017-11-11 20:25:04 +01:00
zotlabs
47fab97210 bring back tabindex to submit comments 2017-11-11 20:24:26 +01:00
Mario Vavti
5dec3ff18e update es-es help.html 2017-11-11 20:24:06 +01:00
Andrew Manning
bd3e5156c4 Update help.html 2017-11-11 20:23:49 +01:00
Andrew Manning
fccc1da666 Add Manuel's Spanish translations for context help 2017-11-11 20:23:32 +01:00
Mario Vavti
55995b0494 fix wiki pages not updating after creating new page 2017-11-11 20:01:03 +01:00
Mario Vavti
eb17598254 animate fast 2017-11-11 13:53:22 +01:00
Mario Vavti
0d512dffc3 dedicate the first click to slideup the cover again but make sure the nav buttons remain functional 2017-11-11 13:46:17 +01:00
zotlabs
988028577b set os_syspath in DAV file put operation so that photos will scale correctly. 2017-11-10 13:50:52 -08:00
Klaus Weidenbach
6cf3ebb7db 👌 Fix a PHP warning in Permissions::FilledPerms().
When NULL is passed as parameter there is a PHP warning when testing
against it in the function in_array().
2017-11-10 21:28:35 +01:00
Klaus Weidenbach
c571ca40d7 unit tests for Zotlabs\Access classes. 2017-11-10 21:22:18 +01:00
Mario Vavti
3a17225546 revert back to get the mid from enotify - otherwise we can not distinct between posts and likes 2017-11-10 20:30:55 +01:00
Mario Vavti
5e541ff53b bring some ajax to photo upload 2017-11-10 10:50:19 +01:00
zotlabs
9b19e40a74 hubzilla issue #901 - unicode characters in urls tripping up url regexes - these regexes have been modified to accept unicode "letters" which may preclude emojis and control sequences and symbols in url links; but should suffice for most legal URLs containing language context "text" glyphs. 2017-11-09 21:26:18 -08:00
zotlabs
71a30cd9a5 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-11-09 18:36:40 -08:00
Mario Vavti
766a7fb1b4 Merge remote-tracking branch 'mike/master' into dev 2017-11-09 23:13:15 +01:00
Mario Vavti
40a7446e3e get the path infos from pathname instead of seperate data attribute 2017-11-09 12:41:57 +01:00
Mario Vavti
fc96cd3710 load notifications links to /display via ajax if we are already in /display 2017-11-09 11:34:41 +01:00
zotlabs
40c625158f unable to change permissions on wiki with space in name 2017-11-08 21:19:03 -08:00
zotlabs
7dad842f35 use logger 2017-11-08 19:24:02 -08:00
zotlabs
909f67fb3a Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-11-08 19:22:09 -08:00
zotlabs
ef27a1ce6c use logger 2017-11-08 19:21:36 -08:00
zotlabs
75471ba10f Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-11-08 19:21:20 -08:00
Mario Vavti
e7d20efb1b css fixes 2017-11-08 12:00:15 +01:00
Mario Vavti
a8d527f1cd only show nav app link if we have a selected app 2017-11-08 11:01:19 +01:00
Mario Vavti
e5f3296c6b use text-muted on site location 2017-11-08 09:11:17 +01:00
Mario
9d584fc720 truncate nav-app-link if appropriate 2017-11-08 08:57:30 +01:00
zotlabs
92e0c502f7 make most recent cloud_tiles setting for local channels persistent across logins 2017-11-07 19:34:00 -08:00
Mario Vavti
b5d4acf10a Merge remote-tracking branch 'mike/master' into dev 2017-11-07 12:20:11 +01:00
Mario Vavti
47fbdda409 rename channel app events to calendar and add nav_set_selected() to /cal 2017-11-07 11:22:11 +01:00
Mario Vavti
1bb6dfc9a0 move style out of template 2017-11-07 10:58:15 +01:00
Mario Vavti
549866c090 add location info to the navbar 2017-11-07 10:43:13 +01:00
zotlabs
7b69dc574b Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-11-06 21:56:16 -08:00
zotlabs
5e47b767ea Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-11-06 21:55:58 -08:00
zotlabs
5376a734d4 .htignore update 2017-11-06 21:55:36 -08:00
zotlabs
3f1a4b6559 second half of issue #893 - move channel default permissions to its own module so we can apply different page/widget layouts than for connedit; the relevant functionality is abandoned on mod_connedit but still intact. Trying a slightly different look/behaviour for inherited settings and the associated checkboxes. This may need a bit more tweaking but overall looks a lot cleaner. 2017-11-06 20:13:14 -08:00
zotlabs
11a7a08b9d bring back tabindex to submit comments 2017-11-06 17:08:48 -08:00
Mario Vavti
d16bbfb224 update es-es help.html 2017-11-06 12:28:12 +01:00
git-marijus
48959d5606 Merge pull request #900 from anaqreon/dev
Add Manuel's Spanish translations for context help
2017-11-06 11:36:47 +01:00
Mario Vavti
94e548b07a lets try this in the wild for a while 2017-11-06 11:25:49 +01:00
Mario Vavti
4be48b8d8b fix unable to mark all messages read 2017-11-06 09:35:25 +01:00
Mario Vavti
9cd715bbbf fix unable to mark all messages read 2017-11-06 09:34:20 +01:00
zotlabs
04d66ba7f4 attach.php minor cleanup and doc 2017-11-06 00:17:46 -08:00
zotlabs
7efcb3c75f allow cloud filenames to include ampersands without messing up auth tokens (zid, owt, and zat, and the constant placeholder 'f=') 2017-11-05 19:47:44 -08:00
zotlabs
359bfb76f6 common connections on suggestion page showing wildly different results than remote profile, and is consistently off by one 2017-11-05 16:29:01 -08:00
zotlabs
0e1c628066 fix can_comment_on_post() after recent code cleanup (a required array parameter was missing) 2017-11-04 18:34:38 -07:00
zotlabs
65bc146afa Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-11-04 18:18:56 -07:00
zotlabs
7ef641e256 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-11-04 18:18:10 -07:00
zotlabs
9630d2ef2c Merge branch 'dev_merge' 2017-11-04 18:17:39 -07:00
zotlabs
6e9d5a03c2 developer certificate of origin 2017-11-04 18:15:55 -07:00
Andrew Manning
839c154869 Update help.html 2017-11-04 06:56:50 -04:00
Mario Vavti
6995d54a3c fix wrong variable in sprintf resulting in php warning 2017-11-04 10:48:24 +01:00
git-marijus
d31df715fb Merge pull request #883 from dawnbreak/docu
💡 Improving Doxygen documentation.
2017-11-04 10:25:27 +01:00
git-marijus
26fa091aa2 Merge branch 'dev' into docu 2017-11-04 10:24:54 +01:00
git-marijus
cfbeb1655d Merge branch 'dev' into docu 2017-11-04 10:22:58 +01:00
git-marijus
39c194c5c3 Merge pull request #891 from dawnbreak/langlibs
Langlibs updates
2017-11-04 10:18:34 +01:00
Mario Vavti
9dfb471c0b Merge remote-tracking branch 'mike/master' into dev 2017-11-04 10:11:48 +01:00
zotlabs
f51a7225c8 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-11-03 19:18:55 -07:00
zotlabs
1d903655af Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-11-03 19:18:35 -07:00
zotlabs
9abb061e71 provide short localised summary for likes that will end up in displayed notifications 2017-11-03 16:47:05 -07:00
zotlabs
6e48c36519 imagedata not set correctly if large photo AND imagick is not installed 2017-11-03 23:09:31 +01:00
zotlabs
d450fc61c4 more search work 2017-11-03 15:08:56 -07:00
Mario Vavti
a899ce1c22 Merge remote-tracking branch 'mike/master' into dev 2017-11-03 23:08:04 +01:00
Klaus Weidenbach
1a737be2b4 💡 Improving Doxygen documentation.
Fix some Doxygen parsing errors.
Improve hooks documentation.
2017-11-03 23:04:27 +01:00
zotlabs
fae9c23637 imagedata not set correctly if large photo AND imagick is not installed 2017-11-03 14:20:49 -07:00
zotlabs
1159dd59ed fix cloud redirects with owt tokens 2017-11-03 14:07:00 -07:00
Mario Vavti
0ce7358f0f update item_normal() to not include ACTIVITY_OBJ_FILE obj_type 2017-11-03 13:49:58 +01:00
Mario Vavti
41749f5eda Merge remote-tracking branch 'mike/master' into dev 2017-11-03 10:48:00 +01:00
Mario Vavti
1567b7b383 set $module_format to html to not break updates. it will be set to something else later if appropriate 2017-11-03 10:04:25 +01:00
zotlabs
e70bd0054c hubzilla issue #896 2017-11-02 18:25:34 -07:00
zotlabs
b450b6a435 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-11-02 17:32:03 -07:00
zotlabs
0403738981 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-11-02 17:31:49 -07:00
zotlabs
0d7062ffdf more queue work 2017-11-02 15:43:14 -07:00
Mario Vavti
8f59b2d3e0 Merge remote-tracking branch 'mike/master' into dev 2017-11-02 12:36:05 +01:00
zotlabs
1b290f573a put deferred queue logic every place we create a delivery process (except for protocol 'friend requests' which aren't likely to swamp the delivery system). Remove it from the queue_delivery function which was too late to do anything. 2017-11-02 03:13:30 -07:00
Andrew Manning
b77169f1d8 Add Manuel's Spanish translations for context help 2017-11-02 05:58:08 -04:00
Mario Vavti
00d8783e45 Merge remote-tracking branch 'mike/master' into dev 2017-11-02 08:53:31 +01:00
Mario Vavti
cf5beafcfd fix issues with diaspora xchans 2017-11-02 08:50:16 +01:00
Mario Vavti
cdaf5f3fc0 fix issues with diaspora xchans 2017-11-02 08:44:46 +01:00
zotlabs
bdf50a824e Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-11-01 22:34:54 -07:00
zotlabs
f23c8e7597 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-11-01 22:34:31 -07:00
zotlabs
52657b6215 don't perform zot_refresh on dead sites unless $force is set 2017-11-01 19:24:29 -07:00
zotlabs
28cd2759d7 do not send message_list responses to dead sites (this delivery method bypassed the notifier) 2017-11-01 17:50:57 -07:00
zotlabs
12f33d2cd4 Maria's profile photo issue, please push to master. 2017-11-01 12:13:21 +01:00
Mario Vavti
11cdc36bcc Merge remote-tracking branch 'mike/master' into dev 2017-11-01 12:08:59 +01:00
zotlabs
22d45a8d1e support for netselect query 2017-11-01 02:53:12 -07:00
zotlabs
7d9d1e0cdb Maria's profile photo issue, please push to master. 2017-11-01 02:15:40 -07:00
zotlabs
98b53801e0 provide personal config for channel_menu; the site can set an initial site-wide value but this but there isn't a corresponding admin setting currently and can only be set by manual config 2017-10-31 19:56:14 -07:00
zotlabs
bff1e215cc pdledit - show original/system layout text for comparison 2017-10-31 18:04:01 -07:00
zotlabs
6efef3922b add another delivery control parameter (force queue threshold) 2017-10-31 15:41:44 -07:00
zotlabs
caec565de5 bring back sitesearch widget in mod_search because some screen modes don't have search in the navbar and there is no other way to enter text - hubzilla issue #898 2017-10-31 12:18:16 -07:00
zotlabs
16a2bfa95b move tile styles to theme instead of template file 2017-10-30 21:00:17 -07:00
zotlabs
60da235efb use 1) personal setting, 2) site setting, 3) default false - for system.channel_menu 2017-10-30 20:43:24 -07:00
zotlabs
71e0e55b0b provide a 'tile' view (view only) mode to mod_cloud 2017-10-30 18:49:18 -07:00
Mario Vavti
b28ff509b1 Merge remote-tracking branch 'mike/master' into dev 2017-10-30 10:42:51 +01:00
Haakon Meland Eriksen
8467ecb1d7 Added mode to Portfolio widget 2017-10-30 10:39:39 +01:00
git-marijus
1f47f4ff96 Merge pull request #897 from HaakonME/dev
Added mode to Portfolio widget
2017-10-30 10:38:17 +01:00
zotlabs
4fef29e61c memory overflow trying to delete a connection with a very high noise to signal ratio 2017-10-29 22:21:52 -07:00
zotlabs
56c3d5dbcb add some documentation about shareable widgets 2017-10-29 22:00:03 -07:00
zotlabs
ceed0f7a1b allow plugin class widgets, fix sql error in page module 2017-10-29 19:52:00 -07:00
zotlabs
906d91d4d1 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-10-29 16:35:31 -07:00
zotlabs
e539a9e7bd Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-10-29 16:35:15 -07:00
Klaus Weidenbach
1be98d7b7f Some more work on unit tests.
Some small improvements for coverage report.
Add more functions from include/text.php
Update composer dev libraries for phpunit.
2017-10-29 22:00:55 +01:00
Klaus Weidenbach
66832c41e9 ⬆️ Update intl library.
Update intl library from v0.4? (2014) to v0.7.4 (2016).
Use global composer autoloader now.
2017-10-29 22:00:12 +01:00
Klaus Weidenbach
8e4c5db766 ⬆️ Update Text_LanguageDetect.
Update from v0.3.0 (2012) to v1.0.0 (2017) which should remove some
warnings and improve PHP7 support.
Using composer to handle this PEAR library now.

Fix a problem in FeedutilsTest.
2017-10-29 22:00:06 +01:00
Haakon Meland Eriksen
1dc3253d4a Added mode to Portfolio widget 2017-10-29 16:41:49 +01:00
Haakon Meland Eriksen
feebe7d4c6 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-10-29 13:24:41 +01:00
Manuel Jiménez Friaza
9a8071e014 Spanish translation revised again. 2017-10-29 11:52:12 +01:00
git-marijus
9ce817bb6e Merge pull request #894 from mjfriaza/dev
Spanish translation revised again.
2017-10-29 11:50:20 +01:00
zotlabs
fe2a937cf2 fix "unstar" 2017-10-28 15:24:37 -07:00
Manuel Jiménez Friaza
1cf90dd14d Spanish translation revised again. 2017-10-28 12:54:57 +02:00
zotlabs
6823f0aa52 1/2 of hubzilla issue #893 2017-10-26 22:45:54 -07:00
Haakon Meland Eriksen
f2efa8c753 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-10-27 05:58:10 +02:00
zotlabs
e5cfb8a0cd encrypt the owa token 2017-10-26 15:23:04 -07:00
zotlabs
4a3149d1ba hubzilla issue #890, separate the pdl preview feature from the mod_page webpage query so that the webpage will always win if a webpage and pdl have the same name. 2017-10-25 22:33:03 -07:00
zotlabs
dafe0a5547 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-10-25 16:55:18 -07:00
Klaus Weidenbach
fe5f1e4d67 Some unit test for include/language.php
Unfortunately not so much unit testable, but added in preparation to
update LanguageDetect and Intl library.
2017-10-26 01:21:43 +02:00
Andrew Manning
5cf06a679c Context help for cards 2017-10-25 13:35:24 +02:00
git-marijus
859195d07a Merge pull request #888 from anaqreon/card-context
Context help for cards
2017-10-25 13:33:58 +02:00
Mario
344aa13c64 Merge branch '2.8RC' 2017-10-25 13:29:19 +02:00
Mario
69b22e3f79 bump version and update changelog 2017-10-25 13:27:30 +02:00
Andrew Manning
a782c9944c Context help for cards 2017-10-24 21:41:49 -04:00
Haakon Meland Eriksen
39055c919c Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-10-24 20:44:25 +02:00
Mario
bc890d3038 version RC1 2017-10-24 19:43:06 +02:00
Mario Vavti
e424ae0473 comment out statistics link in mod pubsites until we have something functional again 2017-10-24 18:35:22 +02:00
Klaus Weidenbach
780abe7dd4 Update composer autoload cache. 2017-10-24 18:35:03 +02:00
Haakon Meland Eriksen
a3fc9e3742 Portfolio widget - CSS update 2017-10-24 18:34:37 +02:00
Mario Vavti
325cbfcdb3 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-10-24 18:30:00 +02:00
git-marijus
69e7a7594a Merge pull request #884 from dawnbreak/dev
Update composer autoload cache.
2017-10-24 18:28:42 +02:00
git-marijus
c489f734db Merge pull request #882 from HaakonME/dev
Portfolio widget - CSS update
2017-10-24 18:22:35 +02:00
Mario Vavti
60a54e9aac comment out statistics link in mod pubsites until we have something functional again 2017-10-24 18:21:19 +02:00
Haakon Meland Eriksen
280baf7c82 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-10-24 17:56:20 +02:00
Mario
a23f8b6231 add hcard to webfinger 2017-10-24 10:41:37 +02:00
zotlabs
ccc8ff107e acl encoding issues 2017-10-24 10:26:23 +02:00
zotlabs
59a9f6bf02 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-10-23 22:29:29 -07:00
zotlabs
2aff3a1a05 not sure when but the hcard went missing in webfinger 2017-10-23 21:19:40 -07:00
zotlabs
25988ddefa not sure when but the hcard went missing in webfinger 2017-10-23 21:03:18 -07:00
Haakon Meland Eriksen
c99962106d Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-10-24 06:03:09 +02:00
zotlabs
52c1f79f2e acl encoding issues 2017-10-23 17:52:17 -07:00
zotlabs
2c07a92ad7 hubzilla issue #885 2017-10-23 22:10:33 +02:00
zotlabs
e67ff5c122 hubzilla issue #885 2017-10-23 12:35:46 -07:00
zotlabs
37b7b2f1a8 mod_display: provide alternate serialisations (starting with atom) 2017-10-22 21:44:39 -07:00
zotlabs
fd5764e166 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-10-22 19:32:31 -07:00
zotlabs
c49eec71f0 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-10-22 19:32:08 -07:00
zotlabs
812d904c98 bring back the markdown post feature (after investing some effort to make it work) 2017-10-22 18:23:37 -07:00
Klaus Weidenbach
a4fdf3fbbb We call Theme:url() statically, make it also static. 2017-10-23 01:34:37 +02:00
Klaus Weidenbach
9090bfd1c3 Update composer autoload cache. 2017-10-23 01:10:53 +02:00
zotlabs
8c57ed64d0 wrong key 2017-10-22 21:49:34 +02:00
Mario Vavti
b58bf75f21 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-10-22 21:44:37 +02:00
Mario Vavti
189a15fe37 Merge remote-tracking branch 'mike/master' into dev 2017-10-22 21:44:20 +02:00
zotlabs
c7d9a5ac91 wrong key 2017-10-22 12:35:17 -07:00
Mario Vavti
d0bc81f8d2 do not show seen notifys in notifications - show them in mod notifications instead. Update notifications count also on notifications updates 2017-10-22 21:17:20 +02:00
phellmes
0dc777bc45 Update DE translation strings 2017-10-22 21:17:02 +02:00
Manuel Jiménez Friaza
4f39119e37 Fixed the Spanish translation 2017-10-22 21:16:54 +02:00
git-marijus
8aa4af372d Merge pull request #880 from mjfriaza/dev
Updated the Spanish translation
2017-10-22 21:14:03 +02:00
git-marijus
d5e90d678a Merge pull request #881 from phellmes/dev
Update DE translation strings (also for 2.8RC)
2017-10-22 21:13:49 +02:00
Mario Vavti
0061ac8584 do not show seen notifys in notifications - show them in mod notifications instead. Update notifications count also on notifications updates 2017-10-22 21:01:58 +02:00
Haakon Meland Eriksen
f648809856 Portfolio widget - CSS update 2017-10-22 19:52:08 +02:00
phellmes
687114b407 Update DE translation strings 2017-10-21 13:52:53 +02:00
Manuel Jiménez Friaza
40f805c94a Fixed the Spanish translation 2017-10-21 13:01:46 +02:00
Mario Vavti
9751d03a4d changelog 2017-10-20 10:16:28 +02:00
zotlabs
36678d1b90 register workflow was getting over-ridden in include/security 2017-10-20 10:14:56 +02:00
Andrew Manning
8f465e3097 Display different info message if using invite code 2017-10-20 10:13:17 +02:00
Mario Vavti
c80f4feb62 Merge remote-tracking branch 'mike/master' into dev 2017-10-20 10:08:57 +02:00
git-marijus
2d06e86b5b Merge pull request #879 from redmatrix/anaqreon-patch-1
Display different info message if using invite code
2017-10-20 10:04:03 +02:00
zotlabs
400441d56b register workflow was getting over-ridden in include/security 2017-10-19 18:48:11 -07:00
zotlabs
7d92e9026e typo 2017-10-19 18:48:01 -07:00
Andrew Manning
42416aad22 Display different info message if using invite code 2017-10-19 21:09:12 -04:00
zotlabs
9d51318c53 table structure for pseudo or proxy channels (pchan) 2017-10-19 17:24:11 -07:00
zotlabs
cdb1bc9be6 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-10-19 16:27:24 -07:00
Mario Vavti
52183f8bf8 changelog 2017-10-20 00:09:54 +02:00
Mario Vavti
00dc7c916d Merge branch '2.8RC' of https://github.com/redmatrix/hubzilla into 2.8RC 2017-10-19 12:08:48 +02:00
Mario Vavti
5fd6e36be7 strings 2017-10-19 12:08:33 +02:00
Mario Vavti
c2714262b3 strings 2017-10-19 12:07:42 +02:00
Mario Vavti
a58f386831 version 2017-10-19 11:50:52 +02:00
Mario
e61b44ddbb version 2017-10-19 11:49:55 +02:00
Mario Vavti
f3c374b6ff redirect to be moderated items to /moderate and change the conv link to partent mid in /modrate 2017-10-19 11:20:09 +02:00
Mario Vavti
21b2c0afa3 fix issue #837 - w2w posts not removed in contact_remove() 2017-10-19 10:21:47 +02:00
Mario Vavti
ca4c725d57 remove redundant js 2017-10-18 12:28:56 +02:00
Mario Vavti
fe1aa90304 streamline the notifications js and change notification icon to exclamation-triangle if we have personal notifications 2017-10-18 11:38:45 +02:00
zotlabs
656ec585b2 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-10-17 21:24:07 -07:00
Mario Vavti
64a49eb54a update notifications if a notification area remains open 2017-10-18 00:25:00 +02:00
zotlabs
b106b53d05 don't translate 'guest:' since it is part of a url 2017-10-16 23:01:00 -07:00
zotlabs
a791809a84 ensure guests hve a unique (non-existent) url so that network discovery on remote servers doesn't come up mis-attributing the token. Future work should probably provide an actual page at this location describing it as a guest account of 'xyz'. 2017-10-16 22:31:38 -07:00
zotlabs
71c3a0a197 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-10-16 18:20:42 -07:00
zotlabs
9497c6c0f7 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-10-16 18:20:17 -07:00
zotlabs
18279234fd mod_register - don't re-use the password, force them to type it in twice each time unless their browser saves passwords. 2017-10-16 15:55:41 -07:00
zotlabs
4dd05dc4e8 regression in zot site info after zot6 work 2017-10-16 15:23:17 -07:00
zotlabs
cf7481da53 regression in zot site info after zot6 work 2017-10-16 15:20:45 -07:00
Felix Wolfsteller
b8a9390f49 fix typos in comment 2017-10-16 21:33:14 +02:00
git-marijus
61c86212b9 Merge pull request #874 from fwolfst/comment_typo_fix
fix typos in comment
2017-10-16 21:30:57 +02:00
zotlabs
a33562144b documentation updates. I've been sitting on these for quite some time waiting for the current documentation work to complete; but if I leave this any longer I may forget the changes that I need to make. The last time there was a major documentation update all my intervening changes were lost, so hopefully I won't lose these and have to do them over again. 2017-10-15 17:39:14 -07:00
zotlabs
9b94ad2ffe was unable to make the modal login dialog work on the channel page with a cover photo. So for mod_channel, send login to the login page instead of the modal popup. 2017-10-14 01:17:47 -07:00
zotlabs
70b39e829b template not hidden 2017-10-13 13:06:54 -07:00
zotlabs
29a29f277e create an actual logout module instead of relying on internal variables 2017-10-12 22:10:42 -07:00
zotlabs
e5f1bcacc8 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-10-12 12:00:55 -07:00
zotlabs
ccbc532c1a Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-10-12 12:00:38 -07:00
zotlabs
e6c166a182 sort out the notification ids 2017-10-12 11:36:25 -07:00
Mario Vavti
26bd532bc5 remove redundant classes 2017-10-12 15:57:16 +02:00
Mario Vavti
c89b2ac3b7 missing login and register links 2017-10-12 15:54:01 +02:00
zotlabs
6acd96fd33 typo 2017-10-11 17:52:03 -07:00
zotlabs
a652e546cc add local_channel as a comanche condition variable 2017-10-11 15:19:06 -07:00
zotlabs
ee307729fc Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-10-11 15:14:18 -07:00
zotlabs
48d2b3afa8 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-10-11 15:13:57 -07:00
zotlabs
491856fa79 the template is needed for the old-style notifications 2017-10-11 15:12:49 -07:00
Mario Vavti
56a675f713 z-index issue and some icons. rename notifications-btn-1 to notifications-btn 2017-10-11 21:32:23 +02:00
Mario Vavti
05c8d4819d only show pubs notifications if discovery_tab != disabled 2017-10-11 14:26:18 +02:00
Mario Vavti
c8d5390512 move affinity slider lower on screens < 767px to not collide with the page menu button 2017-10-11 13:18:18 +02:00
Mario Vavti
f3cf708c85 remove region nav entry in network.pdl - it is not needed 2017-10-11 12:42:16 +02:00
Mario Vavti
24d1d752fe nav_set_selected() for apps and apporder. restrict apporder to local_channel() and whitespace 2017-10-11 11:58:09 +02:00
Mario Vavti
ba55400f14 bring nav pinned apps to navbar_default 2017-10-11 11:49:03 +02:00
zotlabs
0c5918f290 bring back some nav stuff (notifications) for alternate navbars; still some things missing as the notification dropdowns aren't fully functional. 2017-10-11 01:29:25 -07:00
Felix Wolfsteller
0216dc733d fix typos in comment 2017-10-11 09:13:59 +02:00
zotlabs
ff8ee6fb22 for federated forums we need to keep track of what protocols are available to red/hubzilla channels to determine which posts need to be mangled for transport to individual networks - based on what networks the author can communicate with. We probably need this for all xchans and hublocs but at some point it becomes increasingly difficult to scrape this information and map out a compatibility matrix. It's also doubtful anybody will use this system because we basically have to forge comments between network sites involving different protocols and this is going to look like crap to anybody that isn't on red/Hubzilla. Eventually they have to fix their protocols for this to work correctly, but nobody seems to believe me that their networks are basically anti-federation, so we need something like this to highlight their walled garden specifications and the resulting federation problems in a form they can't really argue with. 2017-10-10 22:02:22 -07:00
zotlabs
1a7ccc462b on failed auth due to unverified email, tell the person why and remind them to check their email. 2017-10-10 19:45:11 -07:00
zotlabs
769da564e2 re-order the navbar preferences - 1. profile_uid, 2. local_channel, 3, site, 4 'default' 2017-10-10 19:22:24 -07:00
zotlabs
09b4660c7d rename view/tpl/nav.tpl to navbar_default.tpl so that all navbar selection code is consistent 2017-10-10 18:50:01 -07:00
zotlabs
69394c1680 re-implement single delivery 2017-10-10 18:40:02 -07:00
zotlabs
4203d43c58 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-10-10 16:06:09 -07:00
zotlabs
f273815d8f Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-10-10 16:05:56 -07:00
zotlabs
6a2c5e0731 pdledit usability improvements 2017-10-10 16:05:10 -07:00
Mario Vavti
07ae431950 css fixes 2017-10-10 20:02:42 +02:00
Mario Vavti
0c4a1fb9be version 2017-10-10 19:28:11 +02:00
Mario Vavti
e6f1fb3d95 remove notifications code from nav and go live with new notifications 2017-10-10 16:51:35 +02:00
Mario Vavti
030d703a05 remove left_align mode 2017-10-10 16:03:59 +02:00
Mario Vavti
edc262f5af Merge remote-tracking branch 'mike/master' into dev 2017-10-10 12:09:32 +02:00
Mario Vavti
41cf846ee3 new notification fixes 2017-10-10 12:08:51 +02:00
zotlabs
335536bbbf more custom navbar work 2017-10-09 20:19:03 -07:00
zotlabs
89aa9a80c4 typo 2017-10-09 15:51:30 -07:00
zotlabs
d636ff586d Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-10-09 15:15:02 -07:00
zotlabs
8797049144 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-10-09 15:14:44 -07:00
zotlabs
623dfa1384 purify user-supplied filenames in some cases. Probably not needed but it's the right thing to do. 2017-10-09 15:13:25 -07:00
Mario Vavti
cc1ffff7cd feed untranslated appnames to nav_set_selected() and query for the active app directly to get app details 2017-10-09 21:22:57 +02:00
Mario Vavti
5698462588 Merge remote-tracking branch 'mike/master' into dev 2017-10-09 17:49:55 +02:00
Mario Vavti
f99c007187 new notification changes - use sticky_kit instead of position fixed 2017-10-09 17:49:15 +02:00
Mario Vavti
54a0690323 more new notifications fixes 2017-10-09 13:35:58 +02:00
zotlabs
23812e5b48 ability to pin apps to the navbar when using named navbars 2017-10-08 19:43:03 -07:00
zotlabs
c37908f344 check write_storage permission in /display 2017-10-08 17:22:38 -07:00
zotlabs
4011dd18f0 alternate navbar layouts 2017-10-08 16:48:24 -07:00
zotlabs
52b1ea10a1 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-10-08 15:10:44 -07:00
zotlabs
09009d4b32 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-10-08 15:10:28 -07:00
Mario Vavti
ec173e7eb2 more fixes 2017-10-08 22:47:43 +02:00
Mario Vavti
bcf4cb519a new notification fixes 2017-10-08 22:21:19 +02:00
zotlabs
27bc8294ae Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-10-08 12:43:50 -07:00
zotlabs
5cc6c6c1e9 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-10-08 12:42:54 -07:00
Mario Vavti
991db280be experimental new notifications - needs pconfig experimental_notif set to 1 for your channel to work. 2017-10-08 17:19:29 +02:00
zotlabs
6f709a6f57 navbar controls now functionally hidden with too low z-index when cover_photo is showing and navbar doesn't have class fixed-top 2017-10-07 23:44:27 -07:00
Mario Vavti
71c206fdb9 pubstream single view fixes 2017-10-07 16:40:43 +02:00
Mario Vavti
4c0e8a61ae provide single post view for pubstream and rewrite llink to point to /pubstream/?f=&mid=some_mid instead of /display/some_mid for pubs notifications 2017-10-07 15:40:34 +02:00
Mario Vavti
dc2c6d00fe fix filestorage spinner 2017-10-07 12:34:43 +02:00
Mario Vavti
e7c8012794 no need to move $modrated check up 2017-10-06 22:25:53 +02:00
Mario Vavti
9bd30eb8bf to find out if a comment is to be moderated we need to look at the actual comment not at its parent 2017-10-06 21:32:06 +02:00
Mario Vavti
b883b9c983 enable anonymous comments also in /display 2017-10-06 21:30:44 +02:00
Mario Vavti
5468ebbb43 Revert "mod display: if we have a local channel we should still be allowed to see sys channel items"
This reverts commit 27f8320353.
2017-10-06 21:05:37 +02:00
Mario Vavti
27f8320353 mod display: if we have a local channel we should still be allowed to see sys channel items 2017-10-06 16:51:39 +02:00
Mario Vavti
e15307747f it is not your public stream -> just public stream 2017-10-06 16:48:25 +02:00
Mario Vavti
f427b4a325 introduce public stream notifications 2017-10-06 16:46:27 +02:00
zotlabs
a6835f4e71 changes to encryption encapsulation for zot6 (backward compatible) 2017-10-05 23:01:42 -07:00
zotlabs
052ed1f88b typo 2017-10-05 22:01:45 -07:00
zotlabs
34a0ec4089 Add JSalmon signing library for Zot6. See https://macgirvin.com/wiki/mike/Zot%2BVI/Encryption/Signatures 2017-10-05 20:09:21 -07:00
zotlabs
2ed77b5986 add admin app - the site admin link probably does not belong in the 'usermenu' and this is a first step to straigtening out that historical mistake. 2017-10-05 19:51:00 -07:00
zotlabs
d70e6f273b Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-10-05 19:24:16 -07:00
zotlabs
d2e22d8c2f Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-10-05 19:24:03 -07:00
zotlabs
7c501ef60f update some old spinners which were causing js issues 2017-10-05 19:20:39 -07:00
zotlabs
a0eb628526 Experimental alternate channel_menu navigation. To use, "util/config system.channel_menu 1" 2017-10-05 16:59:33 -07:00
Mario Vavti
0ddc3e4af2 fix wrong logic for enable/disable pubstream notifications 2017-10-05 21:42:25 +02:00
Mario Vavti
5be9477f21 Merge remote-tracking branch 'mike/master' into dev 2017-10-05 11:25:39 +02:00
zotlabs
4ab21edba8 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-10-04 19:37:50 -07:00
zotlabs
2862baeee1 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-10-04 19:37:35 -07:00
zotlabs
15b9a67c01 redirect loop with rmagic and owa 2017-10-04 18:51:37 -07:00
zotlabs
80ca99fe5b wiki double encoding html entities 2017-10-04 16:37:14 -07:00
Mario Vavti
6f88d5e92b introduce shared files notifications 2017-10-04 22:11:18 +02:00
Mario Vavti
295ed07d40 bring back notifications for account approvals 2017-10-04 13:37:17 +02:00
zotlabs
d6b1eff70e ensure we have an observer hash 2017-10-03 17:05:32 -07:00
zotlabs
7fb02752de hubzilla issue #868 2017-10-03 17:03:24 -07:00
zotlabs
d88d4b3c3a wrong param 2017-10-03 15:43:51 -07:00
zotlabs
58155864cb urlencode hashes from mod_acl 2017-10-03 15:36:56 -07:00
zotlabs
9cf9217686 don't use chanlink_url() for feed mentions 2017-10-03 15:27:26 -07:00
Mario Vavti
fa93114804 some basic work on mod common 2017-10-03 11:37:45 +02:00
Mario Vavti
66511d8f07 move common connections widget to left aside 2017-10-03 10:53:08 +02:00
Mario Vavti
f52e5d90b0 Merge remote-tracking branch 'mike/master' into dev 2017-10-03 09:40:51 +02:00
zotlabs
f571b753b6 import: special handling required for channel photo in the xchan record when not seizing 'primary' 2017-10-02 20:27:04 -07:00
zotlabs
40e747ecde remove server role selection details from install documentation, no longer needed 2017-10-02 18:46:24 -07:00
zotlabs
9e24b28376 Hubzilla issue #866 allow navbar to be used when cover photo is displayed - also scroll cover photo on keyup event. 2017-10-02 17:57:46 -07:00
zotlabs
5abdee73ee Clone sync deletions to comments (which belong to you) on wall posts (which do not). 2017-10-02 16:26:33 -07:00
Mario Vavti
2feb6795b0 fix community tags not preserved on post edit. issue #865 2017-10-02 12:56:15 +02:00
Mario Vavti
c200808fbb fix community tags not preserved on post edit. issue #865 2017-10-02 12:54:25 +02:00
Mario Vavti
1f8b705a6a whitespace 2017-10-02 12:16:53 +02:00
Mario Vavti
a3c2ef4084 wiki: show save button and commit input field in all tabs if there is unsaved content. fix #853 2017-10-02 12:11:52 +02:00
zotlabs
9dcbef4cb1 profile photo propagation issue if the local xchan_photo_[l|m|s] fields were changed from the /photo/profile/l/n form to photo/[hash] form by a clone operation. 2017-10-01 18:22:55 -07:00
zotlabs
8bd4e004ff Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-10-01 17:05:20 -07:00
zotlabs
47b2959486 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-10-01 17:04:47 -07:00
git-marijus
f70d27b793 Merge pull request #863 from mjfriaza/dev
Fixed some errors in the Spanish translation
2017-10-01 22:49:41 +02:00
Mario Vavti
7c845aafa2 card_edit: fix lockstate and current permissions not handed over to editor 2017-10-01 22:46:35 +02:00
Manuel Jiménez Friaza
16b57a2b28 Fixed the Spanish translation 2017-10-01 13:12:09 +02:00
Mario Vavti
89457c8390 fix profile edit dropdown for multiple profiles 2017-10-01 10:24:33 +02:00
zotlabs
ea4d1b5101 use imagick converter for large photos 2017-09-30 15:17:47 -07:00
Andrew Manning
dd38fad9ee Update administrator_guide.md 2017-09-30 09:44:40 -04:00
zotlabs
c61853ff0b Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-09-28 14:24:41 -07:00
Mario Vavti
bdecb61bfa remove double remote login button and slightly change appearence 2017-09-28 11:31:36 +02:00
git-marijus
c9231785ab Merge pull request #860 from waitman/patch-2
add remote login to login form
2017-09-28 11:02:23 +02:00
git-marijus
f79d5ec18e Merge pull request #861 from waitman/patch-3
add remote login to login.tpl
2017-09-28 11:01:46 +02:00
git-marijus
98e0534984 Merge pull request #862 from waitman/patch-4
prevent 'my_address' being set with bogus info
2017-09-28 11:01:01 +02:00
zotlabs
617f2863c4 process activity deletes from OStatus which for whatever reason do not use the industry standard tombstone mechanism 2017-09-27 21:13:53 -07:00
zotlabs
0f36916fb4 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-09-27 20:43:47 -07:00
Mario Vavti
1fd2b6f5b6 re-arrange some html 2017-09-27 16:06:15 +02:00
Mario Vavti
7d386c2777 make justifiedGallery even more happy 2017-09-27 16:04:21 +02:00
Mario Vavti
fb60eeaa9a make justifiedGallery happy again 2017-09-27 15:48:13 +02:00
Mario Vavti
9625d940a5 do not use our spinner css on the justifiedGallery spinner which has the same classname hardcoded 2017-09-27 13:21:27 +02:00
Mario Vavti
b8a0bc0b0b fix some missing spinners 2017-09-27 12:06:06 +02:00
Mario Vavti
cee41bb1e5 Merge remote-tracking branch 'mike/master' into dev 2017-09-26 19:55:18 +02:00
Mario Vavti
4a270d10d1 bump version 2017-09-26 13:50:29 +02:00
Mario Vavti
ea5262a0df get rid of spinner.js in use a lightweight css spinner instead 2017-09-26 13:02:11 +02:00
zotlabs
86e888e5eb whitespace 2017-09-25 23:39:48 -07:00
zotlabs
9d7a88b40d move the Link header initialisation from Router (where it does not really belong) to Webserver, where we do similar module specific initialisations prior to calling Router->Dispatch() 2017-09-25 23:14:02 -07:00
zotlabs
be8061b64b typo 2017-09-25 20:12:43 -07:00
zotlabs
d91a82430a more zot6 basic stuff 2017-09-25 20:11:21 -07:00
zotlabs
b9664f6980 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-09-25 19:34:56 -07:00
zotlabs
66334374af zot_site_info - always sign the site block with the site private key 2017-09-25 17:30:33 -07:00
zotlabs
741af8c164 extend activity_match to work with arrays 2017-09-24 22:41:14 -07:00
zotlabs
137f5b3dbc doc page for the new channel_links hook 2017-09-24 21:26:12 -07:00
zotlabs
e1cd51d8d9 update the trusted CA cert database 2017-09-24 21:24:52 -07:00
zotlabs
237aca32e3 missing Zlib file 2017-09-24 21:21:49 -07:00
zotlabs
906a810735 server/hub config storage for zot6 2017-09-24 21:20:50 -07:00
zotlabs
808605cd65 ostatus - support likes of comments 2017-09-24 21:09:21 -07:00
zotlabs
06a674775e handle jsonld parse errors and send them to the app log instead of the php log. 2017-09-24 20:18:36 -07:00
zotlabs
b195407028 Merge branch 'tagging' 2017-09-24 19:50:55 -07:00
zotlabs
1650d79862 tagging changes - provides ability to mention a forum by using !forumname as well as the traditional red style (@forumname+). This should probably not be advertised on a wide scale until after a critical mass of sites have updated to a version containing these changes. This adds yet another option type to the ACL module which probably needs refactoring soon since it is turning into option type spaghetti. 2017-09-24 19:45:19 -07:00
zotlabs
e8a888caab typo 2017-09-24 17:09:25 -07:00
zotlabs
3648f9952c typo 2017-09-24 17:08:38 -07:00
zotlabs
8b7ab90836 Merge branch 'master' into tagging 2017-09-24 16:59:56 -07:00
zotlabs
866dc9a9b3 For zot6, allow HTTP Signatures to be encrypted, as they may contain sensitive (envelope, metadata) information. 2017-09-24 16:46:52 -07:00
zotlabs
0e76cec28f Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-09-24 00:28:31 -07:00
Mario Vavti
2988e33b57 fix missing content on channel page 2017-09-23 23:16:11 +02:00
zotlabs
aef239f421 delivery report decryption is not needed for local delivery 2017-09-21 23:51:04 -07:00
zotlabs
3456c192fe encrypt delivery reports. This will cause a bit of consternation because this is not backward compatible and older sites will see some incorrect delivery reports from newer sites until the next upgrade; as their systems will not know how to read the ecnrypted final reports. 2017-09-21 23:37:13 -07:00
zotlabs
ae5a1362a7 no visible feedback when moving the affinity slider and waiting for content to load, the appropriate spinner div seems to have gone missing at some time in the past 2017-09-21 22:19:21 -07:00
zotlabs
fefc2290a1 pubsites broken and directory server admin selection includes known dead sites 2017-09-21 21:32:59 -07:00
zotlabs
6bd35ef740 log the lack of http sig info 2017-09-21 18:29:41 -07:00
zotlabs
b772a5f564 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-09-21 17:44:59 -07:00
Mario Vavti
234e9476fb Merge remote-tracking branch 'mike/master' into dev 2017-09-21 23:13:43 +02:00
Mario Vavti
a7d339be5a nav_set_selected() and minor whitespace for mod pubstream 2017-09-21 23:11:15 +02:00
zotlabs
b745a143c3 go back to the un-versioned jsonld context 2017-09-21 13:29:48 -07:00
zotlabs
6e9e267b27 provide a space between link header params 2017-09-20 23:57:44 -07:00
zotlabs
2e9336beb5 change back to the ugly content-type 2017-09-20 23:42:57 -07:00
zotlabs
5951fa56ae Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-09-20 22:29:11 -07:00
zotlabs
4372e1fcda Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-09-20 22:28:52 -07:00
zotlabs
24a9c3ba79 add more signature logging 2017-09-20 21:20:00 -07:00
zotlabs
c4261b9c4b we need this in the plugin, not in core 2017-09-20 19:34:43 -07:00
zotlabs
7b060dff68 add HTTP link header to channel page, making it pluggable 2017-09-20 19:12:23 -07:00
zotlabs
90f759412b fix namespace parsing issue 2017-09-20 16:26:33 -07:00
Mario Vavti
15691d3ced wiki css fixes 2017-09-20 15:03:57 +02:00
Mario Vavti
6f2dd5d325 wiki: translateable strings and move page mimetype selector to options submenu 2017-09-20 11:08:01 +02:00
zotlabs
9e46472ca2 provide default photo mimetype 2017-09-20 00:00:26 -07:00
zotlabs
61d9b34929 use mimetype text description rather than technical name in dropdown choices, found bug in mimetype selection option code 2017-09-19 23:30:52 -07:00
zotlabs
00fe4e747f use frozen jsonld contexts 2017-09-19 21:40:38 -07:00
zotlabs
b0cdec0c35 perform caching of jsonld schemas 2017-09-19 19:15:15 -07:00
zotlabs
373af6d4f4 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-09-19 17:41:13 -07:00
zotlabs
4ae503bef7 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-09-19 17:40:52 -07:00
zotlabs
72a19a14af turn common friends into a widget 2017-09-19 17:35:57 -07:00
Mario Vavti
a7d0c45606 Revert "remove some redundant references to sticky_kit"
This reverts commit dbc0cc8c92.
2017-09-19 23:17:17 +02:00
Mario Vavti
dbc0cc8c92 remove some redundant references to sticky_kit 2017-09-19 23:13:18 +02:00
Mario
a1be6f11ed version 2017-09-19 22:43:52 +02:00
Mario
143e389695 jquery-3.2.1 2017-09-19 22:43:17 +02:00
Mario
962a3f7945 fix some issues with sticky-kit 2017-09-19 22:40:05 +02:00
zotlabs
bced63e823 call the follow_accept hook when desired 2017-09-19 13:25:34 -07:00
zotlabs
51e40add66 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-09-19 13:09:19 -07:00
Mario
4500faf463 fix various wikipage widget issues (sort pages by name, respect locked mime type setting, move create tool back to the bottom) 2017-09-19 18:59:06 +02:00
Mario Vavti
66fb0fdcd7 fix permission_{accept, reject} hooks not being called 2017-09-19 11:12:52 +02:00
Mario Vavti
105e7626fc Merge remote-tracking branch 'mike/master' into dev 2017-09-19 10:26:06 +02:00
zotlabs
c6bcea0f82 pubcrawl: make a good faith effort to handle multi-media content 2017-09-18 21:55:45 -07:00
zotlabs
4fbebe7b2d create new hooks for permissions_accept and permissions_reject 2017-09-18 20:38:09 -07:00
zotlabs
e812836a60 provide rel=alternate link if no reshare content in post 2017-09-18 17:46:34 -07:00
Mario
d11d36040d version bump 2017-09-18 16:39:43 +02:00
Mario
c3b3f41a21 changelog 2017-09-18 16:38:56 +02:00
Mario
46daaa11fd changelog 2017-09-18 16:37:55 +02:00
Mario Vavti
cca2b1621f use the hubzilla icons 2017-09-18 16:33:22 +02:00
Mario Vavti
807776cb15 anonymous comments are not implemented for photos. 2017-09-18 16:21:01 +02:00
Mario Vavti
9914e171b1 anonymous comments are not implemented for photos. 2017-09-18 16:15:42 +02:00
Waitman Gobble
b3c805d7d0 prevent 'my_address' being set with bogus info
After a user has authenticated, it is possible to set my_address in $_SESSION to 'anything' using zid= parameter in URL - if user is authenticated then zid is never set. This change kills the authenticated switch if a person sends a new zid through for processing, which will trigger remote authentication.
2017-09-18 06:02:14 -05:00
Waitman Gobble
d31c91c9d3 add remote login to login.tpl
Add Remote login option to login.tpl, this exists in nav login.
2017-09-18 05:57:18 -05:00
Waitman Gobble
bf252d2388 add remote login to login form
This exists in nav login but not login.tpl
2017-09-18 05:54:38 -05:00
zotlabs
5c379b4d35 acl issue with some ActivityPub completions 2017-09-17 23:55:18 -07:00
zotlabs
4d3b0577c9 acl issue with some ActivityPub completions 2017-09-17 23:54:40 -07:00
zotlabs
d37e6b9271 more tag stuff 2017-09-17 23:54:29 -07:00
zotlabs
654139933f tagging changes 2017-09-17 23:28:58 -07:00
zotlabs
1d9e0f17a6 more mastodon testing 2017-09-17 18:40:32 -07:00
zotlabs
9120a82ab4 wiki: update acl on child pages when wiki perms change 2017-09-16 16:52:25 -07:00
zotlabs
ca24bfdc46 wiki sync - we weren't getting the child pages 2017-09-16 16:42:01 -07:00
zotlabs
aaa83ae5d2 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-09-16 16:32:26 -07:00
zotlabs
8123a62302 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-09-16 16:32:11 -07:00
zotlabs
e84281b620 wiki download: only include the latest page revision 2017-09-16 15:48:48 -07:00
Andrew Manning
6239a27288 Moved add wiki page form to top of page list to address issue https://github.com/redmatrix/hubzilla/issues/719 2017-09-16 14:27:40 -04:00
Andrew Manning
0b272264ea Page title is what we need in order to delete pages, not the url 2017-09-16 14:00:55 -04:00
Mario Vavti
d5ffa5508d db update to add index to item.resource_id we query this in wikis a lot 2017-09-16 10:11:59 +02:00
zotlabs
991db80646 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-09-16 01:06:44 -07:00
Mario Vavti
cb3fb0049f do not show edit pencil if not allowed to edit 2017-09-16 09:55:29 +02:00
Mario
eef1fcbb07 set update_title to false 2017-09-15 22:28:27 +02:00
Mario
186dd9dee0 version 2017-09-15 22:21:40 +02:00
Mario
373651c3db implement wiki editing 2017-09-15 22:17:18 +02:00
git-marijus
663802e699 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-09-15 16:30:14 +02:00
git-marijus
4c5722c766 some work on wiki acl 2017-09-15 16:27:30 +02:00
zotlabs
6734854776 typocheck 2017-09-14 18:50:43 -07:00
zotlabs
1c0ece8411 provide a hook for importing a channel photo at channel creation time 2017-09-14 18:48:55 -07:00
zotlabs
cf120b2351 wiki: lock mimetype 2017-09-14 17:14:50 -07:00
zotlabs
6481722fd9 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-09-14 15:02:36 -07:00
zotlabs
b1876ac14f Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-09-14 15:02:18 -07:00
zotlabs
d7ec6865b4 bring back wiki download 2017-09-14 04:06:09 -07:00
Mario Vavti
46b6415f5f wiki: do not suggest bbcode if mimetype is text/plain 2017-09-14 10:44:16 +02:00
Mario Vavti
5aa0fe2bf0 use the hubzilla icons 2017-09-14 10:33:16 +02:00
Sergey Lukin
f43f38c054 hubzilla issue #858: Fix: Shortcut icon is not dysplayed when Admin or Channel Manager panels are opened 2017-09-14 10:01:39 +02:00
git-marijus
235ba81f25 Merge pull request #859 from subrealist/short_icon_admin_fix
#858: Fix: Shortcut icon isn't dysplayed when 'Admin' or 'Channel Manager' panel are opened
2017-09-14 10:00:47 +02:00
zotlabs
55aaabc2f1 add text/plain type to wiki 2017-09-13 22:37:18 -07:00
zotlabs
5be132f877 make wiki page mimetype default to wiki mimetype (this was the original intent but the wrong variable was used) 2017-09-13 21:36:59 -07:00
zotlabs
b5966041be more zot6 2017-09-13 20:40:01 -07:00
zotlabs
62d6bada4c Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-09-13 19:26:33 -07:00
zotlabs
e8e61c83d5 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-09-13 19:26:07 -07:00
zotlabs
13788af908 Zot6: some things that need to be done ahead of time so we can turbocharge the delivery engine and split off site records from channel records. 2017-09-13 19:20:16 -07:00
Sergey Lukin
d5bd5cda97 hubzilla issue #858: Fix: Shortcut icon is not dysplayed when Admin or Channel Manager panels are opened 2017-09-14 07:19:56 +10:00
Mario Vavti
29b0ed87d6 Merge remote-tracking branch 'mike/master' into dev 2017-09-13 10:30:08 +02:00
zotlabs
0e6d84e207 add option to mimetype selector so you can change the element name in case you end up with two of these suckers on the same page 2017-09-12 23:25:19 -07:00
zotlabs
796228b7ad wiki mimetype selection. We can add text/plain as soon as we add code to purify and render it specifically. 2017-09-12 23:15:30 -07:00
zotlabs
7489a4442e wiki mimetype 2017-09-12 22:35:30 -07:00
zotlabs
5e99295bf6 wiki mimetype selection 2017-09-12 22:32:31 -07:00
zotlabs
4ff89a5862 drop salmon until we improve performance 2017-09-12 20:24:57 -07:00
Mario Vavti
87ca60b0b1 rename activity notifications links - one more 2017-09-12 21:38:36 +02:00
Mario Vavti
525d554a35 rename activity notifications links 2017-09-12 21:34:14 +02:00
Sergey Lukin
4c121aff30 hubzilla issue #855: fix for some problems with displaying selected theme after panel Settings->Display loading 2017-09-12 21:28:40 +02:00
git-marijus
d77872de50 Merge pull request #856 from subrealist/displaying_selected_theme
hubzilla issue #855: fix for some problems with displaying selected theme
2017-09-12 21:17:59 +02:00
Sergey Lukin
91ed3b357d hubzilla issue #855: fix for some problems with displaying selected theme after panel Settings->Display loading 2017-09-13 04:00:59 +10:00
zotlabs
d4e53bb86f typo in ldsigs 2017-09-11 18:56:17 -07:00
zotlabs
471449f539 regex was still broken 2017-09-10 22:59:26 -07:00
zotlabs
187fc9a51b fix regex 2017-09-10 17:40:40 -07:00
zotlabs
abbf245d14 remove item_thread_top from simple_update query - we're already fetching distinct(parent) and this prevented comments from displaying after submission when remote-authed. 2017-09-10 16:10:56 -07:00
zotlabs
20ae69ab7b Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-09-10 15:56:37 -07:00
Mario Vavti
67024c023a Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-09-10 09:50:52 +02:00
Mario Vavti
2f76d63835 Merge remote-tracking branch 'mike/master' into dev 2017-09-10 09:30:59 +02:00
Andrew Manning
754329097f More content tab help removed in context help 2017-09-09 19:47:39 -04:00
Andrew Manning
c5950c0370 Update help.html 2017-09-09 19:45:42 -04:00
zotlabs
e2e7bee3cc owa cleanup 2017-09-09 13:34:57 -07:00
Mario Vavti
edada2b786 Merge remote-tracking branch 'mike/master' into dev 2017-09-09 20:22:45 +02:00
Andrew Manning
ccc9cc8202 Added context help for apps and appman in English 2017-09-09 08:23:30 -04:00
zotlabs
84c86f01c8 owa: missed the set-observer stuff 2017-09-08 16:00:27 -07:00
Mario Vavti
9b542c5bcf fix radius 2017-09-08 09:43:25 +02:00
Mario Vavti
108bb7649b Merge remote-tracking branch 'mike/master' into dev 2017-09-08 09:22:36 +02:00
zotlabs
1104e2652f improve the code block styling a wee bit 2017-09-07 21:29:32 -07:00
zotlabs
f2dc55244c provide root discovery for owa 2017-09-07 20:42:03 -07:00
zotlabs
048a8c5f44 provide owa discovery 2017-09-07 19:04:35 -07:00
zotlabs
1fbb1e6c2a initial testing success with owa 2017-09-07 18:52:18 -07:00
zotlabs
7e9162ef06 there's the problem 2017-09-07 18:19:49 -07:00
zotlabs
f09fe8da78 add logging 2017-09-07 18:14:04 -07:00
zotlabs
4d794103be testing owa 2017-09-07 18:09:31 -07:00
zotlabs
61f339a874 owa - first commit 2017-09-07 17:56:02 -07:00
Mario Vavti
7b3aa92b5a use $target_item[mid] to make item highlighting work with shortened mids 2017-09-07 23:35:36 +02:00
Mario Vavti
27e9b5618b use thread parent hash only for like and dislike activity. in all other cases use item hash. this will catch more situations. 2017-09-07 23:20:40 +02:00
Mario Vavti
4d1f5c1752 do not double encode already encoded mids 2017-09-07 23:12:58 +02:00
zotlabs
23e774db8e markdown code blocks not preserving line breaks, removed a bootstrap over-ride which fixes this, but also changed the style to pre-wrap to wrap the text rather than the default horizontal scroll 2017-09-07 13:19:13 -07:00
Mario Vavti
4190a40de8 typo 2017-09-07 11:35:24 +02:00
Mario Vavti
6143f49042 fix an issue where some encoded mids were not found in /display allthough they existed 2017-09-07 11:28:42 +02:00
Mario Vavti
607c414634 remove semicolon from update query - this is probably trivial 2017-09-07 10:14:34 +02:00
git-marijus
d65007b230 Merge pull request #852 from waitman/patch-1
fix bogus semicolon
2017-09-07 10:04:41 +02:00
zotlabs
41e0d5f664 use array_key_exists() instead of x() in this case as the latter fails on an array that's empty and we unconditionally need to encode the array even if empty 2017-09-06 20:07:53 -07:00
zotlabs
fa7a6203fb Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-09-06 19:59:33 -07:00
zotlabs
5877e28d72 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-09-06 19:59:07 -07:00
zotlabs
318643cf9a mastodon wraps oembed in an iframe - which we immediately purify our of existence and what we really want to purify is the content. So strip away the iframe, fetch the content and purify that instead. 2017-09-06 19:55:32 -07:00
zotlabs
ab9b82e778 ignore diaspora_meta column on item import. 2017-09-06 16:44:10 -07:00
Waitman Gobble
fee65f0c69 fix bogus semicolon
Line 655 should have comma instead of semicolon
2017-09-06 16:12:57 -05:00
Mario Vavti
643f515eaf cards: remove double generic-content-wrapper and section title 2017-09-06 15:55:34 +02:00
zotlabs
1305584d77 avoid a security patch and resultant compatibility issues; instead restrict the input characters we accept in token verification strings to hex digits. This will all be changing in the coming weeks/months anyway. 2017-09-06 13:38:33 +02:00
Mario Vavti
0a7364d494 make cards likeable 2017-09-06 11:42:16 +02:00
zotlabs
2cce599fd7 check code rights on cloud files 2017-09-05 21:38:07 -07:00
zotlabs
7dc99cb4a4 typo 2017-09-05 18:56:25 -07:00
zotlabs
45eb61bcf0 provide sharing of cards 2017-09-05 18:32:37 -07:00
zotlabs
80400d7191 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-09-05 17:35:56 -07:00
zotlabs
9ca7cc565b Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-09-05 17:35:44 -07:00
zotlabs
6147f819ce avoid a security patch and resultant compatibility issues; instead restrict the input characters we accept in token verification strings to hex digits. This will all be changing in the coming weeks/months anyway. 2017-09-05 17:12:31 -07:00
zotlabs
842a041a88 remove period from characters allowed in username, as this will mess up URL based content-type negotiation. It was previously disallowed but permitted a month or two ago after seeing Diaspora started allowing it. It's OK if they have it, but we can't; as many of our urls are based on username and theirs are primarily based on uid. 2017-09-05 16:38:55 -07:00
Mario Vavti
68a91ec3ea 32 characters are often not enough to distinguish gnu-social mids - use the entire mid. in /display if we are not dealing with posts (eg likes) provide the thr_parent mid as bParam_mid so we can still adress the right post in javascript 2017-09-05 23:18:02 +02:00
zotlabs
d58f965b9a some more prep work for Zot VI - some of this will need to be undone or at least re-arranged later but we need to bootstrap a test environment. 2017-09-04 22:35:54 -07:00
zotlabs
83d0e48ebe some preliminary work on Zot VI 2017-09-04 22:35:44 -07:00
zotlabs
ca58ef80ae Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-09-04 22:33:53 -07:00
zotlabs
0956dcadd3 some more prep work for Zot VI - some of this will need to be undone or at least re-arranged later but we need to bootstrap a test environment. 2017-09-04 22:30:55 -07:00
zotlabs
304c393f38 some preliminary work on Zot VI 2017-09-04 21:49:44 -07:00
zotlabs
05654e4980 card embed improved 2017-09-04 21:02:44 -07:00
Mario Vavti
c8000fca1f Default Access Control List (ACL) -> Default Privacy Group and minor template fix 2017-09-04 20:48:26 +02:00
Mario Vavti
48547f5f9e remove logging 2017-09-04 13:38:21 +02:00
Mario Vavti
b4f8136315 whitespace 2017-09-04 13:34:17 +02:00
Mario Vavti
06f1910ac0 fix the error reporting query in /display. we need item_deleted instead of item_flags and remove id = $item_hash from the query since we always provide the mid and never the id iirc 2017-09-04 13:28:49 +02:00
Mario Vavti
03b31932d1 remove hubzilla.nl from fallback directory servers 2017-09-04 10:15:00 +02:00
Mario Vavti
e4b0e31a28 remove hubzilla.nl from fallback directory servers 2017-09-04 10:14:27 +02:00
zotlabs
ba4f75ba19 also error if no security context 2017-09-03 23:58:52 -07:00
zotlabs
fc62f07a08 validate the security context 2017-09-03 23:50:18 -07:00
zotlabs
3d0a7f4fc5 paths in xchan_addr no longer means RSS specifically but could be activitypub 2017-09-03 22:09:16 -07:00
zotlabs
47ef41695a sign zot-info packets with httpsignatures 2017-09-03 19:56:13 -07:00
zotlabs
4adf2caaa6 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-09-03 17:17:20 -07:00
zotlabs
db82d303e2 only validate headers that aren't "spoofable", which will be somewhat implementation dependent. 2017-09-03 17:12:42 -07:00
Mario Vavti
0fac35686b Merge remote-tracking branch 'mike/master' into dev 2017-09-03 21:49:01 +02:00
Mario Vavti
5ae2d15dc0 this fixes an issue where in /channel/membername?mid=some_mid updates did not work when static updates were enabled. since in the current situation we always get a top-level-post mid, item_thread_top = 0 in the query will never return a result. change it to item_thread_top = 1 2017-09-03 21:41:47 +02:00
Mario Vavti
dc18440c18 introduce item_normal_update(). the differnce to item_normal() is that we do not query for item_deleted = 0 and therefor can find deleted likes which allows us to update our unlikes on the fly if static page update is enabled 2017-09-03 21:33:07 +02:00
zotlabs
499b7de0d2 Reviewed. This is OK.
Revert "may be exploitable in current form - awaiting review"

This reverts commit 7bff60edac.
2017-09-03 00:59:51 -07:00
Mario Vavti
1a0cf2666a Merge remote-tracking branch 'mike/master' into dev 2017-09-02 23:52:31 +02:00
zotlabs
7bff60edac may be exploitable in current form - awaiting review 2017-09-02 14:04:37 -07:00
Mario Vavti
e935473c5c add combined index for item.uid and item.item_unseen. this speeds up notifications by a magnitude. 2017-09-01 21:27:59 +02:00
Mario Vavti
3af3b36db3 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-09-01 10:41:07 +02:00
git-marijus
9333503600 Merge pull request #850 from anaqreon/doco
Fix the multiple table of content bug
2017-09-01 10:40:24 +02:00
Mario Vavti
7a42aed1f6 Merge remote-tracking branch 'mike/master' into dev 2017-09-01 10:37:59 +02:00
zotlabs
5bffae6219 cut down on a few extraneous gprobe processes 2017-08-31 23:21:06 -07:00
zotlabs
ae8cdc3b42 some changes after testing server-to-server magic auth 2017-08-31 21:38:03 -07:00
zotlabs
b413beeb36 add server-to-server magic auth to dav and cdav controllers 2017-08-31 20:45:13 -07:00
zotlabs
0cf5536e90 server to server magic auth 2017-08-31 20:08:58 -07:00
zotlabs
5e767144c9 simplify api_auth 2017-08-31 19:09:07 -07:00
zotlabs
6d87311394 now letsencrypt is creating a .htaccess file with re-write rules which kills most of our .well-known routes 2017-08-31 17:47:32 -07:00
git-marijus
0ee2378cec bump version 2017-08-31 10:23:09 +02:00
git-marijus
28d6b9ce16 changelog 2017-08-31 10:22:20 +02:00
git-marijus
f3c0db0f39 changelog 2017-08-31 10:22:05 +02:00
zotlabs
3a52af6327 hubzilla issue #851 2017-08-31 10:15:23 +02:00
zotlabs
aec92e0e17 whitespace 2017-08-30 23:16:57 -07:00
zotlabs
c364bff0c1 missing include 2017-08-30 21:57:56 -07:00
zotlabs
74f55d1504 check input is hex before sending it to hex2bin 2017-08-30 21:45:54 -07:00
zotlabs
f436ec6f21 some issues with mod_display on very first anonymous page visit (prior to any browser cookies being set) 2017-08-30 18:55:56 -07:00
zotlabs
be097bf415 issue with mentions and xchans with @ or / 2017-08-30 16:24:26 -07:00
zotlabs
f1b014b7eb hubzilla issue #851 2017-08-29 23:58:17 -07:00
zotlabs
ad637b5b50 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-08-29 23:38:23 -07:00
zotlabs
5abc9ef10b bring back nomadic locations 2017-08-29 22:08:37 -07:00
zotlabs
d47df8663f add a nonce 2017-08-29 20:57:30 -07:00
zotlabs
77267e049a use iso 8601 "Zulu" for log timestamps so it can be easily processed with fail2ban 2017-08-29 20:47:49 -07:00
zotlabs
e2b6464f83 escape 'http' inside code blocks so it doesn't trigger an oembed 2017-08-29 20:07:26 -07:00
zotlabs
973f15438a fix category links in card bodies 2017-08-29 19:38:07 -07:00
zotlabs
1f42d23332 add reliable signatures 2017-08-29 18:46:00 -07:00
zotlabs
b80f0b8960 add editor autocompleters on cards page 2017-08-28 20:11:08 -07:00
zotlabs
06be21af05 use top level for verification 2017-08-28 19:12:35 -07:00
zotlabs
ab5e7ad7a2 provide support for json-ld signatures (https://w3c-dvcg.github.io/ld-signatures/) 2017-08-28 19:06:01 -07:00
Mario Vavti
0d3c378e10 remove obsolete class 2017-08-28 23:56:18 +02:00
git-marijus
471031390c version 2017-08-28 23:45:41 +02:00
git-marijus
8517e7e798 Merge remote-tracking branch 'mike/master' into dev 2017-08-28 23:45:03 +02:00
git-marijus
e70bf97508 rewrite comment form handling 2017-08-28 23:42:17 +02:00
zotlabs
6385d11b54 AS2: recipient collection 2017-08-27 21:46:10 -07:00
zotlabs
d0d0a2df3a fix issue with comment box re-opening after submit; however I should note that bind and unbind are deprecated in jquery > 1.3 and these calls probably need to be upgraded. 2017-08-27 19:02:50 -07:00
zotlabs
99ca2a7cc6 fix card category widget links when a specific card is opened 2017-08-27 18:28:44 -07:00
Andrew Manning
acacea5efe Merge remote-tracking branch 'upstream/dev' into doco 2017-08-27 23:47:14 +00:00
zotlabs
187f19b170 fix titles on ajaxupdate issue, add jsonld-php library 2017-08-26 17:21:33 -07:00
Andrew Manning
49b38bd71b Merge remote-tracking branch 'upstream/dev' into doco 2017-08-25 11:32:28 +00:00
Andrew Manning
75f3e9202e Removed duplicated table of contents (TOC) in Help pages by breaking hierarchical TOC loading. 2017-08-25 11:32:18 +00:00
zotlabs
0098dce597 radically reduce code duplication in updateConvItems(); it's a bit easier to understand now although the different modes aren't as cleanly separated as they were. 2017-08-25 00:00:51 -07:00
zotlabs
cff5e360fd Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-08-24 18:50:04 -07:00
zotlabs
45c033b9aa fix title of edit card which showed up as 'edit block' due to copy/paste 2017-08-24 18:39:50 -07:00
zotlabs
5c92337821 cards - change placeholdertext, separate from button text 2017-08-24 18:34:12 -07:00
zotlabs
341386a95b make cards searchable 2017-08-24 18:15:19 -07:00
zotlabs
bd84a3ee08 fix permalinks for card comments (send to parent url) 2017-08-24 16:58:39 -07:00
git-marijus
383b7928cf minor adjustmen to the help language selector 2017-08-24 22:32:28 +02:00
git-marijus
9cb856d5fd Merge pull request #849 from anaqreon/doco
Added language selector menu for Help pages
2017-08-24 21:58:44 +02:00
git-marijus
2d5768b71c ditch discover tab in favour of the public stream app 2017-08-24 21:47:01 +02:00
Andrew Manning
90ec3340e4 Merge remote-tracking branch 'upstream/dev' into doco 2017-08-24 18:57:52 +00:00
Andrew Manning
cf2609530f Added language selector menu for Help pages 2017-08-24 18:57:41 +00:00
Mario Vavti
cdccf60132 Merge remote-tracking branch 'mike/master' into dev 2017-08-24 20:18:18 +02:00
git-marijus
df2725a360 Merge pull request #848 from anaqreon/doco
Repaired and extended support for help page translations including ta…
2017-08-24 20:13:11 +02:00
Andrew Manning
592cf893c0 Fixed incorrect language path when choosing the language from browser preference 2017-08-24 11:19:11 +00:00
zotlabs
85f24c292f last remaining task in tasklist was not removed from view when 'completed' 2017-08-23 23:59:05 -07:00
zotlabs
1c4629f5e1 add tasklist and notes to cards page 2017-08-23 23:37:45 -07:00
zotlabs
af8ed605f8 add a section to the admin guide about admin rights and how to grant them if the first account on the system used a different email address than the desired administrator email. 2017-08-23 22:40:52 -07:00
zotlabs
186f85483f cards: make likes reload page 2017-08-23 22:17:15 -07:00
zotlabs
e157e3bec8 cards: make page load after comment post 2017-08-23 22:06:42 -07:00
zotlabs
4450170790 partial support (unfinished) for ajax loading cards with liveupdate; page still functions even though this isn't finished 2017-08-23 21:26:09 -07:00
zotlabs
66b032823b oembed provider cleanup, add oembed to cards 2017-08-23 20:47:08 -07:00
zotlabs
c9745a4129 apply autotime to all autotime classed elements when static loading a page 2017-08-23 20:19:52 -07:00
zotlabs
bf7b0b11ef add autotime to cards 2017-08-23 20:16:08 -07:00
zotlabs
e778815605 use two keys for the updated sort 2017-08-23 20:12:40 -07:00
zotlabs
f2e802229a add new conv_sort option 2017-08-23 20:02:28 -07:00
zotlabs
64cf36a2b5 lognoise: don't log sync packet contents if there are no clones to receive them 2017-08-23 19:25:42 -07:00
zotlabs
8873fbfee9 fix permalink for cards 2017-08-23 19:18:44 -07:00
zotlabs
89df4551aa cards: acl support 2017-08-23 18:20:12 -07:00
zotlabs
ecfc7b8f4c add category support to main page 2017-08-23 18:15:31 -07:00
zotlabs
3b68df1be6 several card enhancements 2017-08-23 17:46:20 -07:00
zotlabs
9518dc0e4e typo 2017-08-23 02:03:39 -07:00
zotlabs
e084b776ee cards feature 2017-08-23 00:01:02 -07:00
Andrew Manning
6c38857502 Repaired and extended support for help page translations including table of contents files at the top level. Moved help module javascript to mod_help.js. 2017-08-23 03:33:03 +00:00
zotlabs
41ff8fdd37 test recursive dav copy 2017-08-22 20:32:02 -07:00
zotlabs
182f94a9ac allow cards to federate 2017-08-22 19:41:16 -07:00
zotlabs
92077725c3 add support for card doctype and activity_obj type 2017-08-22 19:13:25 -07:00
zotlabs
9f37dbc6dc util/dcp - support recursion and folders full of photos by importing files singly in separate processes - not yet tested 2017-08-22 18:29:51 -07:00
zotlabs
33528c616a remove debugging 2017-08-21 18:52:22 -07:00
zotlabs
894f0156af more work on oembed from /display 2017-08-21 15:00:45 -07:00
zotlabs
9d5b6858ea stream_perms_xchans wasn't working which has effects in mod_display and there are also issues with the oembed provider for mod_display. This is a first cut for the second but hasn't yet been tested 2017-08-21 02:01:41 -07:00
zotlabs
7a405da3b7 some issues with message-ids and urlencoding (again) 2017-08-20 23:22:52 -07:00
zotlabs
49cc952825 util/dcp will now accept a directory as a destination. The directory must exist. Recursion is not yet supported. 2017-08-20 22:45:13 -07:00
zotlabs
31e62bd19e a few file activities were not getting synced 2017-08-20 21:24:58 -07:00
zotlabs
52c6ea5115 add dmkdir 2017-08-20 21:02:09 -07:00
zotlabs
f15d96bebe add namespaces to activitystreams parser 2017-08-20 19:40:37 -07:00
zotlabs
18c57eeaa0 httpsig - return an array with all the different signing possibilities enumerated 2017-08-20 18:30:12 -07:00
zotlabs
2b898537d7 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-08-20 18:09:28 -07:00
zotlabs
081bff605a zot_protocol values are true and false; it is only php print_r() that turns them into '1' or '' 2017-08-20 18:07:25 -07:00
zotlabs
8a5c23fd50 issue with oembed of a shared item, which wraps in another share. 2017-08-20 17:45:08 -07:00
Andrew Manning
830f1bcd50 Update zot_protocol.bb 2017-08-20 14:12:09 -05:00
Mario Vavti
17e81095b3 Merge remote-tracking branch 'mike/master' into dev 2017-08-20 16:17:14 +02:00
zotlabs
ed71afa6c7 more work on mod_display 2017-08-19 15:11:12 -07:00
Mario Vavti
4cafa6280d Merge remote-tracking branch 'mike/master' into dev 2017-08-19 14:31:47 +02:00
zotlabs
b488034352 better error reporting on mod_display 2017-08-19 01:37:22 -07:00
zotlabs
944cd883bb script html tags in js file 2017-08-19 01:08:24 -07:00
zotlabs
f9dd4188b4 update installation requirements - php 5.6 and mysql 5.5.3 2017-08-18 13:04:30 +02:00
Mario Vavti
557aa18526 update changelog 2017-08-18 13:04:20 +02:00
Mario Vavti
b18f3f4f7a update changelog 2017-08-18 13:03:24 +02:00
zotlabs
4111ba8dee php warnings 2017-08-18 03:04:15 -07:00
zotlabs
035449e4a3 util/dcp "(DAV-copy) copy file from local system to Hubzilla/red DAV" 2017-08-17 23:43:54 -07:00
git-marijus
2a2abf14bb bugfix release 2.6.1 2017-08-18 08:28:37 +02:00
git-marijus
b553ecbb18 update changelog 2017-08-18 08:27:34 +02:00
git-marijus
d87a270e2c update changelog 2017-08-18 08:26:28 +02:00
zotlabs
3443416540 hubzilla issue #846 2017-08-18 08:20:04 +02:00
zotlabs
f2589cc820 mv HTTPSig to core - so we can use it as an auth method 2017-08-17 22:43:24 -07:00
zotlabs
691fadc93d hubzilla issue #846 2017-08-17 22:17:59 -07:00
zotlabs
65a320c509 move activitystreams parser back to core; we will eventually need it in core utilities 2017-08-17 16:53:14 -07:00
zotlabs
b0f2c22000 update installation requirements - php 5.6 and mysql 5.5.3 2017-08-17 16:26:14 -07:00
zotlabs
ef8a251115 move ap_probe to pubcrawl addon 2017-08-16 22:14:14 -07:00
Mario Vavti
4a7384bc0c Merge branch '2.6RC' 2017-08-16 10:32:35 +02:00
Mario Vavti
90bc21f2d5 Release Hubzilla 2.6 2017-08-16 10:21:49 +02:00
Mario Vavti
1c5629263b Merge remote-tracking branch 'mike/master' into dev 2017-08-16 10:16:33 +02:00
Mario Vavti
6adfbabbb7 update changelog 2017-08-16 10:06:49 +02:00
Mario Vavti
2a48222393 update changelog 2017-08-16 10:05:30 +02:00
zotlabs
4addde782e put unseen network count in page title; hubzilla issue #843 2017-08-15 21:39:01 -07:00
zotlabs
9b87940ed2 remove easter egg 2017-08-15 18:49:08 -07:00
zotlabs
8000d6b5d4 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-08-15 03:55:17 -07:00
zotlabs
e9679d251c more work on activitypub httpsignature verification 2017-08-14 22:40:29 -07:00
zotlabs
68f6043d44 new content type 2017-08-14 17:34:47 -07:00
Mario Vavti
f560a88ff3 typo 2017-08-14 22:06:04 +02:00
Mario Vavti
4b0d0df781 typo 2017-08-14 22:05:39 +02:00
Mario Vavti
05453ce493 changelog 2017-08-14 21:59:06 +02:00
Mario Vavti
af7ea07b43 changelog 2017-08-14 21:57:35 +02:00
zotlabs
289161aad1 contact_slider.tpl didn't get updated with one of the bootstrap changes where 'in' was renamed to 'show' 2017-08-14 21:34:20 +02:00
zotlabs
6a3919587f add parent item (if applicable) to notifier plugin info 2017-08-14 21:34:03 +02:00
Mario Vavti
80e7337984 Update composer autload cache 2017-08-14 21:30:24 +02:00
git-marijus
6cea5ddfad Merge pull request #842 from dawnbreak/dev
Update composer autload cache.
2017-08-14 21:22:53 +02:00
zotlabs
ba08555efc contact_slider.tpl didn't get updated with one of the bootstrap changes where 'in' was renamed to 'show' 2017-08-13 19:44:26 -07:00
zotlabs
f99b62b516 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-08-12 16:11:07 -07:00
zotlabs
2f45182b48 add parent item (if applicable) to notifier plugin info 2017-08-12 15:42:42 -07:00
Mario Vavti
9da1439a4d Merge remote-tracking branch 'mike/master' into dev 2017-08-12 22:45:32 +02:00
git-marijus
57602647ef minor js and css changes 2017-08-12 22:32:06 +02:00
git-marijus
4848dc5ec8 minor js and css changes 2017-08-12 22:29:57 +02:00
git-marijus
8b5a190d71 RC1 2017-08-12 10:45:45 +02:00
Mario Vavti
a4804ff977 update to bootstrap beta 2017-08-12 10:45:11 +02:00
zotlabs
998bd585bb add protocol selection to following feeds 2017-08-12 00:59:05 -07:00
Klaus Weidenbach
0123a28186 Update composer autload cache. 2017-08-11 22:26:23 +02:00
Mario Vavti
ff1d900ccb bump version 2017-08-11 20:46:25 +02:00
Mario Vavti
1808ffcdf2 update to bootstrap beta 2017-08-11 20:45:29 +02:00
zotlabs
86c4743ed9 deliverable_singleton - also check hubloc_hash in case we don't have an xchan_hash 2017-08-10 21:43:36 -07:00
zotlabs
1408e3da3b prevent uploads to comments if the channel has a default private ACL. 2017-08-10 21:08:07 -07:00
zotlabs
5f6eedcc1a Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-08-10 20:34:20 -07:00
zotlabs
7cec3f4dbf include the mastodon summary in the post 2017-08-10 18:05:06 -07:00
Mario Vavti
80ff7fa353 create cdav principal also on client access and remove redundant pconfig check in authentication process 2017-08-10 22:01:45 +02:00
Mario Vavti
7892ed9e77 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-08-10 21:59:41 +02:00
Mario Vavti
0e3b5536e2 create cdav principal also on client access and remove redundant pconfig check in authentication process 2017-08-10 21:58:44 +02:00
zotlabs
6c55e44f4c when following, allow [network]follow_address syntax to connect with a specific network for multi-protocol services 2017-08-10 12:49:20 -07:00
git-marijus
5b88e9574f update changelog 2017-08-10 11:59:12 +02:00
git-marijus
ecfb608518 do not show channel manager and nav channel select if we are in a delegate session 2017-08-10 11:42:33 +02:00
git-marijus
9411732c1b do not show channel manager and nav channel select if we are in a delegate session 2017-08-10 11:41:00 +02:00
zotlabs
acb8eeb853 libxml errors 2017-08-10 09:47:09 +02:00
git-marijus
d1c7e78990 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-08-10 09:40:02 +02:00
Mario Vavti
0a96cdd950 merge red/master into dev 2017-08-10 08:09:02 +02:00
zotlabs
5686901869 some doco fixes and other real minor stuff to improve logreading ability 2017-08-09 22:45:52 -07:00
zotlabs
6531cbd1d2 libxml errors 2017-08-09 17:35:03 -07:00
git-marijus
09da109eba update changelog 2017-08-09 20:45:59 +02:00
git-marijus
fa2de77abe App::get_channel() does not return the right channel if we are not looking at our own channel. fix issue #841 2017-08-09 20:41:13 +02:00
git-marijus
8ab3a4ebd7 App::get_channel() does not return the right channel if we are not looking at our own channel. fix issue #841 2017-08-09 20:39:59 +02:00
zotlabs
8eb6dafe31 only show upload button to those with write_storage permission 2017-08-08 23:12:08 -07:00
zotlabs
ca11d7b9a7 support upload of files and attachments into comments. This has some repercussions when it comes to post permissions since the commenter will not know the distribution of the post. Basically the files will be uploaded with the commenter's default ACL. Most of the time this will do the right thing. 2017-08-08 22:55:47 -07:00
zotlabs
a7a73a5150 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-08-08 17:53:53 -07:00
git-marijus
83b5bbfeea changelog 2017-08-08 23:20:20 +02:00
zotlabs
59108b18ae remove some no longer used images/icons 2017-08-07 18:19:02 -07:00
zotlabs
037e1edb1f ostatus feed was missing comments 2017-08-07 13:32:04 +02:00
zotlabs
c00796d553 ostatus feed was missing comments 2017-08-06 19:33:51 -07:00
phellmes
23f9f8bc3b Update DE translation strings 2017-08-06 23:41:28 +02:00
git-marijus
88a4889780 Merge pull request #838 from phellmes/dev
Update DE translation strings (also for 2.6RC)
2017-08-06 23:40:14 +02:00
git-marijus
bac297cf31 Merge pull request #835 from anaqreon/2.6RC
Fix styling on help page content list in sidebar.
2017-08-06 23:39:20 +02:00
git-marijus
3c73228d80 Merge pull request #839 from anaqreon/doco
Fix CSS for help page content list in sidebar.
2017-08-06 23:39:03 +02:00
git-marijus
0085b64b2b consolidate disable_discover_tab config if it was not yet set to either 1 or 0 in DB 2017-08-06 23:34:05 +02:00
git-marijus
1c0c01ccfe make config requirements in apps more universal - provide key and value 2017-08-06 23:20:24 +02:00
git-marijus
b0d1fa09c1 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-08-06 21:41:01 +02:00
git-marijus
68b32cd8f4 consolidate disable_discover_tab config if it was not yet set to either 1 or 0 in DB 2017-08-06 21:40:39 +02:00
phellmes
d5dcaacf2c Update DE translation strings 2017-08-05 14:32:44 +02:00
Andrew Manning
03ca0bfa69 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into doco 2017-08-05 11:24:03 +00:00
zotlabs
3aa22c29fd allow channel address to be changed 2017-08-04 19:02:41 -07:00
zotlabs
06a211704f auto preview mail on media insertion also 2017-08-03 18:28:08 -07:00
zotlabs
913046aa28 some bb-to-markdown issues 2017-08-03 22:02:12 +02:00
zotlabs
b4707705f1 minor activitypub rendering stuff 2017-08-03 22:01:49 +02:00
git-marijus
a618f70f56 Merge remote-tracking branch 'mike/master' into dev 2017-08-03 21:59:46 +02:00
git-marijus
05444f92f9 missing observer hash 2017-08-03 21:37:05 +02:00
git-marijus
9566eab934 missing observer hash 2017-08-03 21:36:26 +02:00
git-marijus
d704832ff6 fix issue #836 - missing opening form tag 2017-08-03 20:36:19 +02:00
git-marijus
3c1dff3039 fix issue #836 - missing opening form tag 2017-08-03 20:35:42 +02:00
git-marijus
4edf580ebf fix attachment upload for private mail 2017-08-03 15:31:28 +02:00
git-marijus
7b177be271 fix attachment upload for private mail 2017-08-03 15:30:40 +02:00
git-marijus
d183e47dc9 return preview also if we have no attachment 2017-08-03 14:09:57 +02:00
git-marijus
dc7c3f70eb return preview also if we have no attachment 2017-08-03 14:08:34 +02:00
zotlabs
d06ce6294d some bb-to-markdown issues 2017-08-03 04:55:56 -07:00
zotlabs
21ee29e46d Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-08-02 22:12:38 -07:00
zotlabs
bee09a6d8b minor activitypub rendering stuff 2017-08-02 22:11:46 -07:00
Andrew Manning
a100c47f11 Fix styling on help page content list in sidebar. 2017-08-03 01:56:54 +00:00
www-data
ba62f14482 Fix CSS for help page content list in sidebar. 2017-08-03 01:54:14 +00:00
Manuel Jiménez Friaza
2a34a497d5 Updated the Spanish translation 2017-08-02 12:22:21 +02:00
git-marijus
4ea4a036ef Merge pull request #834 from mjfriaza/dev
Updated the Spanish translation
2017-08-02 12:17:07 +02:00
Manuel Jiménez Friaza
2dbf8a5e00 Updated the Spanish translation 2017-08-02 08:57:30 +02:00
zotlabs
9359f9fe4d plugin hook for update_unseen 2017-08-01 22:25:55 -07:00
zotlabs
01526a9a79 add auto post preview to 'select photo from albums' 2017-08-01 19:02:42 -07:00
zotlabs
01fc590938 auto preview comments also on media/link add 2017-08-01 18:58:06 -07:00
zotlabs
6e9fb9b9fd Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-08-01 18:20:34 -07:00
zotlabs
a97b09210e auto preview when inserting a media item or embed into a post. Since this unanticipated action could be alarming (some might think the post was actually submitted), also provide a visible preview indicator within the previewed content. Remove the css for the old striped background image which hasn't been available for previewed content for a year or two. 2017-08-01 18:05:04 -07:00
git-marijus
acddf5aa8d css fix 2017-08-02 00:29:14 +02:00
git-marijus
6614d465d6 css fix 2017-08-02 00:28:05 +02:00
git-marijus
2ba2187c2e do not show pubs notifications for items with ACTIVITY_OBJ_FILE obj_type 2017-08-01 23:45:41 +02:00
git-marijus
2ea482d163 finally fix recursive attachments permissions 2017-08-01 23:32:37 +02:00
git-marijus
599b395e24 finally fix recursive attachments permissions 2017-08-01 23:20:39 +02:00
git-marijus
1416b81877 use small line-height only for larger screens 2017-08-01 18:04:31 +02:00
git-marijus
aa766b53d6 use small line-height only for larger screens 2017-08-01 18:03:53 +02:00
Mario Vavti
4e2a050afb remove blugrid schema until somebody cares to fix it 2017-08-01 14:27:20 +02:00
Mario Vavti
cf437c6a33 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-08-01 14:26:17 +02:00
Mario Vavti
8b6a24c67d remove blugrid schema until somebody cares to fix it 2017-08-01 14:25:59 +02:00
Mario Vavti
a72b549aa7 less badge more icon 2017-08-01 12:46:12 +02:00
Mario Vavti
46d8cf3f94 strings 2017-08-01 12:32:50 +02:00
Mario Vavti
91d19a3326 strings 2017-08-01 12:01:04 +02:00
Mario Vavti
a510c91d48 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-08-01 11:41:25 +02:00
Mario Vavti
2f8c5cf7d0 Merge remote-tracking branch 'mike/master' into dev 2017-08-01 03:59:32 +02:00
git-marijus
1f2482f6ab correct the logic for configs in app requirement 2017-08-01 03:38:41 +02:00
zotlabs
9476c631b0 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-07-31 17:23:33 -07:00
Mario Vavti
10e459140b Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-08-01 02:12:52 +02:00
Mario Vavti
b66cd8363e Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-08-01 00:57:15 +02:00
Mario Vavti
376b05bcc9 less badge more icon 2017-08-01 00:56:59 +02:00
zotlabs
a4a99d2d46 ensure we can work around the $is_http var in include/follow - this is left over from when the only non-webfinger connections we could make were RSS/Atom feeds. 2017-07-31 17:35:08 +02:00
Mario Vavti
2fcbbfe3d4 Merge remote-tracking branch 'mike/master' into dev 2017-07-31 17:34:26 +02:00
git-marijus
2095937c60 improve file_activity() a little 2017-07-31 17:30:16 +02:00
git-marijus
d33974cec4 db update to add index for item.obj_type 2017-07-31 17:30:06 +02:00
git-marijus
9ec995dbf0 improve file_activity() a little 2017-07-31 16:59:43 +02:00
git-marijus
79a806f328 db update to add index for item.obj_type 2017-07-31 16:49:56 +02:00
zotlabs
445fa6825a typo 2017-07-30 21:56:39 -07:00
zotlabs
e3c8e4f483 modify connection edit display for channels with no address/webbie 2017-07-30 21:55:28 -07:00
zotlabs
8f3a99ad1f ensure we can work around the $is_http var in include/follow - this is left over from when the only non-webfinger connections we could make were RSS/Atom feeds. 2017-07-30 19:04:17 -07:00
zotlabs
a3fef34a3f provide a better "is_commentable" default for OStatus conversations that were fetched on the fly 2017-07-31 02:55:13 +02:00
zotlabs
17618be14d add options flag to bb_to_markdown so we can distinguish between diaspora use and other use and
therefore filter and adjust content selectively
2017-07-31 02:54:58 +02:00
git-marijus
3faca10efc fix a bug where if multiple channels uploaded the same file to the same folder, the uploaded file would end up with an incremental number added to the filename for each upload even if the file did not exist yet in the channels folder 2017-07-31 02:54:27 +02:00
git-marijus
280f52f007 close the apps-menu if the notifications-menu is open and vice versa 2017-07-31 02:52:36 +02:00
git-marijus
126e06b32a Merge remote-tracking branch 'mike/master' into dev 2017-07-31 02:47:24 +02:00
git-marijus
988371be0b disable file notifications on initial upload for now - it can behave funky when uploading multiple small files at once 2017-07-31 02:35:46 +02:00
git-marijus
b4efe8ad8d implement system configs as app requirement and add the pubstream app 2017-07-31 02:24:49 +02:00
zotlabs
964a02d684 provide a better "is_commentable" default for OStatus conversations that were fetched on the fly 2017-07-30 16:15:34 -07:00
zotlabs
40effa4417 add options flag to bb_to_markdown so we can distinguish between diaspora use and other use and
therefore filter and adjust content selectively
2017-07-30 13:52:16 -07:00
git-marijus
35c05a3180 fix a bug where if multiple channels uploaded the same file to the same folder, the uploaded file would end up with an incremental number added to the filename for each upload even if the file did not exist yet in the channels folder 2017-07-30 19:46:52 +02:00
git-marijus
4a071b9a1c ltrim $display_path in attach_store() to be consistent with attach_mkdir() and go to created folder after successfully creating one 2017-07-30 19:21:02 +02:00
git-marijus
ead80481b9 another syntax error 2017-07-30 18:01:01 +02:00
git-marijus
297057d2bd do not include ACTIVITY_OBJ_FILE obj_type in the ping/something query 2017-07-30 17:49:35 +02:00
git-marijus
11cdd0033d no need for jquery here 2017-07-30 10:46:37 +02:00
git-marijus
06bd540cfa no need for jquery here 2017-07-30 10:45:59 +02:00
git-marijus
3451fe2d40 Merge remote-tracking branch 'mike/master' into dev 2017-07-30 07:41:46 +02:00
zotlabs
2ee0f769d9 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-07-29 15:42:33 -07:00
git-marijus
8161ec88e5 implement file notification on initial upload and rename get_parent_cloudpath() to get_cloud_url() which now includes the filename 2017-07-29 23:32:48 +02:00
git-marijus
7b992decd4 close the apps-menu if the notifications-menu is open and vice versa 2017-07-29 16:06:42 +02:00
zotlabs
9b9fe39839 missing quotes on string in network update_unseen 2017-07-29 04:47:55 -07:00
git-marijus
1f57a59618 make pubs notification available on small screens 2017-07-29 12:36:54 +02:00
git-marijus
5a1b850dd6 provide public stream notification also for not authenticated viewers 2017-07-29 12:24:03 +02:00
git-marijus
c4e0e20eb3 switch back to filter by ACTIVITY_OBJ_FILE for marking items read in /network since item_notshown is also used for likes 2017-07-29 11:37:35 +02:00
zotlabs
eedee6d0a1 fix notifications - item_notshown is set for likes, etc. 2017-07-29 01:58:34 -07:00
zotlabs
e316494e06 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-07-28 15:25:29 -07:00
git-marijus
4585e35b3e filter by item_notshown instead of obj_type 2017-07-28 23:07:16 +02:00
git-marijus
9717d4502f do not show obj_type ACTIVITY_OBJ_FILE under activity notifications and do not mark those read in /network 2017-07-28 23:01:39 +02:00
git-marijus
f9b342c87d initial notifications support for new shared files and new (since initial site load) pubstream activity 2017-07-28 22:42:02 +02:00
git-marijus
222113ee57 version 2.6RC 2017-07-28 10:21:08 +02:00
git-marijus
5f7b2e7c17 version 2.7 2017-07-28 10:19:09 +02:00
git-marijus
179478a940 default to static updates if not local channel 2017-07-27 21:51:59 +02:00
git-marijus
53570de5a3 remove borders from navbar toggler 2017-07-27 20:47:49 +02:00
git-marijus
41a6300d3c remove borders from navbar toggler 2017-07-27 20:47:07 +02:00
zotlabs
1376e59d00 improve the formatting of shares when converting from bbcode to markdown 2017-07-27 20:34:28 +02:00
zotlabs
d623228cf6 suppress fopen errors from dav 2017-07-27 20:31:27 +02:00
zotlabs
75d63684b8 remove activitypub components from core 2017-07-27 20:29:24 +02:00
zotlabs
d3d184192d issue with OStatus comments being propagated downstream 2017-07-27 11:31:22 +02:00
git-marijus
9be4c4d6d1 Merge remote-tracking branch 'mike/master' into dev 2017-07-27 11:17:08 +02:00
zotlabs
d3a5911932 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-07-26 22:09:01 -07:00
zotlabs
dbbae4bac8 issue with OStatus comments being propagated downstream 2017-07-26 17:38:34 -07:00
zotlabs
9132b9c026 remove activitypub components from core 2017-07-26 16:39:13 -07:00
zotlabs
769f697ae3 more work on signature algorithm choice 2017-07-26 16:36:09 -07:00
zotlabs
7d891a54e7 improve the formatting of shares when converting from bbcode to markdown 2017-07-26 16:22:20 -07:00
git-marijus
e71cdf02a8 move the active app code to include/nav.php - it is only relevant there 2017-07-26 21:42:07 +02:00
zotlabs
7d82b5f28d start to implement the code needed for verifying variable signature algorithms 2017-07-25 22:17:31 -07:00
zotlabs
eec2871680 consolidate duplicated code 2017-07-25 20:52:29 -07:00
zotlabs
029cf6395d sync key changes to clones 2017-07-25 17:58:46 -07:00
zotlabs
08f15a6fc6 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-07-25 16:02:41 -07:00
zotlabs
c24cfbc62a make signing methods variable and signable 2017-07-25 15:59:58 -07:00
git-marijus
caf077cbf8 version 2.5.10 2017-07-25 20:07:16 +02:00
git-marijus
5cc8837fb6 make local channel (not our own) nav menus appear similar to what we are used from remote channels 2017-07-25 20:06:01 +02:00
zotlabs
ddecbf052e new field names did not get saved 2017-07-24 22:45:50 -07:00
zotlabs
6a7fa6bf54 provide a keychange operation to rebase an identity on a new keypair 2017-07-24 20:23:00 -07:00
zotlabs
5ed4ed2246 suppress fopen errors from dav 2017-07-23 19:54:32 -07:00
git-marijus
72ed290ccd add text-dark class to cat tagsinput 2017-07-22 16:23:41 +02:00
git-marijus
16067db718 show the right conversation active and do not show any conversation active if we compose a new one 2017-07-22 12:46:02 +02:00
git-marijus
363d872326 Merge remote-tracking branch 'mike/master' into dev 2017-07-22 12:08:47 +02:00
git-marijus
f4a4d70149 indicate the selected channel in the dropdown menu and minor css fixes 2017-07-22 12:01:13 +02:00
git-marijus
4335e49381 more nav_set_selected 2017-07-22 11:04:18 +02:00
zotlabs
992f8272d3 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-07-21 16:20:50 -07:00
git-marijus
27678a523c more nav_set_selected apps 2017-07-21 22:36:47 +02:00
git-marijus
1bdcfe5219 provide a mechanism to mark apps active in the bin 2017-07-21 10:32:21 +02:00
zotlabs
89d21c0873 begin the tedious process of mapping activities between AS1, zot, and AS2 2017-07-20 22:55:04 -07:00
zotlabs
23e2b3be09 allow wildcard tag searches in search module also 2017-07-20 18:30:48 -07:00
zotlabs
a346399fe6 allow wildcard tag and category searches 2017-07-20 18:11:47 -07:00
git-marijus
8e5c56dcc2 more css fixes 2017-07-20 12:03:54 +02:00
git-marijus
77b58ec02f css fix 2017-07-20 11:56:46 +02:00
zotlabs
ceeb9836b9 implement update_feed_item 2017-07-19 20:31:11 -07:00
zotlabs
df7f0eb9a4 hubzilla issue #832 2017-07-19 18:32:16 -07:00
zotlabs
6103c30184 provide optional salmon signatures for AP entities 2017-07-18 21:16:18 -07:00
zotlabs
b52a968c74 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-07-18 19:16:47 -07:00
zotlabs
82aa87c190 ability to use a portion of the message-id to display a message wasn't honoured in all cases. 2017-07-18 17:02:50 -07:00
zotlabs
1af844e474 related to hubzilla issue #831 - system.last_expire_day was not being set correctly, causing cron_daily to run more frequently than desired. 2017-07-18 16:14:01 -07:00
git-marijus
c664a4bdcd some fixes for the bs-default schema 2017-07-18 15:46:34 +02:00
git-marijus
229f95d555 some fixes for the bs-default schema 2017-07-18 15:45:45 +02:00
git-marijus
ac6ebeee47 Merge remote-tracking branch 'mike/master' into dev 2017-07-18 14:26:08 +02:00
git-marijus
8896ebf7cb bugfix release 2.4.2 2017-07-18 14:03:22 +02:00
git-marijus
9bd11afc62 issue #827 provide backward compatibility for album links generated in earlier times before the ambiguity of photo album names was solved. This may provide incorrect results if two or more photo albums with the same basename exist in different directories of the file tree; but there is no easy way to solve that ambiguity - which is why the link format changed. 2017-07-18 13:56:56 +02:00
git-marijus
08c0d78296 issue #827 provide backward compatibility for album links generated in earlier times before the ambiguity of photo album names was solved. This may provide incorrect results if two or more photo albums with the same basename exist in different directories of the file tree; but there is no easy way to solve that ambiguity - which is why the link format changed. 2017-07-18 13:56:09 +02:00
zotlabs
9daa3b85c8 some corrections to AS encoding based on the current spec (some of this work was completed long before the spec settled). 2017-07-17 22:52:19 -07:00
zotlabs
d8c93c0d13 activitypub, cont. 2017-07-17 22:17:40 -07:00
zotlabs
42abc2201c Merge branch 'bug827' 2017-07-17 20:00:07 -07:00
zotlabs
27257de995 fix typo 2017-07-17 19:57:25 -07:00
zotlabs
15e836b7dd provide content-type matching ability for activitypub 2017-07-17 19:53:03 -07:00
zotlabs
0d062251b6 fix for bug 827 to provide partial backward compatibility with album names in photo items from < hubzilla 2.4
this will only work part of the time - which is why the behaviour was changed
2017-07-17 19:42:30 -07:00
zotlabs
ecb1515e5d activitystreams converters updated to recent spec 2017-07-17 19:28:27 -07:00
git-marijus
4728e72d18 some love for the installer 2017-07-17 16:19:19 +02:00
zotlabs
c352047228 mis-attributed profile photo when Mastodon comment author has no profile photo 2017-07-16 22:51:36 -07:00
zotlabs
1aedf22228 initial activitystreams2 parser 2017-07-16 22:28:28 -07:00
git-marijus
5408264559 Merge remote-tracking branch 'mike/master' into dev 2017-07-16 21:02:28 +02:00
git-marijus
b7d92d3a09 fix photo item comments 2017-07-16 16:26:22 +02:00
git-marijus
bd17dc52f2 fix photo item comments 2017-07-16 16:25:52 +02:00
git-marijus
e6315d252a fix album link 2017-07-16 15:59:58 +02:00
git-marijus
ce3be598bb fix album link 2017-07-16 15:59:19 +02:00
zotlabs
e891199a23 deal with mastodon privacy scopes - mark private and block commenting since we refuse to send private activities through the public OStatus connector. 2017-07-15 15:49:10 -07:00
zotlabs
b1d4e97699 incorrect follow url in webfinger 2017-07-14 14:03:56 -07:00
Mario Vavti
16dcaaa3a8 version 2017-07-14 16:37:39 +02:00
zotlabs
fd5c92822c minor optimisation 2017-07-13 22:29:15 -07:00
zotlabs
77f71303f2 update some addon docs and ensure we only generate statistics once a day 2017-07-13 21:46:21 -07:00
zotlabs
266dab1b59 turn url requests where argv[0] is something.xyz into module='something' and $_REQUEST['module_format'] = 'xyz'; But leave modules beginning with . (like .well_known) alone (convert the initial . to _ and then strip it). This really only affects Siteinfo_json at this time. 2017-07-13 20:53:05 -07:00
zotlabs
2d119c81a4 turn platform name and std_version into config variables 2017-07-13 20:18:19 -07:00
zotlabs
88bb61018d Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-07-13 19:59:30 -07:00
zotlabs
c940d8d7ca implement chunked uploads on the wall; making it work painlessly on /cloud was attempted but will not be implemented today. That presents some interesting dragons to slay. 2017-07-13 17:04:58 -07:00
zotlabs
aa70cbbf21 fix typos 2017-07-12 17:16:21 -07:00
zotlabs
6db717a1a0 make websub/PuSH and salmon both use consume_feed() for item storage as there is a lot of duplication of effort and patches applied to one that haven't been applied to the other. This will require an update of addons as well or follow activities may be duplicated 2017-07-12 17:07:31 -07:00
zotlabs
ad9990e100 even more logging of conversation parent discovery 2017-07-11 17:31:57 -07:00
Mario Vavti
403e90861c Merge red/master 2017-07-11 16:11:52 +02:00
zotlabs
2d63bbb91e prevent expiration of conversations you are involved with - allows you to find your own comments months from now 2017-07-10 20:18:33 -07:00
Mario Vavti
271ed82d0d update to match primary color 2017-07-10 22:43:32 +02:00
Mario Vavti
c47439fca4 update r1191: return update_success if table principals exists otherwise proceed with creating cdav tables. 2017-07-10 14:28:50 +02:00
zotlabs
e3734328eb find_parent for feeds needs more debug logging. Something is still falling through the cracks and it isn't obvious why 2017-07-09 17:08:25 -07:00
zotlabs
ddc454bd82 regression: allow position attributes in oembedable zcards by separating allow_position from the decision to allow zrls.
Should probably turn the entire zcard into a gd image as other consumers of zcards are also likely to purify the position attributes.
2017-07-09 16:04:45 -07:00
zotlabs
799d4ad549 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-07-09 13:15:50 -07:00
Mario Vavti
8dcdcd55e5 remove if not exist clause on index creation - it seems to be supported in mariadb only 2017-07-08 20:29:02 +02:00
Mario Vavti
1fca442828 update bs-dev and popper.js 2017-07-07 13:58:32 +02:00
git-marijus
d077f15270 Merge pull request #822 from dawnbreak/composer-light
Add optimize-autoloader to composer config.
2017-07-07 12:16:27 +02:00
Klaus Weidenbach
31d1a72854 ⬆️ Updating some PHP libraries.
htmlpurifier (v4.9.2 => v4.9.3) with bugfix for PHP7.1
sabre/http (4.2.2 => 4.2.3)
2017-07-06 21:35:10 +02:00
Klaus Weidenbach
f9a989fe1b Add optimize-autoloader to composer config. 2017-07-06 21:18:35 +02:00
Mario Vavti
46e079beea release 2.4.1 2017-07-06 10:48:00 +02:00
git-marijus
4048cb67d2 rewrite wiki pages widget - no need for ajax on pageload, show the pages to not authenticated people. 2017-07-06 10:43:40 +02:00
git-marijus
b16e4c558f Merge pull request #821 from zotlabs/hmessages
Hmessages.po corruption
2017-07-06 08:07:03 +02:00
zotlabs
2d6e87fb17 hmessages.po was corrupt from an old merge conflict - regenerated 2017-07-05 21:48:36 -07:00
zotlabs
024d2737d0 there was a merge conflict in hmessages.po 2017-07-05 20:52:33 -07:00
zotlabs
b2e5b6c977 affinitiy slider settings were being updated on any submit of of settings/featured, plus minor non-code changes 2017-07-05 20:16:40 -07:00
zotlabs
75f058e15e reset project name 2017-07-05 15:38:20 -07:00
zotlabs
7fb849ab87 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-07-05 15:35:53 -07:00
zotlabs
fca8e0aa6a Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-07-05 15:35:05 -07:00
Mario Vavti
8dd9ab05a9 remove apps app 2017-07-05 14:54:23 +02:00
Mario Vavti
c3b93de099 typo 2017-07-05 12:32:46 +02:00
zotlabs
27c8c74988 some sites use the old style ostatus:conversation xml field, check for it. 2017-07-05 11:49:05 +02:00
Mario Vavti
80352dab5f use if not exists clause to not error if the index was already there 2017-07-05 11:36:32 +02:00
Mario Vavti
00a49b42e4 version 2.5.8 2017-07-05 11:19:05 +02:00
Mario Vavti
f5735fb67b missing abook_{my,their}_perms in pg schema and missing keys in mysql schema 2017-07-05 10:36:32 +02:00
Mario Vavti
fb5b588349 update_version bump 2017-07-05 10:03:52 +02:00
Mario Vavti
9e497cde40 missing semicolon 2017-07-05 09:52:41 +02:00
zotlabs
f3816836e5 some sites use the old style ostatus:conversation xml field, check for it. 2017-07-04 22:05:17 -07:00
Mario Vavti
038c928b9b db-update for cdav 2017-07-04 23:08:00 +02:00
Mario Vavti
c596248f40 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-07-04 12:41:47 +02:00
Mario Vavti
6ae3a92f53 version 2.5.7 2017-07-04 12:40:10 +02:00
Mario Vavti
fbf868e976 reimplement creation of default calendar and default addressbook using sabre classes 2017-07-04 12:07:11 +02:00
Mario Vavti
5e0bb6ecd5 add apd files for cdav 2017-07-04 10:36:24 +02:00
Mario Vavti
a34d8773f1 add the cdav pgsql schemas 2017-07-04 10:28:16 +02:00
Mario Vavti
4bc94c0ee9 keep hubzillas license and readme 2017-07-04 09:41:39 +02:00
Mario Vavti
bf1a21e46f Merge remote-tracking branch 'mike/master' into dev 2017-07-04 09:39:48 +02:00
zotlabs
d18427a522 revert using channel_hash for cdav until we figure out how to do so cleanly 2017-07-03 21:20:22 -07:00
Mario Vavti
76850a7340 minor css fix 2017-07-03 21:38:29 +02:00
Mario Vavti
d096106824 merge red into hubzilla 2017-07-03 21:33:24 +02:00
Mario Vavti
562124c29f bs-dev, minor css fix and min version 2017-07-03 21:22:13 +02:00
zotlabs
48063fa5ef Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-07-02 18:58:43 -07:00
zotlabs
41111bcdad Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-07-02 18:57:21 -07:00
Mario Vavti
133292e241 update bs-dev and min version bump 2017-07-02 11:24:17 +02:00
zotlabs
64cad0a041 duplicated posts after conversation fetch 2017-06-30 00:50:57 -07:00
zotlabs
b73c844d1a use "Full Name (username)" for ostatus commenter xchans 2017-06-29 22:38:43 -07:00
zotlabs
da1b10b741 forgot to return true from the conversation_fetch routine - which triggers the rescan for potential parent posts 2017-06-29 21:09:08 -07:00
zotlabs
c7b4a53af2 log the conversation so we can debug this easier 2017-06-28 20:11:03 -07:00
zotlabs
024809f970 conversation fetching is partially working - but it isn't always glueing the conversation pieces together. 2017-06-28 20:07:53 -07:00
zotlabs
126af3a24a pretend it's a real feed even though it isn't 2017-06-28 19:34:49 -07:00
zotlabs
b91d95d241 add logging 2017-06-28 19:20:11 -07:00
zotlabs
8ca5a65dcf minor weirdness in zot finger results after deleting a clone from a channel that was on a site which was previously migrated from http to https and still had the old hubloc 2017-06-28 18:28:02 -07:00
zotlabs
798a03c2ab diaspora hcard wasn't being rendered 2017-06-28 17:03:17 -07:00
zotlabs
34c4775916 missing space in nav tpl 2017-06-28 16:45:48 -07:00
zotlabs
c5cff7d637 more refetch testing 2017-06-28 16:02:44 -07:00
zotlabs
c2af370282 refetch testing 2017-06-28 15:58:14 -07:00
zotlabs
118fed29b5 remove logging statement 2017-06-27 22:05:06 -07:00
zotlabs
4c50bfebc2 provide a gender icon on the profile sidebar within reason 2017-06-27 21:55:34 -07:00
zotlabs
dab00a98e0 translate 'favorite' verb to 'like' if it's an ostatus feed 2017-06-27 20:07:48 -07:00
zotlabs
2b2ea40bce log conversation fetches (also a missed / char in the string replace) 2017-06-27 19:57:03 -07:00
zotlabs
1273ac67f4 (untested currently) fetch conversation for GNU-Social and Mastodon when provided a comment with no local copy of the parent. 2017-06-27 19:20:13 -07:00
zotlabs
676481de58 support linked media (audio/video) elements in feeds as well as images 2017-06-26 23:06:15 -07:00
zotlabs
54c5e03b4f provide more comprehensible information on the admin summary page 2017-06-26 22:42:01 -07:00
zotlabs
a8374b25f1 upgrade blueimp from 9.8 to 9.18 2017-06-26 17:32:38 -07:00
zotlabs
4d81c498e2 in gnu-social reshare objects are activities, not posts or comments 2017-06-26 17:07:59 -07:00
zotlabs
b0dd824dbc add ostatus attached photos (inline to the post body) even if there's a link to the photo in the post but it isn't wrapped in an img tag. 2017-06-26 16:54:28 -07:00
zotlabs
5dc638c5b3 better fix for dav headers already sent issue 2017-06-26 01:36:33 -07:00
zotlabs
7f982a0778 minor usability enhancements with the connections list - label the edit icon so it's more obvious; the intuitive action is to click the photo or name which isn't what we usually want. Also move the Delete button over just a bit more so it's harder to accidentally click on small screens with big thumbs. 2017-06-25 20:03:26 -07:00
zotlabs
28a1be4d36 typo in chanview, remove output buffering in mod_cloud which is preventing large files from being downloaded. IIRC this was put there to avoid a SAML warning in SabreDAV but I'm not seeing that currently. 2017-06-25 19:17:05 -07:00
zotlabs
c456e01219 chanview - if already connected, bypass the chanview intermediary page and go straight to the remote profile.
The chanview page is only there to present a connect link since the remote profile may not have one.
2017-06-25 18:49:50 -07:00
zotlabs
ef53db0b91 allow poke by xchan_hash 2017-06-25 18:30:22 -07:00
zotlabs
21542d1f9e guess_image_type - ignore scheme when checking for urls 2017-06-25 18:09:34 -07:00
zotlabs
07d6472eea mastodon reshares can be either posts or comments; silence warning from guess_image_type when handed a URL to a non-existent resource. 2017-06-25 18:07:07 -07:00
zotlabs
6c771f84ce remove unused page_widgets.php include and provide a general function for loading sql from file to use in the cdav migration 2017-06-22 22:43:08 -07:00
zotlabs
02b7bc0803 cdav migration to core 2017-06-22 20:16:54 -07:00
zotlabs
681d6ca1dd more mail issues 2017-06-22 17:43:50 -07:00
zotlabs
3b4f70ae83 Several things about mail storage weren't quite right. 2017-06-22 17:31:08 -07:00
git-marijus
0e100a864b add files and photos to featured apps by default 2017-06-22 20:47:21 +02:00
git-marijus
dc14f8bf2c fix post title radius 2017-06-22 20:28:47 +02:00
zotlabs
37b9a809a6 start porting cdav proper to core 2017-06-21 22:11:21 -07:00
zotlabs
5f1a1db30f oopsy 2017-06-21 17:46:28 -07:00
zotlabs
99ff808b8a Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-06-20 18:39:27 -07:00
zotlabs
08c0729f5f Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-06-20 18:34:17 -07:00
zotlabs
7e4e2f28db explain what is happening here 2017-06-20 17:13:04 -07:00
zotlabs
08d9316d76 more import_author_zot fixes 2017-06-20 17:03:11 -07:00
zotlabs
0233e9ad2a still an issue with caching import_author_zot 2017-06-20 16:33:53 -07:00
zotlabs
31e0812711 remove deprecated app parameter from conversation() 2017-06-20 15:53:01 -07:00
zotlabs
76e9809169 more anon comment fixes 2017-06-20 23:12:31 +02:00
zotlabs
07a8151ae6 more anon comment fixes 2017-06-20 12:45:05 -07:00
git-marijus
075ced80a6 Remove important flag 2017-06-20 15:44:47 +02:00
zotlabs
4c96b9778e prevent likes/dislikes/etc. from anon commenters 2017-06-20 14:35:47 +02:00
zotlabs
1b31c9f8a8 prevent likes/dislikes/etc. from anon commenters 2017-06-20 05:11:07 -07:00
Mario Vavti
b858eec644 make bootstrap respect our radius setting 2017-06-20 12:57:23 +02:00
Mario Vavti
5af9923e29 version 2017-06-20 12:06:55 +02:00
Mario Vavti
e122901e49 strings 2017-06-20 12:06:12 +02:00
Mario Vavti
aed1373b70 update bs4-dev and use min version of popper 2017-06-20 11:52:09 +02:00
zotlabs
3b5e1c05b7 minor cleanup of moderated comment feature 2017-06-20 10:51:46 +02:00
zotlabs
1472f85b16 allow moderated comments like wordpress if permissions are compatible 2017-06-19 16:09:07 +02:00
zotlabs
3d6255ae24 brainstorming a comment moderation system 2017-06-19 16:02:28 +02:00
zotlabs
f25e0c3829 testing mastodon boosts/reshares 2017-06-19 15:59:46 +02:00
zotlabs
b0a6a5a91e minor cleanup of moderated comment feature 2017-06-18 22:51:52 -07:00
zotlabs
b917cf1ecc allow moderated comments like wordpress if permissions are compatible 2017-06-18 22:25:41 -07:00
zotlabs
4d5469f27e brainstorming a comment moderation system 2017-06-17 17:59:31 -07:00
zotlabs
1848a22118 testing mastodon boosts/reshares 2017-06-16 19:30:02 -07:00
zotlabs
b429576349 some logic cleanup in feed_get_reshare 2017-06-16 15:28:29 -07:00
zotlabs
bb9557a9ae remove some duplicated code 2017-06-15 08:57:03 +02:00
zotlabs
0d7e7ac657 always transmit a valid uri 2017-06-15 08:56:22 +02:00
zotlabs
b8c77bbcfc use parent_mid 2017-06-15 08:56:06 +02:00
zotlabs
327b22d24e remove some duplicated code 2017-06-14 20:20:18 -07:00
zotlabs
8b3d2c02e1 always transmit a valid uri 2017-06-14 19:59:25 -07:00
zotlabs
1ac799f629 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-06-14 16:11:57 -07:00
zotlabs
234c64574b Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-06-14 16:07:21 -07:00
zotlabs
7b948bdd29 use parent_mid 2017-06-14 16:06:25 -07:00
Mario Vavti
1f075d92bc sigh... x-zot prefix slipped in again 2017-06-15 00:19:50 +02:00
Mario Vavti
fe02665f54 typo 2017-06-15 00:17:26 +02:00
Mario Vavti
ec74b57000 re-add type since the actual culprit was the X-ZOT prefix 2017-06-14 23:21:47 +02:00
Mario Vavti
3f488e9842 fix illegal offset type warning 2017-06-14 22:53:09 +02:00
Mario Vavti
54e07389fa thr:in-reply-to seems to must not have a type set. there is no mention of this in the spec and replies will be shown as replies in mastodon this way. 2017-06-14 22:14:52 +02:00
Mario Vavti
28906bf50a Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-06-14 20:45:15 +02:00
zotlabs
70e912736f support mastodon content warnings by converting into n-s-f-w tag 2017-06-14 16:57:39 +02:00
zotlabs
ec1156d37a more doco improvements 2017-06-14 16:56:36 +02:00
zotlabs
dcbc65a796 add rel=noopener to all external target _blank links 2017-06-14 16:56:13 +02:00
zotlabs
8eccd7d47d attempt to group gnu-social and mastodon conversations by ostatus:conversation in addition to falling back on thr:in_reply_to 2017-06-14 16:55:57 +02:00
zotlabs
5530833bf8 preserve the ostatus:conversation pointer also 2017-06-14 16:55:28 +02:00
zotlabs
2f8fb2b663 ostatus is almost unrecognisable these days from its former self. In this case thr:in-reply-to has almost no meaning since it almost never refers to a top level post; which makes it quite difficult to preserve conversations 2017-06-14 16:55:00 +02:00
zotlabs
5d2035b729 implement feed_get_reshare to extract shared post info from atom feed and convert to bbcode 2017-06-14 16:54:08 +02:00
zotlabs
7c36331042 add 'can_comment_on_post' hook so we can better deal with the complications of Diaspora policy 2017-06-14 16:44:16 +02:00
zotlabs
36cfdd529b doco for the channel basic export api call 2017-06-14 16:43:35 +02:00
zotlabs
3e13568f91 add numbers to the techlevel descriptions because that's what we will use to indicate a minimum level in documentation 2017-06-14 16:43:21 +02:00
zotlabs
e84ed1cb9a more obsolete references in member guide 2017-06-14 16:42:55 +02:00
zotlabs
f1fd672d7b another typo 2017-06-14 16:42:34 +02:00
zotlabs
02b0472058 remove some obsolete information from the member guide and expand on what a connection is at a basic level. 2017-06-14 16:42:04 +02:00
zotlabs
5854a226d7 typo 2017-06-14 16:41:47 +02:00
zotlabs
bdf8940040 more stuff about connecting for the member guide 2017-06-14 16:41:12 +02:00
zotlabs
2b9a8fa1ac Add a section on connecting to other networks and activating additional protocols in the member guide - where it is needed the most. 2017-06-14 16:40:47 +02:00
zotlabs
45137a55a4 missed this hook page when the hook was added 2017-06-14 16:39:47 +02:00
zotlabs
d6dd2c5bd6 api docs 'categories' -> 'category' 2017-06-14 16:39:07 +02:00
git-marijus
d4330ceacc Merge pull request #815 from HaakonME/dev
New portfolio widget (requires foundation library)
2017-06-14 16:22:10 +02:00
zotlabs
364da7a57e support mastodon content warnings by converting into n-s-f-w tag 2017-06-13 19:52:16 -07:00
zotlabs
05eeb8432e more doco improvements 2017-06-13 19:24:42 -07:00
zotlabs
fce68f1a39 add rel=noopener to all external target _blank links 2017-06-13 18:29:08 -07:00
zotlabs
7f374fe69f attempt to group gnu-social and mastodon conversations by ostatus:conversation in addition to falling back on thr:in_reply_to 2017-06-13 18:06:45 -07:00
Haakon Meland Eriksen
836cb16455 Added Portfolio widget 2017-06-13 21:08:21 +02:00
zotlabs
dd8feac540 preserve the ostatus:conversation pointer also 2017-06-12 21:58:40 -07:00
zotlabs
f526b9fcfb ostatus is almost unrecognisable these days from its former self. In this case thr:in-reply-to has almost no meaning since it almost never refers to a top level post; which makes it quite difficult to preserve conversations 2017-06-12 21:12:14 -07:00
zotlabs
8bf9b1311d implement feed_get_reshare to extract shared post info from atom feed and convert to bbcode 2017-06-12 19:17:50 -07:00
zotlabs
5b3e863323 add 'can_comment_on_post' hook so we can better deal with the complications of Diaspora policy 2017-06-12 16:17:23 -07:00
zotlabs
6ce9eedb5f doco for the channel basic export api call 2017-06-11 23:28:55 -07:00
zotlabs
6f78183b74 add numbers to the techlevel descriptions because that's what we will use to indicate a minimum level in documentation 2017-06-11 18:52:00 -07:00
zotlabs
1d96544c9d more obsolete references in member guide 2017-06-11 18:48:21 -07:00
zotlabs
69f6a5c08c another typo 2017-06-11 18:44:55 -07:00
zotlabs
38b4f6a391 remove some obsolete information from the member guide and expand on what a connection is at a basic level. 2017-06-11 18:40:29 -07:00
zotlabs
425e13843e Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-06-11 16:28:40 -07:00
zotlabs
f28fa0ab5a Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-06-11 16:25:14 -07:00
zotlabs
f162993001 typo 2017-06-11 15:41:00 -07:00
zotlabs
af774a7269 more stuff about connecting for the member guide 2017-06-11 15:39:02 -07:00
zotlabs
d82cfdf581 Add a section on connecting to other networks and activating additional protocols in the member guide - where it is needed the most. 2017-06-11 15:30:56 -07:00
zotlabs
b84818a334 api docs 'categories' -> 'category' 2017-06-11 00:01:23 -07:00
zotlabs
9c26ee122e missed this hook page when the hook was added 2017-06-10 16:00:21 -07:00
zotlabs
f27047dd2e Documentation - add a section of addons and especially federation addons, and remove the section on server_roles. 2017-06-10 15:59:03 -07:00
Mario Vavti
643a62038e css fixes 2017-06-10 20:01:23 +02:00
Mario Vavti
fbb83d831b some more innodb mysql scheme adjustments 2017-06-10 10:00:37 +02:00
zotlabs
2a4032d71a clean up the warnings about connections on unclonable networks 2017-06-09 16:26:30 -07:00
zotlabs
42c9f853a7 auto inline embed ostatus image attachments 2017-06-09 15:24:37 -07:00
zotlabs
3389df77cc give the item_obscured flag a new lease on life by using it to designate third party client-side e2ee or binary content which can only be downloaded and not viewed directly on the web (as a side effect this also allows binary files to be submitted as activities/content). The content display is suppressed and replaced with a download button. This is unfinished but harmless to backport while work is in progress unless told otherwise. Future development will take care of the remaining loose ends. 2017-06-10 00:00:31 +02:00
zotlabs
97732f7006 more client-side mail privacy work 2017-06-09 23:54:35 +02:00
git-marijus
8f2457855c Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-06-09 12:57:05 +02:00
git-marijus
7e4c880e1e convert schema_mysql engine to InnoDB and charset utf8mb4 2017-06-09 12:56:36 +02:00
zotlabs
2a21285037 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-06-08 19:45:56 -07:00
zotlabs
61bf77f668 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-06-08 19:44:55 -07:00
zotlabs
cf583168dd put unreachable federated connections in the archived tab of the connections list page 2017-06-08 19:15:55 -07:00
zotlabs
236b528552 indicate on connections page if a federated connection from another network is unavailable from the current location 2017-06-08 16:38:07 -07:00
Mario Vavti
f730e476f0 bump std version 2017-06-08 15:34:19 +02:00
zotlabs
3563568f6f fall back on feed logo if an author avatar cannot be found 2017-06-08 10:26:43 +02:00
zotlabs
912be5a792 it appears to also work a bit better if you don't use imaginary function names 2017-06-08 10:26:07 +02:00
zotlabs
30358100ab partial fix for failure to sync photos - appears to be memory exhaustion and dependent on filesize although an unrelated issue was found with directory creation during file sync (we didn't check ownership when looking for duplicates).
This checkin provides the means for a sync process to fetch the contents for various photo scales from the original server just as is done for the attach data now. It is still missing the bit for the sync process to spawn a mob of children to fetch these suckers and update the photo table with the results.
2017-06-08 10:25:42 +02:00
zotlabs
492665a8a1 provide hook when deleting a connection - we need this to clean up dangling PuSH subscriptions 2017-06-08 10:24:40 +02:00
zotlabs
005baea319 fall back on feed logo if an author avatar cannot be found 2017-06-07 21:49:50 -07:00
zotlabs
4f3b1edf9d it appears to also work a bit better if you don't use imaginary function names 2017-06-07 20:44:44 -07:00
zotlabs
2e692fca93 partial fix for failure to sync photos - appears to be memory exhaustion and dependent on filesize although an unrelated issue was found with directory creation during file sync (we didn't check ownership when looking for duplicates).
This checkin provides the means for a sync process to fetch the contents for various photo scales from the original server just as is done for the attach data now. It is still missing the bit for the sync process to spawn a mob of children to fetch these suckers and update the photo table with the results.
2017-06-07 20:28:59 -07:00
zotlabs
9dbd997141 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-06-07 17:11:35 -07:00
zotlabs
416a82bf12 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-06-07 17:07:44 -07:00
zotlabs
2e35dc648f provide hook when deleting a connection - we need this to clean up dangling PuSH subscriptions 2017-06-07 16:26:24 -07:00
Mario Vavti
55836e8ca6 update bs-dev 2017-06-07 22:40:44 +02:00
Manuel Tancoigne
a17acfb04f Fixed TEXT fields with default values (fixes #803) in mysql creation script. 2017-06-07 10:20:02 +02:00
git-marijus
e9fe258b5e Merge pull request #811 from mtancoigne/master
Fixed TEXT fields with default values (fixes #803)
2017-06-07 10:15:24 +02:00
git-marijus
79e618415a Merge pull request #809 from dawnbreak/QA_testing
👷 Add MySQL 5.7 in TravisCI.
2017-06-07 10:14:54 +02:00
zotlabs
bea0a491cf Looks like we need the mastodon feed check in core - grrr. Will do that for now until it can be put back into plugins. 2017-06-07 09:37:47 +02:00
zotlabs
108b052e4e hubzilla issue #810 2017-06-07 09:37:33 +02:00
zotlabs
f5b593ff42 whitespace 2017-06-07 09:36:53 +02:00
zotlabs
cdfd42053d always add a length to ostatus compat enclosures - even if unknown (0) 2017-06-07 09:36:13 +02:00
zotlabs
36d4086673 ostatus feeds: extract photo information from posts and convert to enclosures as otherwise OStatus servers will strip them from the HTML in the feed and refuse to render them 2017-06-07 09:35:04 +02:00
zotlabs
01b541d8b0 oembed: ensure that width and height are returned as type int and not float 2017-06-07 09:34:45 +02:00
zotlabs
928fce875e make authenticated oembeds optional, default to false. 2017-06-07 09:33:55 +02:00
zotlabs
1d3c6e7420 include/socgraph - remove a few obsolete and long-deprecated functions 2017-06-07 09:33:28 +02:00
zotlabs
c96fe2931a cleanup only 2017-06-07 09:33:00 +02:00
zotlabs
8a11dc0c90 don't allow negative age in directory listings 2017-06-07 09:31:22 +02:00
zotlabs
324d427ac7 a slight tweak to author_is_pmable hook to make it useful 2017-06-07 09:30:45 +02:00
zotlabs
84c04cfe1c remove text_highlight css load from core 2017-06-07 09:28:54 +02:00
zotlabs
1925f2dec2 add the hl tag to the bbcode ref 2017-06-07 09:28:34 +02:00
zotlabs
5235a72bca correct the bbcode documentation for syntax highlighted code blocks now that this is provided by a plugin. 2017-06-07 09:28:13 +02:00
zotlabs
80c65ea8f3 move code syntax highlighting to plugin 2017-06-07 09:27:42 +02:00
zotlabs
3a2a7d0508 re-arrange a few functions 2017-06-07 09:26:45 +02:00
zotlabs
59002cb873 Looks like we need the mastodon feed check in core - grrr. Will do that for now until it can be put back into plugins. 2017-06-06 22:49:45 -07:00
zotlabs
f49ce500a1 fix a merge mixup on install/schema_msyql.php 2017-06-06 18:12:44 -07:00
zotlabs
40b9130c63 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-06-06 17:39:43 -07:00
zotlabs
e917b94929 hubzilla issue #810 2017-06-06 17:38:34 -07:00
Manuel Tancoigne
abce12ccd9 Fixed TEXT fields with default values (fixes #803) in mysql creation script. 2017-06-06 19:42:10 +02:00
zotlabs
83f8f8ebb8 whitespace 2017-06-05 15:57:43 -07:00
Klaus Weidenbach
4bd825e778 👷 Add MySQL 5.7 in TravisCI.
Use a Docker container to add MySQL 5.7 in TravisCI.
A lot of sql_mode settings have changed with 5.7, so finnaly provide it
to test against it.
2017-06-05 23:42:13 +02:00
zotlabs
2fea5ff889 always add a length to ostatus compat enclosures - even if unknown (0) 2017-06-04 20:07:08 -07:00
zotlabs
a94a42d609 ostatus feeds: extract photo information from posts and convert to enclosures as otherwise OStatus servers will strip them from the HTML in the feed and refuse to render them 2017-06-04 19:09:05 -07:00
git-marijus
4784f847c9 fix nav-tabs for dark scheme 2017-06-04 17:16:18 +02:00
git-marijus
867d8510ca fix nav-tabs for dark scheme 2017-06-04 17:15:33 +02:00
git-marijus
d53fb9d1b5 remove duplicate code 2017-06-04 17:01:45 +02:00
git-marijus
58b5c4cc16 fix allow setting a default schema for the hub (issue #797) and allow selecting of focus (hubzilla default) schema if a default is set. 2017-06-04 17:01:18 +02:00
git-marijus
10ecb6d368 remove duplicate code 2017-06-04 16:58:59 +02:00
git-marijus
e7c3ca9bd8 fix allow setting a default schema for the hub (issue #797) and allow selecting of focus (hubzilla default) schema if a default is set. 2017-06-04 16:39:52 +02:00
git-marijus
e8a4e9a31f class mixup 2017-06-04 12:52:52 +02:00
zotlabs
43914852e5 oembed: ensure that width and height are returned as type int and not float 2017-06-03 16:08:08 -07:00
zotlabs
c7f097ec84 make authenticated oembeds optional, default to false. 2017-06-03 16:00:14 -07:00
git-marijus
7562f77bdf rewrite wiki pages widget - no need for ajax on pageload, show the pages to not authenticated people. 2017-06-03 17:23:53 +02:00
git-marijus
c4ed04fc82 convert randprof to use chanlink_hash() instead of chanlink_url() and filter sys channels by xchan.xchan_system instead of xchan_addr != sys@% 2017-06-03 10:13:42 +02:00
zotlabs
f3061651d4 Revert "include/socgraph - remove a few obsolete and long-deprecated functions"
This reverts commit e2d028fb97.
2017-06-01 21:22:56 -07:00
zotlabs
0b740826c5 include/socgraph - remove a few obsolete and long-deprecated functions 2017-06-01 21:22:31 -07:00
zotlabs
e2d028fb97 include/socgraph - remove a few obsolete and long-deprecated functions 2017-06-01 21:21:38 -07:00
zotlabs
e0913dc8e6 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-06-01 16:31:21 -07:00
git-marijus
56f3b12171 Merge pull request #802 from zotlabs/searchwebpages
provide ability to search webpages (either public or which contain th…
2017-06-01 08:19:52 +02:00
git-marijus
927313968a Merge pull request #805 from zotlabs/mailexport
minor export issue with mail
2017-06-01 08:17:58 +02:00
git-marijus
2e54024b92 Merge pull request #804 from dawnbreak/dev
⬆️Update Sabre libraries.
2017-06-01 08:16:55 +02:00
zotlabs
cdfcb1ed24 cleanup only 2017-05-31 22:59:07 -07:00
zotlabs
e6581aa09c active nav-link was white on white 2017-05-31 21:57:01 -07:00
zotlabs
8ebb000650 minor export issue with mail 2017-05-31 21:01:51 -07:00
zotlabs
fc98bd1563 minor export issue with mail 2017-05-31 20:59:36 -07:00
zotlabs
7ccf47f4c6 don't allow negative age in directory listings 2017-05-31 20:08:35 -07:00
zotlabs
35debe46bc a slight tweak to author_is_pmable hook to make it useful 2017-05-31 18:14:12 -07:00
zotlabs
98c18f416a remove default for text/mediumtext sql fields 2017-05-31 16:00:33 -07:00
Klaus Weidenbach
ea19971285 ⬆️Update Sabre libraries. 2017-06-01 00:08:40 +02:00
Mario Vavti
47d55694a4 Merge branch '2.4RC' 2017-05-31 09:56:35 +02:00
Mario Vavti
f0e615dee5 bump version 2017-05-31 09:53:55 +02:00
zotlabs
5376b478b8 only provide 'connected apps' on the settings menu if techlevel > 0. 2017-05-30 22:22:31 -07:00
zotlabs
909e618f6c remove text_highlight css load from core 2017-05-30 21:28:59 -07:00
zotlabs
c492573429 add the hl tag to the bbcode ref 2017-05-30 20:26:57 -07:00
zotlabs
8ae97b556e correct the bbcode documentation for syntax highlighted code blocks now that this is provided by a plugin. 2017-05-30 20:13:01 -07:00
zotlabs
dfc0d4cf59 move code syntax highlighting to plugin 2017-05-30 19:50:41 -07:00
zotlabs
bfad624528 re-arrange a few functions 2017-05-30 18:36:19 -07:00
zotlabs
062b9ecbf3 bring back html2markdown which went away in the merge 2017-05-30 18:22:48 -07:00
zotlabs
d3cad5a651 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-05-30 18:18:28 -07:00
zotlabs
a7ecf51915 provide ability to search webpages (either public or which contain the observer in the acl) in addition to conversations 2017-05-30 17:53:58 -07:00
zotlabs
893ae17b99 provide ability to search webpages (either public or which contain the observer in the acl) in addition to conversations 2017-05-30 17:06:50 -07:00
zotlabs
e48d5383ce move disapora xrd stuff to plugin 2017-05-30 16:50:57 -07:00
Mario Vavti
9675acdf87 update changelog 2017-05-30 16:48:05 +02:00
Mario Vavti
14229d0dd3 update changelog 2017-05-30 16:47:33 +02:00
Mario Vavti
2b5d19924b fix issue #790 - zip->open returned error 19 (not a valid zip archive). in case there are further issues we should probably also put a ob_end_clean() right before readfile() 2017-05-30 15:15:31 +02:00
Mario Vavti
3f658cc2ea fix issue #790 - zip->open returned error 19 (not a valid zip archive). in case there are further issues we should probably also put a ob_end_clean() right before readfile() 2017-05-30 15:15:00 +02:00
zotlabs
6962bc5147 create account_store_lowlevel() 2017-05-29 21:46:38 -07:00
zotlabs
321957781e remove server role from language configs 2017-05-29 20:59:05 -07:00
zotlabs
fd91513832 more deprecate server_role 2017-05-29 16:25:27 -07:00
zotlabs
4fcfcc8117 start deprecation of server_role 2017-05-29 13:50:02 -07:00
Mario Vavti
11cecea597 fix update_r1189() for mysql and postgres 2017-05-29 13:19:08 +02:00
git-marijus
e549833077 Merge pull request #800 from git-marijus/dev
fix update_r1189() for mysql and postgres
2017-05-29 13:18:09 +02:00
zotlabs
b15a5f03e6 work through the diaspora_v2 outgoing status posts 2017-05-28 19:17:46 -07:00
zotlabs
7738083f3e replace really old example widgets with pointer to current widget list 2017-05-28 16:02:10 -07:00
git-marijus
98fe474276 Merge pull request #796 from dawnbreak/QA_testing
Testing HTML 2 Markdown conversion.
2017-05-28 18:00:58 +02:00
Mario Vavti
03b8ecd0de fix update_r1189() for mysql and postgres 2017-05-28 17:54:05 +02:00
Mario Vavti
bb669ccd2c update changelog for 2.4 2017-05-28 13:02:00 +02:00
Mario Vavti
e9d924b5d7 update changelog for 2.4 2017-05-28 13:01:20 +02:00
zotlabs
143601374c Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-05-27 16:22:51 -07:00
Klaus Weidenbach
586c72fbe5 Don't drop PHP5 support yet.
Scalar Type Hints and Return Type Declarations were introduced in PHP7.
2017-05-27 22:44:54 +02:00
git-marijus
8bb832e23f Merge pull request #798 from zotlabs/pagetitlefix
hubzilla issue #795
2017-05-27 19:24:15 +02:00
zotlabs
184f522d5f hubzilla issue #795 2017-05-27 02:22:36 -07:00
Klaus Weidenbach
0f0e23445a 🔨 Add html2markdown unit tests.
A tiny refactoring to make HTML 2 markdown conversion testable.
Add some unit tests to check the behavior of the now used HTML2Markdown library.
There are some differences compared to the old pixel418/markdownify library.
2017-05-27 00:19:01 +02:00
zotlabs
1b75e4de0d hubzilla issue #795 2017-05-26 14:52:45 -07:00
zotlabs
2deafa0dea update link to account roles help on new_channel page 2017-05-25 23:03:55 -07:00
zotlabs
938a621810 update the link to account roles help on register page 2017-05-25 23:02:48 -07:00
zotlabs
583a047e83 looks like a commit was lost someplace, but I'll re-do it later (convert sql schema files to default integers to int values); in any event change all the mysql strings that were 255 maxlength to 191 maxlength in case they get used as indexes down the line 2017-05-25 22:50:16 -07:00
zotlabs
57edfa7ae8 put back obsolete permission fields in abook and channel schema files so we can restore the old data without choking when upgrading the table type 2017-05-25 22:10:01 -07:00
zotlabs
b4da2d35bf start using the abook_not_here flag (requires changes in addons, not easily portable to hubzilla) 2017-05-25 13:37:13 -07:00
zotlabs
fd357f87be only store search info for text filetypes when updating the documentation indexes 2017-05-24 22:34:52 -07:00
zotlabs
df8c69f73b some minor help cleanup - add '-/foo' override of language detection 2017-05-24 22:24:45 -07:00
Klaus Weidenbach
8ce98e38dc ⬆️ Update dev libraries.
phpunit 6.1, behat, etc.
2017-05-24 20:40:47 +02:00
zotlabs
3a00140797 remove php version checks for older ( < 5.4) code incompatibilities 2017-05-23 21:20:40 -07:00
zotlabs
bf580fcc06 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-05-23 16:14:41 -07:00
Mario Vavti
31d9208172 bump version 2017-05-23 21:53:34 +02:00
zotlabs
508ea9153c this looks like a slightly cleaner solution to the unicode dl issue 2017-05-23 21:52:35 +02:00
zotlabs
6ff16e2651 hubzilla issue #777 2017-05-23 21:52:21 +02:00
zotlabs
da682717ab wiki auto language select to match webpages implementation 2017-05-23 21:51:17 +02:00
zotlabs
647b5d098f apporder style improvement and add to nav menu, also add language awareness to webpages 2017-05-23 21:50:38 +02:00
zotlabs
3a9e5f0f98 schema fixes 2017-05-23 21:48:58 +02:00
zotlabs
50c9aec436 some issues with the app order template logic 2017-05-23 21:44:57 +02:00
zotlabs
ec7ecc285e apporder module and all the associated backend stuff to make it work; probably needs a bit of UI cleanup and a link to it from somewhere 2017-05-23 21:44:25 +02:00
git-marijus
dea0d07b9a Merge pull request #794 from dawnbreak/dev
Replace Mardownify library with html-to-markdown library.
2017-05-23 21:39:47 +02:00
zotlabs
357e7af6ad add 'apps' app 2017-05-23 01:18:34 -07:00
zotlabs
53057830e0 wiki auto language select to match webpages implementation 2017-05-22 20:18:47 -07:00
zotlabs
7ae0317b6a apporder style improvement and add to nav menu, also add language awareness to webpages 2017-05-22 17:07:34 -07:00
Klaus Weidenbach
547df2219a Replace Mardownify library with html-to-markdown library. 2017-05-23 00:32:11 +02:00
zotlabs
1c8c7479b8 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-05-22 03:51:58 -07:00
zotlabs
36a960adec schema fixes 2017-05-22 00:57:56 -07:00
zotlabs
07ee4984cb some issues with the app order template logic 2017-05-21 22:42:22 -07:00
zotlabs
e4448423fb apporder module and all the associated backend stuff to make it work; probably needs a bit of UI cleanup and a link to it from somewhere 2017-05-21 22:23:36 -07:00
Mario Vavti
50e9d02458 bump version 2017-05-20 23:04:18 +02:00
Mario Vavti
45233dd53c 2.4RC1.1 2017-05-20 23:03:06 +02:00
zotlabs
1a9fdc565c resolve merge conflict 2017-05-20 22:59:12 +02:00
zotlabs
e32e616031 resolve merge conflict 2017-05-20 22:57:38 +02:00
Mario Vavti
b14fb1759d 2.4RC1 2017-05-20 22:24:54 +02:00
zotlabs
abd757d356 always wonder about people who say "do as I say, not as I do..." 2017-05-20 22:22:17 +02:00
zotlabs
28645b492e one file hadn't yet been saved when doing pull request 2017-05-20 22:21:34 +02:00
zotlabs
3919c8f79f abook_not_here flag created to indicate singleton connections which are connected to this channel but not on this hub. abook_instance enumerates which hubs the connections is valid, but we ultimately need something more efficiently searchable to decide what operations are supported w/r/t this connection in the context of this hub. This flag is ignored during sync to clones although the code to set it correctly during channel creation, import, and sync has not yet been implemented. 2017-05-20 22:21:22 +02:00
zotlabs
803be11bbc Do not yet understand why on postgres, app['plugin'] gets set to 3 linefeeds but this prevents it from rendering 2017-05-20 22:07:11 +02:00
Mario Vavti
335de94343 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-05-19 10:48:23 +02:00
Mario Vavti
b62463107c smileybutton fixes 2017-05-19 10:48:04 +02:00
Mario Vavti
93ce1661af smileybutton fixes 2017-05-19 10:47:33 +02:00
Mario Vavti
f59ed38a38 some styling for system notifications 2017-05-19 09:30:30 +02:00
Mario Vavti
3fad69e5ca some styling for system notifications 2017-05-18 14:57:10 +02:00
Mario Vavti
005db13c45 silence php warning during install 2017-05-17 11:27:32 +02:00
Mario Vavti
d7ddafb39f css first aid for mod setup 2017-05-17 11:27:14 +02:00
Mario Vavti
3fe7bf27de Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-05-17 11:25:33 +02:00
Mario Vavti
4b718929df css first aid for mod setup 2017-05-17 11:25:14 +02:00
Mario Vavti
a44c908147 silence php warning during install 2017-05-17 11:24:27 +02:00
root
1bf37305a8 Implemented switch statement logic in Comanche layout parser. 2017-05-17 10:08:34 +02:00
git-marijus
ed4d589077 Merge pull request #783 from zotlabs/app_order
provide mechanism to arbitrarily sort the nav tray apps, currently th…
2017-05-17 10:06:14 +02:00
git-marijus
47a080d79c Merge pull request #782 from dawnbreak/QA_testing
👷 Documentation Permissions.php.
2017-05-17 10:04:52 +02:00
git-marijus
66a8e5ddbb Merge pull request #780 from zotlabs/docbug
no bug reporting info in docs
2017-05-17 10:03:07 +02:00
git-marijus
8c39ed61a9 Merge pull request #778 from beardyunixer/dev
Update nginx
2017-05-17 10:02:35 +02:00
git-marijus
a12d403981 Merge pull request #774 from zotlabs/pgapps
Do not yet understand why on postgres, app['plugin'] gets set to 3 li…
2017-05-17 09:57:50 +02:00
git-marijus
ccf0274d13 Merge pull request #775 from zotlabs/pgstuff
always wonder about people who say "do as I say, not as I do..."
2017-05-17 09:57:32 +02:00
zotlabs
21103f8bc4 provide mechanism to arbitrarily sort the nav tray apps, currently the preferred order list needs to be manually created 2017-05-16 23:00:28 -07:00
zotlabs
a1ba44db72 provide mechanism to arbitrarily sort the nav tray apps, currently the preferred order list needs to be manually created 2017-05-16 22:57:34 -07:00
zotlabs
3c22a7b482 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-05-16 17:51:00 -07:00
Klaus Weidenbach
d056b13e14 👷 Documentation Permissions.php.
Also add some phpunit tests for this class, but there are some problems
yet with mocking static functions.
2017-05-17 01:46:31 +02:00
Mario Vavti
7a39ccf7bb regenerate optimized autoload files 2017-05-16 19:03:37 +02:00
zotlabs
3be90c2e45 include attach.php here (boot.php) instead of each file that uses it. Eventually this needs to move to an autoloader. 2017-05-16 18:45:48 +02:00
zotlabs
60caecffdd include attach.php here (boot.php) instead of each file that uses it. Eventually this needs to move to an autoloader. 2017-05-16 18:45:33 +02:00
zotlabs
df3eb562f0 danger - do not use 'char(n)' with postgres it creates a thing called a bpchar which is different than a normal text field in subtle ways. 2017-05-15 22:58:13 -07:00
zotlabs
c4b247e75e no bug reporting info in docs 2017-05-15 20:38:27 -07:00
zotlabs
d9fdd0ce36 no bug reporting info in docs 2017-05-15 20:37:29 -07:00
Thomas Willingham
226fcac72e Update nginx 2017-05-15 10:55:33 +01:00
zotlabs
5c8a911c93 this looks like a slightly cleaner solution to the unicode dl issue 2017-05-14 21:04:34 -07:00
zotlabs
2cc1844d97 hubzilla issue #777 2017-05-14 20:51:15 -07:00
zotlabs
3916d5c567 always wonder about people who say "do as I say, not as I do..." 2017-05-14 18:37:36 -07:00
zotlabs
ef51c1c2b2 Do not yet understand why on postgres, app['plugin'] gets set to 3 linefeeds but this prevents it from rendering 2017-05-14 18:17:54 -07:00
zotlabs
f637faf0d2 Do not yet understand why on postgres, app['plugin'] gets set to 3 linefeeds but this prevents it from rendering 2017-05-14 18:02:22 -07:00
zotlabs
d010f4fcae issue #769 2017-05-12 10:16:58 +02:00
Mario Vavti
d5e436d15b Empty ACL should not result in no ACL when uploading a file 2017-05-12 10:16:12 +02:00
Mario Vavti
18ee1ba589 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-05-12 10:04:00 +02:00
git-marijus
795b39250f Merge pull request #770 from zotlabs/mast496
consolidate and simplify the generation of activitystreams persons, a…
2017-05-12 10:02:33 +02:00
git-marijus
ae89f1b3b3 Merge pull request #771 from zotlabs/filesync
issue #769
2017-05-12 10:02:12 +02:00
zotlabs
cbe600369c Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-05-11 20:59:50 -07:00
zotlabs
1de1b58a08 consolidate email validation checks 2017-05-11 19:01:04 -07:00
zotlabs
4f577cbdeb issue #769 2017-05-11 18:34:28 -07:00
zotlabs
c2bd7d1e56 issue #769 2017-05-11 18:32:34 -07:00
zotlabs
e501289a55 consolidate and simplify the generation of activitystreams persons, add a couple more fields hoping eventually Mastodon will accept legal follow activities without choking on them. Requires an update of plugins also. 2017-05-11 17:39:26 -07:00
Mario Vavti
1ebc9de1e6 Empty ACL should not result in no ACL when uploading a file 2017-05-11 13:31:36 +02:00
git-marijus
f34b060e23 Merge pull request #767 from zotlabs/realm_ac
send directory realm_token for navbar autocomplete searches - if conf…
2017-05-11 10:41:57 +02:00
zotlabs
84064b90a6 disable oauth2 until I can get back to it - it's throwing typos 2017-05-10 22:15:01 -07:00
zotlabs
08e21fd0b8 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-05-10 17:11:17 -07:00
zotlabs
1077686bda send directory realm_token for navbar autocomplete searches - if configured 2017-05-10 17:02:56 -07:00
Mario Vavti
582d075c45 missing clearfix 2017-05-10 17:39:49 +02:00
Mario Vavti
b60f1085db missing clearfix 2017-05-10 17:39:15 +02:00
phellmes
a3bdfc1580 Update DE translation strings 2017-05-10 14:54:01 +02:00
git-marijus
76a8711570 Merge pull request #766 from phellmes/dev
Update DE translation strings (also for 2.4RC)
2017-05-10 14:52:41 +02:00
zotlabs
87b424123b don't allow html in plugin comment blocks 2017-05-10 14:50:22 +02:00
zotlabs
9a66d47d54 use correct data type 2017-05-10 14:50:16 +02:00
zotlabs
5a0712f766 zot protocol doco updates 2017-05-10 14:50:11 +02:00
zotlabs
660ea89521 handle mastodon urls in markdown/bbcode conversion 2017-05-10 14:50:06 +02:00
zotlabs
60204becf4 don't allow html in plugin comment blocks 2017-05-10 14:49:32 +02:00
zotlabs
032216153f use correct data type 2017-05-10 14:49:07 +02:00
zotlabs
dac4447e33 zot protocol doco updates 2017-05-10 14:48:49 +02:00
zotlabs
fa94c0a65b handle mastodon urls in markdown/bbcode conversion 2017-05-10 14:48:04 +02:00
zotlabs
76d78571d6 don't allow html in plugin comment blocks 2017-05-09 20:33:25 -07:00
zotlabs
556407408f Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-05-09 19:12:23 -07:00
zotlabs
a862bf488c use correct data type 2017-05-09 19:03:16 -07:00
zotlabs
f629dc51aa zot protocol doco updates 2017-05-09 19:02:02 -07:00
phellmes
96cc6a916d Update DE translation strings 2017-05-09 16:00:02 +02:00
Mario Vavti
6c0e0b3eae make all label bold 2017-05-09 10:25:12 +02:00
Mario Vavti
8a129610da make all label bold 2017-05-09 10:23:51 +02:00
Manuel Jiménez Friaza
8688753522 Updated the Spanish translation 2017-05-09 10:23:12 +02:00
git-marijus
9a0400c93a Merge pull request #763 from anaqreon/dev
Implemented switch statement logic in Comanche layout parser.
2017-05-09 10:16:11 +02:00
git-marijus
13b5eb0ad8 Merge pull request #762 from mjfriaza/dev
Updated the Spanish translation
2017-05-09 10:07:51 +02:00
zotlabs
e059efb4c4 handle mastodon urls in markdown/bbcode conversion 2017-05-08 19:10:08 -07:00
root
0be74c6551 Implemented switch statement logic in Comanche layout parser. 2017-05-08 20:55:31 -04:00
Manuel Jiménez Friaza
6fe6e1596f Updated the Spanish translation 2017-05-08 13:12:26 +02:00
zotlabs
0e7c3951a6 get rid of edit activities 2017-05-08 11:12:27 +02:00
zotlabs
40c8549cf5 get rid of edit activities 2017-05-08 11:12:09 +02:00
zotlabs
a7ea370ec3 cover photo was unintentionally disabled when block_public in effect 2017-05-08 11:11:50 +02:00
zotlabs
b6c6f06537 cover photo was unintentionally disabled when block_public in effect 2017-05-08 11:11:35 +02:00
zotlabs
2e531c103f error 2017-05-08 02:00:00 -07:00
zotlabs
1a05939e0b cleanup of last checkin 2017-05-07 18:05:29 -07:00
zotlabs
acb8e85b61 cover photo was unintentionally disabled when block_public in effect 2017-05-07 17:25:38 -07:00
zotlabs
8c38841a4d Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-05-07 14:43:38 -07:00
zotlabs
2c2ee706ac get rid of edit activities 2017-05-07 14:40:11 -07:00
Klaus Weidenbach
b7df4de4b7 👷🐛 Import table structure in TravisCI.
Fix a syntax error in schema_postres.sql which was discovered while
working on this.
2017-05-07 15:09:53 +02:00
git-marijus
b237425c94 Merge pull request #760 from anaqreon/2.4RC
Mail message mimetype was getting set as the subject due to wrong var…
2017-05-07 15:07:26 +02:00
git-marijus
bd3708870d Merge pull request #756 from dawnbreak/QA_testing
👷🐛 Import table structure in TravisCI.
2017-05-07 15:06:45 +02:00
git-marijus
2aa699d03e Merge pull request #761 from anaqreon/dev
Mail subject bug fix
2017-05-07 15:05:50 +02:00
Andrew Manning
1d20b2603a Mail subject bug fix 2017-05-07 08:52:26 -04:00
Andrew Manning
6576f9c0c3 Mail message mimetype was getting set as the subject due to wrong variable set order. 2017-05-07 07:29:45 -04:00
zotlabs
f840082aae Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-05-05 16:58:46 -07:00
Klaus Weidenbach
f162508ad1 👷🐛 Import table structure in TravisCI.
Fix a syntax error in schema_postres.sql which was discovered while
working on this.
2017-05-06 01:07:15 +02:00
Mario Vavti
3ccefa20e8 collapse sysapps if viewing a remote channel 2017-05-05 16:33:28 +02:00
Mario Vavti
00b19ccee0 collapse sysapps if viewing a remote channel 2017-05-05 16:32:20 +02:00
Mario Vavti
54d55fb62f css hack to make remote channel menu header look in line with the rest if in collapsed state 2017-05-05 14:41:55 +02:00
Mario Vavti
dcc8a94d07 css hack to make remote channel menu header look in line with the rest if in collapsed state 2017-05-05 14:40:35 +02:00
Mario Vavti
5dd501e0ea css fix 2017-05-05 12:58:27 +02:00
Mario Vavti
af7a3fc2ea css fix 2017-05-05 12:57:41 +02:00
zotlabs
4b4b06bec5 markdown autolinks - hubzilla bug #752 2017-05-05 12:46:12 +02:00
Klaus Weidenbach
54259593ea 💡 Add Doxygen fix for @var member variable documentation.
Add an input filter to Doxygen to parse @var class member variable
documentation, so it is bit more compatible how anybody else interpretes
it.
2017-05-05 12:45:34 +02:00
Klaus Weidenbach
73cb270b14 💡 correct some Doxygen syntax mistakes. 2017-05-05 12:44:23 +02:00
git-marijus
3d1df8337e Merge pull request #751 from dawnbreak/docu
💡 Add Doxygen fix for @var member variable documentation.
2017-05-05 12:33:58 +02:00
git-marijus
f08001a5a6 Merge pull request #753 from zotlabs/mdauto
markdown autolinks - hubzilla bug #752
2017-05-05 12:33:39 +02:00
zotlabs
ecbba93784 markdown autolinks - hubzilla bug #752 2017-05-05 02:28:38 -07:00
zotlabs
47ebddf99f markdown autolinks - hubzilla bug #752 2017-05-05 02:27:24 -07:00
zotlabs
c70ac572fa do away with single delivery (delivery from clones to singleton networks attached to other clones) 2017-05-04 22:08:12 -07:00
zotlabs
f0a2747d80 make service_plink pluggable 2017-05-04 21:55:56 -07:00
zotlabs
67918033f9 oauth2 dynamic client registration 2017-05-04 20:58:19 -07:00
zotlabs
93335cdb0e typo 2017-05-04 19:30:49 -07:00
zotlabs
e308c3d34a Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-05-04 19:20:29 -07:00
zotlabs
977677d005 typo 2017-05-04 19:19:24 -07:00
zotlabs
faf9814788 typo 2017-05-04 19:18:54 -07:00
Klaus Weidenbach
eeb9103e26 💡 correct some Doxygen syntax mistakes. 2017-05-05 00:23:57 +02:00
Klaus Weidenbach
1f6386bd60 💡 Add Doxygen fix for @var member variable documentation.
Add an input filter to Doxygen to parse @var class member variable
documentation, so it is bit more compatible how anybody else interpretes
it.
2017-05-04 21:58:25 +02:00
Mario Vavti
5c7acf4807 update sabredav to version 3.2.2 2017-05-04 10:51:39 +02:00
Mario Vavti
a92b9b7adb Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-05-04 10:12:05 +02:00
Klaus Weidenbach
b4529229d2 ⬆️ Update SimplePie library to 1.5.
There is a new stable release, so upgrade from the dev branch to the new
1.5 release.
2017-05-04 10:07:29 +02:00
git-marijus
bc776a9534 Merge pull request #750 from zotlabs/abnothere
abook_not_here flag created to indicate singleton connections which a…
2017-05-04 09:59:35 +02:00
git-marijus
45c64c2d2e Merge pull request #749 from anaqreon/dev
German translations for demohub
2017-05-04 09:56:45 +02:00
git-marijus
73f41023f3 Merge pull request #748 from anaqreon/2.4RC
German translations for demohub
2017-05-04 09:56:15 +02:00
git-marijus
139c1a956f Merge pull request #747 from dawnbreak/simplepie
⬆️ Update SimplePie library to 1.5.
2017-05-04 09:54:32 +02:00
zotlabs
b08af13872 oauth2/oidc testing (please do not port - this requires several extra DB tables to work) 2017-05-03 22:37:06 -07:00
zotlabs
1e59d9ade5 one file hadn't yet been saved when doing pull request 2017-05-03 19:02:20 -07:00
zotlabs
519aef7ff5 abook_not_here flag created to indicate singleton connections which are connected to this channel but not on this hub. abook_instance enumerates which hubs the connections is valid, but we ultimately need something more efficiently searchable to decide what operations are supported w/r/t this connection in the context of this hub. This flag is ignored during sync to clones although the code to set it correctly during channel creation, import, and sync has not yet been implemented. 2017-05-03 18:50:32 -07:00
zotlabs
05cbdc6915 cleanup fallback directory list 2017-05-03 18:30:11 -07:00
Andrew Manning
8d5e028b5b Add contributor to credits 2017-05-03 20:56:55 -04:00
Andrew Manning
153ffbe558 Add contributor to credits 2017-05-03 20:56:14 -04:00
Andrew Manning
394352d882 German translations for demohub 2017-05-03 20:52:00 -04:00
zotlabs
c0edfee224 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-05-03 17:46:51 -07:00
Andrew Manning
06d2d31777 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-05-03 20:44:54 -04:00
Andrew Manning
535691a05c German translations for demohub 2017-05-03 20:44:23 -04:00
Klaus Weidenbach
d2058ee151 ⬆️ Update SimplePie library to 1.5.
There is a new stable release, so upgrade from the dev branch to the new
1.5 release.
2017-05-04 00:58:02 +02:00
Mario Vavti
263cfe2538 bump version 2017-05-03 14:46:45 +02:00
Mario Vavti
717190975f bump version 2017-05-03 14:37:50 +02:00
Mario Vavti
d6a3f7765a add check for php zip extension 2017-05-03 12:29:26 +02:00
Andrew Manning
f9d40adb18 Update INSTALL.txt
The webpage element portation tools need the zip extension, such as the `php7.0-zip` package on Debian.
2017-05-03 11:56:33 +02:00
git-marijus
087f9784e3 Merge pull request #741 from redmatrix/anaqreon-patch-2
Update INSTALL.txt
2017-05-03 11:53:25 +02:00
git-marijus
3bd74aabaa Merge pull request #742 from dawnbreak/QA_testing
💡 Add Unit Tests for AccessList class.
2017-05-03 11:49:43 +02:00
zotlabs
4933aef543 more cleanup 2017-05-02 22:40:31 -07:00
zotlabs
0e5d824bff finish the red conversion of the markdown utilities considering their relation to protocol plugins. 2017-05-02 22:10:53 -07:00
zotlabs
b2d2dcc7fe more code refactoring to put external protocol dependencies in plugins. 2017-05-02 20:17:47 -07:00
zotlabs
7acb068590 profile_sidebar hook ignored the updated html content 2017-05-02 18:24:18 -07:00
zotlabs
80ec92ce8d Revert "move theme specific files to theme dir"
This reverts commit e332d1074f.
2017-05-02 12:46:50 -07:00
zotlabs
83c4dd6bda typo 2017-05-01 22:56:11 -07:00
zotlabs
e332d1074f move theme specific files to theme dir 2017-05-01 21:10:04 -07:00
zotlabs
42ed73ed4a add cdav files 2017-05-01 21:07:11 -07:00
zotlabs
5ed5c76d3f new function Hook::register_array() to bulk register several hooks from the same file with default settings 2017-05-01 18:02:00 -07:00
zotlabs
fe2288a88f Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-05-01 16:42:16 -07:00
Klaus Weidenbach
8f0a0add1e 💡 Add Unit Tests for AccessList class.
Also some Doxygen docu for this class.
2017-05-01 22:23:32 +02:00
Mario Vavti
3645eb18f8 version and strings 2017-05-01 15:43:03 +02:00
Mario Vavti
610e80a19b update bs4-dev 2017-05-01 15:21:02 +02:00
zotlabs
d8460f147b use hostname, not url 2017-05-01 15:14:25 +02:00
zotlabs
71e508c7cd authenticate onepoll so we can receive private posts/comments in zotfeed; if local server bypass the network access and invoke zotfeed directly. 2017-05-01 15:14:10 +02:00
zotlabs
d3fcef43f8 ugly postgres fixes 2017-05-01 15:13:53 +02:00
zotlabs
cbc906c438 more work on client side e2ee 2017-05-01 15:12:43 +02:00
zotlabs
d57169fcf6 profile_tabs is now channel_apps (except the original was left behind as the gitwiki addon still uses it). A couple of things were modernised but basic functionality is the same as the latest revisions to the original. 2017-05-01 15:11:51 +02:00
zotlabs
fdf639e1fb more work client mail crypto 2017-05-01 15:10:42 +02:00
zotlabs
25760e30f9 make mail_store() safe for postgres or mysql5.7 - although this interface needs to be refactored in the future 2017-05-01 15:10:08 +02:00
zotlabs
3cdcb121c5 use hostname, not url 2017-04-30 19:40:17 -07:00
zotlabs
968209471e authenticate onepoll so we can receive private posts/comments in zotfeed; if local server bypass the network access and invoke zotfeed directly. 2017-04-30 18:24:48 -07:00
zotlabs
d71a53f24e Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-04-30 16:50:10 -07:00
zotlabs
c845d20352 ugly postgres fixes 2017-04-30 16:03:01 -07:00
Andrew Manning
11e888fb7c Update INSTALL.txt
The webpage element portation tools need the zip extension, such as the `php7.0-zip` package on Debian.
2017-04-30 13:49:53 -04:00
zotlabs
230617208b more work on client side e2ee 2017-04-29 16:30:11 -07:00
Andrew Manning
e99be61d49 Reformatted Webpages.php to clean up whitespace, where there was a mixture of spaces and tabs for indentation. No other changes made. 2017-04-29 12:56:25 -04:00
Andrew Manning
635b8ff73a Update api_zot.bb
Fix incorrect parameter name
2017-04-29 12:42:46 -04:00
git-marijus
c9daafc887 Merge pull request #739 from zotlabs/mast35
update feedutils with as:author changes, also update tests
2017-04-28 09:28:22 +02:00
zotlabs
033cf61380 profile_tabs is now channel_apps (except the original was left behind as the gitwiki addon still uses it). A couple of things were modernised but basic functionality is the same as the latest revisions to the original. 2017-04-27 22:37:51 -07:00
zotlabs
70e17f9194 more work client mail crypto 2017-04-27 20:22:28 -07:00
zotlabs
89e7e5e4fb make mail_store() safe for postgres or mysql5.7 - although this interface needs to be refactored in the future 2017-04-27 20:08:38 -07:00
zotlabs
ab32372f8f update feedutils with as:author changes, also update tests 2017-04-27 16:50:37 -07:00
zotlabs
2778e63d6c issues from hubzilla:#737 2017-04-27 14:33:01 +02:00
git-marijus
d16fbda0f8 Merge pull request #736 from zotlabs/feedfck
provide a broken feed as a separate module
2017-04-27 09:49:13 +02:00
zotlabs
e8ea8d203d more client-side mail privacy work 2017-04-26 23:05:30 -07:00
zotlabs
ac670856f6 provide a broken feed as a separate module 2017-04-26 20:14:45 -07:00
zotlabs
88149f56bb Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-04-26 20:11:12 -07:00
zotlabs
6fcfab3488 issues from hubzilla:#737 2017-04-26 19:47:05 -07:00
zotlabs
dab3e90353 provide a broken feed as a separate module 2017-04-26 13:26:50 -07:00
Mario Vavti
1c304eb8ba make mastodon happy args 2017-04-26 22:16:23 +02:00
Mario Vavti
d1c84ad9f0 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-04-26 14:20:16 +02:00
git-marijus
c39a680096 Merge pull request #733 from zotlabs/etwoeemail
Etwoeemail
2017-04-26 14:19:54 +02:00
git-marijus
e8ddee284c Merge pull request #731 from anaqreon/dev
When template "none" is used in a webpage layout, then the contents o…
2017-04-26 14:18:42 +02:00
git-marijus
abd7cfdc97 Merge pull request #734 from zotlabs/emojionelicense
Emojionelicense
2017-04-26 14:17:32 +02:00
zotlabs
c904bd3a62 The rest of the library and backend changes to support client-side e2ee and deprecate previous uses of item_obscured. 2017-04-26 14:16:07 +02:00
zotlabs
d48bda88e6 In the rare case where a default channel is not selected but channels actually exist, you should be able to visit /manage and set a default channel. Originally I believe this may have been possible but the ability was lost when delegation was added to the interface - which requires an active channel. Remove the active channel restriction so that the rest of the interface works (channel selections can be made and the ability to set a default is provided) however delegation info isn't presented unless there is an active channel. 2017-04-26 14:13:45 +02:00
zotlabs
4ca24f114b support reverse magic-auth in oembed requests. 2017-04-26 14:12:52 +02:00
zotlabs
7667c630a4 provide a broken feed for services which require a broken feed 2017-04-26 14:12:11 +02:00
zotlabs
97458b2885 make it easier to hook into feed headers in the future 2017-04-26 14:11:55 +02:00
zotlabs
803bff4043 smilies - add param to only list default emoticons 2017-04-26 14:09:45 +02:00
zotlabs
17aa8da9f0 Attribution is required 2017-04-26 01:08:03 -07:00
zotlabs
7d5ee81628 database support for client side e2ee for private mail 2017-04-25 21:52:24 -07:00
zotlabs
b88be137ca provide a broken feed for services which require a broken feed 2017-04-25 20:48:38 -07:00
zotlabs
195eb71200 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-04-25 19:43:01 -07:00
zotlabs
f36e384ed7 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-04-25 19:42:42 -07:00
zotlabs
3a3bd582b1 mostly text formatting changes 2017-04-25 19:42:06 -07:00
zotlabs
a342a5f8e0 smilies - add param to only list default emoticons 2017-04-25 16:36:37 -07:00
Mario Vavti
42d139ee82 Revert "fix the query of last pullrequest"
This reverts commit bda9a833ba.
2017-04-24 09:05:33 +02:00
zotlabs
f1c6fd08c4 database upgrade 2017-04-23 20:28:04 -07:00
Andrew Manning
8ad2b3e7a1 When template "none" is used in a webpage layout, then the contents of the page should be the sole output, with no other code before or after the page element content. 2017-04-23 21:22:40 -04:00
zotlabs
a84695bb86 if there is no site record, site_dead won't be 0, in a left join it will in fact be null. As long as it isn't 1, we should attempt delivery. 2017-04-23 17:13:38 -07:00
zotlabs
c2ec3b0bf4 if there is no site record, site_dead won't be 0, in a left join it will in fact be null. As long as it isn't 1, we should attempt delivery. 2017-04-23 16:38:44 -07:00
Mario Vavti
bda9a833ba fix the query of last pullrequest 2017-04-23 17:22:28 +02:00
Mario Vavti
ac12f923ea Revert "Revert "if there is no site record, site_dead won't be 0, in a left join it will in fact be null. As long as it isn't 1, we should attempt delivery.""
This reverts commit b6be0e1b99.
2017-04-23 16:05:14 +02:00
Mario Vavti
b6be0e1b99 Revert "if there is no site record, site_dead won't be 0, in a left join it will in fact be null. As long as it isn't 1, we should attempt delivery."
This reverts commit 42f5291f69.
2017-04-23 12:58:36 +02:00
git-marijus
01809b08c9 Merge pull request #730 from zotlabs/nullsite
if there is no site record, site_dead won't be 0, in a left join it w…
2017-04-23 12:21:19 +02:00
zotlabs
42f5291f69 if there is no site record, site_dead won't be 0, in a left join it will in fact be null. As long as it isn't 1, we should attempt delivery. 2017-04-22 23:15:00 -07:00
git-marijus
1d271ee771 Merge pull request #728 from zotlabs/typo1
Typo1
2017-04-21 09:24:58 +02:00
zotlabs
1d19ea4a33 typo - this time the correct repo 2017-04-20 21:31:44 -07:00
zotlabs
0d9b6ebc36 Revert "typo" - wrong repo
This reverts commit d9a48092e6.
2017-04-20 21:30:29 -07:00
zotlabs
d9a48092e6 typo 2017-04-20 21:26:36 -07:00
zotlabs
02ea713d6a make it easier to hook into feed headers in the future 2017-04-20 21:25:37 -07:00
zotlabs
94f15e3551 The rest of the library and backend changes to support client-side e2ee and deprecate previous uses of item_obscured. 2017-04-20 20:19:15 -07:00
zotlabs
2d90b831f0 In the rare case where a default channel is not selected but channels actually exist, you should be able to visit /manage and set a default channel. Originally I believe this may have been possible but the ability was lost when delegation was added to the interface - which requires an active channel. Remove the active channel restriction so that the rest of the interface works (channel selections can be made and the ability to set a default is provided) however delegation info isn't presented unless there is an active channel. 2017-04-20 19:52:50 -07:00
git-marijus
35110b6327 Merge pull request #723 from zotlabs/followfeed
follow_from_feed issue when called from push
2017-04-20 10:08:10 +02:00
zotlabs
f52c670c05 support reverse magic-auth in oembed requests. 2017-04-19 20:48:10 -07:00
zotlabs
f3adc8d738 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-04-19 17:55:07 -07:00
zotlabs
40f6280c48 follow_from_feed issue when called from push 2017-04-19 17:53:50 -07:00
zotlabs
1c6d2857cb follow_from_feed issue when called from push 2017-04-19 17:52:15 -07:00
Mario Vavti
09967598e1 order wiki pages by creation date 2017-04-19 10:51:50 +02:00
zotlabs
d3feb93619 typo 2017-04-19 10:25:57 +02:00
Mario Vavti
0bba5cdc30 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-04-19 10:23:52 +02:00
zotlabs
a3b1eec548 backend infrastructure for 'channel protection password'; which will be used to optionally encrypt export files and resolve channel/identity ownership/hijacking disputes 2017-04-19 09:59:50 +02:00
zotlabs
f174c4fccb don't allow any null fields in notify creation 2017-04-19 09:58:31 +02:00
zotlabs
32eead1542 webfinger cleanup 2017-04-19 09:58:13 +02:00
git-marijus
1701e100cf Merge pull request #722 from zotlabs/env_prv
envelope privacy
2017-04-19 09:51:08 +02:00
zotlabs
397fef519c give the item_obscured flag a new lease on life by using it to designate third party client-side e2ee or binary content which can only be downloaded and not viewed directly on the web (as a side effect this also allows binary files to be submitted as activities/content). The content display is suppressed and replaced with a download button. This is unfinished but harmless to backport while work is in progress unless told otherwise. Future development will take care of the remaining loose ends. 2017-04-18 21:18:49 -07:00
zotlabs
53bd0146bb oembed cache: don't store the url (which may need to be truncated), store a hash instead. This will allow us to convert the table to utf8mb4 without running into mysql key length restrictions as well as dealing with the potential ambiguity of truncated urls. 2017-04-18 18:31:10 -07:00
zotlabs
a037758245 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-04-18 18:18:53 -07:00
zotlabs
ffce1fc177 envelope privacy 2017-04-18 17:29:11 -07:00
zotlabs
368f88740a envelope privacy 2017-04-18 17:26:50 -07:00
Mario Vavti
ab369ab91d more lock carets 2017-04-18 14:29:56 +02:00
Mario Vavti
ddddf29f82 update to bs-git 2017-04-18 14:20:35 +02:00
Mario Vavti
fdc36fb140 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-04-18 14:15:52 +02:00
Mario Vavti
9ce5e25507 the caret beside the lock seems a little overkill 2017-04-18 14:15:38 +02:00
git-marijus
0bc4de2f34 Merge pull request #721 from zotlabs/client_e2ee
allow downloading via viewsrc to support client side e2ee
2017-04-18 13:57:01 +02:00
zotlabs
e3dc242a3c allow downloading via viewsrc to support client side e2ee 2017-04-17 20:48:57 -07:00
zotlabs
bff2ed3837 allow downloading via viewsrc to support client side e2ee 2017-04-17 20:45:53 -07:00
zotlabs
9c31e26cf1 include attach.php here (boot.php) instead of each file that uses it. Eventually this needs to move to an autoloader. 2017-04-17 17:54:50 -07:00
zotlabs
7a31c039fb Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-04-17 16:04:17 -07:00
Mario Vavti
7cca2b7fb0 missing clearfix 2017-04-16 12:09:09 +02:00
Mario Vavti
10e5cf01cc css fixes 2017-04-16 10:59:26 +02:00
git-marijus
384c19e54e Merge pull request #717 from dawnbreak/simplepie
⬆️ Update SimplePie library.
2017-04-15 17:40:45 +02:00
Klaus Weidenbach
7d5e7bf6c8 We do not parse the body in discover_by_url(), so no need to preserve iframes in SimplePie. 2017-04-15 15:20:14 +02:00
Klaus Weidenbach
b6459e6172 ⬆️ Update SimplePie library.
As a follow up to issue #699 update SimplePie from 1.2.1-dev (around
6years old) to current git master (1.4.4-dev). We use the master branch
until the next release because it contains our patch for enclosure
titles already. The other patches in the library from us can be done by
configuring the SimplePie object in our code instead.
Used composer to manage this library and use class autoloading.
Add some unit tests for include/feedutils.php, but the interesting parts
are unfortunately not testable with the current code.
2017-04-15 00:41:42 +02:00
git-marijus
b4f65840d1 Merge pull request #716 from dawnbreak/docu
Some documentation for include/network.php and some fixes.
2017-04-14 11:54:20 +02:00
Klaus Weidenbach
b266ade4fe Some documentation for include/network.php and some fixes.
Some variables had wrong names and have never been used.
2017-04-14 00:21:54 +02:00
Mario Vavti
0f0fba0e9e missing includes 2017-04-13 23:20:09 +02:00
Mario Vavti
54f25609c9 bs font set might work better for win and mac 2017-04-13 12:28:38 +02:00
Mario Vavti
c48e90a556 bump version 2017-04-13 12:15:20 +02:00
Mario Vavti
e0409386c2 update bs-dev 2017-04-13 12:13:11 +02:00
git-marijus
2aa69257a4 Merge pull request #715 from zotlabs/cpp
backend infrastructure for 'channel protection password'; which will …
2017-04-13 12:08:17 +02:00
zotlabs
60d4b4c4f6 remove fulltext indexes for innodb 2017-04-12 20:21:56 -07:00
zotlabs
4a6a06fdc0 change default database settings 2017-04-12 20:20:46 -07:00
zotlabs
c631da7b0d whitespace 2017-04-12 19:25:46 -07:00
zotlabs
9d425b4727 typo 2017-04-12 18:48:30 -07:00
zotlabs
07d62bc111 typo 2017-04-12 18:48:06 -07:00
zotlabs
91d0f87181 make sure the new fields don't leak through sync packets and break older versions 2017-04-12 18:46:41 -07:00
zotlabs
1c32564536 backend infrastructure for 'channel protection password'; which will be used to optionally encrypt export files and resolve channel/identity ownership/hijacking disputes 2017-04-12 18:46:15 -07:00
zotlabs
da07108be9 make sure the new fields don't leak through sync packets and break older versions 2017-04-12 17:43:27 -07:00
zotlabs
d7f4526a00 backend infrastructure for 'channel protection password'; which will be used to optionally encrypt export files and resolve channel/identity ownership/hijacking disputes 2017-04-12 17:32:28 -07:00
zotlabs
63dd6ad01a don't allow any null fields in notify creation 2017-04-11 23:05:56 -07:00
zotlabs
7b173a75e4 correct the mastodon "boost" (aka 'share') author attribution by checking for share activities and pulling the original author info from the activity:object 2017-04-12 07:04:22 +02:00
zotlabs
cb5a047e5d ugly hack to webfinger to allow connections to be made to mastodon servers. 2017-04-12 07:04:10 +02:00
zotlabs
ed5abe5981 some signatures showing as invalid because of recent import_author_zot() changes. 2017-04-12 07:03:20 +02:00
zotlabs
940534e303 webfinger cleanup 2017-04-11 22:02:29 -07:00
zotlabs
1609473e5d correct the mastodon "boost" (aka 'share') author attribution by checking for share activities and pulling the original author info from the activity:object 2017-04-11 20:17:22 -07:00
git-marijus
1f951e2bd3 Merge pull request #714 from mjfriaza/dev
Updated the Spanish translation
2017-04-11 06:55:12 +02:00
zotlabs
ed8e4962b9 ugly hack to webfinger to allow connections to be made to mastodon servers. 2017-04-10 20:31:45 -07:00
Manuel Jiménez Friaza
10f9f9cc80 Updated the Spanish translation 2017-04-10 12:50:42 +02:00
zotlabs
56c8e00b84 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-04-09 20:27:54 -07:00
zotlabs
063577c19e some signatures showing as invalid because of recent import_author_zot() changes. 2017-04-09 20:25:41 -07:00
git-marijus
57f20c0c22 Merge pull request #713 from zotlabs/photo-zero
Photo zero
2017-04-08 10:15:40 +02:00
zotlabs
e682b93883 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-04-07 15:00:31 -07:00
zotlabs
a32b097e3c photo size-0 issue 2017-04-07 14:57:29 -07:00
zotlabs
2ebf76cd50 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-04-07 14:56:53 -07:00
zotlabs
65e5894363 photo size-0 issue 2017-04-07 14:56:12 -07:00
zotlabs
dbef80f7bd fix from downstream 2017-04-07 13:37:18 -07:00
git-marijus
06b0c89aee Merge pull request #712 from zotlabs/fr_update
Fr update (Monret)
2017-04-07 21:00:37 +02:00
Mario Vavti
113bfe8fa2 remove redundant string 2017-04-07 18:41:13 +02:00
Mario Vavti
df4e193990 the string was there but the template var was wrong 2017-04-07 13:35:17 +02:00
Mario Vavti
28207c3313 css fixes and missing string 2017-04-07 11:31:10 +02:00
zotlabs
e685c580f2 only log zot_refresh content if json decode was successful. 2017-04-07 11:08:55 +02:00
zotlabs
e6139c9f49 revisit the import_author_zot algorithm yet again. There was one bug that we weren't returning necessary information in the first SQL query - and performance/loading problem if one tries to refresh a dead site. 2017-04-07 11:08:26 +02:00
zotlabs
fac654ec5d remove redundant and non-functional/broken check for successfully cloned channel record which was left over from an earlier method of creating the table; which was deprecated a few months back. 2017-04-07 10:23:02 +02:00
zotlabs
1352e334b1 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-04-06 20:07:15 -07:00
zotlabs
69ab6639b2 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-04-06 20:05:53 -07:00
zotlabs
d52ee7ae27 only log zot_refresh content if json decode was successful. 2017-04-06 19:55:43 -07:00
zotlabs
ebcfc7f2b2 revisit the import_author_zot algorithm yet again. There was one bug that we weren't returning necessary information in the first SQL query - and performance/loading problem if one tries to refresh a dead site. 2017-04-06 16:24:19 -07:00
zotlabs
b347e1d861 import_author_xchan - since we rarely refresh zot-info for non-connections, force a cache reload once a week to catch things like profile photo updates and location changes 2017-04-06 20:19:27 +02:00
zotlabs
8cb4a29a51 revert grid and bars icon size change 2017-04-05 19:21:27 -07:00
zotlabs
9fb08fb502 make legal_webbie() pluggable - * this should not be merged with federated projects unless the federation drivers make use of the hooks. 2017-04-05 19:08:43 -07:00
zotlabs
6710a77c26 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-04-05 17:14:11 -07:00
zotlabs
e442fe753e Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-04-05 17:11:35 -07:00
zotlabs
a4685e6df3 import_author_xchan - since we rarely refresh zot-info for non-connections, force a cache reload once a week to catch things like profile photo updates and location changes 2017-04-05 17:08:13 -07:00
Mario Vavti
a4f6c24273 we should probably stick to 0.875rem font-size (this is equal to 14px with a default browser setting of 16px) to give 90% of the members a nice desktop experience. The font-awesome icons are only rendered clean with 14px (and multiples) fontsize. They look somewhat unfocused with 16px font-size. The font-size setting has moved to display setting -> custom theme settings. Set it to 1rem there to use the slightly taller default browser size. 2017-04-05 21:34:36 +02:00
Mario Vavti
53853814ff adjust font-size 2017-04-05 21:13:48 +02:00
Mario Vavti
fb31f629c6 update bd-dev and remove hotfix 2017-04-05 14:12:18 +02:00
zotlabs
50612565e9 create site_store_lowlevel() to initialise data structures for the site table 2017-04-04 10:02:33 +02:00
zotlabs
a92256e1cb legal_webbie() now provides different character rules depending on whether you federate or not. Added some comments in a few places that needed them. 2017-04-03 22:13:12 -07:00
zotlabs
d6c23486d5 create site_store_lowlevel() to initialise data structures for the site table 2017-04-03 16:43:30 -07:00
zotlabs
d2bafdb2bf fr strings update (Monret) 2017-04-03 15:56:47 -07:00
zotlabs
f2f2b534e6 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-04-03 15:55:22 -07:00
zotlabs
2d9ae8ff2c Revert "fr strings update (Monret)"
This reverts commit 4e4d406d23.
2017-04-03 15:55:03 -07:00
zotlabs
4e4d406d23 fr strings update (Monret) 2017-04-03 15:53:48 -07:00
zotlabs
a9bda2b12e sql error photos_albums_list with non-logged-in viewer 2017-04-03 10:55:42 +02:00
zotlabs
5fb7ea8dbd fix connectDefaultShare generated js function, though it isn't obvious if we still use it. 2017-04-03 10:53:07 +02:00
zotlabs
d35678b891 change hook for perm_is_allowed while retaining backwards compatibility 2017-04-03 10:52:52 +02:00
zotlabs
405e3fc214 import_author_zot() - check for both hubloc and xchan entries. This should catch and repair entries which were subject to transient storage failures. 2017-04-03 10:51:31 +02:00
zotlabs
fbba78411d app sorting issue 2017-04-03 10:50:43 +02:00
zotlabs
75cd816e02 logic error 2017-04-03 10:49:20 +02:00
zotlabs
c8a886e399 import authors from any unrecognised network as network 'unknown'. 2017-04-03 10:48:41 +02:00
zotlabs
19b2568133 whitespace 2017-04-03 10:45:39 +02:00
git-marijus
ccc8a05eb0 Merge pull request #711 from zotlabs/crypto-upgrade
crypto updates
2017-04-03 10:38:09 +02:00
zotlabs
26125bcf0b sql error photos_albums_list with non-logged-in viewer 2017-04-02 22:20:37 -07:00
zotlabs
263efbfe39 reference to deprecated function import_author_diaspora in socgraph.php 2017-04-02 21:49:50 -07:00
zotlabs
9a5ce2354d remove some obsolete permissions stuff 2017-04-02 20:51:40 -07:00
zotlabs
f25f5aeaaa fix connectDefaultShare generated js function, though it isn't obvious if we still use it. 2017-04-02 20:35:45 -07:00
zotlabs
af14020e42 change hook for perm_is_allowed while retaining backwards compatibility 2017-04-02 20:03:27 -07:00
zotlabs
4a49643bcd import_author_zot() - check for both hubloc and xchan entries. This should catch and repair entries which were subject to transient storage failures. 2017-04-02 19:46:20 -07:00
zotlabs
29596d12e3 app sorting issue 2017-04-02 17:34:16 -07:00
zotlabs
1a28fb2a0c logic error 2017-04-02 17:12:42 -07:00
zotlabs
d985db60cc import authors from any unrecognised network as network 'unknown'. 2017-04-02 17:09:51 -07:00
zotlabs
a76ad1478f crypto updates 2017-04-02 16:44:44 -07:00
zotlabs
044067f055 harden security 2017-04-02 16:40:36 -07:00
zotlabs
810d9e21bc use aes-ctr which is slightly/arguably better than a poke in the eye and don't restrict the crypto algorithm by server role. 2017-04-01 15:30:59 -07:00
zotlabs
7256579c16 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-03-31 17:27:18 -07:00
zotlabs
ecf30b2c71 strings 2017-03-31 17:25:04 -07:00
Mario Vavti
95f4f14dca triple a is more sane 2017-03-31 19:14:24 +02:00
Mario Vavti
391854058e minor css adjustments 2017-03-31 18:13:36 +02:00
Mario Vavti
1bcee2f11c various form css fixes 2017-03-31 16:13:58 +02:00
Mario Vavti
572a04b40a make btn-outline-secondary color slightly darker 2017-03-31 14:20:13 +02:00
Mario Vavti
d9ee8b2c32 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-03-31 13:59:43 +02:00
Mario Vavti
614366e499 css fixes 2017-03-31 13:59:28 +02:00
git-marijus
89e3f3210f Merge pull request #710 from dawnbreak/importcsrf
🔒 Add CSRF protection for import and import_items.
2017-03-31 13:40:02 +02:00
Mario Vavti
dc55c710da add max height to #navbar-collapse-2 2017-03-31 13:38:55 +02:00
Mario Vavti
47817b8ae1 version bump 2017-03-31 11:11:07 +02:00
Mario Vavti
3e66549ea4 regenerate hmessages.po 2017-03-31 11:10:31 +02:00
zotlabs
8b7d0f33c3 fix a couple more instances where we were still calling mail() directly for site critical messages 2017-03-31 10:33:17 +02:00
zotlabs
a20fd4d463 get rid of some more deprecated uses of $a 2017-03-31 10:31:29 +02:00
zotlabs
bfd506f184 remove obsolete app argument from load_pdl 2017-03-31 10:30:41 +02:00
zotlabs
c20aa6062c get rid of get_app() 2017-03-31 10:30:17 +02:00
zotlabs
b2a51db14e add 'author_is_pmable()' function with plugin hooks to control whether or not to display a 'send mail' link in the thread author menu. 2017-03-31 10:28:54 +02:00
zotlabs
33ff7bf968 provide platform specific install script 2017-03-31 10:27:28 +02:00
zotlabs
57a8b3f857 provide compatibility with old-style update system 2017-03-31 10:26:44 +02:00
zotlabs
6e5a06421f get rid of 'davguest' and allow for project specific DB updates (currently db updates are common between all possible projects/subprojects/forks). 2017-03-31 10:26:06 +02:00
zotlabs
5f0004b416 move db_upgrade to zlib 2017-03-31 10:25:27 +02:00
zotlabs
e79f450af9 aes256gcm is not ready for prime time. Stay tuned. Until it is, we're pretty much stuffed unless we go to 3rd party crypto libs. 2017-03-30 21:45:29 -07:00
zotlabs
c4f5d17db6 Merge branch 'importcsrf' of https://github.com/dawnbreak/hubzilla into csrf 2017-03-30 21:05:31 -07:00
zotlabs
d1a018f2e8 whitespace 2017-03-30 21:04:55 -07:00
zotlabs
6118570118 make aes256gcm the primary crypto mode 2017-03-30 20:43:49 -07:00
zotlabs
a9cceea850 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-03-30 16:10:59 -07:00
Klaus Weidenbach
81736a0129 🔒 Add CSRF protection for import and import_items. 2017-03-30 23:17:32 +02:00
Klaus
dea4879938 Merge pull request #709 from dawnbreak/docu
Add some documentation for import functions.
2017-03-30 23:10:53 +02:00
Klaus Weidenbach
2e2f984c45 Add some documentation for import functions. 2017-03-30 23:06:00 +02:00
Mario Vavti
bb639b08f7 do not allow creating two wikis with the same name 2017-03-30 15:07:48 +02:00
Mario Vavti
5167f70015 add some missing files 2017-03-30 12:26:46 +02:00
Mario Vavti
cca5349110 update to textcomplete v 1.8.0 2017-03-30 12:21:15 +02:00
Mario Vavti
5abe7d2dfb more css fixes 2017-03-30 12:08:10 +02:00
zotlabs
181d9a0777 circular logic - we need the mailbox to find the last message so move the code block back where it was, and only set a direct mid if one was specified. 2017-03-30 11:54:21 +02:00
zotlabs
5219c4a09a when clicking a notification to view a private mail message, actually view that message instead of the most recent. 2017-03-30 11:54:07 +02:00
Mario Vavti
4da65183e0 css fixes 2017-03-30 11:45:16 +02:00
zotlabs
b51ca4c8d3 circular logic - we need the mailbox to find the last message so move the code block back where it was, and only set a direct mid if one was specified. 2017-03-29 17:42:31 -07:00
zotlabs
198d2ab607 when clicking a notification to view a private mail message, actually view that message instead of the most recent. 2017-03-29 16:41:27 -07:00
zotlabs
f43428aacf channel_store_lowlevel declared twice 2017-03-29 16:16:29 -07:00
zotlabs
2d4f84563b Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-03-29 16:11:50 -07:00
Mario Vavti
418d102663 remove hubzilla.site from directory fallback servers until further notice 2017-03-29 15:56:01 +02:00
Mario Vavti
3b6a0d8e5c remove hubzilla.site from directory fallback servers until further notice 2017-03-29 15:55:21 +02:00
Mario Vavti
29c9972b86 missing closing bracket and semicolon 2017-03-29 15:19:54 +02:00
Mario Vavti
7033966bb8 create channel_store_lowlevel() 2017-03-29 15:16:41 +02:00
Mario Vavti
e90e4e4a59 css fixes 2017-03-29 14:45:50 +02:00
Mario Vavti
954176cfc3 bump version 2017-03-29 14:22:37 +02:00
zotlabs
a8a6d807ff allow setting the system email name/address/reply 2017-03-29 14:14:40 +02:00
zotlabs
fe5f109af5 more cloud updates - upgrade the DAV structures as well. 2017-03-29 14:14:05 +02:00
zotlabs
f1da003020 some more photo issues 2017-03-29 14:13:10 +02:00
zotlabs
ea5a7180c7 fix photo prvnxt after all the changes yesterday 2017-03-29 14:12:24 +02:00
zotlabs
9d0e2cbd89 more work on the photo album mess 2017-03-29 14:11:56 +02:00
zotlabs
032b6f193d photos_album_exists() requires an observer to work correctly; provide it. 2017-03-29 14:11:22 +02:00
zotlabs
e49c59959b use the same host macro for sender address as for reply_to address 2017-03-29 14:09:58 +02:00
zotlabs
b03cd330e5 begin the process of using the relevant attach directory/path for photo albums instead of an album basename which may not be unique. Created an 'ellipsify()' function to shorten long names and keep the beginning and end intact 2017-03-29 14:09:19 +02:00
zotlabs
542fa4a08c more markdown purification 2017-03-29 14:05:12 +02:00
zotlabs
515f1e76b0 perform attach_upgrade() 2017-03-29 14:04:44 +02:00
zotlabs
d95f7efea7 after all of this, I would be very hesitant to use any multi-user system which uses markdown and which doesn't have a large security budget. 2017-03-29 14:04:04 +02:00
zotlabs
e97dd48b4c even more fine tuning of the markdown purifier - especially when used with the wiki 2017-03-29 14:03:24 +02:00
zotlabs
5915f31950 add function attach_syspaths to calculate the contents of os_path and display_path; add this to the rename function. We will also need it to populate existing file/photo structures as an upgrade task. 2017-03-29 13:57:15 +02:00
zotlabs
8caa4d9e37 attach_folder_rpaths() providing incorrect results 2017-03-29 13:56:43 +02:00
zotlabs
d5525a38f1 various input filter fixes 2017-03-29 13:56:31 +02:00
zotlabs
e9a5af6109 simplify the message signing spaghetti 2017-03-29 13:50:27 +02:00
zotlabs
fd6b32758e namespace error 2017-03-29 13:47:24 +02:00
zotlabs
4387fb715b ensure z_input_filter is called exactly once, since we now depend on the number of htmlspecialchars operations for
markdown content. Also ensure that the content is escaped the correct number of times on imported items.
2017-03-29 13:45:42 +02:00
zotlabs
d7aaca6947 more work related to attach/photo and os_path, display_path and general code cleanup 2017-03-29 13:44:55 +02:00
zotlabs
fa5115b3ed add os_path and display_path to photos, fix some issues with multiple path separators after cloud/nickname in the content field of attach and photos 2017-03-29 13:44:17 +02:00
zotlabs
ec5e1067bc store os_path and display_path with files 2017-03-29 13:43:13 +02:00
zotlabs
ee46faff1a dim class was un-themed 2017-03-29 13:42:17 +02:00
zotlabs
fa629841bd input filter updates 2017-03-29 13:39:36 +02:00
zotlabs
155b57c2de fix group by item query 2017-03-29 13:38:29 +02:00
zotlabs
6ea32a8ba3 class MarkdownSoap to safely store markdown by purifying and preserving (escaped) what may be unsafe code in codeblocks. The stored item needs to be unescaped just prior to calling the markdown-to-html processor 2017-03-29 13:37:36 +02:00
zotlabs
8d72cea2d1 get rid of some cruft in boot.php 2017-03-29 13:35:26 +02:00
zotlabs
3ee4dd0d52 remove the unimplemented upload limit site settings 2017-03-29 13:33:15 +02:00
zotlabs
0f7832dc30 code_allowed is a real mess. Start the cleanup by remving the account level code allow and limiting to specific channels only. This reduces the possibility of cross channel security issues coming into play. Then provide a single function for checking the code permission. This is only partially done as we often need to check against the observer or logged in channel as well as the resource owner to ensure that this only returns true for local channels which also own the requested resource. 2017-03-29 13:32:23 +02:00
Mario Vavti
107083e3e4 fix widgets for bs4 again 2017-03-29 12:43:27 +02:00
Mario Vavti
d7a9d22a15 namespace error 2017-03-29 12:09:45 +02:00
zotlabs
ecfbb10326 widget file update 2017-03-29 12:07:13 +02:00
zotlabs
6c92a240cc remove include/widgets.php 2017-03-29 12:04:44 +02:00
zotlabs
0bad26e116 the rest of the standard widgets converted 2017-03-29 12:02:09 +02:00
Mario Vavti
cd57483ed9 namespace error 2017-03-29 11:59:20 +02:00
zotlabs
0908da9529 widgets cont. 2017-03-29 11:57:00 +02:00
zotlabs
6e101e4582 widgets cont. 2017-03-29 11:50:52 +02:00
zotlabs
f60309efa1 more widget migrations 2017-03-29 11:50:03 +02:00
zotlabs
47f4007951 more widgets 2017-03-29 11:49:32 +02:00
zotlabs
74f58818d6 filename issue 2017-03-29 11:49:03 +02:00
zotlabs
17977effe7 more widgets 2017-03-29 11:48:35 +02:00
zotlabs
477ed97c2f convert more widgets to classes 2017-03-29 11:47:58 +02:00
zotlabs
242ef70a77 use absolute namespace 2017-03-29 11:47:07 +02:00
zotlabs
755b751614 Comanche: allow widgets to be class based and stored appropriately in Zotlabs 2017-03-29 11:45:54 +02:00
zotlabs
ad3a327366 scaling issue with fa-th and fa-bars icons when using boostrap-red.css:37 #navbar-collapse-1 i { font-size 1.0rem; }; FF 52.0.1 on Win7; 0.9rem and 1.1rem both render much better. 1.1 is a bit large so going with 0.9 2017-03-28 18:16:40 -07:00
zotlabs
a54bb07753 fix a couple more instances where we were still calling mail() directly for site critical messages 2017-03-28 17:49:48 -07:00
zotlabs
323ab3dba4 get rid of some more deprecated uses of $a 2017-03-28 17:00:44 -07:00
zotlabs
6947194824 license update 2017-03-28 16:30:02 -07:00
zotlabs
879350b658 update readme 2017-03-28 16:21:20 -07:00
zotlabs
046e5e239f remove obsolete app argument from load_pdl 2017-03-28 16:07:22 -07:00
zotlabs
c5828fecc1 get rid of get_app() 2017-03-28 16:02:47 -07:00
zotlabs
d12b360e92 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-03-28 14:58:48 -07:00
Mario Vavti
5564b47dbc minor bs4 fixes 2017-03-28 23:44:50 +02:00
Mario Vavti
28ad60f892 some fixes for latest bs-dev 2017-03-28 19:29:42 +02:00
Mario Vavti
171b6a222d fixes for latest bootstrap 2017-03-28 15:41:12 +02:00
Mario Vavti
f05181322c update to latest bs-dev 2017-03-28 13:29:59 +02:00
Mario Vavti
33d23a4a61 links in wall-item-title must have white colour if the background is bg-primary 2017-03-28 11:11:01 +02:00
zotlabs
3e6088c614 add 'author_is_pmable()' function with plugin hooks to control whether or not to display a 'send mail' link in the thread author menu. 2017-03-27 15:49:48 -07:00
zotlabs
8292553a20 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-03-27 14:11:25 -07:00
Klaus
6375401e0a Merge pull request #701 from dawnbreak/HTMLpurifier
HTMLPurifier library update
2017-03-27 21:39:02 +02:00
Mario Vavti
b6b62506c5 adjust comment box 2017-03-27 13:22:15 +02:00
Mario Vavti
f66aa336ac fix app rendering 2017-03-27 12:55:11 +02:00
Mario Vavti
779cab047a Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-03-27 12:08:55 +02:00
Mario Vavti
cd575e80dd remove apps which we have access to from the leftside menu in nav 2017-03-27 12:08:26 +02:00
git-marijus
060cc15f81 Merge pull request #704 from zotlabs/doppleclone
remove redundant and non-functional/broken check for successfully clo…
2017-03-27 11:30:49 +02:00
git-marijus
6ed5784491 Merge pull request #707 from dawnbreak/docu
Import Module documentation and @-sign replacement.
2017-03-27 11:30:16 +02:00
Mario Vavti
eab9040ee7 unify css classes 2017-03-27 11:20:59 +02:00
Mario Vavti
099b30afbf css fixes 2017-03-27 10:29:26 +02:00
zotlabs
5cbf603203 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-03-26 14:40:20 -07:00
Mario Vavti
c327b00efa fix app-icon color and use bs class for w100 2017-03-26 13:45:27 +02:00
Mario Vavti
7634d4ce69 fix nav menu caret 2017-03-26 13:27:46 +02:00
Mario Vavti
98c6548d64 fix and cleanup custom theme settings 2017-03-26 13:15:15 +02:00
Mario Vavti
d169ee658e minor css cleanup 2017-03-26 11:16:16 +02:00
Klaus Weidenbach
f718e2b0db ⬆️ Update HTML Purifier library.
Updated HTML Purifier from 4.6.0 to 4.9.2 with better PHP7 compatibility.
Used composer to manage this library.
2017-03-26 00:41:27 +01:00
zotlabs
dc59817a9d use the long form legal text. 2017-03-25 14:50:47 -07:00
zotlabs
66fcea0ad8 update license 2017-03-25 14:49:18 -07:00
zotlabs
a572609dbd widget file update 2017-03-25 14:42:40 -07:00
zotlabs
94e458018b rm widgets again 2017-03-25 14:41:43 -07:00
zotlabs
e5e0a6b31f Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-03-25 14:40:31 -07:00
zotlabs
5c63f7dd58 provide platform specific install script 2017-03-25 14:19:32 -07:00
zotlabs
b0b5db770d provide compatibility with old-style update system 2017-03-25 13:22:14 -07:00
zotlabs
878614f97a get rid of 'davguest' and allow for project specific DB updates (currently db updates are common between all possible projects/subprojects/forks). 2017-03-25 13:07:46 -07:00
Klaus Weidenbach
49e77e0f71 Import Module documentation and @-sign replacement.
If you copy the identity from your profile page the @-sign is invalid
for the import and fails. Replace it for convenience.
2017-03-25 20:30:26 +01:00
Mario Vavti
2115eb26a7 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-03-25 09:41:51 +01:00
Mario Vavti
4f4c9bf5d6 fix full template nav 2017-03-25 09:41:35 +01:00
Mario Vavti
90ab050493 fix active state 2017-03-24 19:41:58 +01:00
Mario Vavti
28e0911f29 remove obsolete todo 2017-03-24 17:07:22 +01:00
Mario Vavti
fd23844c8d remove redundant css 2017-03-24 16:50:59 +01:00
Mario Vavti
5dc457b16c fix some active and hover colors 2017-03-24 16:10:37 +01:00
Mario Vavti
aadfb97d5a missing badge-default class 2017-03-24 15:50:54 +01:00
Mario Vavti
83abceb8be must be 1.35rem 2017-03-24 10:29:44 +01:00
Mario Vavti
727a2fe4ea restrict height of images in #banner to 1.5 rem 2017-03-24 10:23:23 +01:00
Mario Vavti
cb6c21ce90 do not return false here. it can lead to unresponsive links under certain situations. 2017-03-24 10:09:02 +01:00
zotlabs
a2e1019978 move db_upgrade to zlib 2017-03-23 21:49:20 -07:00
Mario Vavti
1171e1dd9c fix viewconnections 2017-03-23 14:15:08 +01:00
Mario Vavti
fff7be2c0f fix spinner position 2017-03-23 13:33:33 +01:00
Mario Vavti
a1ef698cf2 update fullcalendar library to version 3.2.0 2017-03-23 13:24:39 +01:00
Mario Vavti
43a794a905 bs4 fixes for events 2017-03-23 13:11:27 +01:00
Mario Vavti
4d50fe0928 bump versions 2017-03-23 09:35:59 +01:00
zotlabs
e98938d03d rev update 2017-03-23 00:20:12 -07:00
zotlabs
c3c1572683 allow setting the system email name/address/reply 2017-03-22 21:40:43 -07:00
zotlabs
708f738952 add mascot 2017-03-22 20:39:07 -07:00
zotlabs
5f1da17406 red koala 2017-03-22 20:35:20 -07:00
zotlabs
0499deea69 more cloud updates - upgrade the DAV structures as well. 2017-03-22 19:31:43 -07:00
zotlabs
0fb0241901 some more photo issues 2017-03-22 16:11:38 -07:00
zotlabs
24b55bbc9b fix photo prvnxt after all the changes yesterday 2017-03-22 12:41:16 -07:00
Mario Vavti
3a7db8ec60 fix embed image modals 2017-03-22 13:15:53 +01:00
Mario Vavti
bc3e1e99fe Merge branch 'dev' into bs4 2017-03-22 12:12:44 +01:00
Mario Vavti
efdd95fe7f css fixes 2017-03-22 11:52:22 +01:00
zotlabs
65ecc5ae15 more work on the photo album mess 2017-03-21 22:05:36 -07:00
zotlabs
83a78a949d photos_album_exists() requires an observer to work correctly; provide it. 2017-03-21 21:13:14 -07:00
zotlabs
a7bf4366ce use the same host macro for sender address as for reply_to address 2017-03-21 21:00:48 -07:00
zotlabs
066ab8c1fc Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-03-21 20:59:26 -07:00
zotlabs
bedc393425 begin the process of using the relevant attach directory/path for photo albums instead of an album basename which may not be unique. Created an 'ellipsify()' function to shorten long names and keep the beginning and end intact 2017-03-21 20:11:48 -07:00
zotlabs
c1cc7bfc94 update license 2017-03-21 17:14:58 -07:00
Klaus
caae956f6e Merge pull request #705 from dawnbreak/dev
 Some more tests for purify_html().
2017-03-22 00:59:09 +01:00
Klaus Weidenbach
30a3339653 Some more tests for purify_html().
Add some generic HTML, JS, CSS expectations for purify_html().
Also cover our own configuration for HTMLPurifier.
2017-03-22 00:50:49 +01:00
Klaus
ef73607288 Merge pull request #706 from dawnbreak/master
issue #699
2017-03-21 21:50:40 +01:00
zotlabs
e7c3ecd192 issue #699
(cherry picked from commit a45dd09fc0)
2017-03-21 21:47:30 +01:00
Mario Vavti
a7d184ba54 add generic-icons-nav class 2017-03-21 13:59:44 +01:00
Mario Vavti
546867c102 add icon, name and thumb to profile tabs. remove login app - we have login in the panel now. 2017-03-21 13:38:44 +01:00
Mario Vavti
42fbc28b11 missing template 2017-03-21 12:00:19 +01:00
zotlabs
82631c3413 more markdown purification 2017-03-21 00:40:19 -07:00
zotlabs
b153c651b4 perform attach_upgrade() 2017-03-20 21:53:39 -07:00
zotlabs
8821986d87 after all of this, I would be very hesitant to use any multi-user system which uses markdown and which doesn't have a large security budget. 2017-03-20 19:50:09 -07:00
zotlabs
35fc7328de even more fine tuning of the markdown purifier - especially when used with the wiki 2017-03-20 19:41:03 -07:00
zotlabs
7a611c6d47 create channel_store_lowlevel() and remove more diaspora stuff from core. 2017-03-20 18:14:50 -07:00
zotlabs
f252f3efc5 remove redundant and non-functional/broken check for successfully cloned channel record which was left over from an earlier method of creating the table; which was deprecated a few months back. 2017-03-20 15:40:48 -07:00
zotlabs
da823125b9 remove redundant and non-functional/broken check for successfully cloned channel record which was left over from an earlier method of creating the table; which was deprecated a few months back. 2017-03-20 15:24:47 -07:00
Mario Vavti
7de5717418 superfluos ; 2017-03-20 23:21:02 +01:00
Mario Vavti
a6f232f2b0 really fix fullscreen and fix some issues in chat 2017-03-20 23:20:14 +01:00
Mario Vavti
cbcd195461 fix webpages widgets 2017-03-20 22:39:29 +01:00
Mario Vavti
837efcf5e7 fix fullscreen and bbco_autocomplete popup rendering 2017-03-20 20:59:46 +01:00
Mario Vavti
8b0bcdb2a5 minor fixes 2017-03-20 20:13:10 +01:00
Mario Vavti
ca14ab3d55 move profile tabs to app-tray 2017-03-20 17:24:48 +01:00
Mario Vavti
cfdf1def2a since we have the app bin we do not actually need the profile tabs for ourself 2017-03-20 14:09:27 +01:00
Mario Vavti
37d350c3f5 update to latest bs4 from git and change hidden-* classes to d-* 2017-03-20 11:18:23 +01:00
Mario Vavti
b10c519cc1 Merge branch 'dev' into bs4 2017-03-20 08:53:08 +01:00
zotlabs
78aeb50ce5 add function attach_syspaths to calculate the contents of os_path and display_path; add this to the rename function. We will also need it to populate existing file/photo structures as an upgrade task. 2017-03-19 21:39:28 -07:00
zotlabs
a12a614e7e attach_folder_rpaths() providing incorrect results 2017-03-19 19:43:00 -07:00
zotlabs
f746418fda Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge 2017-03-19 17:13:26 -07:00
zotlabs
1bdab6e633 Merge pull request #703 from dawnbreak/oauth2
⬆️ Update bshaffer/oauth2-server-php library.
2017-03-20 11:05:46 +11:00
zotlabs
1bf2a9d47b Merge pull request #702 from dawnbreak/dev
 Add unit test for purify_html().
2017-03-20 11:05:20 +11:00
Klaus Weidenbach
8b4b135036 ⬆️ Update bshaffer/oauth2-server-php library.
Manage oauth2-server-php library with composer.
Folder ./library/oauth2/ can be removed and includes removed with autoloading.
2017-03-20 00:43:09 +01:00
zotlabs
be10bf2ceb Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-03-19 15:44:59 -07:00
Klaus Weidenbach
d4bd4ca000 Add unit test for purify_html().
In preparation to update HTMLPurifier library add a unit test.
Please add more HTML that you need to have working and we can check
against regressions.
2017-03-19 23:07:16 +01:00
Mario Vavti
2f3f95d3a9 change the btn-outline-secondary:hover color to soething sane 2017-03-19 19:59:45 +01:00
Mario Vavti
d958f1099b Revert "update to bs-git"
This reverts commit 7b0f3d9e26.
2017-03-19 19:51:02 +01:00
Mario Vavti
7b0f3d9e26 update to bs-git 2017-03-19 19:40:08 +01:00
Mario Vavti
92d581a342 do not show the scrollbar before the animation has finished 2017-03-19 19:36:29 +01:00
Mario Vavti
8e11b2d6f0 fix some wrapping issues 2017-03-19 19:32:54 +01:00
Mario Vavti
79bd2ddd9c reflect count in modal 2017-03-19 17:53:33 +01:00
Mario Vavti
949ca844c5 open like-modal directly if more than 10 likes 2017-03-19 17:49:07 +01:00
Mario Vavti
f31af3c7c0 typo 2017-03-19 17:09:21 +01:00
Mario Vavti
a0245f3e93 css fixes 2017-03-19 17:06:55 +01:00
Mario Vavti
99811c90b6 fix php warning and remove logging 2017-03-19 14:30:26 +01:00
Mario Vavti
c85f1a208d a % example for font size 2017-03-19 14:29:09 +01:00
Mario Vavti
774923be1c fix jgrowl position and remove some redundant css 2017-03-19 14:20:21 +01:00
Mario Vavti
d78b64d5b3 fix narrow navbar setting and contextual-help position 2017-03-19 14:00:59 +01:00
Mario Vavti
0938db8f7b Merge branch 'dev' into bs4 2017-03-19 13:33:45 +01:00
Mario Vavti
d2c971eda9 fix php warning and remove logging 2017-03-19 13:33:02 +01:00
Mario Vavti
57584ea429 remove redundant css 2017-03-19 13:28:06 +01:00
Mario Vavti
49d84a364d css fixes 2017-03-19 13:21:30 +01:00
Mario Vavti
89b5507354 fix custom fontsize for app 2017-03-19 12:10:16 +01:00
Mario Vavti
2a25ddff36 bs4 fixes 2017-03-19 10:51:58 +01:00
zotlabs
b0b96daec0 Merge branch 'dev' into merge 2017-03-18 17:00:09 -07:00
zotlabs
8764cdf16a Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-03-18 16:56:37 -07:00
zotlabs
a45dd09fc0 issue #699 2017-03-18 16:56:18 -07:00
zotlabs
320c32fd0f issue #699 2017-03-18 16:55:10 -07:00
zotlabs
4afeefb5ce various input filter fixes 2017-03-18 16:41:43 -07:00
Mario Vavti
b2ad4e8c2a bs4 fixes 2017-03-18 23:45:55 +01:00
Mario Vavti
2bdf63d069 more abook_edit and some css 2017-03-18 22:01:46 +01:00
Mario Vavti
b897fd8315 more abook_edit 2017-03-18 20:02:13 +01:00
Mario Vavti
82b35e2762 fix abook_edit and private mail 2017-03-18 20:00:32 +01:00
Mario Vavti
56f32104d5 Merge branch 'dev' into bs4 2017-03-18 17:29:38 +01:00
Mario Vavti
2556d05602 bs4 fixes 2017-03-18 17:28:46 +01:00
Klaus
7b06cb6682 Merge pull request #698 from dawnbreak/dev
Missed one old Markdown()
2017-03-18 14:19:47 +01:00
Klaus
cbd401c3e8 Missed one old Markdown() 2017-03-18 14:15:02 +01:00
Mario Vavti
9277806664 fix usermenu radius 2017-03-17 21:42:27 +01:00
Mario Vavti
828028259c css fixes 2017-03-17 20:48:06 +01:00
Mario Vavti
d10525a375 fix item_list and item_search templates. make item filer use a bootdtrap modal and some css and class fixes 2017-03-17 14:22:10 +01:00
zotlabs
d903758940 remove include/widgets.php 2017-03-16 18:36:58 -07:00
zotlabs
cf11ba1147 simplify the message signing spaghetti 2017-03-16 18:19:03 -07:00
zotlabs
446b5550a2 the rest of the standard widgets converted 2017-03-16 17:11:48 -07:00
Mario Vavti
4c2bdc9dc0 Merge branch 'dev' into bs4 2017-03-16 09:46:09 +01:00
zotlabs
051759580d namespace error 2017-03-16 01:16:29 -07:00
zotlabs
fb3f63bf59 input filter issue 2017-03-15 21:49:27 -07:00
zotlabs
f6b643e84e widgets cont. 2017-03-15 21:26:28 -07:00
zotlabs
16d750d1f6 widgets cont. 2017-03-15 20:56:12 -07:00
zotlabs
dfd626548f more widget migrations 2017-03-15 20:11:28 -07:00
zotlabs
92d7c32f61 more widgets 2017-03-15 19:30:57 -07:00
zotlabs
0ee48f6a58 filename issue 2017-03-15 19:13:16 -07:00
zotlabs
664c762b35 more widgets 2017-03-15 18:48:27 -07:00
zotlabs
9cb9608209 convert more widgets to classes 2017-03-15 18:31:34 -07:00
zotlabs
b20062efa6 Merge branch 'red' of https://github.com/zotlabs/hubzilla into red 2017-03-15 17:44:21 -07:00
zotlabs
8d4744d115 new composer.lock for red 2017-03-16 11:42:06 +11:00
zotlabs
14f16a7ef0 use absolute namespace 2017-03-15 17:05:16 -07:00
zotlabs
df6c07aaad Comanche: allow widgets to be class based and stored appropriately in Zotlabs 2017-03-15 16:55:47 -07:00
zotlabs
c95e9b9ba5 could not fix the merge conflicts in composer.lock so it will need to be regenerated in the red tree.
also the autoload_classmap is a disgrace. We provide autoload functions so that we can dynamically
change the file tree without needing to regenerate a bunch of runtime stuff every time we add a file.
Merge branch 'dev' into red
2017-03-15 16:09:08 -07:00
zotlabs
472a824a1e Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-03-15 16:02:45 -07:00
zotlabs
16df1c1ad4 Merge pull request #569 from dawnbreak/QA_testing
[FEATURE] Extend Travis CI integration.
2017-03-16 10:02:17 +11:00
zotlabs
e1fe637dcd Merge branch 'dev' into red 2017-03-15 15:57:37 -07:00
zotlabs
2dce86d38e Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-03-15 15:55:33 -07:00
zotlabs
bcd02edd80 ensure z_input_filter is called exactly once, since we now depend on the number of htmlspecialchars operations for
markdown content. Also ensure that the content is escaped the correct number of times on imported items.
2017-03-15 15:53:03 -07:00
Mario Vavti
a73ea134cd re-add spaces between tags 2017-03-15 21:22:16 +01:00
Mario Vavti
e7a5aa7b9c js fixes 2017-03-15 17:28:00 +01:00
Mario Vavti
aa33cacb62 style hashtags, mentions and categories. hide expand-aside button if not needed. css and class fixes 2017-03-15 16:42:55 +01:00
Mario Vavti
0c74c79b18 Merge branch 'dev' into bs4 2017-03-15 12:42:18 +01:00
Mario Vavti
0c973cc9fa various fixes 2017-03-15 12:41:37 +01:00
Mario Vavti
62c921815f better handling of mimetype security 2017-03-15 12:39:34 +01:00
Mario Vavti
211cda540d better handling of mimetype security 2017-03-15 12:38:33 +01:00
zotlabs
6078d02c3a more work related to attach/photo and os_path, display_path and general code cleanup 2017-03-15 01:20:21 -07:00
zotlabs
fa89b8f66d add os_path and display_path to photos, fix some issues with multiple path separators after cloud/nickname in the content field of attach and photos 2017-03-14 22:02:28 -07:00
zotlabs
e399de8ad4 store os_path and display_path with files 2017-03-14 21:40:11 -07:00
zotlabs
32a9487ff9 use dim for the button border also 2017-03-14 18:46:50 -07:00
zotlabs
e891380ed5 dim class was un-themed 2017-03-14 18:42:51 -07:00
zotlabs
2c73b457ef input filter updates 2017-03-14 17:07:29 -07:00
zotlabs
2f5f1a4d64 fix group by item query 2017-03-14 16:14:05 -07:00
Klaus Weidenbach
5c080ca4e8 👷 Add Travis' GitHub deployment steps.
Changed API documentation deployment to gh_pages to Travis's GitHub Pages
deployment.
Also add Travis GitHub Release Deployment step to offer API
documentation.
Both steps are optional and need to be activated in Travis by setting
GH_TOKEN.
2017-03-14 20:41:32 +01:00
Klaus Weidenbach
4a85726e55 👷 ⬆️ Update PHPUnit to current stable 6.
Update requirements to PHP7 for dev.
Add php-mock-phpunit to mock and stub global functions in a better way.
2017-03-14 20:41:29 +01:00
Klaus Weidenbach
cb2eee1d2e 👷 Add old MySQL 5.5 to Travis CI again.
The trusty distro contains MySQL 5.6. Add a precise distro with MySQL 5.5.
Unfortunately 5.7 is not yet provided, which would be interesting
because of the enabled strict SQL mode.
2017-03-14 20:40:53 +01:00
Klaus Weidenbach
8e80500ee6 👷 use PHP7.1 and add PostgreSQL9.6
Use newer distro for Travis CI runs.
New environment provides PostgreSQL9.6.
Also no need to install custom Doxygen, made it optional.
Changed default PHP environment from PHP7.0 to current PHP7.1.
Changed codecoverage reporting.
2017-03-14 20:39:57 +01:00
Klaus Weidenbach
03db9833e8 💚 Update Travis CI's Doxygen.
Travis CI has Doxygen 1.7. We need 1.8 to generate our API
documentation. Get a static version and use it.
Always build API Documentation, but changed Doxygen configuration to
only print out errors in the documentation generation, so these can be
reviewed.
2017-03-14 20:36:38 +01:00
Klaus Weidenbach
33153b8f3a [FEATURE] 👷 Extend Travis CI integration.
Testing several Travis CI features.
Add DBs to travis execution matrix.
Doxygen API docu generation and deployment to gh-pages.
Update phpunit to 5.7.
2017-03-14 20:31:13 +01:00
Mario Vavti
3b2398ed01 css fixes 2017-03-14 18:59:27 +01:00
Mario Vavti
a0a376e95e hide nav search behind a button, css fixes and cleanup 2017-03-14 18:31:19 +01:00
Mario Vavti
7b9df1d401 css fixes 2017-03-14 14:12:44 +01:00
zotlabs
1244b0e36a class MarkdownSoap to safely store markdown by purifying and preserving (escaped) what may be unsafe code in codeblocks. The stored item needs to be unescaped just prior to calling the markdown-to-html processor 2017-03-14 00:23:44 -07:00
zotlabs
ab58c95d27 get rid of some cruft in boot.php 2017-03-14 00:22:57 -07:00
zotlabs
a153368814 make redbasic compatible with red 5.x 2017-03-13 18:58:23 -07:00
zotlabs
41fd729209 remove the unimplemented upload limit site settings 2017-03-13 18:40:07 -07:00
zotlabs
58aa0f3e1a code_allowed is a real mess. Start the cleanup by remving the account level code allow and limiting to specific channels only. This reduces the possibility of cross channel security issues coming into play. Then provide a single function for checking the code permission. This is only partially done as we often need to check against the observer or logged in channel as well as the resource owner to ensure that this only returns true for local channels which also own the requested resource. 2017-03-13 16:19:47 -07:00
zotlabs
02b390d7b8 Merge branch 'dev' into red 2017-03-13 15:13:59 -07:00
zotlabs
41c2f74772 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-03-13 15:13:31 -07:00
zotlabs
6c641b1834 move oauth2 to vendor 2017-03-14 09:09:05 +11:00
Mario Vavti
700c05a55b many class fixes and revive shiny class for item titles in a new way 2017-03-13 16:34:23 +01:00
Mario Vavti
188782c461 merge dev into bs4 2017-03-13 11:11:20 +01:00
git-marijus
bdfdd23b36 Merge pull request #697 from anaqreon/dev
Add id to app-menu for JS access
2017-03-13 11:00:19 +01:00
Mario Vavti
9f0c3b496b we need to have this even if we are not the owner. otherwise we loose the acl if e.g. not-owner edits a webpage. should probably find a better solution for this though. 2017-03-13 10:30:41 +01:00
Mario Vavti
1ae715da21 Merge branch 'master' of https://github.com/redmatrix/hubzilla 2017-03-13 10:29:48 +01:00
Mario Vavti
d5feb5135d we need to have this even if we are not the owner. otherwise we loose the acl if e.g. not-owner edits a webpage. should probably find a better solution for this though. 2017-03-13 10:29:26 +01:00
zotlabs
fc533107ed better handling of mimetype security 2017-03-12 21:55:24 -07:00
zotlabs
1ee76cb506 remove more hardwired branding 2017-03-12 20:54:48 -07:00
zotlabs
4bb90dffc1 update license 2017-03-12 17:45:51 -07:00
zotlabs
f4cd4184f8 update readme 2017-03-12 17:45:18 -07:00
zotlabs
c39c925d8d grrr. stop making branding assumptions. 2017-03-12 17:32:45 -07:00
zotlabs
b1fc29be11 more cleanup 2017-03-12 16:30:05 -07:00
zotlabs
2a1f6e3df2 update std_version 2017-03-12 15:57:56 -07:00
zotlabs
6f3493bb3c db issues 2017-03-12 15:50:47 -07:00
Mario Vavti
61257094b7 fix help menu 2017-03-12 22:21:49 +01:00
Mario Vavti
8aabc6bc3d many dropdown and class fixes. still a long way to go... 2017-03-12 21:11:28 +01:00
Andrew Manning
f68148b7e0 Add id to app-menu for JS access 2017-03-12 13:57:45 -04:00
zotlabs
4c526c7d3d Merge branch 'dev' into red 2017-03-11 18:02:59 -08:00
zotlabs
4a24a8de43 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-03-11 18:02:38 -08:00
jeroenpraat
b8ad22f525 Login-box css-fix for Bluegrid scheme 2017-03-11 21:09:42 +01:00
Mario Vavti
d9ecca8591 Merge branch 'dev' into bs4 2017-03-11 15:08:54 +01:00
Mario Vavti
83d07b9551 font size and post title adjust 2017-03-11 15:07:30 +01:00
git-marijus
ee03391293 Merge pull request #693 from anaqreon/dev
Take me home instead of get me home
2017-03-11 10:58:03 +01:00
zotlabs
30503d6533 strings 2017-03-10 12:45:40 -08:00
zotlabs
bbb83bea38 strings 2017-03-10 12:44:57 -08:00
Mario Vavti
0f9ddbf3b2 fixing classes 2017-03-10 17:02:55 +01:00
jeroenpraat
8c4b8e623f Login-box css-fix for Bluegrid scheme 2017-03-10 16:58:32 +01:00
Mario Vavti
b1c97dfcfd some sed magic on button class names 2017-03-10 10:47:30 +01:00
zotlabs
1a49f0d164 one role. 2017-03-09 18:54:10 -08:00
Andrew Manning
a2371d56fd Take me home instead of get me home 2017-03-09 20:43:16 -05:00
zotlabs
c93db2cd21 more cleanup 2017-03-09 14:31:54 -08:00
zotlabs
15d422db80 Merge branch 'dspr' into red 2017-03-09 14:17:14 -08:00
Mario Vavti
14d1912115 upgrade bs to latest git and some more progress 2017-03-09 22:04:17 +01:00
zotlabs
b6477cd38b go back to where the problem started 2017-03-09 11:51:21 -08:00
Mario Vavti
c42cbda904 remove navbar-toggler-left class 2017-03-09 10:45:55 +01:00
Mario Vavti
39d56fd08f initial commit for the bootstrap version 4 branch - upgrade lib and make nav.tpl kind of working again 2017-03-09 10:17:57 +01:00
zotlabs
403f4c1a6b Monday is a proper name and should be capitalised (except in private conversation amongst unix geeks). 2017-03-08 19:23:11 -08:00
zotlabs
15ab331b6b move all the diaspora content hacks to the diaspora plugin 2017-03-08 17:35:19 -08:00
jeroenpraat
495da14e38 Update latest Spanish strings (were commited to dev instead of the RC) 2017-03-08 17:22:53 +01:00
zotlabs
9ca53fdc5d DCV stuff 2017-03-07 17:44:19 -08:00
Mario Vavti
8e3a026276 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-03-07 12:08:43 +01:00
jeroenpraat
b5ddd08630 Big 2.2 string update Dutch 2017-03-07 12:08:16 +01:00
zotlabs
a037590ce3 allow post_activity_item to be passed an empty ACL without resetting to channel default 2017-03-06 21:01:17 -08:00
zotlabs
a18e8e1ede add public_policy to the nwiki container also. This should not affect the recent bug as presented, but is being added for consistency. 2017-03-06 17:59:34 -08:00
zotlabs
595cb13d8f correct fix for wiki anonymous read issue (items_permissions_sql checks item.public_policy which was set for posts, not wikis) 2017-03-06 15:33:10 -08:00
Mario Vavti
9e44b07275 allow unauthenticated access to public wiki pages 2017-03-06 22:32:05 +01:00
Mario Vavti
99e681c09f do not collapse long nsfw content 2017-03-06 11:52:07 +01:00
zotlabs
4f5e9d77b2 remove include/probe.php which has never completed development and has never been used 2017-03-05 20:45:21 -08:00
zotlabs
98ccdf65fb Merge branch 'dev' into red 2017-03-05 16:32:53 -08:00
zotlabs
4c0c153b8f move emoji emoticons (not reactions) to plugin 2017-03-05 16:18:09 -08:00
zotlabs
c533c62c64 some event work 2017-03-05 14:47:20 -08:00
zotlabs
384db9d10d Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-03-05 11:02:19 -08:00
zotlabs
5d8b0acc16 Merge pull request #689 from mjfriaza/dev
Translated the last strings into Spanish version
2017-03-05 19:25:41 +11:00
Manuel Jiménez Friaza
3d23f4ec77 Translated the last strings into Spanish version 2017-03-05 08:50:53 +01:00
zotlabs
215bd07f0b Merge pull request #688 from dawnbreak/markdown
⬆️ 🔨 Upgrade Markdownify library.
2017-03-05 18:22:37 +11:00
Klaus Weidenbach
6c79e0c077 ⬆️ 🔨 Upgrade Markdownify library.
The current version 2.0.0 (alpha) throws deprecated warning with
PHP7.1 and PHPUnit.
Upgrade the HTML to Markdown converter for PHP to the current
Markdownify 2.2.1.
Used composer to manage this library.
2017-03-05 01:14:15 +01:00
zotlabs
b2ea61ea3e Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-03-04 11:57:20 -08:00
zotlabs
47d2467e24 minor feed issue 2017-03-04 11:56:59 -08:00
Mario Vavti
8e1716065e update changelog 2017-03-04 17:04:04 +01:00
Mario Vavti
eaefb36212 we need item edited for wiki page history, not item created 2017-03-04 16:56:52 +01:00
zotlabs
a2f6f48daf string update 2017-03-03 14:01:50 -08:00
Mario Vavti
608e679d33 fix badge position for narrow navbar 2017-03-03 10:04:11 +01:00
zotlabs
155844f142 reverse sort order 2017-03-02 23:02:44 -08:00
zotlabs
cee9a20e85 activity widget - turns out the owner is not relevant. 2017-03-02 18:10:23 -08:00
zotlabs
70ca4a7fea document the activity widget 2017-03-02 17:39:57 -08:00
zotlabs
7445f1881e Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-03-02 17:36:14 -08:00
zotlabs
e58dc726c5 activity widget - like the forum widget but represents unseen activity by author. Still experimental until it can be tested with diaspora xchans, which may require additional urlencoding. 2017-03-02 17:32:43 -08:00
Mario Vavti
6bf6462a37 provide info if there are no sche,es available 2017-03-02 12:51:31 +01:00
Mario Vavti
dd8a3d845e reset schema value after we empty and repopulate it. second half of fix for #624 2017-03-02 11:36:35 +01:00
Mario Vavti
66fc1dcf33 reset schema value after we empty and repopulate it. first half of fix for #624 2017-03-02 11:03:33 +01:00
Mario Vavti
816f4907e3 setting top position of contextual-help in schemes does not work with narrow navbar setting. schema css is always called last. 2017-03-02 10:12:00 +01:00
zotlabs
d7e24b2494 make system.expire_delivery_reports default setting consistent (10 days) 2017-03-01 20:05:52 -08:00
Mario Vavti
d4a957ca16 add title to connect button 2017-03-01 11:39:26 +01:00
Mario Vavti
e08e6c182c minor template fixes 2017-03-01 11:37:02 +01:00
zotlabs
1ca0b85196 cleaner integration between the headers and session options of z_fetch_url() 2017-02-28 16:32:24 -08:00
zotlabs
df57e7ab93 expire unread system notifications after a year. It would provide a better experience for infrequent visitors if we didn't expire them at all, but at some point we need to draw a line so as not to degrade system performance searching through old notifications that it's highly unlikely will ever be viewed again. 2017-02-28 14:56:26 -08:00
zotlabs
fa02f3a108 Merge pull request #686 from dawnbreak/markdown
Upgrade PHP Markdown library.
2017-03-01 09:54:01 +11:00
Mario Vavti
360397b2ed missing css class 2017-02-28 13:23:42 +01:00
zotlabs
fa944fc526 provide 'session' option to z_fetch_url to assist with remote fetches requiring magic auth 2017-02-27 23:48:54 -08:00
zotlabs
df6e75e1d6 make magic-auth work with profile vcard fetch 2017-02-27 23:37:42 -08:00
zotlabs
c49935d91c remove logging 2017-02-27 22:48:52 -08:00
zotlabs
85082ea509 fetch profile vcard for connection 2017-02-27 21:14:09 -08:00
zotlabs
47731c75fc string update 2017-02-27 16:09:02 -08:00
zotlabs
b5481edfd7 a bit more DAV doco improvement 2017-02-27 15:19:50 -08:00
zotlabs
1325a81e9a add file size notes to /cloud actions panel 2017-02-27 15:13:49 -08:00
zotlabs
18b22f5f8a prep work 2017-02-27 14:54:41 -08:00
zotlabs
d609d2d2ad document the filesize limitations on uploading via /cloud, fix non-functional anchor 2017-02-27 14:53:00 -08:00
Klaus Weidenbach
503c368f9e ⬆️ 🔨 Upgrade PHP Markdown library.
The current version throws deprecated warning with PHP7.1 and PHPUnit.
Upgrade the Markdown library to the current PHP Markdown Lib 1.7.0.
Used composer to manage this library.
2017-02-27 23:40:29 +01:00
Klaus Weidenbach
2848d1caaf Move library/markdown.php to keep history. 2017-02-27 23:36:07 +01:00
Mario Vavti
a6d13f290b fix js issue in markdown mimetype wikis if content contains quotes 2017-02-27 13:52:08 +01:00
Mario Vavti
b6cad08273 update changelog 2017-02-27 11:41:58 +01:00
Mario Vavti
7f423016f0 whitespace 2017-02-27 11:11:53 +01:00
Mario Vavti
a41603ed85 missing clear 2017-02-27 10:54:43 +01:00
Mario Vavti
f93431b43e do not mess up schemas 2017-02-27 10:44:50 +01:00
Mario Vavti
f5a03102d8 lower version requirement to 2.2RC 2017-02-27 10:19:01 +01:00
Mario Vavti
e0e30ead58 Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev 2017-02-27 10:13:29 +01:00
Mario Vavti
0f208fb36b set minversion and maxversion for themes in view/theme/themename/php/theme.php instead of separate file. 2017-02-27 10:13:08 +01:00
zotlabs
94fdcabac9 Merge pull request #687 from mjfriaza/dev
Updated the Spanish translation
2017-02-27 13:36:09 +11:00
Mario Vavti
4f07abe655 add a minversion to the theme and fallback to default if requirement is not met. mark incompatible themes in the theme selector 2017-02-26 21:01:20 +01:00
Manuel Jiménez Friaza
bc01b6b4ad Updated the Spanish translation 2017-02-26 08:02:17 +01:00
zotlabs
8783ccfd72 move admin permission decision out of the router - it is already provided in the module and the higher level check is causing some oembed redirect issues. 2017-02-25 16:22:09 -08:00
zotlabs
92615247ac send sync packet on profile photo permissions change 2017-02-25 15:04:17 -08:00
zotlabs
78ed01f3ef Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-02-25 13:58:07 -08:00
zotlabs
232862ae08 escape tags on viewsrc output in case it is not text/bbcode. 2017-02-25 13:54:39 -08:00
Mario Vavti
285e04c77e bump version 2017-02-25 21:33:32 +01:00
zotlabs
70f8840fbd Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge 2017-02-24 13:55:57 -08:00
zotlabs
8d0d2015d7 We've passed the deadline for allowing unsigned zot finger tokens. It is now a protocol requirement. 2017-02-24 13:53:49 -08:00
Mario Vavti
cf11a89457 use chanlink_url() in directory since the xchan might not yet be available on our server 2017-02-24 10:08:09 +01:00
zotlabs
732dfa63c7 deleting profile vcard entries was pretty well borked 2017-02-23 20:27:12 -08:00
zotlabs
b1ff5367e7 more work on profile vcards - still a lot of work to go 2017-02-23 19:07:01 -08:00
zotlabs
96fdb88690 nativewiki: only apply markdown filter to markdown input 2017-02-23 15:15:19 -08:00
zotlabs
3e992604c7 move some functions to more appropriate places 2017-02-23 14:52:36 -08:00
zotlabs
c866c48252 minor edits 2017-02-23 11:26:22 -08:00
zotlabs
7b4d0168c0 parse bbcode events which use the "new" vcalendar format. work in progress. 2017-02-23 11:09:02 -08:00
7597 changed files with 836844 additions and 872168 deletions

11
.gitignore vendored
View File

@@ -14,19 +14,21 @@
*.rej
# OSX .DS_Store files
.DS_Store
# version scripts (repo master only)
# version scripts (repo master only)
.version*
Thumbs.db
## Ignore RedMatrix site specific files and folders
## Ignore site specific files and folders
.htconfig.php
favicon.*
addon/
widget/
custom/
/store/
# site apps
apps/
!doc/context/*/apps
# default startpage
home.html
# page header plugin
@@ -44,7 +46,8 @@ doc/html/
.zotshrc
# external repositories for themes/addons
extend/
# files generated by phpunit
tests/results/
## exclude IDE files
# config files and folders from Eclipse
@@ -63,6 +66,8 @@ nbproject/
## composer
# locally installed composer binary
composer.phar
# allow composer.lock, as it is required to have a common state
!composer.lock
# vendor/ is managed by composer, no need to include in our repository
# requires new deployment and needs discussion first
#vendor/

View File

@@ -2,10 +2,19 @@
Run hubzilla-setup.sh for an unattended installation of hubzilla.
The script is known to work with Debian 8.3 stable (Jessie)
The script is known to work without adjustments with
+ Home-PC (Debian-8.3.0-amd64)
+ DigitalOcean droplet (Debian 8.3 x64 / 512 MB Memory / 20 GB Disk / NYC3)
+ Hardware
- Mini-PC with Debian-9.2-amd64, or
- Rapberry 3 with Raspbian, Debian-9.3
+ DynDNS
- selfHOST.de
- freedns.afraid.org
## Disclaimers
- This script does work with Debian 9 only.
- This script has to be used on a fresh debian install only (it does not take account for a possibly already installed and configured webserver or sql implementation).
# Step-by-Step Overwiew
@@ -14,30 +23,47 @@ The script is known to work with Debian 8.3 stable (Jessie)
Hardware
+ Internet connection and router at home
+ Mini-pc connected to your router
+ Mini-pc connected to your router (a Raspberry 3 will do for very small Hubs)
+ USB drive for backups
Software
+ Fresh installation of Debian on your mini-pc
+ Router with open ports 80 and 443 for your Debian
+ Fresh installation of Debian 9 (Stretch)
+ Router with open ports 80 and 443 for your Hub
## The basic steps (quick overview)
+ Register your own domain (for example at selfHOST) or a free subdomain (for example at freeDNS)
+ Log on to your new debian (server)
+ Log on to your fresh Debian
- apt-get install git
- mkdir -p /var/www
- cd /var/www
- git clone https://github.com/redmatrix/hubzilla.git html
- cp .homeinstall/hubzilla-config.txt.template .homeinstall/hubzilla-config.txt
- nano .homeinstall/hubzilla-config.txt
- Enter your values there: db pass, domain, values for dyn DNS
- cd html/.homeinstall
- cp hubzilla-config.txt.template hubzilla-config.txt
- nano hubzilla-config.txt
- Read the comments carefully
- Enter your values: db pass, domain, values for dyn DNS
- Make sure your external drive (for backups) is mounted
- hubzilla-setup.sh as root
- ... wait, wait, wait until the script is finised
- reboot
+ Open your domain with a browser and step throught the initial configuration of hubzilla.
## Troubleshooting
If the check of the mail address fails when you try to register the very first user in the browser. Do...
cd /var/www/html
util/config system.do_not_check_dns 1
## Optional - Set path to imagemagick
In Admin settings of hubzilla or via terminal
cd /var/www/html
util/config system.imagick_convert_path /usr/bin/convert
# Step-by-Step in Detail
## Preparations Hardware
@@ -46,23 +72,44 @@ Software
### Recommended: USB Drive for Backups
The installation will create a daily backup.
The installation will create a daily backup written to an external drive.
If the backup process does not find an external device than the backup goes to
the internal disk.
The USB drive must be compatible with the filesystems
The USB drive must be compatible with an encrpyted filesystem LUKS + ext4.
- ext4 (if you do not want to encrypt the USB)
- LUKS + ext4 (if you want to encrypt the USB)
The backup includes
- Hubzilla DB
- Hubzilla installation /var/www/html
- Certificates for letsencrypt
## Preparations Software
### Install Debian Linux on the Mini-PC
Download the stable Debian at https://www.debian.org/
Download the stable Debian at https://www.debian.org/
(Debian 8 is no longer supported.)
Create bootable USB drive with Debian on it. You could use the programm
unetbootin, https://en.wikipedia.org/wiki/UNetbootin
Create bootable USB drive with Debian on it.You could use
Switch of your mini pc, plug in your USB drive and start the mini pc from the
- unetbootin, https://en.wikipedia.org/wiki/UNetbootin
- or simply the linux command "dd"
Example for command dd...
su -
dd if=2017-11-29-raspbian-stretch.img of=/dev/mmcblk0
Do not forget to unmount the SD card before and check if unmounted like in this example...
su -
umount /dev/mmcblk0*
df -h
Switch off your mini pc, plug in your USB drive and start the mini pc from the
stick. Install Debian. Follow the instructions of the installation.
### Configure your Router
@@ -79,28 +126,20 @@ You can use subdomains as well
my.cooldomain.org
There are two way to get a domain
There are two ways to get a domain...
- buy a domain (recommended) or
- register a free subdomain
### Method 1: Buy a Domain
### Method 1: Get yourself an own Domain (recommended)
...for example buy at selfHOST.de
...for example at selfHOST.de
The cost are around 10,- € once and 1,50 € per month (2017).
### Method 2 Register a (free) Subdomain
### Method 2: Register a free subdomain
Register a free subdomain for example at
...for example register at freedns.afraid.org
- freeDNS
- selfHOST
Follow the instructions in .homeinstall/hubzilla-config.txt.
WATCH THIS: A free subdomain is not the prefered way to get a domain name. Why?
Let's encrpyt issues a limited number of certificates each
day. Possibly other users of this domain will try to issue a certificate
at the same day as you do. So make sure you choose a domain with as less subdomains as
possible.
## Install Hubzilla on your Debian
@@ -125,7 +164,7 @@ Make the directory for apache and change diretory to it
Clone hubzilla from git ("git pull" will update it later)
git clone https://github.com/redmatrix/hubzilla html
git clone https://framagit.org/hubzilla/core html
Change to the install script
@@ -135,10 +174,12 @@ Copy the template file
cp hubzilla-config.txt.template hubzilla-config.txt
Change the file "hubzilla-config.txt". Read the instructions there and enter your values.
Modify the file "hubzilla-config.txt". Read the instructions there carefully and enter your values.
nano hubzilla-config.txt
Make sure your external drive (for backups) is plugged in and can be mounted as configured in "hubzilla-config.txt". Otherwise the daily backups will not work.
Run the script
./hubzilla-setup.sh
@@ -146,7 +187,7 @@ Run the script
Wait... The script should not finish with an error message.
In a webbrowser open your domain.
Expected: A test page of hubzilla is shown. All checks there shoulg be
Expected: A test page of hubzilla is shown. All checks there should be
successfull. Go on...
Expected: A page for the Hubzilla server configuration shows up.
@@ -162,3 +203,43 @@ Leave db type "MySQL" untouched.
Follow the instructions in the next pages.
Recommended: Set path to imagemagick
- in admin settings of hubzilla or
- via terminal
util/config system.imagick_convert_path /usr/bin/convert
After the daily script was executed at 05:30 (am)
- look at /var/www/html/hubzilla-daily.log
- check your backup on the external drive
- optionally view the daily log under yourdomain.org/admin/logs/
- set the logfile to var/www/html/hubzilla-daily.log
## Note for the Rasperry
The script was tested with an Raspberry 3 under Raspian (Debian 9.3, 2017-11-29-raspbian-stretch.img).
It is recommended to deinstall these programms to avoid endless updates. Use...
sudo apt-get purge wolfram-engine sonic-pi
sudo apt-get autoremove
It is recommended to run the Raspi without graphical frontend (X-Server). Use...
sudo raspi-config
to boot the Rapsi to the client console.
DO NOT FORGET TO CHANGE THE DEFAULT PASSWORD FOR USER PI!
On a Raspian Stretch (Debian 9) the validation of the mail address fails for the very first user.
This used to happen on some *bsd distros but there was some work to fix that a year ago (2017).
So if your system isn't registered in DNS or DNS isn't active do
cd /var/www/html
util/config system.do_not_check_dns 1

View File

@@ -70,15 +70,17 @@ selfhost_pass=
# freedns_key=U1Z6aGt2R0NzMFNPNWRjbWxxZGpsd093OjE1Mzg5NDE5
#
#
#freedns_key=
freedns_key=
###############################################
### OPTIONAL - Backup to external device ######
#
# The script can use an external device for the daily backup.
# The file system of the device (USB stick for example) must be compatible
# with encrypted LUKS + ext4
# The file system of the device (USB stick for example) must be compatible with
#
# - encrypted LUKS + ext4, or
# - ext4
#
# You should test to mount the device befor you run the script
# (hubzilla-setup.sh).
@@ -113,27 +115,21 @@ selfhost_pass=
# lsof /media/hubzilla_backup
#
# If you leave the following parameters
#
# - "backup_device_name" and
# - "backup_device_pass"
#
# empty the script will create daily backups on the internal disk (which could
# save you as well).
#
# Example: backup_device_name=/dev/sdc1
#
# Leave "backup_device_pass=" empty if the external device is not encrypted.
#
backup_device_name=
backup_device_pass=
###############################################
### OPTIONAL - Owncloud - deprecated ##########
#
# To install owncloud: owncloud=y
# Leave empty if you don't want to install owncloud
#
#owncloud=
###############################################
### OPTIONAL - do not mess with things below ##
# (...if you are not certain)
@@ -160,18 +156,3 @@ mysqlpass=$db_pass
# Example: phpmyadminpass="aber hallo has blanks in it"
phpmyadminpass=$db_pass
# TODO Prepare hubzilla for programmers
# - install eclipse and plugins
# - install xdebug to debug the php with eclipse
# - weaken permissions on /var/www/html
# - manual steps after this script
# * in eclipse: install plugins for php git hub
# * in eclipse: configure firefox (chrome,...) as browser to run with the php debuger
# * in eclipse: switch php debugger from zend to xdebug
# * in eclipse: add local hubzilla github repository
#
# Which user will use eclipse?
# Leave this empty if you do not want to prepare hubzilla for debugging
#
#developer_name=

View File

@@ -114,7 +114,11 @@ function check_sanity {
fi
if [ ! -f /etc/debian_version ]
then
die "Ubuntu is not supported"
die "Debian is supported only"
fi
if ! grep -q 'Linux 9' /etc/issue
then
die "Linux 9 (stretch) is supported only"x
fi
}
@@ -132,17 +136,17 @@ function check_config {
# backup is important and should be checked
if [ -n "$backup_device_name" ]
then
device_mounted=0
if [ ! -d "$backup_mount_point" ]
then
mkdir "$backup_mount_point"
fi
device_mounted=0
if fdisk -l | grep -i "$backup_device_name.*linux"
then
print_info "ok - filesystem of external device is linux"
if [ -n "$backup_device_pass" ]
then
echo "$backup_device_pass" | cryptsetup luksOpen $backup_device_name cryptobackup
if [ ! -d /media/hubzilla_backup ]
then
mkdir /media/hubzilla_backup
fi
if mount /dev/mapper/cryptobackup /media/hubzilla_backup
then
device_mounted=1
@@ -242,6 +246,11 @@ function install_apache {
nocheck_install "apache2 apache2-utils"
}
function install_imagemagick {
print_info "installing imagemagick..."
nocheck_install "imagemagick"
}
function install_curl {
print_info "installing curl..."
nocheck_install "curl"
@@ -253,11 +262,11 @@ function install_sendmail {
}
function install_php {
# openssl and mbstring are included in libapache2-mod-php5
# to_to: php5-suhosin
# openssl and mbstring are included in libapache2-mod-php
print_info "installing php..."
nocheck_install "libapache2-mod-php5 php5 php-pear php5-xcache php5-curl php5-mcrypt php5-gd"
php5enmod mcrypt
nocheck_install "libapache2-mod-php php php-pear php-curl php-mcrypt php-gd"
sed -i "s/^upload_max_filesize =.*/upload_max_filesize = 100M/g" /etc/php/7.0/apache2/php.ini
sed -i "s/^post_max_size =.*/post_max_size = 100M/g" /etc/php/7.0/apache2/php.ini
}
function install_mysql {
@@ -277,18 +286,17 @@ function install_mysql {
# want to be prompted for it then this can be arranged by preseeding the
# DebConf database with the required information.
#
# echo mysql-server-5.5 mysql-server/root_password password xyzzy | debconf-set-selections
# echo mysql-server-5.5 mysql-server/root_password_again password xyzzy | debconf-set-selections
# echo mysql-server mysql-server/root_password password xyzzy | debconf-set-selections
# echo mysql-server mysql-server/root_password_again password xyzzy | debconf-set-selections
#
print_info "installing mysql..."
if [ -z "$mysqlpass" ]
then
die "mysqlpass not set in $configfile"
fi
echo mysql-server-5.5 mysql-server/root_password password $mysqlpass | debconf-set-selections
echo mysql-server-5.5 mysql-server/root_password_again password $mysqlpass | debconf-set-selections
nocheck_install "php5-mysql mysql-server mysql-client"
php5enmod mcrypt
echo mysql-server mysql-server/root_password password $mysqlpass | debconf-set-selections
echo mysql-server mysql-server/root_password_again password $mysqlpass | debconf-set-selections
nocheck_install "php-mysql mysql-server mysql-client"
}
function install_phpmyadmin {
@@ -327,6 +335,7 @@ function install_phpmyadmin {
echo "Include /etc/phpmyadmin/apache.conf" >> /etc/apache2/apache2.conf
fi
service apache2 restart
/etc/init.d/mysql start
}
function create_hubzilla_db {
@@ -455,11 +464,6 @@ function configure_cron_selfhost {
fi
}
function install_git {
print_info "installing git..."
nocheck_install "git"
}
function install_letsencrypt {
print_info "installing let's encrypt ..."
# check if user gave domain
@@ -511,6 +515,8 @@ END
then
die "Failed to load $url_http"
fi
# accept terms of service of letsencrypt
./dehydrated --register --accept-terms
# run script dehydrated
#
./dehydrated --cron --config $le_dir/config.sh
@@ -564,17 +570,13 @@ function check_https {
}
function install_hubzilla {
print_info "installing hubzilla..."
# rm -R /var/www/html/ # for "stand alone" usage
cd /var/www/
# git clone https://github.com/redmatrix/hubzilla html # for "stand alone" usage
cd html/
git clone https://github.com/redmatrix/hubzilla-addons addon
print_info "installing hubzilla addons..."
cd /var/www/html/
util/add_addon_repo https://framagit.org/hubzilla/addons.git hzaddons
mkdir -p "store/[data]/smarty3"
chmod -R 777 store
touch .htconfig.php
chmod ou+w .htconfig.php
install_hubzilla_plugins
cd /var/www/
chown -R www-data:www-data html
chown root:www-data /var/www/html/
@@ -589,73 +591,6 @@ function install_hubzilla {
print_info "installed hubzilla"
}
function install_hubzilla_plugins {
print_info "installing hubzilla plugins..."
cd /var/www/html
plugin_install=.homeinstall/plugin_install.txt
theme_install=.homeinstall/theme_install.txt
# overwrite script to update the plugin and themes
rm -f $plugins_update
echo "cd /var/www/html" >> $plugins_update
###################
# write plugin file
if [ ! -f "$plugin_install" ]
then
echo "# To install a plugin" >> $plugin_install
echo "# 1. add the plugin in a new line and run" >> $plugin_install
echo "# 2. run" >> $plugin_install
echo "# cd /var/www/html/.homeinstall" >> $plugin_install
echo "# ./hubzilla-setup.sh" >> $plugin_install
echo "https://gitlab.com/zot/ownmapp.git ownMapp" >> $plugin_install
echo "https://gitlab.com/zot/hubzilla-chess.git chess" >> $plugin_install
fi
# install plugins
while read -r line; do
[[ "$line" =~ ^#.*$ ]] && continue
p_url=$(echo $line | awk -F' ' '{print $1}')
p_name=$(echo $line | awk -F' ' '{print $2}')
# basic check of format
if [ ${#p_url} -ge 1 ] && [ ${#p_name} -ge 1 ]
then
# install addon
util/add_addon_repo $line
util/update_addon_repo $p_name # not sure if this line is neccessary
echo "util/update_addon_repo $p_name" >> $plugins_update
else
print_info "skipping installation of a plugin from file $plugin_install - something wrong with format in line: $line"
fi
done < "$plugin_install"
###################
# write theme file
if [ ! -f "$theme_install" ]
then
echo "# To install a theme" >> $theme_install
echo "# 1. add the theme in a new line and run" >> $theme_install
echo "# 2. run" >> $theme_install
echo "# cd /var/www/html/.homeinstall" >> $theme_install
echo "# ./hubzilla-setup.sh" >> $theme_install
echo "https://github.com/DeadSuperHero/hubzilla-themes.git DeadSuperHeroThemes" >> $theme_install
fi
# install plugins
while read -r line; do
[[ "$line" =~ ^#.*$ ]] && continue
p_url=$(echo $line | awk -F' ' '{print $1}')
p_name=$(echo $line | awk -F' ' '{print $2}')
# basic check of format
if [ ${#p_url} -ge 1 ] && [ ${#p_name} -ge 1 ]
then
# install addon
util/add_theme_repo $line
util/update_theme_repo $p_name # not sure if this line is neccessary
echo "util/update_theme_repo $p_name" >> $plugins_update
else
print_info "skipping installation of a theme from file $theme_install - something wrong with format in line: $line"
fi
done < "$theme_install"
print_info "installed hubzilla plugins and themes"
}
function rewrite_to_https {
print_info "configuring apache to redirect http to httpS ..."
htaccessfile=/var/www/html/.htaccess
@@ -675,25 +610,19 @@ function rewrite_to_https {
function install_rsnapshot {
print_info "installing rsnapshot..."
nocheck_install "rsnapshot"
# internal disk
cp -f /etc/rsnapshot.conf $snapshotconfig
sed -i "/hourly/s/retain/#retain/" $snapshotconfig
sed -i "/monthly/s/#retain/retain/" $snapshotconfig
# internal disk
cp -f /etc/rsnapshot.conf $snapshotconfig
sed -i "s/^cmd_cp/#cmd_cp/" $snapshotconfig
sed -i "s/^backup/#backup/" $snapshotconfig
if [ -z "`grep 'letsencrypt' $snapshotconfig`" ]
then
echo "backup /var/lib/mysql/ localhost/" >> $snapshotconfig
echo "backup /var/www/html/ localhost/" >> $snapshotconfig
echo "backup /var/www/letsencrypt/ localhost/" >> $snapshotconfig
fi
echo "backup /var/lib/mysql/ localhost/" >> $snapshotconfig
echo "backup /var/www/html/ localhost/" >> $snapshotconfig
echo "backup /var/www/letsencrypt/ localhost/" >> $snapshotconfig
# external disk
if [ -n "$backup_device_name" ] && [ -n "$backup_device_pass" ]
if [ -n "$backup_device_name" ]
then
cp -f /etc/rsnapshot.conf $snapshotconfig_external_device
sed -i "s#snapshot_root.*#snapshot_root $backup_mount_point#" $snapshotconfig_external_device
sed -i "/hourly/s/retain/#retain/" $snapshotconfig_external_device
sed -i "/monthly/s/#retain/retain/" $snapshotconfig_external_device
sed -i "/alpha/s/6/30/" $snapshotconfig_external_device
sed -i "s/^cmd_cp/#cmd_cp/" $snapshotconfig_external_device
sed -i "s/^backup/#backup/" $snapshotconfig_external_device
if [ -z "`grep 'letsencrypt' $snapshotconfig_external_device`" ]
@@ -717,7 +646,7 @@ function configure_cron_daily {
# every 10 min for poller.php
if [ -z "`grep 'poller.php' /etc/crontab`" ]
then
echo "*/10 * * * * www-data cd /var/www/html; php include/poller.php >> /dev/null 2>&1" >> /etc/crontab
echo "*/10 * * * * www-data cd /var/www/html; php Zotlabs/Daemon/Master.php Cron >> /dev/null 2>&1" >> /etc/crontab
fi
# Run external script daily at 05:30
# - stop apache and mysql-server
@@ -767,9 +696,7 @@ echo " if mount $backup_device_name $backup_mount_point" >> /var/www/$hub
echo " then" >> /var/www/$hubzilladaily
echo " device_mounted=1" >> /var/www/$hubzilladaily
echo " echo \"device $backup_device_name is now mounted. Starting backup...\"" >> /var/www/$hubzilladaily
echo " rsnapshot -c $snapshotconfig_external_device daily" >> /var/www/$hubzilladaily
echo " rsnapshot -c $snapshotconfig_external_device weekly" >> /var/www/$hubzilladaily
echo " rsnapshot -c $snapshotconfig_external_device monthly" >> /var/www/$hubzilladaily
echo " rsnapshot -c $snapshotconfig_external_device alpha" >> /var/www/$hubzilladaily
echo " echo \"\$(date) - disk sizes...\"" >> /var/www/$hubzilladaily
echo " df -h" >> /var/www/$hubzilladaily
echo " echo \"\$(date) - db size...\"" >> /var/www/$hubzilladaily
@@ -788,28 +715,22 @@ echo " fi" >> /var/www/$hubzilladaily
echo "fi" >> /var/www/$hubzilladaily
echo "if [ \$device_mounted == 0 ]" >> /var/www/$hubzilladaily
echo "then" >> /var/www/$hubzilladaily
echo " echo \"device could not be mounted $backup_device_name. Using internal disk for backup...\"" >> /var/www/$hubzilladaily
echo " rsnapshot -c $snapshotconfig daily" >> /var/www/$hubzilladaily
echo " rsnapshot -c $snapshotconfig weekly" >> /var/www/$hubzilladaily
echo " rsnapshot -c $snapshotconfig monthly" >> /var/www/$hubzilladaily
echo " echo \"device could not be mounted $backup_device_name. No backup written.\"" >> /var/www/$hubzilladaily
echo "fi" >> /var/www/$hubzilladaily
echo "#" >> /var/www/$hubzilladaily
echo "echo \"\$(date) - db size...\"" >> /var/www/$hubzilladaily
echo "du -h /var/cache/rsnapshot/ | grep mysql/hubzilla" >> /var/www/$hubzilladaily
echo "du -h /var/lib/mysql/ | grep mysql/hubzilla" >> /var/www/$hubzilladaily
echo "#" >> /var/www/$hubzilladaily
echo "# update" >> /var/www/$hubzilladaily
echo "echo \"\$(date) - updating dehydrated...\"" >> /var/www/$hubzilladaily
echo "git -C /var/www/letsencrypt/ pull" >> /var/www/$hubzilladaily
echo "echo \"\$(date) - updating hubhilla core...\"" >> /var/www/$hubzilladaily
echo "git -C /var/www/html/ pull" >> /var/www/$hubzilladaily
echo "echo \"\$(date) - updating hubhilla addons...\"" >> /var/www/$hubzilladaily
echo "git -C /var/www/html/addon/ pull" >> /var/www/$hubzilladaily
echo "bash /var/www/html/$plugins_update" >> /var/www/$hubzilladaily
echo "(cd /var/www/html/ ; util/udall)" >> /var/www/$hubzilladaily
echo "chown -R www-data:www-data /var/www/html/ # make all accessable for the webserver" >> /var/www/$hubzilladaily
echo "chown root:www-data /var/www/html/.htaccess" >> /var/www/$hubzilladaily
echo "chmod 0644 /var/www/html/.htaccess # www-data can read but not write it" >> /var/www/$hubzilladaily
echo "echo \"\$(date) - updating linux...\"" >> /var/www/$hubzilladaily
echo "apt-get -q -y update && apt-get -q -y dist-upgrade # update linux and upgrade" >> /var/www/$hubzilladaily
echo "apt-get -q -y update && apt-get -q -y dist-upgrade && apt-get -q -y autoremove # update linux and upgrade" >> /var/www/$hubzilladaily
echo "echo \"\$(date) - Backup hubzilla and update linux finished. Rebooting...\"" >> /var/www/$hubzilladaily
echo "#" >> /var/www/$hubzilladaily
echo "reboot" >> /var/www/$hubzilladaily
@@ -885,6 +806,7 @@ update_upgrade
install_curl
install_sendmail
install_apache
install_imagemagick
install_php
install_mysql
install_phpmyadmin
@@ -894,7 +816,6 @@ install_run_selfhost
ping_domain
configure_cron_freedns
configure_cron_selfhost
install_git
install_letsencrypt
configure_apache_for_https
check_https

View File

@@ -1,44 +1,186 @@
#
# Travis-CI configuration file for Hubzilla
#
## configure things
#
# see http://about.travis-ci.org/docs/user/languages/php/ for more hints
language: php
# list any PHP version you want to test against
# use newer 'trusty' based distro, old one is 'precise'
dist: trusty
# use docker based containers
sudo: false
# Git branches whitelist to build on Travis CI
branches:
only:
- master
- dev
# whitelist our tags for release deployments e.g. 2.2
- /^\d+\.\d+(\.\d+)?(-\S*)?$/
# Install additional software
addons:
# Install dependencies for generating API documentation with doxygen
apt:
packages:
- doxygen
- doxygen-latex
- graphviz
- ttf-liberation
# enable and start databases on a per job basis
#services:
# - mariadb
# - postgresql
# any PHP version we want to test against, current stable phpunit requires PHP >= 7.0
php:
# using major version aliases
- '7.0'
- '7.1'
- '7.2'
# HHVM does not fulfil PHPUnit platform requirements as being compatible with PHP7 yet
#- 'hhvm'
# aliased to a recent 5.6.x version
- 5.6
# aliased to a recent 7.x version
- 7.0
# aliased to a recent hhvm version
- hhvm
# list of environments to test
env:
global:
# used for doxygen deployment script
- DOXYFILE: $TRAVIS_BUILD_DIR/util/Doxyfile
# Uncomment if a newer/specific version of Doxygen should be used
#- DOXY_VER: 1.8.12
# Code Coverage is slow, no need to have it in every build
- PHPUCOV: "--no-coverage"
# use matrix only for PHP and MySQL, all other combinations added through includes
matrix:
# trusty default MySQL 5.6
- DB=mysql MYSQL_VERSION=5.6
# optionally specify a list of environments, for example to test different RDBMS
#env:
# - DB=mysql
# - DB=pgsql
# optionally set up exclutions and allowed failures in the matrix
# Matrix configuration details
matrix:
fast_finish: true
# Additional check combinations
include:
# PHP7.2, mariadb 10.2
- php: '7.2'
env: DB=mariadb MARIADB_VERSION=10.2 CODECOV=1
# use mariadb instead of MySQL
addons:
mariadb: '10.2'
# PHP7.2, PostgreSQL 9.6
- php: '7.2'
env: DB=pgsql POSTGRESQL_VERSION=9.6 PHPUNITFILE=phpunit-pgsql.xml
# Use newer postgres than 9.2 default
addons:
postgresql: '9.6'
services:
- postgresql
# PostgreSQL 10 with Docker container
- php: '7.2'
env: DB=pgsql POSTGRESQL_VERSION=10 PHPUNITFILE=phpunit-pgsql.xml
sudo: required
services:
- docker
# PHP7.2, old precise distribution with MySQL 5.5
- php: '7.2'
env: DB=mysql MYSQL_VERSION=5.5
dist: precise
services:
- mysql
# MySQL 5.7 with Docker container
- php: '7.2'
env: DB=mysql MYSQL_VERSION=5.7
sudo: required
services:
- docker
# Excludes from default matrix combinations
# exclude:
# - php: hhvm
# env: DB=pgsql # PDO driver for pgsql is unsupported by HHVM (3rd party install for support)
allow_failures:
- php: hhvm
# cache composer downloads between runs
cache:
directories:
- $HOME/.composer/cache
#- $HOME/doxygen/doxygen-$DOXY_VER/bin
#
## execute things
#
before_install:
- travis_retry composer self-update
# Start MySQL 5.7 Docker container, needs some time to come up
- if [[ "$MYSQL_VERSION" == "5.7" ]]; then sudo service mysql stop; docker run -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:5.7 && sleep 25 && docker ps; fi
# Start PostgreSQL 10 Docker container, needs some time to come up
- if [[ "$POSTGRESQL_VERSION" == "10" ]]; then sudo service postgresql stop; docker run -d -p 5432:5432 postgres:10-alpine && sleep 35 && docker ps; fi
# Install composer dev libs
install:
- travis_retry composer install --optimize-autoloader --no-progress
# execute any number of scripts before the test run, custom env's are available as variables
#before_script:
# - if [[ "$DB" == "pgsql" ]]; then psql -c "DROP DATABASE IF EXISTS hello_world_test;" -U postgres; fi
# - if [[ "$DB" == "pgsql" ]]; then psql -c "create database hello_world_test;" -U postgres; fi
# - if [[ "$DB" == "mysql" ]]; then mysql -e "create database IF NOT EXISTS hello_world_test;" -uroot; fi
install:
- composer require phpunit/phpunit
before_script:
# Use code coverage config for phpunit
- if [[ ! -z $CODECOV ]]; then export PHPUCOV=""; fi
# Some preparation tasks of environment
- ./tests/travis/prepare.sh
# DB specific prepare scripts
- if [[ "$DB" == "mysql" ]]; then ./tests/travis/prepare_mysql.sh; fi
- if [[ "$DB" == "mariadb" ]]; then ./tests/travis/prepare_mysql.sh; fi
- if [[ "$DB" == "pgsql" ]]; then ./tests/travis/prepare_pgsql.sh; fi
# omitting "script:" will default to phpunit
# use the $DB env variable to determine the phpunit.xml to use
script: vendor/bin/phpunit tests/unit/
script:
- ./vendor/bin/phpunit $PHPUCOV -c tests/$PHPUNITFILE
after_success:
- cat tests/results/testdox.txt
# Generate API documentation and prepare for deployment
- ./tests/travis/gen_apidocs.sh
after_failure:
- cat tests/results/testdox.txt
# Deploying release and API documentation to GitHub
before_deploy:
- if [[ "$CODECOV" == "1" ]]; then zip -9 -r -q tests/hubzilla-testresults.zip tests/results; fi
deploy:
- provider: pages
skip_cleanup: true
local_dir: $TRAVIS_BUILD_DIR/doc/html
github_token: $GH_TOKEN
on:
repo: redmatrix/hubzilla
branch: master
condition: '(-n "$GH_TOKEN") && ("$TRAVIS_JOB_NUMBER" == "${TRAVIS_BUILD_NUMBER}.1")'
# add API documentation to release, could also be used to provide full packages if we want to drop vendor from our repo
- provider: releases
skip_cleanup: true
api_key: $GH_TOKEN
file: 'doc/hubzilla-api-documentation.zip'
on:
repo: redmatrix/hubzilla
tags: true
condition: '(-n "$GH_TOKEN") && ("$TRAVIS_JOB_NUMBER" == "${TRAVIS_BUILD_NUMBER}.1")'
# add code coverage and test results to release
- provider: releases
skip_cleanup: true
api_key: $GH_TOKEN
file: 'tests/hubzilla-testresults.zip'
on:
repo: redmatrix/hubzilla
tags: true
condition: '(-n "$GH_TOKEN") && ("$CODECOV" == "1")'
#after_deploy:
#after_script:
# configure notifications (email, IRC, campfire etc)
notifications:
#notifications:
# irc: "irc.freenode.org#yourfavouriteroomfortravis"
# a plugin/script to post to a hubzilla channel would be neat here

805
CHANGELOG
View File

@@ -1,5 +1,808 @@
Hubzilla 3.6 (????-??-??)
- Update jquery.timeago library
- Implement Hookable CSP
- ActivityStreams: accept header changes to support plume
- Streamline inconsistencies in addon naming
- SECURITY: hash the session_id in logs
- Update justified gallery library
- Hide channel in /cloud root if channel is hidden in directory
- Add resend option to channel sources tp discard original author.
- Provide flag to exclude privacy groups for federation plugin use in collect_recipients()
- Upgrading from redmatrix is no longer supported
- Deal with htmlentity encoding during authentication workflow
- Rework mod group
- Make droping posts of removed connections more memory efficient
- Refactor getOutainfo() for DAV storage
- Optionally report total available space when uploading
- SECURITY: provide option to disable the cloud 'root' directory and make the cloud module require a target channel nickname
- Add plink and llink to viewsource
- Add new 'filter by name' feature
- Remove network tabs
- New activity filter widget
- New activity order widget
- Make menus editable by visitors with webpage write permissions
- Move forum notifications to notifications
- Move manage privacy groups to the panel channel menu
- Don't remove items that are starred, filed, or that you replied to when removing a connection
- Don't deliver local items more than once
- Make navbar search use the module search function in /network and /channel
- Paint the locks on private activitypub items red. Their privacy model is "slightly" different from hubzillas
- Improve new channel creation workflow
- Add hook 'get_system_apps'
- Implement reset button for jot
- Adjust accept header to make pleroma happy
- Provide a general purpose GDPR document
- Provide function to fetch photo contents from url
- Make get_default_profile_photo() pluggable
- Refactor tags/mentions
- Refactor autocomplete mechanism
- Display pubsites link in info area if invite only
- Add cancel button to editor
- Implement MessageFilter for pubstream and sourced messages
- Add supported protocols to siteinfo
- Allow pdf embeds
- Allow uninstall of plugins which no longer exists via cmdline tool
- Improve the homeinstall script
- Provide easy access to the autoperms setting for forum and repository channels
- Implement admin delete of files, photos and posts
- Allow a different username to be used when importing a channel
- Provide warnings about profile photo and cover photo permissions
- Set the 'force' flag on attach_mkdir when initiated from a DAV operation
Bugfixes
- Fix double file uploads when dropping files into jot
- Fix jot collapsing when drag and drop to open jot
- Fix wrong album name when moving photos
- Fix wrong timestamp localization before first update in mod mail
- Fix post exiration not propagated to other networks (which support it)
- Fix sys channels visible in dirsearch
- Fix remote_self not working correctly
- Fix photos not syncing properly if destination is a postgres site
- Fix wrong hubloc_url for activitypub hublocs
- Fix z_check_dns() for BSD
- Fix not null violation in oauth1
- Fix DB issues with oauth2 on postgresql
- Fix 'anybody authenticated' not correctly handled in can_comment_on_post()
- Fix postgres issue if register mode is set to yes - with approval
- Fix tag search not finding articles
- Fix issue with mentions when markdown post addon is enabled
- Fix duplicate addressbook entries on repeated channel imports
Addons
- Cart: various display improvements
- Cart: make cart work with postgresql DB backend
- Cart: add new hzservice for service_classes
- Cart: add storewide currency settings
- Cart: provide channel app 'Shop' for cart addon
- Cart: implement order updating
- Cart: use CSP hook for paypals checkout.js
- Cart: provide a cancel mechanism for orders
- Cart: add paypal button
- Gallery: new addon to display photo albums with the photoswipe library
- Ldapauth: optionally auto create channel
- Pubcrawl: new setting to ignore ActivityPub recipients in privacy groups
- Diaspora: fix issue with displaying multiple photos
- Pubcrawl: provide plink
- Pubcrawl: hubloc_url should be baseurl, not actor url
- Pubcrawl: deliver restricted posts from hubzilla as direct messages (there is no other way to address only a subset of followers in mastodon)
- Pubcrawl: address comments to a restricted mastodon post to /followers
Hubzilla 3.4.2 (2018-07-19)
- Compatibility fix for future versions
Hubzilla 3.4.1 (2018-06-08)
- Say bye, bye to GitHub and move sourcecode repositories to #^https://framagit.org/hubzilla
- When removing a connection, don't remove items that are starred, filed or replied to
- Do not show archived forums in forum widget
- Fix potential XSS vulnerabilities
- Translation updates
- Fix postresql issue with oauth2
- Improve abconfig queries
- Fix postgresql issue if register mode was set to yes - with approval
Addons
- Diaspora: fix likes of non-contacts not allowed to like allthough diaspora_public_comments is set
- Pubcrawl: fix wrong hubloc url
- Pubcrawl: fix issues with attachments
- Pubcrawl: fetch required item metadata in asfetch_item()
- Cavatar: use cavatar for all default profile photos if enabled
- Pubcrawl: fix peertube video display
- Pubcrawl: fix incoming activitypub comments not getting propagated downstream
- Statistics: fix .well-known/nodeinfo
- Pubsubhubbub: fix postgresql related issues
- Pubcrawl: send the original LD-signature signed activity when distributing comments downstream if we have it
- Cavatar: improve the image creation process
Hubzilla 3.4 (2018-05-04)
- Provide warnings about profile photo and cover photo permissions
- Don't duplicate addressbook entries on repeated channel imports
- Where possible strip zid parameter from links that get pasted into posts so that they will get a correct zid when rendered
- Rename boxy schema to Focus-Boxy
- Rename BS-Default schema to Focus-Light
- Mark simple_* schemas unmaintained and deprecated - they will be removed in next release if nobody steps up to maintain them.
- Implement trending tags for mod pubstream
- Relax restrictions to the design tools menu to allow those with write_pages permission
- Add alt pager to mod moderate
- Show existing cover photo when changing it
- Update to bootstrap lib to version 4.1
- Provide a higher accuracy method for active channels information
- Provide visible star status for starred posts
- Move the thread author menu to the wall item photo
- Accept system_language through either get or post
- Remove recipient name from stored notifications but keep them in emails
- Fix issue of being forced to log back in after leaving a delegated channel
- Implement last commented expiration setting in mod admin
- Create catcloud widget and provide a type option which can include 'cards' or 'articles'
- Modified notifications widget to add the public stream when the current user is allowed to see it only
- Don't provide a connect button for transient identities
- Merge techlevels and features
- Implement auto-save posts and comments in browser using localStorage
- Display directory server in siteinfo.json
- Bring back the dnt policy document
- Implement OAuth2/OpenIDConnect server
- Add basic structure for additional features documentation
- Community tag refactor
- Obscurify chats
- Provide a way to share wiki pages
- Update folder timestamp on uploaded files
- Code optimisations and de-duplication on updating parent commented timestamp
- Turn newmember widget into a feature
- Make list mode work in cards and articles
- Make alt pager work for articles and cards
- Initial support for alternative sort orders on the cloud pages
- Add Ochannel module for testing OStatus bad behaviour
- Add the social - federation permission role
- Update justified gallery lib from 3.6.3 to 3.6.5
Bugfixes
- Fix regression with forum widget unseen count
- Fix issue with imagemagick exif info
- Aonymous comments in StdLimits shouldn't be allowed
- Fix wiki pages not syncing
- Show "Unseen public activity" channel setting when site only public streams are activated
- Fix channel import failing to provide channel_password value
- Fix permalinks to children of articles and cards
- Fix missing year on profile birthday input
- Fix missing login/out buttons for medium screensize
- Preserve existing categories when updating an app from an embed source
- Fix app sellpage not being stored
- Fix tagadelic being overly protective of permissions
- Fix comments not displayed in single card/article view
- Fix anonymous comments bump thread
- Fix pending registrations visible in admin accounts
Addons
Pubcrawl: fix issues with "private" messages
Pubcrawl: fix issues with postgresql
Fuzzloc: new addon to blur your browser location
Pubcrawl: implement follow by webfinger
Cart: new addon which provides online shop functionalities (experimental)
Pubcrawl: implement two-way summary functionality
Wordpress: upgrade incutio xmlrpc library to use hubzilla curl wrapper
Hzfiles: various fixes
Diaspora: support full_name attribute in profile messages
Frphotos: deprecate plugin (keep it for reference)
Webmention: require html5 parser
GNU-Social: provide alternative xchan_url
Diaspora: fix wrong callback function
Diaspora: fix conversion of forum mentions to markdown by providing a !{forum@host} link syntax
Diaspora: fix item title not transferred
Hubzilla 3.2 (2018-03-09)
- Improve rendering of Readme files in plugin settings
- Add pdl file for mod moderate
- Update redbasic theme screenshot
- Restrict mail messages to max_import_size
- Add pdl file for mod thing
- Add federation property to webfinger
- Provide new member widget which sits beneath the notifications for the first 60 days after an account creation
- Rename Addon/Feature settings to Addon Settings
- Move privacy groups to the newly created Access Control and Permissions tab
- Move oauth_client management and guest access tokens to features rather than auto-enabling at various feature levels
- Change undo_post_tagging() to emit quoted tags rather than using underscore replacement if they contain spaces
- Require directory servers to be using some modern form of encryption
- Change icon set from font-awesome to fork-awesome
- Provide opt-out link and text with notification emails
- Alter image selection widget to accept/submit on choose (github issue #979)
- If hide_in_statistics is set, only include the total channels count and no other statistical info in siteinfo.json
- Mark connections where we do not have post_comments permissions with an no entry sign
- Click your own profile photo to change it if loged in
- Remove street address info from the default basic profile fields
- Handle error logging in on cloud page (post method not implemented)
- Cloud 'view-as-tiles' toggle wasn't available for guests and they are the most likely to prefer that view
- Provide DB compatibility for poll and voting implementations across several platforms
- Remove the unused ZotDriver and ProtoDriver classes
- Move dreport from zot to lib
- Move Zotlabs\Zot\Verify to Zotlabs\Lib\Verify as part of the zot6 re-org
- Add event resource_id to iconfig so Diaspora can search on it without looking inside JSON objects
- Trim non-existent/deprecated plugins from siteinfo plugin list
- Add 'Validate' button to new_channel page
- Do not show summary if it is equal to body
- Update code tag styling so bbcode [code] blocks and wiki markdown inline code render nicely
- Crypto improvements (use pkcs1_oaep_padding instead of the older pkcs1_padding)
- Refactor OAuth2Server a bit
- Refactor of the DB update system
- Extend the oauth2 storage driver so that we can use our own channel table
- Provide option to block the public stream unless authenticated
- Refactor shares and urn shares into activities
- Show likes and dislikes in notices if always_show_in_notices is set
- Add hidden config to disallow anonymous comments (github issue #972)
- Add flexibility to prefix/suffix string translations for jquery.timeago
- Make post titles searchable (github issue #975)
- Implement zot6 delivery
- Remove mobile_detect library
- Separate the parsing of author information from the parsing of item/activity information in feedutils
- Provide summaries in feeds under very limited cases
- Redirect to the email_validation page if login was attempted after account creation but prior to successful verification
- Iprove workflow for form based email validation when auto_channel_create is in effect
- Provide a default video image if nothing else is available
- Surface the ability to change the landing page after channel creation
- Create the 'go' module to present several possible things to do after channel creation
- Add unit test for dba_pdo driver class
- Add unit test for \DBA factory
- Usability improvements to registration/verification workflow
- Don't do any bbcode translation within code blocks (except baseurl, observer, and linefeeds)
- Improve browser language detection
- Remove unused prototype importer template and obsolete reflection cms importer
- Update to bootstrap 4 stable
- Implement caching of notifications in browser session storage
- Code cleanup and simplification in mod_like
- Implement new cropper library
- Better notifications for edit post/comments which may have been originally posted long ago
- Ensure filter words are not empty in include/items.php
- Change query in mod search to be compatible with postgres
- Provide channel list function in the zot api
- Remove deprecated 'qcomment' feature
- Simplify webserver logic flow
- Simplify interactions with the get_features hook
- Provide a local pubstream option (content from this site only)
- Simplify dir_tagadelic dramatically
- Surface the article feature
- Add summary bbcode tag
- Move markdown-in-posts/comments feature to plugin
- Support tables in markdown posts/comments
Bugfixes
- Fix javascript error if there are no notifications
- Fix some issues with friend suggestions on standalone sites with no 'suggestme' volunteers
- Fix unable to reset profile fields to defaults in admin/profs by emptying the textarea
⁻ Fix issues with accordions related to bootstrap upgrade
- Fix empty dob is set to the date of the first profile save
- Fix several email validation issues
- Fix issue if logged in locally and mod_display returns nothing owned by your uid; retry with known public uids rather than issue 'permission denied'
- Fix public stream app permission check to match the recent fixes to the Module
- Fix issues with delivery of edited posts to forums
- Fix autoname test
- Fix issue where self and pending connections were visible in connections when not loged in
- Fix bad query in mod defperms
- Fix issue where gnusocial likes were not recognised as like activity
- Fix manual queue invocation
- Fix unable to delete accounts using tickboxes on admin/accounts
- Fix a PHP7.2 warning when a channel has no cards
- Fix unable to delete permission groups with space in name (github issue #920)
Addons
Statistic: fix reporting of incorrect register policy in nodeinfo
Diaspora: diaspora_init_relay: calls diaspora_import_author with too many arguments
Pubcrawl: provide a system 'allowed' for to match the system setting for other protocols
Diaspora: fix issue with sending diaspora profile change messages over diaspora_v2
Diaspora: provide limited but hopefully adequate support for new Diaspora html5 audio/video
Pubcrawl: send zot context with follow requests
Pubcrawl: add video to the set of message types we process
Pubcrawl: support for activitypub media
Openclipatar: remove extra details for each image
Diaspora: initial work on event participation
Statistic: remove the friendica protocol from nodeinfo until it is fully implemented
Statistic: re-arrange the order of the .host-meta/nodeinfo links
Pubcrawl: add share verb to activitystreams translator
Pubcrawl: post public posts to syschannel
Statistics: fix legacy statistics.json interface
Gnusocial: improve error checking when processing a salmon message
Dirstats: fix sql syntax error
Pubcrawl: possibly reduce constraint violations for xchan_store_lowlevel (duplicate entry)
Diaspora: ensure we process Friendica-over-Diaspora yearless birthdays correctly
Chess: added simple history browsing controls to spectator view
Diaspora: support post/comment edits
Diaspora: don't redirect fetch requests for non-Diaspora wall-to-wall and forum posts unless they can be redirected to a Diaspora protocol site
Chess: added support for publicly visible games
Phpmailer: add quickstart notes
Chess: choose random color if no color is chosen
New Plugin: mdpost - markdown in posts/comments, migrated from core to addon
Diaspora: provide a configuration option to import the diaspora firehose, otherwise only import content matching subscribed tags
NSFW: load images only after click on the button
Twitter: provide configurable tweet length until such time as 280 becomes universal
Hubzilla 3.0 (2018-01-09)
- Updated homeinstall script
- Sort cloud directory by 1. is_dir and 2. name
- Document that imagick calls/execs ffmpeg for mp4 video thumbnails
- Use pipe_stream() instead of file_{get, put}_contents() in attach_store()
- Make homeinstall script ready for Debian 9
- Add url and headings to bbco_autocomplete()
- Remove additional linebreaks after headings
- html2bbcode: use headings bbcode for headings
- Don't zidify all permalinks, only zot permalinks
- Make remote homelink link to the home host and not to the home channel
- Auto promote beginner (techlevel 0) accounts to level 1 after they show signs of active participation.
- Go back to including the photo thumbnail data in the export file.
- Improvements to file import/export
- Default value for xlink_rating_text
- Implement IMoveTarget and recursive file/directory move/rename - github issue #680
- Synchronise an attach_move operation to clones
- Provide a themed page with an error notification on errors instead of an obtuse XML error structure in mod cloud
- Disallow backslashes in wiki and wiki-page names
- We only require one update module. The rest are superfluous.
- Render installable elements as buttons instead of links
- Implement chunked uploads for photos page
- Remove warning for large files on cloud upload
- Add a filter for notification to show new posts only
- Implement chunked uploads for cloud
- Use httpsig auth for getfile
- Load the profile images in the custom acl selector only if we actually need them
- Rework liveUpdate() and notificationsUpdate() (aka ping) to first do the liveUpdate and when this is done only do the ping once.
- Don't include invisible "update activities" in category widget
- Default profile assign
- Provide system config option for minimum registration age.
- Remove deprecated $a argument from advanced_profile()
- Change to bbcode calling parameters
- Extra checking of server headers in upload functions
- Provide a handler for chunked uploads in mod file_upload
- Optional divider between item header and body
- Allow toggle to SMBC scaling mode.
- Add thumbnail hook
- Implement SVG thumbnails and expose security setting
- Implement video thumbnail generator
- Implement pdf thumbnails
- Implement thumbnail generator for epubs
- Make browser history buttons work with ajax calls in mod display and hq
- Implement tile view for mod cloud (read only)
- Add mp3 audio thumbnail generator
- Set display_path for photo_upload from the DAV File interface
- Provide a generalised interface for thumbnail generators to support various content types
- Add ID3Parser library.
- Text thumbnails in cloud tile mode
- Revisit media breakpoints - do not switch to mobile view to early.
- Add French to help pages language dropdown selector
- Inroduce the HQ module - an alternative landing page for hubzilla
- Strip author name from notify messages in notifications - github issue #911
- Remove column item.diaspora_meta
- Provide ability to pin apps to navbar from mod apps
- Add private forums to forum widget
- Move notifications style to widgets.css
- Sort out a few more large image upload issues
- Move notifications full-screen handling to notifications widget
- Move mailhost settings from plugin to core
- Sort combined private mail conversations by latest updated conversation instead of created parent
- Filter atokens on acl search
- Allow a site to block (public) the directory separately from other resources.
- Improve removed_channel final cleanup - github issue #386
- Cleanup of upload_to_comments(
- Dedicate the first click to slideup the cover again but make sure the nav buttons remain functional
- Set os_syspath in DAV file put operation so that photos will scale correctly.
- Unit tests for Zotlabs\Access classes
- Bring back tabindex to submit comments
- attach.php minor cleanup and doc
- Allow cloud filenames to include ampersands without messing up auth tokens (zid, owt, and zat, and the constant placeholder 'f=')
- Provide short localised summary for likes that will end up in displayed notifications
- Improving Doxygen documentation.
- Update item_normal() to not include ACTIVITY_OBJ_FILE obj_type
- Sort out issues with pubstream item interactions
- Don't perform zot_refresh on dead sites unless $force is set
- Do not send message_list responses to dead sites (this delivery method bypassed the notifier)
- Support for netselect query
- Add another delivery control parameter (queue threshold)
- Add some documentation about shareable widgets
- Allow plugin class widgets
- Some more work on unit tests
- Encrypt the owa token
- Bring back the markdown post feature
- We call Theme:url() statically, make it also static.
- Table structure for pseudo or proxy channels (pchan)
Bugfixes
- Fix sync non-default profile photo changes to clones - github issue #113
- Fix prev/next buttons on connedit can show deleted connections - github issue #673
- Fix affinity widget settings
- Fix dupe bug in content hooks - github issue #943
- Fix directory keywords returned from dir_tagadelic() in standalone mode
- Fix argument warning when arguments are correct in util/dcp
- Fix issue with long filenames in mod cloud
- Fix misc. issues with new 'insert photo from photo album' github issue #475
- Fix regression in channel sources delivery
- Fix loading of theme-specific widgets
- Fix unable to add wiki pages with spaces
- Fix mod display and others that require a non-zero profile_uid for updates
- Fix various PHP 7.2 issues
- Fix typo in HTTPSig
- Fix pagetitle lost importing a pdl element from conversation
- Fix js warning - getelementbyid (id doesn't exist)
- Fix some pubstream on/off weirdness
- Fix default addressbook has no name - github issue #921
- Fix double html ids in caldav widget if more than one sharee
- Fix regression in cdav calendar widget
- Fix sync packet not generated when deleting a file using the web browser interface
- Fix album cover thumb generator
- Fix like-button for images - github issue #826
- Fix typo - github issue #910
- Fix issue with group_rmv()
- Fix php warnings on photo delete
- Fix some conflicts between private tags and forum tags
- Fix some schema issues
- Fix wiki pages not updating after creating new page
- Fix a PHP warning in Permissions::FilledPerms()
- Fix unicode characters in urls tripping up url regexes - github issue #901
- Fix second half of github issue #893
- Fix common connections on suggestion page showing wildly different results than remote profile, and is consistently off by one
- Fix cloud redirects with owt tokens
- Fix issues with diaspora xchans
- Fix memory overflow trying to delete a connection with a very high noise to signal ratio
- Fix sql error in page module
- Fix unstar
Plugins/Addon
Diaspora: fix 'view full size' photo link - core github issue #947
Diaspora: implement recent changes in diaspora account_migration spec
GNU-Social: fix uploading a photo to a post results in double post - github issue 75
GNU-Social: fix gnusoc plugin not respecting delayed delivery - github issue 74
Pubcrawl: fix PHP warning
Diaspora: remove garbage from magic envelope
Diaspora: fix permalinks for zot reshares
New addon: hzfiles - sync files across hubzilla servers
Fix various PHP 7.2 issues
Remove Firefox social plugin - it was deprecated and removed in firefox version 57
Diaspora: unset id and parent for local comments
Pubsubhubbub: set interactive flag to avoid delivery killing if block_public is enabled
Mailhost addon moved to core
Remove js_upload addon
Hubzilla 2.8.1 (2017-11-11)
- Rename channel app events to calendar and add nav_set_selected() to /cal
- Load notifications links to /display via ajax if we are already in /display
- Add location info to the navbar for remote visitors
- Bring back tabindex to submit comments
- Add spanish translations for context help
- Added mode to portfolio widget
Bugfixes
- Fix os_syspath in DAV file put operation so that photos will scale correctly
- Fix unicode characters in urls tripping up url regexes - github issue #901
- Fix wiki pages not updating after creating new page
- Fix notifications covered by cover photo on medium size screens - github issue #906
- Fix unable to change permissions on wiki with space in name
- Fix only show nav app link if we have a selected app
- Fix unable to mark all messages read
- Fix imagedata not set correctly if large photo and imagick is not installed
- Fix issues with diaspora xchans
- Fix profile photo issue triggered by a previous bug
Plugins/Addon
N-S-F-W: improve the undocumented n-s-f-w author::word feature
Diaspora: update the import_diaspora tool for the version 2.0 account export files
Diaspora: fix comments are partly containing "diaspora_handle" instead of "author" - github issue #69
Pubcrawl: provide feature setting for downgrade_media option
Pubcrawl: fix issue where replies to replies did not find its parent
Diaspora: fix friendica likes on comments
Diaspora: fix private mail
Diaspora: fix third party deletes/retractions not propagating
Diaspora: likes not working - github issue #895 in core
Diaspora: fix comments from unknown persons not accepted if allow public comments is enabled - github issue #68
XMPP: fix php warning
Hubzilla 2.8 (2017-10-25)
- Redirect to be moderated items to /moderate
- Update notifications if notifications area remains open
- Create an actual logout module instead of relying on internal variables
- Add local_channel as a comanche condition variable
- Implement possibility to pin app-tray apps in the navbar via app category navbar_default
- Introduce custom navbars
- Re-implement single delivery
- Pdledit usability improvements
- Implement next generation notifications in right aside
- Implement single post view for /pubstream
- Make anonymous comments work in mod display
- Introduce notifications for unseen public stream posts (off by default)
- Preperatory work on Zot VI
- Add app for site admin
- Introduce experimental alternate channel_menu navigation (off by default)
- Introduce notifications for shared files
- Bring back notifications for account approvals
- Urlencode hashes from mod_acl
- Don't use chanlink_url() for feed mentions
- Design common friends widget to fit better in the app and move it to left aside
- Allow navbar to be used when cover photo is displayed in mod channel
- Implement admin setting to use imagick converter for large photos
- Process activity deletes from OStatus which for whatever reason do not use the industry standard tombstone mechanism
- Implement new css based spinner
- Move the link header initialisation from Router to Webserver
⁻ Extend activity_match() to work with arrays
- Updated the trusted CA cert database
- Ostatus - support likes of comments
- Provide ability to mention a forum by using !forumname as well as the traditional red style (@forumname+)
- Encrypt delivery reports (not backward compatible)
- Provide a space between link header params (draft-cavage-http-signatures-08)
- Turn common_friends into a widget
- Update to jquery-3.2.1
- Wiki pages sorted by name
- Create new hooks for permissions_accept and permissions_reject
- Provide rel=alternate link if no reshare content in post
- Add remote login button to login page
- DB update to add index to item.resource_id
- Implement wiki editing (name and acl)
- Provide a hook for importing a channel photo at channel creation time
- Implement wiki mimetype lock
- Bring back wiki downloads
- Add text/plain mimetype to wiki
- Implement per page mimetype selection for wikis
- Added english context help for apps and appman
- Implement owa (open web auth)
- Ignore diaspora_meta column on item import
- Check code permissions on cloud files
- Remove period from characters allowed in username
- Make comment highlighting more reliable
- Sign zot-info packets with httpsignatures
- Implement server to server magic auth
- Provide support for json-ld signatures
- Rewrite comment form open/close handling to be more reliable
- Radically reduce code duplication in updateConvItems()
- Remove discover tab in favour of the public stream app
- Apply autotime to all autotime classed elements when static loading a page
- Implement cards feature
- Extended support for help page translations including table of contents files at the top level
- Introduce util/dmkdir - a mkdir tool for DAV
- Various doco improvements
- Introduce util/dcp (DAV-copy) - copy file or directory from local system to Hubzilla
- Provide support for HTTPsig
- Implement mechanism for selective network following in protocol connectors (diaspora, ostatus, activitypub, zot, rss)
Bugfixes
- Fix w2w posts not removed in contact_remove() - github issue #837
- Fix guests not having a unique (non-existent) url
- Fix mod register re-using the password
- Fix write_storage permission not checked in /display
- Fix discovery of moderated items in enotify
- Fix profile thing image not deleted when thing deleted - github issue #868
- Fix deletions to comments not synced on wall posts
- Fix community tags not preserved on post edit - github issue #865
- Fix profile photo propagation issue if the local xchan_photo_[l|m|s] fields were changed from the /photo/profile/l/n form to photo/[hash] form by a clone operation
- Fix lockstate and current permissions not handed over to editor in mod card_edit
- Fix profile edit dropdown for multiple profiles
- Fix affinity slider spinner
- Fix mod pubsites broken
- Fix directory server admin selection includes known dead sites
- Fix sticky-kit issue where the bottom of left aside was not visible when section content was short
- Fix possibility to set bogus my_address
- Fix deleting of wiki pages
- Fix selected theme not appearing selected after change - github issue #855
- Fix an issue where some encoded mids were not found in /display
- Fix issue with mentions and xchans with @ or /
- Fix webfinger returns invalid XML - github issue #851
- Fix last remaining task in tasklist was not removed from view when completed
Plugins/Addon
Hubwall: Remove errant $1 string in sender name
Map federation protocols for zotinfo
Gnusoc: force ostatus profile photos to get refreshed monthly
Gnusoc: fix ostatus mention notifications
Gnusoc: unsubscribe to gnusoc feeds if connector is disabled
Phpmailer: not using load/unload
Gnusoc: don't provide some information if gnusoc is disabled by the channel
Diaspora: add a predelivery interval
Diaspora: support for likes on comments
Introduce the pubcrawl plugin - an unapologetically non-compliant ActivityPub Protocol implemention
Introduce gravatar plugin
Pubsubhubbub: produce much more compact PuSH feeds
Diaspora: support text comments on reshare posts
Diaspora: changes to delivery scenarios for the special handling of profile messages
Diaspora: put diaspora seed_location in json webfinger
Gnusoc: fix mis-attributed comments from mastodon
Gnusoc: allow discovery by url (not just reddress) and permit upgrade from 'unknown' network to gnusoc
Implement mechanism for selective network following in protocol connectors
Hubzilla 2.6.3 (2017-09-18)
- Fix anonymous comments/likes on photos - this is not yet implemented
- Fix favicon not displayed on certain pages
- Fix hubzilla logo icon for favicon and email notifications
- Fix an issue with displaying selected theme in settings/display
- [SECURITY] Restrict the input characters we accept in token verification strings to hex digits
- Remove hubzilla.nl from fallback directory servers
Hubzilla 2.6.2 (2017-08-31)
- Fix webfinger returns invalid XML (github issue #851)
Hubzilla 2.6.1 (2017-08-18)
- Fix a regression with dav clients
- Raise install requirements
Plugins/Addon
- Diaspora: fix PHP warning
- GNU-Social: fix PHP warning
Hubzilla 2.6 (2017-08-16)
- Upgrade to bootstrap-4 beta
- Consolidate disable_discover_tab config
- Fix some bbcode to markdown conversion issues
- Improved finding of recursive attachment permissions
- Smaller line-height for notification badges
- Bluegrid schema removed - will be added again if someone is willing to maintain it
- Improved file_activity()
- DB - add index for item.obj_type
- Add options flag to bb_to_markdown() so we can distinguish between diaspora use and other use and therefore filter and adjust content selectively
- Close the apps-menu if the notifications-menu is open and vice versa
- Remove redundant call to jquery ready function in photo albums view
- Remove borders from navbar toggler in mobile view
- Improve the formatting of shares when converting from bbcode to markdown
- Suppress fopen errors from dav
- Make local channel (not our own) nav menus appear similar to what we are used from remote channels
- Indicate the selected channel in the dropdown menu if the feature is enabled
- Provide a mechanism to mark apps active in the app tray
- Allow wildcard tag and category searches
- Improved installer
- Update some addon docs and ensure we only generate statistics once a day
- Turn url requests where argv[0] is something.xyz into module='something' and $_REQUEST['module_format'] = 'xyz'; But leave modules beginning with . (like .well_known) alone (convert the initial . to _ and then strip it)
- Turn platform name and std_version into config variables
- Implement chunked uploads on the wall
- Prevent expiration of conversations you are involved with
- Update htmlpurifier to version 4.9.3
- Update sabre/http to version 4.2.3
- Add optimize-autoloader to composer config
- Missing abook_{my,their}_perms in pg schema and missing keys in mysql schema
- Provide a gender icon on the profile sidebar within reason
- Provide more comprehensible information on the admin summary page
- Upgrade blueimp from 9.8 to 9.18
- Chanview - if already connected, bypass the chanview intermediary page and go straight to the remote profile.
- Allow poke by xchan_hash
- guess_image_type() - ignore scheme when checking for urls
- Remove unused page_widgets.php include and provide a general function for loading sql from file
- Migrate cdav from addons to core
- Address several mail issues
- Add files and photos to featured apps by default
- import_author_zot() fixes
- Remove deprecated app parameter from conversation()
- Implement anonymous comments (like wordpress)
- Add rel=noopener to all external target _blank links
- Add 'can_comment_on_post' hook so we can better deal with the complications of Diaspora policy
- Added Portfolio widget (requires foundation)
- Convert schema_mysql engine to InnoDB and charset utf8mb4
- Put unreachable federated connections in the archived tab of the connections list page
- Indicate on connections page if a federated connection from another network is unavailable from the current location
- Make authenticated oembeds optional, default to false.
- Remove text_highlight css load from core
- Numerous ostatus feed improvements (mastodon, gnu-social)
- Provide hook when deleting a connection - we need this to clean up dangling PuSH subscriptions
- Move code syntax highlighting to plugin
- Oembed: ensure that width and height are returned as type int and not float
- Rewrite wiki pages widget - no need for ajax on pageload, show the pages to not authenticated people.
- Convert randprof to use chanlink_hash() instead of chanlink_url() and filter sys channels by xchan.xchan_system instead of xchan_addr != sys@%
- Update Sabre libraries
- Only provide "connected apps" on the settings menu if techlevel > 0.
- Provide ability to search webpage
- Move disapora xrd stuff to plugin
- Deprecate server_role
- Introduce automatic language selection for help, webpages, and wiki content
- Provide ability to order apps in app-tray
- Replace Markdownify library with html-to-markdown library
Bugfixes
- Fix channel manager and nav channel select visible if in a delegate session
- Fix wrong wiki pages in the sidebar github issue #841
- Fix a bug where if multiple channels uploaded the same file to the same folder, the uploaded file would end up with an incremental number added to the filename for each upload even if the file did not exist yet in the channels folder
- Fix privacy groups not syncing across clones properly (github issue #832)
- Fix an issue where the ability to use a portion of the message-id to display a message wasn't honoured in all cases
- Fix minor issues in the bs-default schema
- Fix backward compatibility for album links generated in earlier times before the ambiguity of photo album names was solved (github issue #827)
- Fix photo item comments not ported to bs4
- Fix incorrect album link
- Fix incorrect follow url in webfinger
- Fix regression - allow position attributes in oembedable zcards
- Fix affinitiy slider settings were being updated on any submit of of settings/featured
- Fix minor weirdness in zot finger results after deleting a clone from a channel that was on a site which was previously migrated from http to https and still had the old hubloc
- Fix cloud headers already sent issue
- Partial fix for failure to sync photos - appears to be memory exhaustion and dependent on filesize although an unrelated issue was found with directory creation during file sync (we didn't check ownership when looking for duplicates)
- Fix github issue #810
- Don't allow negative age in directory listings
- Fix allow setting a default schema for the hub (github issue #797) and allow selecting of focus (hubzilla default) schema if a default is set
- Fix update_r1189() for mysql and postgres
Plugins/Addon
Diaspora: Rewrite the addon to implemented Diaspora Version 2 federation protocol
GNU-Social: GNU-Social and Mastodon compatibility was greatly increased and a "fetch conversations" feature added to try and locate missing contextual references and maintain conversations in posts from those networks
Rename statistics_json to statistics and implement nodeinfo v2
New authchoose addon to restrict what sites you authenticate to by default
Cdav addon moved to core
head_add_css() needs a preceding '/' to find files in the addons dir
New addon code syntax highlighting (moved from core to addon)
Pubsubhubbub: specify a minimum number of records - otherwise it defaults to zero
Hubzilla 2.4 (2017-05-31)
- Silence php warning during install
- Implemented switch statement logic in Comanche layout parser
- Don't allow html in plugin comment blocks
- Handle Mastodon urls in markdown/bbcode conversion
- Get rid of edit activities
- Collapse sysapps if viewing a remote channel
- Various Doxygen fixes
- Update SimplePie library to version 1.5
- Add check for PHP zip extension during install
- Add unit tests for AccessList class
- Authenticate onepoll so we can receive private posts/comments in zotfeed
- Various postgres fixes
- Some work on preparing clientside e2ee
- Allow to set a default channel for the rare case where a default channel is not selected but channels actually exist
- Support reverse magic-auth in oembed requests
- Improved handling of Mastodon feeds
- When template "none" is used in a webpage layout, then the contents of the page should be the sole output, with no other code before or after the page element content
- If there is no site record, site_dead won't be 0, in a left join it will in fact be null. As long as it isn't 1, we should attempt delivery
- Order wiki pages by creation date
- Backend infrastructure for channel protection password; which will be used to optionally encrypt export files and resolve channel/identity ownership/hijacking disputes
- Don't allow any null fields in notify creation
- Webfinger cleanup
- Envelope privacy
- We do not parse the body in discover_by_url(), so no need to preserve iframes in SimplePie
- Correct the mastodon "boost" (aka 'share') author attribution by checking for share activities and pulling the original author info from the activity:object
- Only log zot_refresh content if json decode was successful
- Revisit the import_author_zot algorithm yet again. There was one bug that we weren't returning necessary information in the first SQL query - and performance/loading problem if one tries to refresh a dead site
- Import_author_xchan - since we rarely refresh zot-info for non-connections, force a cache reload once a week to catch things like profile photo updates and location changes
- Create site_store_lowlevel() to initialise data structures for the site table
- Change hook for perm_is_allowed while retaining backwards compatibility
- import_author_zot() - check for both hubloc and xchan entries. This should catch and repair entries which were subject to transient storage failures
- Import authors from any unrecognised network as network 'unknown'
- Crypto update - default is now aes-256-ctr
- Get rid of get_app()
- Add 'author_is_pmable()' function with plugin hooks to control whether or not to display a 'send mail' link in the thread author menu
- Provide platform specific install script
- Allow for project specific DB updates
- Get rid of davguest
- Move db_upgrade to zlib
- Add CSRF protection for import and import_items
- Add some documentation for import functions
- Do not allow creating two wikis with the same name
- Update textcomplete library to version 1.8.0
- Create channel_store_lowlevel()
- Allow setting the system email name/address/reply
- Use the same host macro for sender address as for reply_to address
- Use the relevant attach directory/path for photo albums instead of an album basename which may not be unique. Created an 'ellipsify()' function to shorten long names and keep the beginning and end intact
- Simplify the message signing spaghetti
- Class MarkdownSoap to safely store markdown by purifying and preserving (escaped) what may be unsafe code in codeblocks. The stored item needs to be unescaped just prior to calling the markdown-to-html processor
- Remove the unimplemented upload limit site settings from UI
- Cleanup code_allowed
- Move widgets to standalone classes
- Upgrade redbasic to bootstrap 4
- Updated HTML Purifier from 4.6.0 to 4.9.2 with better PHP7 compatibility
- Remove redundant and non-functional/broken check for successfully cloned channel record which was left over from an earlier method of creating the table; which was deprecated a few months back
- Update bshaffer/oauth2-server-php library
- Add unit test for purify_html()
Bugfixes
- Fix website export tool creating invalid zip file - issue #790
- Fix files not synced correctly - issue #769
- Fix empty ACL should not result in no ACL when uploading a file
- Fix cover photo was unintentionally disabled when block_public in effect
- Fix markdown autolinks - issue 752
- Fix connectDefaultShare generated js function, though it isn't obvious if we still use it
- Fix a couple more instances where we were still calling mail() directly for site critical messages
- Fix when clicking a notification to view a private mail message, actually view that message instead of the most recent
- Fix group by item query
Plugins/Addon
- smileybutton: do not load emojis
- pubsubhubbub: fixes associated with recent compatibility feed mods
- gnusoc: mastodon follow_activity compatibility issues
- gnusoc: add profile photo to feed meta
- gnusoc: add salmon link information to the public feed when GNU-Social is enabled
- chess: fix bugs when deleting games
Hubzilla 2.2 (2017-03-08)
- Don't collapse long nsfw content if nsfw plugin is already collapsing it
- Provide version compatibility check for themes (minversion, maxversion)
- Use chanlink_hash() instead of chanlink_url() where appropriate
- Use head_add_link() for feed discovery

37
DEVELOPERS Normal file
View File

@@ -0,0 +1,37 @@
Developer Certificate of Origin
Version 1.1
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.

View File

@@ -1,4 +1,4 @@
Copyright (c) 2010-2017 the Hubzilla Community
Copyright (c) 2010-2018 the Hubzilla Community
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy

View File

@@ -3,18 +3,18 @@
Hubzilla - Community Server
===========================
<p align="center" markdown="1">
<em><a href="https://github.com/redmatrix/hubzilla/blob/master/install/INSTALL.txt">Installing Hubzilla</a></em>
</p>
<p align="center" markdown="1">
<em><a href="https://framagit.org/hubzilla/core/blob/master/install/INSTALL.txt">Installing Hubzilla</a></em>
</p>
**What is Hubzilla?**
Hubzilla is a general purpose communication server integrated with a web publishing system and a decentralised permission system. If this sounds like a bunch of technical mumbo-jumbo to you, just think of it as an independent platform for sharing stuff online.
Hubzilla is a general purpose communication server integrated with a web publishing system and a decentralised permission system. If this sounds like a bunch of technical mumbo-jumbo to you, just think of it as an independent platform for sharing stuff online (publicly or privately).
Hubzilla contains some social network bits, some cloud storage bits, some blog and forum bits, and some content management bits. These are all integrated within a common privacy framework - and it is all decentralised.
Everything you publish or share can be restricted to those channels and people you wish to share them with; and these permissions work completely invisibly - even with channels on different servers or other communications services.
Everything you publish or share can be restricted to those channels and people you wish to share them with; and these permissions work completely invisibly - **even with channels on different servers or other communications services**.
Migration and live backups of your connections, settings, and everything you publish are built-in, so you never need worry about server failure.

View File

@@ -2,21 +2,59 @@
namespace Zotlabs\Access;
/**
* @brief AccessList class which represents individual content ACLs.
*
* A class to hold an AccessList object with allowed and denied contacts and
* groups.
*
* After evaluating @ref ::Zotlabs::Access::PermissionLimits "PermissionLimits"
* and @ref ::Zotlabs::Lib::Permcat "Permcat"s individual content ACLs are evaluated.
* These answer the question "Can Joe view *this* album/photo?".
*/
class AccessList {
/**
* @brief Allow contacts
* @var string
*/
private $allow_cid;
/**
* @brief Allow groups
* @var string
*/
private $allow_gid;
/**
* @brief Deny contacts
* @var string
*/
private $deny_cid;
/**
* @brief Deny groups
* @var string
*/
private $deny_gid;
/**
* @brief Indicates if we are using the default constructor values or
* values that have been set explicitly.
* @var boolean
*/
private $explicit;
/* indicates if we are using the default constructor values or values that have been set explicitly. */
private $explicit;
/**
* @brief Constructor for AccessList class.
*
* @note The array to pass to the constructor is different from the array
* that you provide to the set() or set_from_array() functions.
*
* @param array $channel A channel array, where these entries are evaluated:
* * \e string \b channel_allow_cid => string of allowed cids
* * \e string \b channel_allow_gid => string of allowed gids
* * \e string \b channel_deny_cid => string of denied cids
* * \e string \b channel_deny_gid => string of denied gids
*/
function __construct($channel) {
if($channel) {
if($channel) {
$this->allow_cid = $channel['channel_allow_cid'];
$this->allow_gid = $channel['channel_allow_gid'];
$this->deny_cid = $channel['channel_deny_cid'];
@@ -32,61 +70,95 @@ class AccessList {
$this->explicit = false;
}
/**
* @brief Get if we are using the default constructor values
* or values that have been set explicitly.
*
* @return boolean
*/
function get_explicit() {
return $this->explicit;
}
/**
* Set AccessList from strings such as those in already
* existing stored data items
* @brief Set access list from strings such as those in already
* existing stored data items.
*
* @note The array to pass to this set function is different from the array
* that you provide to the constructor or set_from_array().
*
* @param array $arr
* * \e string \b allow_cid => string of allowed cids
* * \e string \b allow_gid => string of allowed gids
* * \e string \b deny_cid => string of denied cids
* * \e string \b deny_gid => string of denied gids
* @param boolean $explicit (optional) default true
*/
function set($arr,$explicit = true) {
function set($arr, $explicit = true) {
$this->allow_cid = $arr['allow_cid'];
$this->allow_gid = $arr['allow_gid'];
$this->deny_cid = $arr['deny_cid'];
$this->deny_gid = $arr['deny_gid'];
$this->explicit = $explicit;
$this->explicit = $explicit;
}
/**
* return an array consisting of the current
* access list components where the elements
* are directly storable.
* @brief Return an array consisting of the current access list components
* where the elements are directly storable.
*
* @return array An associative array with:
* * \e string \b allow_cid => string of allowed cids
* * \e string \b allow_gid => string of allowed gids
* * \e string \b deny_cid => string of denied cids
* * \e string \b deny_gid => string of denied gids
*/
function get() {
return array(
return [
'allow_cid' => $this->allow_cid,
'allow_gid' => $this->allow_gid,
'deny_cid' => $this->deny_cid,
'deny_gid' => $this->deny_gid,
);
];
}
/**
* Set AccessList from arrays, such as those provided by
* acl_selector(). For convenience, a string (or non-array) input is
* assumed to be a comma-separated list and auto-converted into an array.
*/
function set_from_array($arr,$explicit = true) {
$this->allow_cid = perms2str((is_array($arr['contact_allow']))
? $arr['contact_allow'] : explode(',',$arr['contact_allow']));
* @brief Set access list components from arrays, such as those provided by
* acl_selector().
*
* For convenience, a string (or non-array) input is assumed to be a
* comma-separated list and auto-converted into an array.
*
* @note The array to pass to this set function is different from the array
* that you provide to the constructor or set().
*
* @param array $arr An associative array with:
* * \e array|string \b contact_allow => array with cids or comma-seperated string
* * \e array|string \b group_allow => array with gids or comma-seperated string
* * \e array|string \b contact_deny => array with cids or comma-seperated string
* * \e array|string \b group_deny => array with gids or comma-seperated string
* @param boolean $explicit (optional) default true
*/
function set_from_array($arr, $explicit = true) {
$this->allow_cid = perms2str((is_array($arr['contact_allow']))
? $arr['contact_allow'] : explode(',', $arr['contact_allow']));
$this->allow_gid = perms2str((is_array($arr['group_allow']))
? $arr['group_allow'] : explode(',',$arr['group_allow']));
? $arr['group_allow'] : explode(',', $arr['group_allow']));
$this->deny_cid = perms2str((is_array($arr['contact_deny']))
? $arr['contact_deny'] : explode(',',$arr['contact_deny']));
? $arr['contact_deny'] : explode(',', $arr['contact_deny']));
$this->deny_gid = perms2str((is_array($arr['group_deny']))
? $arr['group_deny'] : explode(',',$arr['group_deny']));
? $arr['group_deny'] : explode(',', $arr['group_deny']));
$this->explicit = $explicit;
}
/**
* @brief Returns true if any access lists component is set.
*
* @return boolean Return true if any of allow_* deny_* values is set.
*/
function is_private() {
return (($this->allow_cid || $this->allow_gid || $this->deny_cid || $this->deny_gid) ? true : false);
}
}

View File

@@ -2,35 +2,90 @@
namespace Zotlabs\Access;
use \Zotlabs\Lib as ZLib;
use Zotlabs\Lib\PConfig;
/**
* @brief Permission limits.
*
* Permission limits are a very high level permission setting. They are hard
* limits by design.
* "Who can view my photos (at all)?"
* "Who can post photos in my albums (at all)?"
*
* For viewing permissions we generally set these to 'anybody' and for write
* permissions we generally set them to 'those I allow', though many people
* restrict the viewing permissions further for things like 'Can view my connections'.
*
* People get confused enough by permissions that we wanted a place to set their
* privacy expectations once and be done with it.
*
* Connection related permissions like "Can Joe view my photos?" are handled by
* @ref ::Zotlabs::Lib::Permcat "Permcat" and inherit from the channel's Permission
* limits.
*
* @see Permissions
*/
class PermissionLimits {
/**
* @brief Get standard permission limits.
*
* Viewing permissions and post_comments permission are set to 'anybody',
* other permissions are set to 'those I allow'.
*
* The list of permissions comes from Permissions::Perms().
*
* @return array
*/
static public function Std_Limits() {
$limits = [];
$perms = Permissions::Perms();
$limits = array();
foreach($perms as $k => $v) {
if(strstr($k,'view'))
if(strstr($k, 'view'))
$limits[$k] = PERMS_PUBLIC;
else
$limits[$k] = PERMS_SPECIFIC;
}
return $limits;
}
static public function Set($channel_id,$perm,$perm_limit) {
ZLib\PConfig::Set($channel_id,'perm_limits',$perm,$perm_limit);
/**
* @brief Sets a permission limit for a channel.
*
* @param int $channel_id
* @param string $perm
* @param int $perm_limit one of PERMS_* constants
*/
static public function Set($channel_id, $perm, $perm_limit) {
PConfig::Set($channel_id, 'perm_limits', $perm, $perm_limit);
}
static public function Get($channel_id,$perm = '') {
/**
* @brief Get a channel's permission limits.
*
* Return a channel's permission limits from PConfig. If $perm is set just
* return this permission limit, if not set, return an array with all
* permission limits.
*
* @param int $channel_id
* @param string $perm (optional)
* @return
* * \b false if no perm_limits set for this channel
* * \b int if $perm is set, return one of PERMS_* constants for this permission, default 0
* * \b array with all permission limits, if $perm is not set
*/
static public function Get($channel_id, $perm = '') {
if($perm) {
return Zlib\PConfig::Get($channel_id,'perm_limits',$perm);
return intval(PConfig::Get($channel_id, 'perm_limits', $perm));
}
else {
Zlib\PConfig::Load($channel_id);
if(array_key_exists($channel_id,\App::$config) && array_key_exists('perm_limits',\App::$config[$channel_id]))
return \App::$config[$channel_id]['perm_limits'];
return false;
}
}
}
PConfig::Load($channel_id);
if(array_key_exists($channel_id, \App::$config)
&& array_key_exists('perm_limits', \App::$config[$channel_id]))
return \App::$config[$channel_id]['perm_limits'];
return false;
}
}

View File

@@ -1,12 +1,21 @@
<?php
namespace Zotlabs\Access;
use Zotlabs\Lib as Zlib;
/**
* @brief PermissionRoles class.
*
* @see Permissions
*/
class PermissionRoles {
/**
* @brief PermissionRoles version.
*
* This must match the version in Permissions.php before permission updates can run.
*
* @return number
*/
static public function version() {
return 2;
}
@@ -23,24 +32,43 @@ class PermissionRoles {
$ret['default_collection'] = false;
$ret['directory_publish'] = true;
$ret['online'] = true;
$ret['perms_connect'] = [
$ret['perms_connect'] = [
'view_stream', 'view_profile', 'view_contacts', 'view_storage',
'view_pages', 'view_wiki', 'send_stream', 'post_wall', 'post_comments',
'post_mail', 'chat', 'post_like', 'republish' ];
'view_pages', 'view_wiki', 'send_stream', 'post_wall', 'post_comments',
'post_mail', 'chat', 'post_like', 'republish'
];
$ret['limits'] = PermissionLimits::Std_Limits();
break;
case 'social_federation':
$ret['perms_auto'] = false;
$ret['default_collection'] = false;
$ret['directory_publish'] = true;
$ret['online'] = true;
$ret['perms_connect'] = [
'view_stream', 'view_profile', 'view_contacts', 'view_storage',
'view_pages', 'view_wiki', 'send_stream', 'post_wall', 'post_comments',
'post_mail', 'chat', 'post_like', 'republish'
];
$ret['limits'] = PermissionLimits::Std_Limits();
$ret['limits']['post_comments'] = PERMS_AUTHED;
$ret['limits']['post_mail'] = PERMS_AUTHED;
$ret['limits']['post_like'] = PERMS_AUTHED;
$ret['limits']['chat'] = PERMS_AUTHED;
break;
case 'social_restricted':
$ret['perms_auto'] = false;
$ret['default_collection'] = true;
$ret['directory_publish'] = true;
$ret['online'] = true;
$ret['perms_connect'] = [
$ret['perms_connect'] = [
'view_stream', 'view_profile', 'view_contacts', 'view_storage',
'view_pages', 'view_wiki', 'send_stream', 'post_wall', 'post_comments',
'post_mail', 'chat', 'post_like' ];
'view_pages', 'view_wiki', 'send_stream', 'post_wall', 'post_comments',
'post_mail', 'chat', 'post_like'
];
$ret['limits'] = PermissionLimits::Std_Limits();
break;
@@ -50,10 +78,11 @@ class PermissionRoles {
$ret['default_collection'] = true;
$ret['directory_publish'] = false;
$ret['online'] = false;
$ret['perms_connect'] = [
$ret['perms_connect'] = [
'view_stream', 'view_profile', 'view_contacts', 'view_storage',
'view_pages', 'view_wiki', 'send_stream', 'post_wall', 'post_comments',
'post_mail', 'post_like' ];
'view_pages', 'view_wiki', 'send_stream', 'post_wall', 'post_comments',
'post_mail', 'post_like'
];
$ret['limits'] = PermissionLimits::Std_Limits();
$ret['limits']['view_contacts'] = PERMS_SPECIFIC;
$ret['limits']['view_storage'] = PERMS_SPECIFIC;
@@ -65,12 +94,13 @@ class PermissionRoles {
$ret['default_collection'] = false;
$ret['directory_publish'] = true;
$ret['online'] = false;
$ret['perms_connect'] = [
$ret['perms_connect'] = [
'view_stream', 'view_profile', 'view_contacts', 'view_storage',
'view_pages', 'view_wiki', 'post_wall', 'post_comments', 'tag_deliver',
'post_mail', 'post_like' , 'republish', 'chat' ];
'post_mail', 'post_like' , 'republish', 'chat'
];
$ret['limits'] = PermissionLimits::Std_Limits();
break;
case 'forum_restricted':
@@ -78,11 +108,10 @@ class PermissionRoles {
$ret['default_collection'] = true;
$ret['directory_publish'] = true;
$ret['online'] = false;
$ret['perms_connect'] = [
$ret['perms_connect'] = [
'view_stream', 'view_profile', 'view_contacts', 'view_storage',
'view_pages', 'view_wiki', 'post_wall', 'post_comments', 'tag_deliver',
'post_mail', 'post_like' , 'chat' ];
$ret['limits'] = PermissionLimits::Std_Limits();
break;
@@ -92,12 +121,11 @@ class PermissionRoles {
$ret['default_collection'] = true;
$ret['directory_publish'] = false;
$ret['online'] = false;
$ret['perms_connect'] = [
$ret['perms_connect'] = [
'view_stream', 'view_profile', 'view_contacts', 'view_storage',
'view_pages', 'view_wiki', 'post_wall', 'post_comments',
'post_mail', 'post_like' , 'chat' ];
'post_mail', 'post_like' , 'chat'
];
$ret['limits'] = PermissionLimits::Std_Limits();
$ret['limits']['view_profile'] = PERMS_SPECIFIC;
$ret['limits']['view_contacts'] = PERMS_SPECIFIC;
@@ -112,12 +140,11 @@ class PermissionRoles {
$ret['default_collection'] = false;
$ret['directory_publish'] = true;
$ret['online'] = false;
$ret['perms_connect'] = [
$ret['perms_connect'] = [
'view_stream', 'view_profile', 'view_contacts', 'view_storage',
'view_pages', 'view_wiki', 'send_stream', 'post_wall', 'post_comments',
'post_mail', 'post_like' , 'republish' ];
'view_pages', 'view_wiki', 'send_stream', 'post_wall', 'post_comments',
'post_mail', 'post_like' , 'republish'
];
$ret['limits'] = PermissionLimits::Std_Limits();
break;
@@ -127,11 +154,11 @@ class PermissionRoles {
$ret['default_collection'] = true;
$ret['directory_publish'] = false;
$ret['online'] = false;
$ret['perms_connect'] = [
$ret['perms_connect'] = [
'view_stream', 'view_profile', 'view_contacts', 'view_storage',
'view_pages', 'view_wiki', 'send_stream', 'post_wall', 'post_comments',
'post_mail', 'post_like' , 'republish' ];
'view_pages', 'view_wiki', 'send_stream', 'post_wall', 'post_comments',
'post_mail', 'post_like' , 'republish'
];
$ret['limits'] = PermissionLimits::Std_Limits();
break;
@@ -141,11 +168,10 @@ class PermissionRoles {
$ret['default_collection'] = false;
$ret['directory_publish'] = true;
$ret['online'] = false;
$ret['perms_connect'] = [
$ret['perms_connect'] = [
'view_stream', 'view_profile', 'view_contacts', 'view_storage',
'view_pages', 'view_wiki', 'post_like' , 'republish' ];
'view_pages', 'view_wiki', 'post_like' , 'republish'
];
$ret['limits'] = PermissionLimits::Std_Limits();
break;
@@ -155,13 +181,13 @@ class PermissionRoles {
$ret['default_collection'] = false;
$ret['directory_publish'] = true;
$ret['online'] = false;
$ret['perms_connect'] = [
$ret['perms_connect'] = [
'view_stream', 'view_profile', 'view_contacts', 'view_storage',
'view_pages', 'view_wiki', 'write_storage', 'write_pages', 'post_wall', 'post_comments', 'tag_deliver',
'post_mail', 'post_like' , 'republish', 'chat', 'write_wiki' ];
'post_mail', 'post_like' , 'republish', 'chat', 'write_wiki'
];
$ret['limits'] = PermissionLimits::Std_Limits();
break;
case 'custom':
@@ -170,11 +196,15 @@ class PermissionRoles {
}
$x = get_config('system','role_perms');
// let system settings over-ride any or all
// let system settings over-ride any or all
if($x && is_array($x) && array_key_exists($role,$x))
$ret = array_merge($ret,$x[$role]);
call_hooks('get_role_perms',$ret);
/**
* @hooks get_role_perms
* * \e array
*/
call_hooks('get_role_perms', $ret);
return $ret;
}
@@ -187,10 +217,10 @@ class PermissionRoles {
// \Zotlabs\Access\PermissionLimits::Set($uid,$perm,1);
if($perm === 'view_wiki')
\Zotlabs\Access\PermissionLimits::Set($uid,$perm,PERMS_PUBLIC);
\Zotlabs\Access\PermissionLimits::Set($uid, $perm, PERMS_PUBLIC);
if($perm === 'write_wiki')
\Zotlabs\Access\PermissionLimits::Set($uid,$perm,PERMS_SPECIFIC);
\Zotlabs\Access\PermissionLimits::Set($uid, $perm, PERMS_SPECIFIC);
// set autoperms here if applicable
@@ -213,8 +243,6 @@ class PermissionRoles {
if($c) {
set_abconfig($uid,$c['channel_hash'],'autoperms',$perm,$value);
}
}
// now set something for all existing connections.
@@ -242,38 +270,47 @@ class PermissionRoles {
}
}
/**
* @brief Array with translated role names and grouping.
*
* Return an associative array with grouped role names that can be used
* to create select groups like in \e field_select_grouped.tpl.
*
* @return array
*/
static public function roles() {
$roles = [
$roles = [
t('Social Networking') => [
'social' => t('Social - Mostly Public'),
'social_restricted' => t('Social - Restricted'),
'social_federation' => t('Social - Federation'),
'social' => t('Social - Mostly Public'),
'social_restricted' => t('Social - Restricted'),
'social_private' => t('Social - Private')
],
t('Community Forum') => [
'forum' => t('Forum - Mostly Public'),
'forum_restricted' => t('Forum - Restricted'),
'forum' => t('Forum - Mostly Public'),
'forum_restricted' => t('Forum - Restricted'),
'forum_private' => t('Forum - Private')
],
t('Feed Republish') => [
'feed' => t('Feed - Mostly Public'),
'feed' => t('Feed - Mostly Public'),
'feed_restricted' => t('Feed - Restricted')
],
t('Special Purpose') => [
'soapbox' => t('Special - Celebrity/Soapbox'),
'soapbox' => t('Special - Celebrity/Soapbox'),
'repository' => t('Special - Group Repository')
],
t('Other') => [
'custom' => t('Custom/Expert Mode')
]
];
return $roles;
call_hooks('list_permission_roles',$roles);
return $roles;
}
}

View File

@@ -1,45 +1,55 @@
<?php
namespace Zotlabs\Access;
use Zotlabs\Lib as Zlib;
/**
* @brief Extensible permissions.
*
* To add new permissions, add to the list of $perms below, with a simple description.
*
* Also visit PermissionRoles.php and add to the $ret['perms_connect'] property for any role
* if this permission should be granted to new connections.
*
* Next look at PermissionRoles::new_custom_perms() and provide a handler for updating custom
* permission roles. You will want to set a default PermissionLimit for each channel and also
* provide a sane default for any existing connections. You may or may not wish to provide a
* default auto permission. If in doubt, leave this alone as custom permissions by definition
* are the responsibility of the channel owner to manage. You just don't want to create any
* suprises or break things so you have an opportunity to provide sane settings.
*
* Update the version here and in PermissionRoles.
*
*
* Permissions with 'view' in the name are considered read permissions. Anything
* else requires authentication. Read permission limits are PERMS_PUBLIC and anything else
* is given PERMS_SPECIFIC.
*
* PermissionLimits::Std_limits() retrieves the standard limits. A permission role
* MAY alter an individual setting after retrieving the Std_limits if you require
* something different for a specific permission within the given role.
*
*/
class Permissions {
/**
* Extensible permissions.
* To add new permissions, add to the list of $perms below, with a simple description.
* @brief Permissions version.
*
* Also visit PermissionRoles.php and add to the $ret['perms_connect'] property for any role
* if this permission should be granted to new connections.
*
* Next look at PermissionRoles::new_custom_perms() and provide a handler for updating custom
* permission roles. You will want to set a default PermissionLimit for each channel and also
* provide a sane default for any existing connections. You may or may not wish to provide a
* default auto permission. If in doubt, leave this alone as custom permissions by definition
* are the responsibility of the channel owner to manage. You just don't want to create any
* suprises or break things so you have an opportunity to provide sane settings.
*
* Update the version here and in PermissionRoles
*
*
* Permissions with 'view' in the name are considered read permissions. Anything
* else requires authentication. Read permission limits are PERMS_PUBLIC and anything else
* is given PERMS_SPECIFIC.
*
* PermissionLimits::Std_limits() retrieves the standard limits. A permission role
* MAY alter an individual setting after retrieving the Std_limits if you require
* something different for a specific permission within the given role.
* This must match the version in PermissionRoles.php before permission updates can run.
*
* @return number
*/
static public function version() {
// This must match the version in PermissionRoles.php before permission updates can run.
return 2;
}
/**
* @brief Return an array with Permissions.
*
* @param string $filter (optional) only passed to hook permissions_list
* @return array Associative array with permissions and short description.
*/
static public function Perms($filter = '') {
$perms = [
@@ -57,24 +67,36 @@ class Permissions {
'post_comments' => t('Can comment on or like my posts'),
'post_mail' => t('Can send me private mail messages'),
'post_like' => t('Can like/dislike profiles and profile things'),
'tag_deliver' => t('Can forward to all my channel connections via @+ mentions in posts'),
'tag_deliver' => t('Can forward to all my channel connections via ! mentions in posts'),
'chat' => t('Can chat with me'),
'republish' => t('Can source my public posts in derived channels'),
'delegate' => t('Can administer my channel')
];
$x = array('permissions' => $perms, 'filter' => $filter);
call_hooks('permissions_list',$x);
return($x['permissions']);
$x = [
'permissions' => $perms,
'filter' => $filter
];
/**
* @hooks permissions_list
* * \e array \b permissions
* * \e string \b filter
*/
call_hooks('permissions_list', $x);
return($x['permissions']);
}
/**
* @brief Perms from the above list that are blocked from anonymous observers.
*
* e.g. you must be authenticated.
*
* @return array Associative array with permissions and short description.
*/
static public function BlockedAnonPerms() {
// Perms from the above list that are blocked from anonymous observers.
// e.g. you must be authenticated.
$res = array();
$res = [];
$perms = PermissionLimits::Std_limits();
foreach($perms as $perm => $limit) {
if($limit != PERMS_PUBLIC) {
@@ -82,34 +104,55 @@ class Permissions {
}
}
$x = array('permissions' => $res);
call_hooks('write_perms',$x);
return($x['permissions']);
$x = ['permissions' => $res];
/**
* @hooks write_perms
* * \e array \b permissions
*/
call_hooks('write_perms', $x);
return($x['permissions']);
}
// converts [ 0 => 'view_stream', ... ]
// to [ 'view_stream' => 1 ]
// for any permissions in $arr;
// Undeclared permissions are set to 0
/**
* @brief Converts indexed perms array to associative perms array.
*
* Converts [ 0 => 'view_stream', ... ]
* to [ 'view_stream' => 1 ] for any permissions in $arr;
* Undeclared permissions which exist in Perms() are added and set to 0.
*
* @param array $arr
* @return array
*/
static public function FilledPerms($arr) {
if(is_null($arr)) {
btlogger('FilledPerms: null');
$arr = [];
}
$everything = self::Perms();
$ret = [];
foreach($everything as $k => $v) {
if(in_array($k,$arr))
if(in_array($k, $arr))
$ret[$k] = 1;
else
$ret[$k] = 0;
}
return $ret;
return $ret;
}
/**
* @brief Convert perms array to indexed array.
*
* Converts [ 'view_stream' => 1 ] for any permissions in $arr
* to [ 0 => ['name' => 'view_stream', 'value' => 1], ... ]
*
* @param array $arr associative perms array 'view_stream' => 1
* @return array Indexed array with elements that look like
* * \e string \b name the perm name (e.g. view_stream)
* * \e int \b value the value of the perm (e.g. 1)
*/
static public function OPerms($arr) {
$ret = [];
if($arr) {
@@ -120,7 +163,12 @@ class Permissions {
return $ret;
}
/**
* @brief
*
* @param int $channel_id
* @return boolean|array
*/
static public function FilledAutoperms($channel_id) {
if(! intval(get_pconfig($channel_id,'system','autoperms')))
return false;
@@ -137,16 +185,33 @@ class Permissions {
return $arr;
}
static public function PermsCompare($p1,$p2) {
/**
* @brief Compares that all Permissions from $p1 exist also in $p2.
*
* @param array $p1 The perms that have to exist in $p2
* @param array $p2 The perms to compare against
* @return boolean true if all perms from $p1 exist also in $p2
*/
static public function PermsCompare($p1, $p2) {
foreach($p1 as $k => $v) {
if(! array_key_exists($k,$p2))
if(! array_key_exists($k, $p2))
return false;
if($p1[$k] != $p2[$k])
return false;
}
return true;
}
/**
* @brief
*
* @param int $channel_id A channel id
* @return array Associative array with
* * \e array \b perms Permission array
* * \e int \b automatic 0 or 1
*/
static public function connect_perms($channel_id) {
$my_perms = [];
@@ -155,7 +220,7 @@ class Permissions {
// If a default permcat exists, use that
$pc = ((feature_enabled($channel_id,'permcats')) ? get_pconfig($channel_id,'system','default_permcat') : 'default');
$pc = ((feature_enabled($channel_id,'permcats')) ? get_pconfig($channel_id,'system','default_permcat') : 'default');
if(! in_array($pc, [ '','default' ])) {
$pcp = new Zlib\Permcat($channel_id);
$permcat = $pcp->fetch($pc);
@@ -167,7 +232,7 @@ class Permissions {
}
// look up the permission role to see if it specified auto-connect
// and if there was no permcat or a default permcat, set the perms
// and if there was no permcat or a default permcat, set the perms
// from the role
$role = get_pconfig($channel_id,'system','permissions_role');
@@ -195,7 +260,7 @@ class Permissions {
}
// If we reached this point with no permissions, the channel is using
// custom perms but they are not automatic. They will be stored in abconfig with
// custom perms but they are not automatic. They will be stored in abconfig with
// the channel's channel_hash (the 'self' connection).
if(! $my_perms) {

View File

@@ -50,14 +50,19 @@ class Cron {
// expire any expired items
$r = q("select id from item where expires > '2001-01-01 00:00:00' and expires < %s
$r = q("select id,item_wall from item where expires > '2001-01-01 00:00:00' and expires < %s
and item_deleted = 0 ",
db_utcnow()
);
if($r) {
require_once('include/items.php');
foreach($r as $rr)
drop_item($rr['id'],false);
foreach($r as $rr) {
drop_item($rr['id'],false,(($rr['item_wall']) ? DROPITEM_PHASE1 : DROPITEM_NORMAL));
if($rr['item_wall']) {
// The notifier isn't normally invoked unless item_drop is interactive.
Zotlabs\Daemon\Master::Summon( [ 'Notifier', 'drop', $rr['id'] ] );
}
}
}
@@ -78,7 +83,7 @@ class Cron {
// channels and sites that quietly vanished and prevent the directory from accumulating stale
// or dead entries.
$r = q("select channel_id from channel where channel_dirdate < %s - INTERVAL %s",
$r = q("select channel_id from channel where channel_dirdate < %s - INTERVAL %s and channel_removed = 0",
db_utcnow(),
db_quoteinterval('30 DAY')
);
@@ -121,6 +126,9 @@ class Cron {
}
}
require_once('include/attach.php');
attach_upgrade();
$abandon_days = intval(get_config('system','account_abandon_days'));
if($abandon_days < 1)
$abandon_days = 0;
@@ -171,7 +179,8 @@ class Cron {
// pull in some public posts
if(! get_config('system','disable_discover_tab'))
$disable_discover_tab = get_config('system','disable_discover_tab') || get_config('system','disable_discover_tab') === false;
if(! $disable_discover_tab)
Master::Summon(array('Externals'));
$generation = 0;

View File

@@ -38,12 +38,20 @@ class Cron_daily {
db_utcnow(), db_quoteinterval('30 DAY')
);
// expire any unread notifications over a year old
q("delete from notify where seen = 0 and created < %s - INTERVAL %s",
db_utcnow(), db_quoteinterval('1 YEAR')
);
//update statistics in config
require_once('include/statistics_fns.php');
update_channels_total_stat();
update_channels_active_halfyear_stat();
update_channels_active_monthly_stat();
update_local_posts_stat();
update_local_comments_stat();
// expire old delivery reports
@@ -80,7 +88,7 @@ class Cron_daily {
call_hooks('cron_daily',datetime_convert());
set_config('system','last_expire_day',$d2);
set_config('system','last_expire_day',intval(datetime_convert('UTC','UTC','now','d')));
/**
* End Cron Daily

View File

@@ -21,6 +21,21 @@ class Cron_weekly {
mark_orphan_hubsxchans();
// Find channels that were removed in the last three weeks, but
// haven't been finally cleaned up. These should be older than 10
// days to ensure that "purgeall" messages have gone out or bounced
// or timed out.
$r = q("select channel_id from channel where channel_removed = 1 and
channel_deleted > %s - INTERVAL %s and channel_deleted < %s - INTERVAL %s",
db_utcnow(), db_quoteinterval('21 DAY'),
db_utcnow(), db_quoteinterval('10 DAY')
);
if($r) {
foreach($r as $rv) {
channel_remove_final($rv['channel_id']);
}
}
// get rid of really old poco records

View File

@@ -53,6 +53,9 @@ class Deliver {
remove_queue_item($r[0]['outq_hash']);
if($dresult && is_array($dresult)) {
// delivery reports for local deliveries do not require encryption
foreach($dresult as $xx) {
if(is_array($xx) && array_key_exists('message_id',$xx)) {
if(delivery_report_is_storable($xx)) {
@@ -72,6 +75,8 @@ class Deliver {
q("delete from dreport where dreport_queue = '%s'",
dbesc($argv[$x])
);
continue;
}
}

View File

@@ -34,7 +34,8 @@ class Expire {
logger('expire: start', LOGGER_DEBUG);
$site_expire = get_config('system', 'default_expire_days');
$site_expire = intval(get_config('system', 'default_expire_days'));
$commented_days = intval(get_config('system','active_expire_days'));
logger('site_expire: ' . $site_expire);
@@ -64,7 +65,7 @@ class Expire {
// if the site or service class expiration is non-zero and less than person expiration, use that
logger('Expire: ' . $rr['channel_address'] . ' interval: ' . $expire_days, LOGGER_DEBUG);
item_expire($rr['channel_id'], $expire_days);
item_expire($rr['channel_id'], $expire_days, $commented_days);
}
}
@@ -85,7 +86,7 @@ class Expire {
logger('Expire: sys interval: ' . $expire_days, LOGGER_DEBUG);
if ($expire_days)
item_expire($x['channel_id'], $expire_days);
item_expire($x['channel_id'], $expire_days, $commented_days);
logger('Expire: sys: done', LOGGER_DEBUG);
}

View File

@@ -17,7 +17,7 @@ class Gprobe {
if(! strpos($url,'@'))
return;
$r = q("select * from xchan where xchan_addr = '%s' limit 1",
$r = q("select * from hubloc where hubloc_addr = '%s' limit 1",
dbesc($url)
);

View File

@@ -21,12 +21,18 @@ class Importdoc {
$files = glob("$d/$f");
if($files) {
foreach($files as $fi) {
if($fi === 'doc/html')
if($fi === 'doc/html') {
continue;
if(is_dir($fi))
}
if(is_dir($fi)) {
self::update_docs_dir("$fi/*");
else
store_doc_file($fi);
}
else {
// don't update media content
if(strpos(z_mime_content_type($fi),'text') === 0) {
store_doc_file($fi);
}
}
}
}
}

View File

@@ -0,0 +1,47 @@
<?php /** @file */
namespace Zotlabs\Daemon;
class Importfile {
static public function run($argc,$argv){
logger('Importfile: ' . print_r($argv,true));
if($argc < 3)
return;
$channel = channelx_by_n($argv[1]);
if(! $channel)
return;
$srcfile = $argv[2];
$folder = (($argc > 3) ? $argv[3] : '');
$dstname = (($argc > 4) ? $argv[4] : '');
$hash = random_string();
$arr = [
'src' => $srcfile,
'filename' => (($dstname) ? $dstname : basename($srcfile)),
'hash' => $hash,
'allow_cid' => $channel['channel_allow_cid'],
'allow_gid' => $channel['channel_allow_gid'],
'deny_cid' => $channel['channel_deny_cid'],
'deny_gid' => $channel['channel_deny_gid'],
'preserve_original' => true,
'replace' => true
];
if($folder)
$arr['folder'] = $folder;
attach_store($channel,$channel['channel_hash'],'import',$arr);
$sync = attach_export_data($channel,$hash);
if($sync)
build_sync_packet($channel['channel_id'],array('file' => array($sync)));
return;
}
}

View File

@@ -5,6 +5,11 @@ namespace Zotlabs\Daemon;
require_once('include/queue_fn.php');
require_once('include/html2plain.php');
require_once('include/conversation.php');
require_once('include/zot.php');
require_once('include/items.php');
require_once('include/bbcode.php');
/*
* This file was at one time responsible for doing all deliveries, but this caused
@@ -54,6 +59,8 @@ require_once('include/conversation.php');
*
* ZOT
* permission_create abook_id
* permission_accept abook_id
* permission_reject abook_id
* permission_update abook_id
* refresh_all channel_id
* purge_all channel_id
@@ -64,17 +71,11 @@ require_once('include/conversation.php');
* location channel_id
* request channel_id xchan_hash message_id
* rating xlink_id
* keychange channel_id
*
*/
require_once('include/zot.php');
require_once('include/queue_fn.php');
require_once('include/datetime.php');
require_once('include/items.php');
require_once('include/bbcode.php');
require_once('include/channel.php');
class Notifier {
@@ -89,8 +90,6 @@ class Notifier {
$item_id = $argv[2];
$extra = (($argc > 3) ? $argv[3] : null);
if(! $item_id)
return;
@@ -98,16 +97,6 @@ class Notifier {
$deliveries = array();
$dead_hubs = array();
$dh = q("select site_url from site where site_dead = 1");
if($dh) {
foreach($dh as $dead) {
$dead_hubs[] = $dead['site_url'];
}
}
$request = false;
$mail = false;
$top_level = false;
@@ -158,7 +147,21 @@ class Notifier {
$packet_type = 'request';
$normal_mode = false;
}
elseif($cmd == 'permission_update' || $cmd == 'permission_create') {
elseif($cmd === 'keychange') {
$channel = channelx_by_n($item_id);
$r = q("select abook_xchan from abook where abook_channel = %d",
intval($item_id)
);
if($r) {
foreach($r as $rr) {
$recipients[] = $rr['abook_xchan'];
}
}
$private = false;
$packet_type = 'keychange';
$normal_mode = false;
}
elseif(in_array($cmd, [ 'permission_update', 'permission_reject', 'permission_accept', 'permission_create' ])) {
// Get the (single) recipient
$r = q("select * from abook left join xchan on abook_xchan = xchan_hash where abook_id = %d and abook_self = 0",
intval($item_id)
@@ -170,8 +173,12 @@ class Notifier {
if($channel) {
$perm_update = array('sender' => $channel, 'recipient' => $r[0], 'success' => false, 'deliveries' => '');
if($cmd == 'permission_create')
if($cmd === 'permission_create')
call_hooks('permissions_create',$perm_update);
elseif($cmd === 'permission_accept')
call_hooks('permissions_accept',$perm_update);
elseif($cmd === 'permission_reject')
call_hooks('permissions_reject',$perm_update);
else
call_hooks('permissions_update',$perm_update);
@@ -275,14 +282,15 @@ class Notifier {
$deleted_item = true;
}
if(intval($target_item['item_type']) != ITEM_TYPE_POST) {
if(! in_array(intval($target_item['item_type']), [ ITEM_TYPE_POST ] )) {
logger('notifier: target item not forwardable: type ' . $target_item['item_type'], LOGGER_DEBUG);
return;
}
// Check for non published items, but allow an exclusion for transmitting hidden file activities
if(intval($target_item['item_unpublished']) || intval($target_item['item_delayed']) ||
if(intval($target_item['item_unpublished']) || intval($target_item['item_delayed']) ||
intval($target_item['item_blocked']) ||
( intval($target_item['item_hidden']) && ($target_item['obj_type'] !== ACTIVITY_OBJ_FILE))) {
logger('notifier: target item not published, so not forwardable', LOGGER_DEBUG);
return;
@@ -305,7 +313,7 @@ class Notifier {
}
if($target_item['id'] == $target_item['parent']) {
if($target_item['mid'] === $target_item['parent_mid']) {
$parent_item = $target_item;
$top_level_post = true;
}
@@ -403,7 +411,6 @@ class Notifier {
return;
}
}
}
$walltowall = (($top_level_post && $channel['xchan_hash'] === $target_item['author_xchan']) ? true : false);
@@ -417,14 +424,16 @@ class Notifier {
logger('notifier: encoded item: ' . print_r($x,true), LOGGER_DATA, LOG_DEBUG);
stringify_array_elms($recipients);
if(! $recipients)
if(! $recipients) {
logger('no recipients');
return;
}
// logger('notifier: recipients: ' . print_r($recipients,true), LOGGER_NORMAL, LOG_DEBUG);
// logger('notifier: recipients: ' . print_r($recipients,true), LOGGER_NORMAL, LOG_DEBUG);
$env_recips = (($private) ? array() : null);
$details = q("select xchan_hash, xchan_instance_url, xchan_network, xchan_addr, xchan_guid, xchan_guid_sig from xchan where xchan_hash in (" . implode(',',$recipients) . ")");
$details = q("select xchan_hash, xchan_instance_url, xchan_network, xchan_addr, xchan_guid, xchan_guid_sig from xchan where xchan_hash in (" . protect_sprintf(implode(',',$recipients)) . ")");
$recip_list = array();
@@ -433,40 +442,40 @@ class Notifier {
foreach($details as $d) {
$recip_list[] = $d['xchan_addr'] . ' (' . $d['xchan_hash'] . ')';
if($private)
$env_recips[] = array('guid' => $d['xchan_guid'],'guid_sig' => $d['xchan_guid_sig'],'hash' => $d['xchan_hash']);
if($d['xchan_network'] === 'mail' && $normal_mode) {
$delivery_options = get_xconfig($d['xchan_hash'],'system','delivery_mode');
if(! $delivery_options)
format_and_send_email($channel,$d,$target_item);
if($private) {
$env_recips[] = [
'guid' => $d['xchan_guid'],
'guid_sig' => $d['xchan_guid_sig'],
'hash' => $d['xchan_hash']
];
}
}
}
$narr = array(
'channel' => $channel,
'upstream' => $upstream,
'env_recips' => $env_recips,
'packet_recips' => $packet_recips,
'recipients' => $recipients,
'item' => $item,
'target_item' => $target_item,
$narr = [
'channel' => $channel,
'upstream' => $upstream,
'env_recips' => $env_recips,
'packet_recips' => $packet_recips,
'recipients' => $recipients,
'item' => $item,
'target_item' => $target_item,
'parent_item' => $parent_item,
'top_level_post' => $top_level_post,
'private' => $private,
'private' => $private,
'relay_to_owner' => $relay_to_owner,
'uplink' => $uplink,
'cmd' => $cmd,
'mail' => $mail,
'single' => (($cmd === 'single_mail' || $cmd === 'single_activity') ? true : false),
'location' => $location,
'request' => $request,
'normal_mode' => $normal_mode,
'packet_type' => $packet_type,
'walltowall' => $walltowall,
'queued' => array()
);
'uplink' => $uplink,
'cmd' => $cmd,
'mail' => $mail,
'single' => (($cmd === 'single_mail' || $cmd === 'single_activity') ? true : false),
'location' => $location,
'request' => $request,
'normal_mode' => $normal_mode,
'packet_type' => $packet_type,
'walltowall' => $walltowall,
'queued' => []
];
call_hooks('notifier_process', $narr);
if($narr['queued']) {
@@ -489,10 +498,10 @@ class Notifier {
// Now we have collected recipients (except for external mentions, FIXME)
// Let's reduce this to a set of hubs.
// Let's reduce this to a set of hubs; checking that the site is not dead.
$r = q("select hubloc.*, site.site_crypto from hubloc left join site on site_url = hubloc_url where hubloc_hash in (" . implode(',',$recipients) . ")
and hubloc_error = 0 and hubloc_deleted = 0"
$r = q("select hubloc.*, site.site_crypto, site.site_flags from hubloc left join site on site_url = hubloc_url where hubloc_hash in (" . protect_sprintf(implode(',',$recipients)) . ")
and hubloc_error = 0 and hubloc_deleted = 0 and ( site_dead = 0 OR site_dead is null ) "
);
@@ -503,73 +512,78 @@ class Notifier {
$hubs = $r;
/**
* Reduce the hubs to those that are unique. For zot hubs, we need to verify uniqueness by the sitekey, since it may have been
* a re-install which has not yet been detected and pruned.
* Reduce the hubs to those that are unique. For zot hubs, we need to verify uniqueness by the sitekey,
* since it may have been a re-install which has not yet been detected and pruned.
* For other networks which don't have or require sitekeys, we'll have to use the URL
*/
$hublist = array(); // this provides an easily printable list for the logs
$dhubs = array(); // delivery hubs where we store our resulting unique array
$keys = array(); // array of keys to check uniquness for zot hubs
$urls = array(); // array of urls to check uniqueness of hubs from other networks
$hublist = []; // this provides an easily printable list for the logs
$dhubs = []; // delivery hubs where we store our resulting unique array
$keys = []; // array of keys to check uniquness for zot hubs
$urls = []; // array of urls to check uniqueness of hubs from other networks
$hub_env = []; // per-hub envelope so we don't broadcast the entire envelope to all
foreach($hubs as $hub) {
if(in_array($hub['hubloc_url'],$dead_hubs)) {
logger('skipping dead hub: ' . $hub['hubloc_url'], LOGGER_DEBUG, LOG_INFO);
continue;
if($env_recips) {
foreach($env_recips as $er) {
if($hub['hubloc_hash'] === $er['hash']) {
if(! array_key_exists($hub['hubloc_host'] . $hub['hubloc_sitekey'], $hub_env)) {
$hub_env[$hub['hubloc_host'] . $hub['hubloc_sitekey']] = [];
}
$hub_env[$hub['hubloc_host'] . $hub['hubloc_sitekey']][] = $er;
}
}
}
if($hub['hubloc_network'] == 'zot') {
if(! in_array($hub['hubloc_sitekey'],$keys)) {
$hublist[] = $hub['hubloc_host'];
$dhubs[] = $hub;
$keys[] = $hub['hubloc_sitekey'];
$hublist[] = $hub['hubloc_host'] . ' ' . $hub['hubloc_network'];
$dhubs[] = $hub;
$keys[] = $hub['hubloc_sitekey'];
}
}
else {
if(! in_array($hub['hubloc_url'],$urls)) {
$hublist[] = $hub['hubloc_host'];
$dhubs[] = $hub;
$urls[] = $hub['hubloc_url'];
$hublist[] = $hub['hubloc_host'] . ' ' . $hub['hubloc_network'];
$dhubs[] = $hub;
$urls[] = $hub['hubloc_url'];
}
}
}
logger('notifier: will notify/deliver to these hubs: ' . print_r($hublist,true), LOGGER_DEBUG, LOG_DEBUG);
foreach($dhubs as $hub) {
if($hub['hubloc_network'] !== 'zot') {
$narr = array(
'channel' => $channel,
'upstream' => $upstream,
'env_recips' => $env_recips,
'packet_recips' => $packet_recips,
'recipients' => $recipients,
'item' => $item,
'target_item' => $target_item,
'hub' => $hub,
$narr = [
'channel' => $channel,
'upstream' => $upstream,
'env_recips' => $env_recips,
'packet_recips' => $packet_recips,
'recipients' => $recipients,
'item' => $item,
'target_item' => $target_item,
'parent_item' => $parent_item,
'hub' => $hub,
'top_level_post' => $top_level_post,
'private' => $private,
'private' => $private,
'relay_to_owner' => $relay_to_owner,
'uplink' => $uplink,
'cmd' => $cmd,
'mail' => $mail,
'single' => (($cmd === 'single_mail' || $cmd === 'single_activity') ? true : false),
'location' => $location,
'request' => $request,
'normal_mode' => $normal_mode,
'packet_type' => $packet_type,
'walltowall' => $walltowall,
'queued' => array()
);
'uplink' => $uplink,
'cmd' => $cmd,
'mail' => $mail,
'single' => (($cmd === 'single_mail' || $cmd === 'single_activity') ? true : false),
'location' => $location,
'request' => $request,
'normal_mode' => $normal_mode,
'packet_type' => $packet_type,
'walltowall' => $walltowall,
'queued' => []
];
call_hooks('notifier_hub',$narr);
@@ -582,13 +596,13 @@ class Notifier {
}
// singleton deliveries by definition 'not got zot'.
// Single deliveries are other federated networks (plugins) and we're essentially
// Single deliveries are other federated networks (plugins) and we're essentially
// delivering only to those that have this site url in their abook_instance
// and only from within a sync operation. This means if you post from a clone,
// and a connection is connected to one of your other clones; assuming that hub
// is running it will receive a sync packet. On receipt of this sync packet it
// will invoke a delivery to those connections which are connected to just that
// hub instance.
// hub instance.
if($cmd === 'single_mail' || $cmd === 'single_activity') {
continue;
@@ -596,14 +610,20 @@ class Notifier {
// default: zot protocol
$hash = random_string();
$hash = random_string();
$packet = null;
$pmsg = '';
if($packet_type === 'refresh' || $packet_type === 'purge') {
$packet = zot_build_packet($channel,$packet_type,(($packet_recips) ? $packet_recips : null));
}
if($packet_type === 'keychange') {
$pmsg = get_pconfig($channel['channel_id'],'system','keychange');
$packet = zot_build_packet($channel,$packet_type,(($packet_recips) ? $packet_recips : null));
}
elseif($packet_type === 'request') {
$packet = zot_build_packet($channel,$packet_type,$env_recips,$hub['hubloc_sitekey'],$hub['site_crypto'],
$env = (($hub_env && $hub_env[$hub['hubloc_host'] . $hub['hubloc_sitekey']]) ? $hub_env[$hub['hubloc_host'] . $hub['hubloc_sitekey']] : '');
$packet = zot_build_packet($channel,$packet_type,$env,$hub['hubloc_sitekey'],$hub['site_crypto'],
$hash, array('message_id' => $request_message_id)
);
}
@@ -614,19 +634,37 @@ class Notifier {
'account_id' => $channel['channel_account_id'],
'channel_id' => $channel['channel_id'],
'posturl' => $hub['hubloc_callback'],
'notify' => $packet
'notify' => $packet,
'msg' => (($pmsg) ? json_encode($pmsg) : '')
));
}
else {
$packet = zot_build_packet($channel,'notify',$env_recips,(($private) ? $hub['hubloc_sitekey'] : null), $hub['site_crypto'],$hash);
queue_insert(array(
'hash' => $hash,
'account_id' => $target_item['aid'],
'channel_id' => $target_item['uid'],
'posturl' => $hub['hubloc_callback'],
'notify' => $packet,
'msg' => json_encode($encoded_item)
));
$env = (($hub_env && $hub_env[$hub['hubloc_host'] . $hub['hubloc_sitekey']]) ? $hub_env[$hub['hubloc_host'] . $hub['hubloc_sitekey']] : '');
// currently zot6 delivery is only performed on normal items and not sync items or mail or anything else
// Eventually we will do this for all deliveries, but for now ensure this is precisely what we are dealing
// with before switching to zot6 as the primary zot6 handler checks for the existence of a message delivery report
// to trigger dequeue'ing
$z6 = (($encoded_item && $encoded_item['type'] === 'activity' && (! array_key_exists('allow_cid',$encoded_item))) ? true : false);
if($z6) {
$packet = zot6_build_packet($channel,'notify',$env, json_encode($encoded_item), (($private) ? $hub['hubloc_sitekey'] : null), $hub['site_crypto'],$hash);
}
else {
$packet = zot_build_packet($channel,'notify',$env, (($private) ? $hub['hubloc_sitekey'] : null), $hub['site_crypto'],$hash);
}
queue_insert(
[
'hash' => $hash,
'account_id' => $target_item['aid'],
'channel_id' => $target_item['uid'],
'posturl' => $hub['hubloc_callback'],
'notify' => $packet,
'msg' => json_encode($encoded_item)
]
);
// only create delivery reports for normal undeleted items
if(is_array($target_item) && array_key_exists('postopts',$target_item) && (! $target_item['item_deleted']) && (! get_config('system','disable_dreport'))) {
@@ -647,9 +685,9 @@ class Notifier {
if($normal_mode) {
$x = q("select * from hook where hook = 'notifier_normal'");
if($x)
Master::Summon(array('Deliver_hooks',$target_item['id']));
if($x) {
Master::Summon( [ 'Deliver_hooks', $target_item['id'] ] );
}
}
if($deliveries)

View File

@@ -118,13 +118,29 @@ class Onepoll {
if($fetch_feed) {
$feedurl = str_replace('/poco/','/zotfeed/',$contact['xchan_connurl']);
$feedurl .= '?f=&mindate=' . urlencode($last_update);
if(strpos($contact['xchan_connurl'],z_root()) === 0) {
// local channel - save a network fetch
$c = channelx_by_hash($contact['xchan_hash']);
if($c) {
$x = [
'success' => true,
'body' => json_encode( [
'success' => true,
'messages' => zot_feed($c['channel_id'], $importer['xchan_hash'], [ 'mindate' => $last_update ])
])
];
}
}
else {
// remote fetch
$x = z_fetch_url($feedurl);
$feedurl = str_replace('/poco/','/zotfeed/',$contact['xchan_connurl']);
$feedurl .= '?f=&mindate=' . urlencode($last_update) . '&zid=' . $importer['channel_address'] . '@' . \App::get_hostname();
$recurse = 0;
$x = z_fetch_url($feedurl, false, $recurse, [ 'session' => true ]);
}
logger('feed_update: ' . print_r($x,true), LOGGER_DATA);
}
if(($x) && ($x['success'])) {

View File

@@ -71,14 +71,18 @@ class Poller {
$randfunc = db_getfunc('RAND');
$contacts = q("SELECT * FROM abook LEFT JOIN xchan on abook_xchan = xchan_hash
$contacts = q("SELECT abook.abook_updated, abook.abook_connected, abook.abook_feed,
abook.abook_channel, abook.abook_id, abook.abook_archived, abook.abook_pending,
abook.abook_ignored, abook.abook_blocked,
xchan.xchan_network,
account.account_lastlog, account.account_flags
FROM abook LEFT JOIN xchan on abook_xchan = xchan_hash
LEFT JOIN account on abook_account = account_id
where abook_self = 0
$sql_extra
AND (( account_flags = %d ) OR ( account_flags = %d )) $abandon_sql ORDER BY $randfunc",
intval(ACCOUNT_OK),
intval(ACCOUNT_UNVERIFIED) // FIXME
);
if($contacts) {

View File

@@ -12,10 +12,11 @@ class Queue {
require_once('include/items.php');
require_once('include/bbcode.php');
if(argc() > 1)
$queue_id = argv(1);
if($argc > 1)
$queue_id = $argv[1];
else
$queue_id = 0;
$queue_id = EMPTY_STR;
logger('queue: start');

View File

@@ -88,6 +88,14 @@ class Ratenotif {
'msg' => json_encode($encoded_item)
));
$x = q("select count(outq_hash) as total from outq where outq_delivered = 0");
if(intval($x[0]['total']) > intval(get_config('system','force_queue_threshold',300))) {
logger('immediate delivery deferred.', LOGGER_DEBUG, LOG_INFO);
update_queue_item($hash);
continue;
}
$deliver[] = $hash;
if(count($deliver) >= $deliveries_per_process) {

View File

@@ -0,0 +1,78 @@
<?php /** @file */
namespace Zotlabs\Daemon;
class Thumbnail {
static public function run($argc,$argv) {
if(! $argc == 2)
return;
$c = q("select * from attach where hash = '%s' ",
dbesc($argv[1])
);
if(! $c)
return;
$attach = $c[0];
$preview_style = intval(get_config('system','thumbnail_security',0));
$preview_width = intval(get_config('system','thumbnail_width',300));
$preview_height = intval(get_config('system','thumbnail_height',300));
$p = [
'attach' => $attach,
'preview_style' => $preview_style,
'preview_width' => $preview_width,
'preview_height' => $preview_height,
'thumbnail' => null
];
/**
* @hooks thumbnail
* * \e array \b attach
* * \e int \b preview_style
* * \e int \b preview_width
* * \e int \b preview_height
* * \e string \b thumbnail
*/
call_hooks('thumbnail',$p);
if($p['thumbnail']) {
return;
}
$default_controller = null;
$files = glob('Zotlabs/Thumbs/*.php');
if($files) {
foreach($files as $f) {
$clsname = '\\Zotlabs\\Thumbs\\' . ucfirst(basename($f,'.php'));
if(class_exists($clsname)) {
$x = new $clsname();
if(method_exists($x,'Match')) {
$matched = $x->Match($attach['filetype']);
if($matched) {
$x->Thumb($attach,$preview_style,$preview_width,$preview_height);
}
}
if(method_exists($x,'MatchDefault')) {
$default_matched = $x->MatchDefault(substr($attach['filetype'],0,strpos($attach['filetype'],'/')));
if($default_matched) {
$default_controller = $x;
}
}
}
}
}
if(($default_controller)
&& ((! file_exists(dbunescbin($attach['content']) . '.thumb'))
|| (filectime(dbunescbin($attach['content']) . 'thumb') < (time() - 60)))) {
$default_controller->Thumb($attach,$preview_style,$preview_width,$preview_height);
}
}
}

View File

@@ -2,7 +2,12 @@
namespace Zotlabs\Extend;
use App;
/**
* @brief Hook class.
*
*/
class Hook {
static public function register($hook,$file,$function,$version = 1,$priority = 0) {
@@ -40,6 +45,15 @@ class Hook {
return $r;
}
static public function register_array($file,$arr) {
if($arr) {
foreach($arr as $k => $v) {
self::register($k,$file,$v);
}
}
}
static public function unregister($hook,$file,$function,$version = 1,$priority = 0) {
if(is_array($function)) {
$function = serialize($function);
@@ -55,11 +69,14 @@ class Hook {
return $r;
}
// unregister all hooks with this file component.
// Useful for addon upgrades where you want to clean out old interfaces.
/**
* @brief Unregister all hooks with this file component.
*
* Useful for addon upgrades where you want to clean out old interfaces.
*
* @param string $file
*/
static public function unregister_by_file($file) {
$r = q("DELETE FROM hook WHERE file = '%s' ",
dbesc($file)
);
@@ -67,7 +84,6 @@ class Hook {
return $r;
}
/**
* @brief Inserts a hook into a page request.
*
@@ -89,7 +105,6 @@ class Hook {
* @param int $priority
* currently not implemented in this function, would require the hook array to be resorted
*/
static public function insert($hook, $fn, $version = 0, $priority = 0) {
if(is_array($fn)) {
$fn = serialize($fn);

View File

@@ -0,0 +1,34 @@
<?php
namespace Zotlabs\Identity;
class OAuth2Server extends \OAuth2\Server {
public function __construct(OAuth2Storage $storage, $config = []) {
if(! is_array($config)) {
$config = [
'use_openid_connect' => true,
'issuer' => \Zotlabs\Lib\System::get_site_name()
];
}
parent::__construct($storage, $config);
// Add the "Client Credentials" grant type (it is the simplest of the grant types)
$this->addGrantType(new \OAuth2\GrantType\ClientCredentials($storage));
// Add the "Authorization Code" grant type (this is where the oauth magic happens)
$this->addGrantType(new \OAuth2\GrantType\AuthorizationCode($storage));
$keyStorage = new \OAuth2\Storage\Memory( [
'keys' => [
'public_key' => get_config('system', 'pubkey'),
'private_key' => get_config('system', 'prvkey')
]
]);
$this->addStorage($keyStorage, 'public_key');
}
}

View File

@@ -0,0 +1,81 @@
<?php
namespace Zotlabs\Identity;
class OAuth2Storage extends \OAuth2\Storage\Pdo {
/**
* @param string $username
* @param string $password
* @return bool
*/
public function checkUserCredentials($username, $password)
{
if ($user = $this->getUser($username)) {
return $this->checkPassword($user, $password);
}
return false;
}
/**
* @param string $username
* @return array|bool
*/
public function getUserDetails($username)
{
return $this->getUser($username);
}
/**
*
* @param array $user
* @param string $password
* @return bool
*/
protected function checkPassword($user, $password)
{
$x = account_verify_password($user,$password);
return((array_key_exists('channel',$x) && ! empty($x['channel'])) ? true : false);
}
/**
* @param string $username
* @return array|bool
*/
public function getUser($username)
{
$x = channelx_by_nick($username);
if(! $x) {
return false;
}
return( [
'username' => $x['channel_address'],
'user_id' => $x['channel_id'],
'firstName' => $x['channel_name'],
'lastName' => '',
'password' => 'NotARealPassword'
] );
}
/**
* plaintext passwords are bad! Override this for your application
*
* @param string $username
* @param string $password
* @param string $firstName
* @param string $lastName
* @return bool
*/
public function setUser($username, $password, $firstName = null, $lastName = null)
{
return true;
}
}

View File

@@ -0,0 +1,276 @@
<?php
namespace Zotlabs\Lib;
/**
* @brief ActivityStreams class.
*
* Parses an ActivityStream JSON string.
*/
class ActivityStreams {
public $raw = null;
public $data;
public $valid = false;
public $id = '';
public $type = '';
public $actor = null;
public $obj = null;
public $tgt = null;
public $origin = null;
public $owner = null;
public $signer = null;
public $ldsig = null;
public $sigok = false;
public $recips = null;
public $raw_recips = null;
/**
* @brief Constructor for ActivityStreams.
*
* Takes a JSON string as parameter, decodes it and sets up this object.
*
* @param string $string
*/
function __construct($string) {
$this->raw = $string;
$this->data = json_decode($string, true);
if($this->data) {
$this->valid = true;
}
if($this->is_valid()) {
$this->id = $this->get_property_obj('id');
$this->type = $this->get_primary_type();
$this->actor = $this->get_compound_property('actor');
$this->obj = $this->get_compound_property('object');
$this->tgt = $this->get_compound_property('target');
$this->origin = $this->get_compound_property('origin');
$this->recips = $this->collect_recips();
$this->ldsig = $this->get_compound_property('signature');
if($this->ldsig) {
$this->signer = $this->get_compound_property('creator',$this->ldsig);
if($this->signer && $this->signer['publicKey'] && $this->signer['publicKey']['publicKeyPem']) {
$this->sigok = \Zotlabs\Lib\LDSignatures::verify($this->data,$this->signer['publicKey']['publicKeyPem']);
}
}
if(($this->type === 'Note') && (! $this->obj)) {
$this->obj = $this->data;
$this->type = 'Create';
}
}
}
/**
* @brief Return if instantiated ActivityStream is valid.
*
* @return boolean Return true if the JSON string could be decoded.
*/
function is_valid() {
return $this->valid;
}
function set_recips($arr) {
$this->saved_recips = $arr;
}
/**
* @brief Collects all recipients.
*
* @param string $base
* @param string $namespace (optional) default empty
* @return array
*/
function collect_recips($base = '', $namespace = '') {
$x = [];
$fields = [ 'to', 'cc', 'bto', 'bcc', 'audience'];
foreach($fields as $f) {
$y = $this->get_compound_property($f, $base, $namespace);
if($y) {
$x = array_merge($x, $y);
if(! is_array($this->raw_recips))
$this->raw_recips = [];
$this->raw_recips[$f] = $x;
}
}
// not yet ready for prime time
// $x = $this->expand($x,$base,$namespace);
return $x;
}
function expand($arr,$base = '',$namespace = '') {
$ret = [];
// right now use a hardwired recursion depth of 5
for($z = 0; $z < 5; $z ++) {
if(is_array($arr) && $arr) {
foreach($arr as $a) {
if(is_array($a)) {
$ret[] = $a;
}
else {
$x = $this->get_compound_property($a,$base,$namespace);
if($x) {
$ret = array_merge($ret,$x);
}
}
}
}
}
/// @fixme de-duplicate
return $ret;
}
/**
* @brief
*
* @param array $base
* @param string $namespace if not set return empty string
* @return string|NULL
*/
function get_namespace($base, $namespace) {
if(! $namespace)
return '';
$key = null;
foreach( [ $this->data, $base ] as $b ) {
if(! $b)
continue;
if(array_key_exists('@context', $b)) {
if(is_array($b['@context'])) {
foreach($b['@context'] as $ns) {
if(is_array($ns)) {
foreach($ns as $k => $v) {
if($namespace === $v)
$key = $k;
}
}
else {
if($namespace === $ns) {
$key = '';
}
}
}
}
else {
if($namespace === $b['@context']) {
$key = '';
}
}
}
}
return $key;
}
/**
* @brief
*
* @param string $property
* @param array $base (optional)
* @param string $namespace (optional) default empty
* @return NULL|mixed
*/
function get_property_obj($property, $base = '', $namespace = '') {
$prefix = $this->get_namespace($base, $namespace);
if($prefix === null)
return null;
$base = (($base) ? $base : $this->data);
$propname = (($prefix) ? $prefix . ':' : '') . $property;
return ((array_key_exists($propname, $base)) ? $base[$propname] : null);
}
/**
* @brief Fetches a property from an URL.
*
* @param string $url
* @return NULL|mixed
*/
function fetch_property($url) {
$redirects = 0;
if(! check_siteallowed($url)) {
logger('blacklisted: ' . $url);
return null;
}
$x = z_fetch_url($url, true, $redirects,
['headers' => [ 'Accept: application/activity+json, application/ld+json; profile="https://www.w3.org/ns/activitystreams"' ]]);
if($x['success'])
return json_decode($x['body'], true);
return null;
}
/**
* @brief
*
* @param string $property
* @param array $base
* @param string $namespace (optional) default empty
* @return NULL|mixed
*/
function get_compound_property($property, $base = '', $namespace = '') {
$x = $this->get_property_obj($property, $base, $namespace);
if($this->is_url($x)) {
$x = $this->fetch_property($x);
}
return $x;
}
/**
* @brief Check if string starts with http.
*
* @param string $url
* @return boolean
*/
function is_url($url) {
if(($url) && (! is_array($url)) && (strpos($url, 'http') === 0)) {
return true;
}
return false;
}
/**
* @brief Gets the type property.
*
* @param array $base
* @param string $namespace (optional) default empty
* @return NULL|mixed
*/
function get_primary_type($base = '', $namespace = '') {
if(! $base)
$base = $this->data;
$x = $this->get_property_obj('type', $base, $namespace);
if(is_array($x)) {
foreach($x as $y) {
if(strpos($y, ':') === false) {
return $y;
}
}
}
return $x;
}
function debug() {
$x = var_export($this, true);
return $x;
}
}

View File

@@ -13,7 +13,12 @@ require_once('include/channel.php');
class Apps {
static public $installed_system_apps = null;
static public $available_apps = null;
static public $installed_apps = null;
static public $base_apps = null;
static public function get_system_apps($translate = true) {
@@ -34,7 +39,7 @@ class Apps {
if($files) {
foreach($files as $f) {
$path = explode('/',$f);
$plugin = $path[1];
$plugin = trim($path[1]);
if(plugin_is_installed($plugin)) {
$x = self::parse_app_description($f,$translate);
if($x) {
@@ -45,6 +50,8 @@ class Apps {
}
}
call_hooks('get_system_apps',$ret);
return $ret;
}
@@ -53,22 +60,52 @@ class Apps {
static public function import_system_apps() {
if(! local_channel())
return;
self::$base_apps = get_config('system','base_apps',[
'Connections',
'Suggest Channels',
'Grid',
'Settings',
'Files',
'Channel Home',
'View Profile',
'Photos',
'Events',
'Directory',
'Search',
'Help',
'Mail',
'Profile Photo'
]);
$apps = self::get_system_apps(false);
self::$installed_system_apps = q("select * from app where app_system = 1 and app_channel = %d",
self::$available_apps = q("select * from app where app_channel = 0");
self::$installed_apps = q("select * from app where app_channel = %d",
intval(local_channel())
);
if($apps) {
foreach($apps as $app) {
$id = self::check_install_system_app($app);
// $id will be boolean true or false to install an app, or an integer id to update an existing app
if($id !== false) {
$app['uid'] = 0;
$app['guid'] = hash('whirlpool',$app['name']);
$app['system'] = 1;
self::app_install(0,$app);
}
$id = self::check_install_personal_app($app);
// $id will be boolean true or false to install an app, or an integer id to update an existing app
if($id === false)
continue;
if($id !== true) {
// if we already installed this app, but it changed, preserve any categories we created
$s = '';
$r = q("select * from term where otype = %d and oid = %d",
$s = EMPTY_STR;
$r = q("select term from term where otype = %d and oid = %d",
intval(TERM_OBJ_APP),
intval($id)
);
@@ -85,6 +122,7 @@ class Apps {
$app['guid'] = hash('whirlpool',$app['name']);
$app['system'] = 1;
self::app_install(local_channel(),$app);
}
}
}
@@ -95,17 +133,22 @@ class Apps {
*/
static public function check_install_system_app($app) {
if((! is_array(self::$installed_system_apps)) || (! count(self::$installed_system_apps))) {
if((! is_array(self::$available_apps)) || (! count(self::$available_apps))) {
return true;
}
$notfound = true;
foreach(self::$installed_system_apps as $iapp) {
foreach(self::$available_apps as $iapp) {
if($iapp['app_id'] == hash('whirlpool',$app['name'])) {
$notfound = false;
if(($iapp['app_version'] != $app['version'])
if(($iapp['app_version'] !== $app['version'])
|| ($app['plugin'] && (! $iapp['app_plugin']))) {
return intval($iapp['app_id']);
}
if(($iapp['app_url'] !== $app['url'])
|| ($iapp['app_photo'] !== $app['photo'])) {
return intval($iapp['app_id']);
}
}
}
@@ -113,12 +156,38 @@ class Apps {
}
/**
* Install the system app if no system apps have been installed, or if a new system app
* is discovered, or if the version of a system app changes.
*/
static public function check_install_personal_app($app) {
$installed = false;
foreach(self::$installed_apps as $iapp) {
if($iapp['app_id'] == hash('whirlpool',$app['name'])) {
$installed = true;
if(($iapp['app_version'] != $app['version'])
|| ($app['plugin'] && (! $iapp['app_plugin']))) {
return intval($iapp['app_id']);
}
}
}
if(! $installed && in_array($app['name'],self::$base_apps)) {
return true;
}
return false;
}
static public function app_name_compare($a,$b) {
return strcasecmp($a['name'],$b['name']);
}
static public function parse_app_description($f,$translate = true) {
$ret = array();
$baseurl = z_root();
@@ -134,12 +203,11 @@ class Apps {
if($lines) {
foreach($lines as $x) {
if(preg_match('/^([a-zA-Z].*?):(.*?)$/ism',$x,$matches)) {
$ret[$matches[1]] = trim(str_replace(array('$baseurl','$nick'),array($baseurl,$address),$matches[2]));
$ret[$matches[1]] = trim($matches[2]);
}
}
}
if(! $ret['photo'])
$ret['photo'] = $baseurl . '/' . get_default_profile_photo(80);
@@ -169,6 +237,14 @@ class Apps {
$requires = explode(',',$ret['requires']);
foreach($requires as $require) {
$require = trim(strtolower($require));
$config = false;
if(substr($require, 0, 7) == 'config:') {
$config = true;
$require = ltrim($require, 'config:');
$require = explode('=', $require);
}
switch($require) {
case 'nologin':
if(local_channel())
@@ -186,15 +262,22 @@ class Apps {
if(! is_public_profile())
unset($ret);
break;
case 'public_stream':
if(! can_view_public_stream())
unset($ret);
break;
case 'observer':
if(! $observer)
unset($ret);
break;
default:
if(! (local_channel() && feature_enabled(local_channel(),$require)))
if($config)
$unset = ((get_config('system', $require[0]) == $require[1]) ? false : true);
else
$unset = ((local_channel() && feature_enabled(local_channel(),$require)) ? false : true);
if($unset)
unset($ret);
break;
}
}
}
@@ -209,17 +292,19 @@ class Apps {
static public function translate_system_apps(&$arr) {
$apps = array(
'Site Admin' => t('Site Admin'),
'Apps' => t('Apps'),
'Articles' => t('Articles'),
'Cards' => t('Cards'),
'Admin' => t('Site Admin'),
'Report Bug' => t('Report Bug'),
'View Bookmarks' => t('View Bookmarks'),
'My Chatrooms' => t('My Chatrooms'),
'Connections' => t('Connections'),
'Firefox Share' => t('Firefox Share'),
'Remote Diagnostics' => t('Remote Diagnostics'),
'Suggest Channels' => t('Suggest Channels'),
'Login' => t('Login'),
'Channel Manager' => t('Channel Manager'),
'Grid' => t('Grid'),
'Grid' => t('Activity'),
'Settings' => t('Settings'),
'Files' => t('Files'),
'Webpages' => t('Webpages'),
@@ -245,9 +330,19 @@ class Apps {
'Profile Photo' => t('Profile Photo')
);
if(array_key_exists($arr['name'],$apps)) {
$arr['name'] = $apps[$arr['name']];
if(array_key_exists('name',$arr)) {
if(array_key_exists($arr['name'],$apps)) {
$arr['name'] = $apps[$arr['name']];
}
}
else {
for($x = 0; $x < count($arr); $x++) {
if(array_key_exists($arr[$x]['name'],$apps)) {
$arr[$x]['name'] = $apps[$arr[$x]['name']];
}
}
}
}
@@ -259,6 +354,7 @@ class Apps {
* modes:
* view: normal mode for viewing an app via bbcode from a conversation or page
* provides install/update button if you're logged in locally
* install: like view but does not display app-bin options if they are present
* list: normal mode for viewing an app on the app page
* no buttons are shown
* edit: viewing the app page in editing mode provides a delete button
@@ -271,18 +367,33 @@ class Apps {
return;
if(! $papp['photo'])
$papp['photo'] = z_root() . '/' . get_default_profile_photo(80);
$papp['photo'] = 'icon:gear';
self::translate_system_apps($papp);
if(($papp['plugin']) && (! plugin_is_installed($papp['plugin'])))
if(trim($papp['plugin']) && (! plugin_is_installed(trim($papp['plugin']))))
return '';
$papp['papp'] = self::papp_encode($papp);
// This will catch somebody clicking on a system "available" app that hasn't had the path macros replaced
// and they are allowed to see the app
if(strstr($papp['url'],'$baseurl') || strstr($papp['url'],'$nick') || strstr($papp['photo'],'$baseurl') || strstr($pap['photo'],'$nick')) {
$view_channel = local_channel();
if(! $view_channel) {
$sys = get_sys_channel();
$view_channel = $sys['channel_id'];
}
self::app_macros($view_channel,$papp);
}
if(! strstr($papp['url'],'://'))
$papp['url'] = z_root() . ((strpos($papp['url'],'/') === 0) ? '' : '/') . $papp['url'];
foreach($papp as $k => $v) {
if(strpos($v,'http') === 0 && $k != 'papp') {
if(! (local_channel() && strpos($v,z_root()) === 0)) {
@@ -294,8 +405,17 @@ class Apps {
if($k === 'requires') {
$requires = explode(',',$v);
foreach($requires as $require) {
$require = trim(strtolower($require));
$config = false;
if(substr($require, 0, 7) == 'config:') {
$config = true;
$require = ltrim($require, 'config:');
$require = explode('=', $require);
}
switch($require) {
case 'nologin':
if(local_channel())
@@ -313,16 +433,23 @@ class Apps {
if(! is_public_profile())
return '';
break;
case 'public_stream':
if(! can_view_public_stream())
return '';
break;
case 'observer':
$observer = \App::get_observer();
if(! $observer)
return '';
break;
default:
if(! (local_channel() && feature_enabled(local_channel(),$require)))
if($config)
$unset = ((get_config('system', $require[0]) === $require[1]) ? false : true);
else
$unset = ((local_channel() && feature_enabled(local_channel(),$require)) ? false : true);
if($unset)
return '';
break;
}
}
}
@@ -348,21 +475,36 @@ class Apps {
$install_action = (($installed) ? t('Update') : t('Install'));
$icon = ((strpos($papp['photo'],'icon:') === 0) ? substr($papp['photo'],5) : '');
if($mode === 'navbar') {
return replace_macros(get_markup_template('app_nav.tpl'),array(
'$app' => $papp,
'$icon' => $icon,
));
}
if($mode === 'install') {
$papp['embed'] = true;
}
return replace_macros(get_markup_template('app.tpl'),array(
'$app' => $papp,
'$icon' => $icon,
'$hosturl' => $hosturl,
'$purchase' => (($papp['page'] && (! $installed)) ? t('Purchase') : ''),
'$install' => (($hosturl && $mode == 'view') ? $install_action : ''),
'$install' => (($hosturl && in_array($mode, ['view','install'])) ? $install_action : ''),
'$edit' => ((local_channel() && $installed && $mode == 'edit') ? t('Edit') : ''),
'$delete' => ((local_channel() && $installed && $mode == 'edit') ? t('Delete') : ''),
'$undelete' => ((local_channel() && $installed && $mode == 'edit') ? t('Undelete') : ''),
'$deleted' => $papp['deleted'],
'$feature' => (($papp['embed']) ? false : true),
'$pin' => (($papp['embed']) ? false : true),
'$featured' => ((strpos($papp['categories'], 'nav_featured_app') === false) ? false : true),
'$pinned' => ((strpos($papp['categories'], 'nav_pinned_app') === false) ? false : true),
'$navapps' => (($mode == 'nav') ? true : false),
'$order' => (($mode == 'nav-order') ? true : false),
'$add' => t('Add to app-tray'),
'$remove' => t('Remove from app-tray')
'$remove' => t('Remove from app-tray'),
'$add_nav' => t('Pin to navbar'),
'$remove_nav' => t('Unpin from navbar')
));
}
@@ -411,21 +553,13 @@ class Apps {
intval(TERM_OBJ_APP),
intval($x[0]['id'])
);
if($x[0]['app_system']) {
$r = q("update app set app_deleted = 1 where app_id = '%s' and app_channel = %d",
dbesc($app['guid']),
intval($uid)
);
}
else {
$r = q("delete from app where app_id = '%s' and app_channel = %d",
dbesc($app['guid']),
intval($uid)
);
$r = q("delete from app where app_id = '%s' and app_channel = %d",
dbesc($app['guid']),
intval($uid)
);
// we don't sync system apps - they may be completely different on the other system
build_sync_packet($uid,array('app' => $x));
}
// we don't sync system apps - they may be completely different on the other system
build_sync_packet($uid,array('app' => $x));
}
else {
self::app_undestroy($uid,$app);
@@ -455,25 +589,27 @@ class Apps {
}
}
static public function app_feature($uid,$app) {
static public function app_feature($uid,$app,$term) {
$r = q("select id from app where app_id = '%s' and app_channel = %d limit 1",
dbesc($app['guid']),
intval($uid)
);
$x = q("select * from term where otype = %d and oid = %d and term = 'nav_featured_app' limit 1",
$x = q("select * from term where otype = %d and oid = %d and term = '%s' limit 1",
intval(TERM_OBJ_APP),
intval($r[0]['id'])
intval($r[0]['id']),
dbesc($term)
);
if($x) {
q("delete from term where otype = %d and oid = %d and term = 'nav_featured_app'",
q("delete from term where otype = %d and oid = %d and term = '%s'",
intval(TERM_OBJ_APP),
intval($x[0]['oid'])
intval($x[0]['oid']),
dbesc($term)
);
}
else {
store_item_tag($uid,$r[0]['id'],TERM_OBJ_APP,TERM_CATEGORY,'nav_featured_app',escape_tags(z_root() . '/apps/?f=&cat=nav_featured_app'));
store_item_tag($uid, $r[0]['id'], TERM_OBJ_APP, TERM_CATEGORY, $term, escape_tags(z_root() . '/apps/?f=&cat=' . $term));
}
}
@@ -488,16 +624,27 @@ class Apps {
}
static public function app_list($uid, $deleted = false, $cat = '') {
static public function app_list($uid, $deleted = false, $cats = []) {
if($deleted)
$sql_extra = "";
else
$sql_extra = " and app_deleted = 0 ";
if($cat) {
$r = q("select oid from term where otype = %d and term = '%s'",
intval(TERM_OBJ_APP),
dbesc($cat)
if($cats) {
$cat_sql_extra = " and ( ";
foreach($cats as $cat) {
if(strpos($cat_sql_extra, 'term'))
$cat_sql_extra .= "or ";
$cat_sql_extra .= "term = '" . dbesc($cat) . "' ";
}
$cat_sql_extra .= ") ";
$r = q("select oid from term where otype = %d $cat_sql_extra",
intval(TERM_OBJ_APP)
);
if(! $r)
return $r;
@@ -529,6 +676,129 @@ class Apps {
return($r);
}
static public function app_order($uid,$apps) {
if(! $apps)
return $apps;
$x = (($uid) ? get_pconfig($uid,'system','app_order') : get_config('system','app_order'));
if(($x) && (! is_array($x))) {
$y = explode(',',$x);
$y = array_map('trim',$y);
$x = $y;
}
if(! (is_array($x) && ($x)))
return $apps;
$ret = [];
foreach($x as $xx) {
$y = self::find_app_in_array($xx,$apps);
if($y) {
$ret[] = $y;
}
}
foreach($apps as $ap) {
if(! self::find_app_in_array($ap['name'],$ret)) {
$ret[] = $ap;
}
}
return $ret;
}
static function find_app_in_array($name,$arr) {
if(! $arr)
return false;
foreach($arr as $x) {
if($x['name'] === $name) {
return $x;
}
}
return false;
}
static function moveup($uid,$guid) {
$syslist = array();
$list = self::app_list($uid, false, ['nav_featured_app', 'nav_pinned_app']);
if($list) {
foreach($list as $li) {
$syslist[] = self::app_encode($li);
}
}
self::translate_system_apps($syslist);
usort($syslist,'self::app_name_compare');
$syslist = self::app_order($uid,$syslist);
if(! $syslist)
return;
$newlist = [];
foreach($syslist as $k => $li) {
if($li['guid'] === $guid) {
$position = $k;
break;
}
}
if(! $position)
return;
$dest_position = $position - 1;
$saved = $syslist[$dest_position];
$syslist[$dest_position] = $syslist[$position];
$syslist[$position] = $saved;
$narr = [];
foreach($syslist as $x) {
$narr[] = $x['name'];
}
set_pconfig($uid,'system','app_order',implode(',',$narr));
}
static function movedown($uid,$guid) {
$syslist = array();
$list = self::app_list($uid, false, ['nav_featured_app', 'nav_pinned_app']);
if($list) {
foreach($list as $li) {
$syslist[] = self::app_encode($li);
}
}
self::translate_system_apps($syslist);
usort($syslist,'self::app_name_compare');
$syslist = self::app_order($uid,$syslist);
if(! $syslist)
return;
$newlist = [];
foreach($syslist as $k => $li) {
if($li['guid'] === $guid) {
$position = $k;
break;
}
}
if($position >= count($syslist) - 1)
return;
$dest_position = $position + 1;
$saved = $syslist[$dest_position];
$syslist[$dest_position] = $syslist[$position];
$syslist[$position] = $saved;
$narr = [];
foreach($syslist as $x) {
$narr[] = $x['name'];
}
set_pconfig($uid,'system','app_order',implode(',',$narr));
}
static public function app_decode($s) {
$x = base64_decode(str_replace(array('<br />',"\r","\n",' '),array('','','',''),$s));
@@ -536,6 +806,29 @@ class Apps {
}
static public function app_macros($uid,&$arr) {
if(! intval($uid))
return;
$baseurl = z_root();
$channel = channelx_by_n($uid);
$address = (($channel) ? $channel['channel_address'] : '');
//future expansion
$observer = \App::get_observer();
$arr['url'] = str_replace(array('$baseurl','$nick'),array($baseurl,$address),$arr['url']);
$arr['photo'] = str_replace(array('$baseurl','$nick'),array($baseurl,$address),$arr['photo']);
}
static public function app_store($arr) {
//logger('app_store: ' . print_r($arr,true));
@@ -543,12 +836,20 @@ class Apps {
$darray = array();
$ret = array('success' => false);
$sys = get_sys_channel();
self::app_macros($arr['uid'],$arr);
$darray['app_url'] = ((x($arr,'url')) ? $arr['url'] : '');
$darray['app_channel'] = ((x($arr,'uid')) ? $arr['uid'] : 0);
if((! $darray['app_url']) || (! $darray['app_channel']))
if(! $darray['app_url'])
return $ret;
if((! $arr['uid']) && (! $arr['author'])) {
$arr['author'] = $sys['channel_hash'];
}
if($arr['photo'] && (strpos($arr['photo'],'icon:') !== 0) && (! strstr($arr['photo'],z_root()))) {
$x = import_xchan_photo($arr['photo'],get_observer_hash(),true);
$arr['photo'] = $x[1];
@@ -565,7 +866,7 @@ class Apps {
$darray['app_addr'] = ((x($arr,'addr')) ? escape_tags($arr['addr']) : '');
$darray['app_price'] = ((x($arr,'price')) ? escape_tags($arr['price']) : '');
$darray['app_page'] = ((x($arr,'page')) ? escape_tags($arr['page']) : '');
$darray['app_plugin'] = ((x($arr,'plugin')) ? escape_tags($arr['plugin']) : '');
$darray['app_plugin'] = ((x($arr,'plugin')) ? escape_tags(trim($arr['plugin'])) : '');
$darray['app_requires'] = ((x($arr,'requires')) ? escape_tags($arr['requires']) : '');
$darray['app_system'] = ((x($arr,'system')) ? intval($arr['system']) : 0);
$darray['app_deleted'] = ((x($arr,'deleted')) ? intval($arr['deleted']) : 0);
@@ -592,6 +893,7 @@ class Apps {
dbesc($darray['app_plugin']),
intval($darray['app_deleted'])
);
if($r) {
$ret['success'] = true;
$ret['app_id'] = $darray['app_id'];
@@ -622,11 +924,14 @@ class Apps {
$darray = array();
$ret = array('success' => false);
self::app_macros($arr['uid'],$arr);
$darray['app_url'] = ((x($arr,'url')) ? $arr['url'] : '');
$darray['app_channel'] = ((x($arr,'uid')) ? $arr['uid'] : 0);
$darray['app_id'] = ((x($arr,'guid')) ? $arr['guid'] : 0);
if((! $darray['app_url']) || (! $darray['app_channel']) || (! $darray['app_id']))
if((! $darray['app_url']) || (! $darray['app_id']))
return $ret;
if($arr['photo'] && (strpos($arr['photo'],'icon:') !== 0) && (! strstr($arr['photo'],z_root()))) {
@@ -643,7 +948,7 @@ class Apps {
$darray['app_addr'] = ((x($arr,'addr')) ? escape_tags($arr['addr']) : '');
$darray['app_price'] = ((x($arr,'price')) ? escape_tags($arr['price']) : '');
$darray['app_page'] = ((x($arr,'page')) ? escape_tags($arr['page']) : '');
$darray['app_plugin'] = ((x($arr,'plugin')) ? escape_tags($arr['plugin']) : '');
$darray['app_plugin'] = ((x($arr,'plugin')) ? escape_tags(trim($arr['plugin'])) : '');
$darray['app_requires'] = ((x($arr,'requires')) ? escape_tags($arr['requires']) : '');
$darray['app_system'] = ((x($arr,'system')) ? intval($arr['system']) : 0);
$darray['app_deleted'] = ((x($arr,'deleted')) ? intval($arr['deleted']) : 0);
@@ -678,6 +983,12 @@ class Apps {
dbesc($darray['app_id']),
intval($darray['app_channel'])
);
// if updating an embed app, don't mess with any existing categories.
if(array_key_exists('embed',$arr) && intval($arr['embed']) && (intval($darray['app_channel'])))
return $ret;
if($x) {
q("delete from term where otype = %d and oid = %d",
intval(TERM_OBJ_APP),
@@ -707,9 +1018,6 @@ class Apps {
$ret['type'] = 'personal';
if($app['app_id'])
$ret['guid'] = $app['app_id'];
if($app['app_id'])
$ret['guid'] = $app['app_id'];
@@ -753,7 +1061,7 @@ class Apps {
$ret['system'] = $app['app_system'];
if($app['app_plugin'])
$ret['plugin'] = $app['app_plugin'];
$ret['plugin'] = trim($app['app_plugin']);
if($app['app_deleted'])
$ret['deleted'] = $app['app_deleted'];

View File

@@ -9,10 +9,10 @@ namespace Zotlabs\Lib;
class Cache {
public static function get($key) {
$key = substr($key,0,254);
$hash = hash('whirlpool',$key);
$r = q("SELECT v FROM cache WHERE k = '%s' limit 1",
dbesc($key)
dbesc($hash)
);
if ($r)
@@ -22,20 +22,20 @@ class Cache {
public static function set($key,$value) {
$key = substr($key,0,254);
$hash = hash('whirlpool',$key);
$r = q("SELECT * FROM cache WHERE k = '%s' limit 1",
dbesc($key)
dbesc($hash)
);
if($r) {
q("UPDATE cache SET v = '%s', updated = '%s' WHERE k = '%s'",
dbesc($value),
dbesc(datetime_convert()),
dbesc($key));
dbesc($hash));
}
else {
q("INSERT INTO cache ( k, v, updated) VALUES ('%s','%s','%s')",
dbesc($key),
dbesc($hash),
dbesc($value),
dbesc(datetime_convert()));
}

View File

@@ -2,22 +2,18 @@
namespace Zotlabs\Lib;
/**
* @brief Chat related functions.
* @brief A class with chatroom related static methods.
*/
class Chatroom {
/**
* @brief Creates a chatroom.
*
* @param array $channel
* @param array $arr
* @return An associative array containing:
* - success: A boolean
* - message: (optional) A string
* @return array An associative array containing:
* * \e boolean \b success - A boolean success status
* * \e string \b message - (optional) A string
*/
static public function create($channel, $arr) {
$ret = array('success' => false);
@@ -150,8 +146,8 @@ class Chatroom {
}
if(intval($x[0]['cr_expire'])) {
$r = q("delete from chat where created < %s - INTERVAL %s and chat_room = %d",
db_utcnow(),
$r = q("delete from chat where created < %s - INTERVAL %s and chat_room = %d",
db_utcnow(),
db_quoteinterval( intval($x[0]['cr_expire']) . ' MINUTE' ),
intval($x[0]['cr_id'])
);
@@ -225,10 +221,16 @@ class Chatroom {
}
/**
* create a chat message via API.
* @brief Create a chat message via API.
*
* It is the caller's responsibility to enter the room.
*/
*
* @param int $uid
* @param int $room_id
* @param string $xchan
* @param string $text
* @return array
*/
static public function message($uid, $room_id, $xchan, $text) {
$ret = array('success' => false);
@@ -245,12 +247,18 @@ class Chatroom {
if(! $r)
return $ret;
$arr = array(
$arr = [
'chat_room' => $room_id,
'chat_xchan' => $xchan,
'chat_text' => $text
);
];
/**
* @hooks chat_message
* Called to create a chat message.
* * \e int \b chat_room
* * \e string \b chat_xchan
* * \e string \b chat_text
*/
call_hooks('chat_message', $arr);
$x = q("insert into chat ( chat_room, chat_xchan, created, chat_text )
@@ -258,7 +266,7 @@ class Chatroom {
intval($room_id),
dbesc($xchan),
dbesc(datetime_convert()),
dbesc($arr['chat_text'])
dbesc(str_rot47(base64url_encode($arr['chat_text'])))
);
$ret['success'] = true;

View File

@@ -1,4 +1,4 @@
<?php /** @file */
<?php
namespace Zotlabs\Lib;
@@ -14,7 +14,6 @@ class Config {
* @param string $family
* The category of the configuration value
*/
static public function Load($family) {
if(! array_key_exists($family, \App::$config))
\App::$config[$family] = array();
@@ -30,7 +29,7 @@ class Config {
}
\App::$config[$family]['config_loaded'] = true;
}
}
}
}
/**
@@ -47,13 +46,12 @@ class Config {
* @return mixed
* Return the set value, or false if the database update failed
*/
static public function Set($family,$key,$value) {
static public function Set($family, $key, $value) {
// manage array value
$dbvalue = ((is_array($value)) ? serialize($value) : $value);
$dbvalue = ((is_bool($dbvalue)) ? intval($dbvalue) : $dbvalue);
if(get_config($family, $key) === false || (! self::get_from_storage($family, $key))) {
if(self::Get($family, $key) === false || (! self::get_from_storage($family, $key))) {
$ret = q("INSERT INTO config ( cat, k, v ) VALUES ( '%s', '%s', '%s' ) ",
dbesc($family),
dbesc($key),
@@ -76,8 +74,8 @@ class Config {
\App::$config[$family][$key] = $value;
$ret = $value;
}
return $ret;
return $ret;
}
/**
@@ -88,25 +86,25 @@ class Config {
* $key from a cached storage in App::$config[$family]. If a key is found in the
* DB but does not exist in local config cache, pull it into the cache so we
* do not have to hit the DB again for this item.
*
*
* Returns false if not set.
*
* @param string $family
* The category of the configuration value
* @param string $key
* The configuration key to query
* @param string $default (optional) default false
* @return mixed Return value or false on error or if not set
*/
static public function Get($family,$key,$default = false) {
static public function Get($family, $key, $default = false) {
if((! array_key_exists($family, \App::$config)) || (! array_key_exists('config_loaded', \App::$config[$family])))
self::Load($family);
if(array_key_exists('config_loaded', \App::$config[$family])) {
if(! array_key_exists($key, \App::$config[$family])) {
return $default;
return $default;
}
return ((! is_array(\App::$config[$family][$key])) && (preg_match('|^a:[0-9]+:{.*}$|s', \App::$config[$family][$key]))
return ((! is_array(\App::$config[$family][$key])) && (preg_match('|^a:[0-9]+:{.*}$|s', \App::$config[$family][$key]))
? unserialize(\App::$config[$family][$key])
: \App::$config[$family][$key]
);
@@ -127,25 +125,26 @@ class Config {
* The configuration key to delete
* @return mixed
*/
static public function Delete($family,$key) {
static public function Delete($family, $key) {
$ret = false;
if(array_key_exists($family, \App::$config) && array_key_exists($key, \App::$config[$family]))
unset(\App::$config[$family][$key]);
$ret = q("DELETE FROM config WHERE cat = '%s' AND k = '%s'",
$ret = q("DELETE FROM config WHERE cat = '%s' AND k = '%s'",
dbesc($family),
dbesc($key)
);
return $ret;
}
/**
* @brief Returns a value directly from the database configuration storage.
* @brief Returns a record directly from the database configuration storage.
*
* This function queries directly the database and bypasses the chached storage
* This function queries directly the database and bypasses the cached storage
* from get_config($family, $key).
*
* @param string $family
@@ -154,12 +153,12 @@ class Config {
* The configuration key to query
* @return mixed
*/
static private function get_from_storage($family,$key) {
$ret = q("SELECT * FROM config WHERE cat = '%s' AND k = '%s' LIMIT 1",
dbesc($family),
dbesc($key)
);
return $ret;
}

107
Zotlabs/Lib/DB_Upgrade.php Normal file
View File

@@ -0,0 +1,107 @@
<?php
namespace Zotlabs\Lib;
class DB_Upgrade {
public $config_name = '';
public $func_prefix = '';
function __construct($db_revision) {
$this->config_name = 'db_version';
$this->func_prefix = '_';
$build = get_config('system', 'db_version', 0);
if(! intval($build))
$build = set_config('system', 'db_version', $db_revision);
if($build == $db_revision) {
// Nothing to be done.
return;
}
else {
$stored = intval($build);
if(! $stored) {
logger('Critical: check_config unable to determine database schema version');
return;
}
$current = intval($db_revision);
if($stored < $current) {
// The last update we performed was $stored.
// Start at $stored + 1 and continue until we have completed $current
for($x = $stored + 1; $x <= $current; $x ++) {
$s = '_' . $x;
$cls = '\\Zotlabs\Update\\' . $s ;
if(! class_exists($cls)) {
return;
}
// There could be a lot of processes running or about to run.
// We want exactly one process to run the update command.
// So store the fact that we're taking responsibility
// after first checking to see if somebody else already has.
// If the update fails or times-out completely you may need to
// delete the config entry to try again.
Config::Load('database');
if(get_config('database', $s))
break;
set_config('database',$s, '1');
$c = new $cls();
$retval = $c->run();
if($retval != UPDATE_SUCCESS) {
// Prevent sending hundreds of thousands of emails by creating
// a lockfile.
$lockfile = 'store/[data]/mailsent';
if ((file_exists($lockfile)) && (filemtime($lockfile) > (time() - 86400)))
return;
@unlink($lockfile);
//send the administrator an e-mail
file_put_contents($lockfile, $x);
$r = q("select account_language from account where account_email = '%s' limit 1",
dbesc(\App::$config['system']['admin_email'])
);
push_lang(($r) ? $r[0]['account_language'] : 'en');
z_mail(
[
'toEmail' => \App::$config['system']['admin_email'],
'messageSubject' => sprintf( t('Update Error at %s'), z_root()),
'textVersion' => replace_macros(get_intltext_template('update_fail_eml.tpl'),
[
'$sitename' => \App::$config['system']['sitename'],
'$siteurl' => z_root(),
'$update' => $x,
'$error' => sprintf( t('Update %s failed. See error logs.'), $x)
]
)
]
);
//try the logger
logger('CRITICAL: Update Failed: ' . $x);
pop_lang();
}
else {
set_config('database',$s, 'success');
}
}
}
set_config('system', 'db_version', $db_revision);
}
}
}

View File

@@ -1,5 +1,5 @@
<?php
namespace Zotlabs\Zot;
namespace Zotlabs\Lib;
class DReport {

View File

@@ -63,11 +63,13 @@ class Enotify {
$thanks = t('Thank You,');
$sitename = get_config('system','sitename');
$site_admin = sprintf( t('%s Administrator'), $sitename);
$opt_out1 = sprintf( t('This email was sent by %1$s at %2$s.'), t('$Projectname'), \App::get_hostname());
$opt_out2 = sprintf( t('To stop receiving these messages, please adjust your Notification Settings at %s'), z_root() . '/settings');
$hopt_out2 = sprintf( t('To stop receiving these messages, please adjust your %s.'), '<a href="' . z_root() . '/settings' . '">' . t('Notification Settings') . '</a>');
$sender_name = $product;
$hostname = \App::get_hostname();
if(strpos($hostname,':'))
$hostname = substr($hostname,0,strpos($hostname,':'));
$hostname = substr($hostname,0,strpos($hostname,':'));
// Do not translate 'noreply' as it must be a legal 7-bit email address
@@ -77,7 +79,7 @@ class Enotify {
$sender_email = get_config('system','from_email');
if(! $sender_email)
$sender_email = 'Administrator' . '@' . \App::get_hostname();
$sender_email = 'Administrator' . '@' . $hostname;
$sender_name = get_config('system','from_email_name');
if(! $sender_name)
@@ -112,6 +114,11 @@ class Enotify {
}
$always_show_in_notices = get_pconfig($recip['channel_id'],'system','always_show_in_notices');
$vnotify = get_pconfig($recip['channel_id'],'system','vnotify');
$salutation = $recip['channel_name'];
// e.g. "your post", "David's photo", etc.
$possess_desc = t('%s <!item_type!>');
@@ -119,7 +126,7 @@ class Enotify {
logger('notification: mail');
$subject = sprintf( t('[$Projectname:Notify] New mail received at %s'),$sitename);
$preamble = sprintf( t('%1$s, %2$s sent you a new private message at %3$s.'),$recip['channel_name'], $sender['xchan_name'],$sitename);
$preamble = sprintf( t('%1$s sent you a new private message at %2$s.'), $sender['xchan_name'],$sitename);
$epreamble = sprintf( t('%1$s sent you %2$s.'),'[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]', '[zrl=$itemlink]' . t('a private message') . '[/zrl]');
$sitelink = t('Please visit %s to view and/or reply to your private messages.');
$tsitelink = sprintf( $sitelink, $siteurl . '/mail/' . $params['item']['id'] );
@@ -128,16 +135,28 @@ class Enotify {
}
if ($params['type'] == NOTIFY_COMMENT) {
// logger("notification: params = " . print_r($params, true), LOGGER_DEBUG);
//logger("notification: params = " . print_r($params, true), LOGGER_DEBUG);
$itemlink = $params['link'];
$moderated = (($params['item']['item_blocked'] == ITEM_MODERATED) ? true : false);
// ignore like/unlike activity on posts - they probably require a separate notification preference
$itemlink = $params['link'];
$action = t('commented on');
if(array_key_exists('item',$params) && in_array($params['item']['verb'], [ACTIVITY_LIKE, ACTIVITY_DISLIKE])) {
if(! $always_show_in_notices || !($vnotify & VNOTIFY_LIKE)) {
logger('notification: not a visible activity. Ignoring.');
pop_lang();
return;
}
if(activity_match($params['verb'], ACTIVITY_LIKE))
$action = t('liked');
if(activity_match($params['verb'], ACTIVITY_DISLIKE))
$action = t('disliked');
if (array_key_exists('item',$params) && (! visible_activity($params['item']))) {
logger('notification: not a visible activity. Ignoring.');
pop_lang();
return;
}
$parent_mid = $params['parent_mid'];
@@ -170,7 +189,6 @@ class Enotify {
xchan_query($p);
$item_post_type = item_post_type($p[0]);
// $private = $p[0]['item_private'];
$parent_id = $p[0]['id'];
@@ -180,26 +198,26 @@ class Enotify {
//$possess_desc = str_replace('<!item_type!>',$possess_desc);
// "a post"
$dest_str = sprintf(t('%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]'),
$recip['channel_name'],
$dest_str = sprintf(t('%1$s %2$s [zrl=%3$s]a %4$s[/zrl]'),
'[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
$action,
$itemlink,
$item_post_type);
// "George Bull's post"
if($p)
$dest_str = sprintf(t('%1$s, %2$s commented on [zrl=%3$s]%4$s\'s %5$s[/zrl]'),
$recip['channel_name'],
$dest_str = sprintf(t('%1$s %2$s [zrl=%3$s]%4$s\'s %5$s[/zrl]'),
'[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
$action,
$itemlink,
$p[0]['author']['xchan_name'],
$item_post_type);
// "your post"
if($p[0]['owner']['xchan_name'] == $p[0]['author']['xchan_name'] && intval($p[0]['item_wall']))
$dest_str = sprintf(t('%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]'),
$recip['channel_name'],
$dest_str = sprintf(t('%1$s %2$s [zrl=%3$s]your %4$s[/zrl]'),
'[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
$action,
$itemlink,
$item_post_type);
@@ -208,13 +226,21 @@ class Enotify {
// Before this we have the name of the replier on the subject rendering
// differents subjects for messages on the same thread.
$subject = sprintf( t('[$Projectname:Notify] Comment to conversation #%1$d by %2$s'), $parent_id, $sender['xchan_name']);
$preamble = sprintf( t('%1$s, %2$s commented on an item/conversation you have been following.'), $recip['channel_name'], $sender['xchan_name']);
if($moderated)
$subject = sprintf( t('[$Projectname:Notify] Moderated Comment to conversation #%1$d by %2$s'), $parent_id, $sender['xchan_name']);
else
$subject = sprintf( t('[$Projectname:Notify] Comment to conversation #%1$d by %2$s'), $parent_id, $sender['xchan_name']);
$preamble = sprintf( t('%1$s commented on an item/conversation you have been following.'), $sender['xchan_name']);
$epreamble = $dest_str;
$sitelink = t('Please visit %s to view and/or reply to the conversation.');
$tsitelink = sprintf( $sitelink, $siteurl );
$hsitelink = sprintf( $sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
if($moderated) {
$tsitelink .= "\n\n" . sprintf( t('Please visit %s to approve or reject this comment.'), z_root() . '/moderate' );
$hsitelink .= "<br><br>" . sprintf( t('Please visit %s to approve or reject this comment.'), '<a href="' . z_root() . '/moderate">' . z_root() . '/moderate</a>' );
}
}
if ($params['type'] == NOTIFY_LIKE) {
@@ -222,12 +248,12 @@ class Enotify {
$itemlink = $params['link'];
// ignore like/unlike activity on posts - they probably require a separate notification preference
if (array_key_exists('item',$params) && (! activity_match($params['item']['verb'],ACTIVITY_LIKE))) {
logger('notification: not a like activity. Ignoring.');
pop_lang();
return;
if(! $always_show_in_notices || !($vnotify & VNOTIFY_LIKE)) {
logger('notification: not a visible activity. Ignoring.');
pop_lang();
return;
}
}
$parent_mid = $params['parent_mid'];
@@ -270,8 +296,7 @@ class Enotify {
// "your post"
if($p[0]['owner']['xchan_name'] == $p[0]['author']['xchan_name'] && intval($p[0]['item_wall']))
$dest_str = sprintf(t('%1$s, %2$s liked [zrl=%3$s]your %4$s[/zrl]'),
$recip['channel_name'],
$dest_str = sprintf(t('%1$s liked [zrl=%2$s]your %3$s[/zrl]'),
'[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
$itemlink,
$item_post_type);
@@ -286,7 +311,7 @@ class Enotify {
// differents subjects for messages on the same thread.
$subject = sprintf( t('[$Projectname:Notify] Like received to conversation #%1$d by %2$s'), $parent_id, $sender['xchan_name']);
$preamble = sprintf( t('%1$s, %2$s liked an item/conversation you created.'), $recip['channel_name'], $sender['xchan_name']);
$preamble = sprintf( t('%1$s liked an item/conversation you created.'), $sender['xchan_name']);
$epreamble = $dest_str;
$sitelink = t('Please visit %s to view and/or reply to the conversation.');
@@ -299,10 +324,9 @@ class Enotify {
if($params['type'] == NOTIFY_WALL) {
$subject = sprintf( t('[$Projectname:Notify] %s posted to your profile wall') , $sender['xchan_name']);
$preamble = sprintf( t('%1$s, %2$s posted to your profile wall at %3$s') , $recip['channel_name'], $sender['xchan_name'], $sitename);
$preamble = sprintf( t('%1$s posted to your profile wall at %2$s') , $sender['xchan_name'], $sitename);
$epreamble = sprintf( t('%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]') ,
$recip['channel_name'],
$epreamble = sprintf( t('%1$s posted to [zrl=%2$s]your wall[/zrl]') ,
'[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
$params['link']);
@@ -326,9 +350,8 @@ class Enotify {
}
$subject = sprintf( t('[$Projectname:Notify] %s tagged you') , $sender['xchan_name']);
$preamble = sprintf( t('%1$s, %2$s tagged you at %3$s') , $recip['channel_name'], $sender['xchan_name'], $sitename);
$epreamble = sprintf( t('%1$s, %2$s [zrl=%3$s]tagged you[/zrl].') ,
$recip['channel_name'],
$preamble = sprintf( t('%1$s tagged you at %2$s') , $sender['xchan_name'], $sitename);
$epreamble = sprintf( t('%1$s [zrl=%2$s]tagged you[/zrl].') ,
'[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
$params['link']);
@@ -340,9 +363,8 @@ class Enotify {
if ($params['type'] == NOTIFY_POKE) {
$subject = sprintf( t('[$Projectname:Notify] %1$s poked you') , $sender['xchan_name']);
$preamble = sprintf( t('%1$s, %2$s poked you at %3$s') , $recip['channel_name'], $sender['xchan_name'], $sitename);
$epreamble = sprintf( t('%1$s, %2$s [zrl=%2$s]poked you[/zrl].') ,
$recip['channel_name'],
$preamble = sprintf( t('%1$s poked you at %2$s') , $sender['xchan_name'], $sitename);
$epreamble = sprintf( t('%1$s [zrl=%2$s]poked you[/zrl].') ,
'[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
$params['link']);
@@ -358,9 +380,8 @@ class Enotify {
if ($params['type'] == NOTIFY_TAGSHARE) {
$subject = sprintf( t('[$Projectname:Notify] %s tagged your post') , $sender['xchan_name']);
$preamble = sprintf( t('%1$s, %2$s tagged your post at %3$s') , $recip['channel_name'],$sender['xchan_name'], $sitename);
$epreamble = sprintf( t('%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]') ,
$recip['channel_name'],
$preamble = sprintf( t('%1$s tagged your post at %2$s'),$sender['xchan_name'], $sitename);
$epreamble = sprintf( t('%1$s tagged [zrl=%2$s]your post[/zrl]') ,
'[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
$itemlink);
@@ -372,9 +393,8 @@ class Enotify {
if ($params['type'] == NOTIFY_INTRO) {
$subject = sprintf( t('[$Projectname:Notify] Introduction received'));
$preamble = sprintf( t('%1$s, you\'ve received an new connection request from \'%2$s\' at %3$s'), $recip['channel_name'], $sender['xchan_name'], $sitename);
$epreamble = sprintf( t('%1$s, you\'ve received [zrl=%2$s]a new connection request[/zrl] from %3$s.'),
$recip['channel_name'],
$preamble = sprintf( t('You\'ve received an new connection request from \'%1$s\' at %2$s'), $sender['xchan_name'], $sitename);
$epreamble = sprintf( t('You\'ve received [zrl=%1$s]a new connection request[/zrl] from %2$s.'),
$siteurl . '/connections/ifpending',
'[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]');
$body = sprintf( t('You may visit their profile at %s'),$sender['xchan_url']);
@@ -387,9 +407,8 @@ class Enotify {
if ($params['type'] == NOTIFY_SUGGEST) {
$subject = sprintf( t('[$Projectname:Notify] Friend suggestion received'));
$preamble = sprintf( t('%1$s, you\'ve received a friend suggestion from \'%2$s\' at %3$s'), $recip['channel_name'], $sender['xchan_name'], $sitename);
$epreamble = sprintf( t('%1$s, you\'ve received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from %4$s.'),
$recip['channel_name'],
$preamble = sprintf( t('You\'ve received a friend suggestion from \'%1$s\' at %2$s'), $sender['xchan_name'], $sitename);
$epreamble = sprintf( t('You\'ve received [zrl=%1$s]a friend suggestion[/zrl] for %2$s from %3$s.'),
$itemlink,
'[zrl=' . $params['item']['url'] . ']' . $params['item']['name'] . '[/zrl]',
'[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]');
@@ -487,21 +506,20 @@ class Enotify {
// Another option would be to not add them to the DB, and change how emails are handled
// (probably would be better that way)
$always_show_in_notices = get_pconfig($recip['channel_id'],'system','always_show_in_notices');
if (!$always_show_in_notices) {
if (($params['type'] == NOTIFY_WALL) || ($params['type'] == NOTIFY_MAIL) || ($params['type'] == NOTIFY_INTRO)) {
$seen = 1;
}
}
$r = q("insert into notify (hash,xname,url,photo,created,aid,uid,link,parent,seen,ntype,verb,otype)
values('%s','%s','%s','%s','%s',%d,%d,'%s','%s',%d,%d,'%s','%s')",
$r = q("insert into notify (hash,xname,url,photo,created,msg,aid,uid,link,parent,seen,ntype,verb,otype)
values('%s','%s','%s','%s','%s','%s',%d,%d,'%s','%s',%d,%d,'%s','%s')",
dbesc($datarray['hash']),
dbesc($datarray['xname']),
dbesc($datarray['url']),
dbesc($datarray['photo']),
dbesc($datarray['created']),
dbesc(''), // will fill this in below after the record is created
intval($datarray['aid']),
intval($datarray['uid']),
dbesc($datarray['link']),
@@ -590,6 +608,9 @@ class Enotify {
$datarray['titemlink'] = $itemlink;
$datarray['thanks'] = $thanks;
$datarray['site_admin'] = $site_admin;
$datarray['opt_out1'] = $opt_out1;
$datarray['opt_out2'] = $opt_out2;
$datarray['hopt_out2'] = $hopt_out2;
$datarray['title'] = stripslashes($title);
$datarray['htmlversion'] = $htmlversion;
$datarray['textversion'] = $textversion;
@@ -636,7 +657,7 @@ class Enotify {
'$banner' => $datarray['banner'],
'$notify_icon' => \Zotlabs\Lib\System::get_notify_icon(),
'$product' => $datarray['product'],
'$preamble' => $datarray['preamble'],
'$preamble' => $salutation . '<br><br>' . $datarray['preamble'],
'$sitename' => $datarray['sitename'],
'$siteurl' => $datarray['siteurl'],
'$source_name' => $datarray['source_name'],
@@ -647,6 +668,8 @@ class Enotify {
'$hitemlink' => $datarray['hitemlink'],
'$thanks' => $datarray['thanks'],
'$site_admin' => $datarray['site_admin'],
'$opt_out1' => $datarray['opt_out1'],
'$opt_out2' => $datarray['hopt_out2'],
'$title' => $datarray['title'],
'$htmlversion' => $datarray['htmlversion'],
));
@@ -656,7 +679,7 @@ class Enotify {
$email_text_body = replace_macros($tpl, array(
'$banner' => $datarray['banner'],
'$product' => $datarray['product'],
'$preamble' => $datarray['preamble'],
'$preamble' => $salutation . "\n\n" . $datarray['preamble'],
'$sitename' => $datarray['sitename'],
'$siteurl' => $datarray['siteurl'],
'$source_name' => $datarray['source_name'],
@@ -667,6 +690,8 @@ class Enotify {
'$titemlink' => $datarray['titemlink'],
'$thanks' => $datarray['thanks'],
'$site_admin' => $datarray['site_admin'],
'$opt_out1' => $datarray['opt_out1'],
'$opt_out2' => $datarray['opt_out2'],
'$title' => $datarray['title'],
'$textversion' => $datarray['textversion'],
));
@@ -722,8 +747,8 @@ class Enotify {
// generate a mime boundary
$mimeBoundary = rand(0, 9) . "-"
.rand(10000000000, 9999999999) . "-"
.rand(10000000000, 9999999999) . "=:"
.rand(100000000, 999999999) . "-"
.rand(100000000, 999999999) . "=:"
.rand(10000, 99999);
// generate a multipart/alternative message header
@@ -768,10 +793,14 @@ class Enotify {
// Call localize_item to get a one line status for activities.
// This should set $item['localized'] to indicate we have a brief summary.
// and perhaps $item['shortlocalized'] for an even briefer summary
localize_item($item);
if($item['localize']) {
if($item['shortlocalize']) {
$itemem_text = $item['shortlocalize'];
}
elseif($item['localize']) {
$itemem_text = $item['localize'];
}
else {
@@ -780,6 +809,20 @@ class Enotify {
: sprintf( t('commented on %s\'s post'), $item['owner']['xchan_name']));
}
$edit = false;
if($item['edited'] > $item['created']) {
if($item['item_thread_top']) {
$itemem_text = sprintf( t('edited a post dated %s'), relative_date($item['created']));
$edit = true;
}
else {
$itemem_text = sprintf( t('edited a comment dated %s'), relative_date($item['created']));
$edit = true;
}
}
// convert this logic into a json array just like the system notifications
return array(
@@ -787,8 +830,11 @@ class Enotify {
'name' => $item['author']['xchan_name'],
'url' => $item['author']['xchan_url'],
'photo' => $item['author']['xchan_photo_s'],
'when' => relative_date($item['created']),
'class' => (intval($item['item_unseen']) ? 'notify-unseen' : 'notify-seen'),
'when' => relative_date(($edit)? $item['edited'] : $item['created']),
'class' => (intval($item['item_unseen']) ? 'notify-unseen' : 'notify-seen'),
'b64mid' => ((in_array($item['verb'], [ACTIVITY_LIKE, ACTIVITY_DISLIKE])) ? 'b64.' . base64url_encode($item['thr_parent']) : 'b64.' . base64url_encode($item['mid'])),
'notify_id' => 'undefined',
'thread_top' => (($item['item_thread_top']) ? true : false),
'message' => strip_tags(bbcode($itemem_text))
);

View File

@@ -0,0 +1,122 @@
<?php
namespace Zotlabs\Lib;
class Img_filesize {
private $url;
function __construct($url) {
$this->url = $url;
}
function getSize() {
$size = null;
if(stripos($this->url,z_root() . '/photo') !== false) {
$size = self::getLocalFileSize($this->url);
}
if(! $size) {
$size = getRemoteFileSize($this->url);
}
return $size;
}
static function getLocalFileSize($url) {
$fname = basename($url);
$resolution = 0;
if(strpos($fname,'.') !== false)
$fname = substr($fname,0,strpos($fname,'.'));
if(substr($fname,-2,1) == '-') {
$resolution = intval(substr($fname,-1,1));
$fname = substr($fname,0,-2);
}
$r = q("SELECT filesize FROM photo WHERE resource_id = '%s' AND imgscale = %d LIMIT 1",
dbesc($fname),
intval($resolution)
);
if($r) {
return $r[0]['filesize'];
}
return null;
}
}
/**
* Try to determine the size of a remote file by making an HTTP request for
* a byte range, or look for the content-length header in the response.
* The function aborts the transfer as soon as the size is found, or if no
* length headers are returned, it aborts the transfer.
*
* @return int|null null if size could not be determined, or length of content
*/
function getRemoteFileSize($url)
{
$ch = curl_init($url);
$headers = array(
'Range: bytes=0-1',
'Connection: close',
);
$in_headers = true;
$size = null;
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2450.0 Iron/46.0.2450.0');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_VERBOSE, 0); // set to 1 to debug
curl_setopt($ch, CURLOPT_STDERR, fopen('php://output', 'r'));
curl_setopt($ch, CURLOPT_HEADERFUNCTION, function($curl, $line) use (&$in_headers, &$size) {
$length = strlen($line);
if (trim($line) == '') {
$in_headers = false;
}
list($header, $content) = explode(':', $line, 2);
$header = strtolower(trim($header));
if ($header == 'content-range') {
// found a content-range header
list($rng, $s) = explode('/', $content, 2);
$size = (int)$s;
return 0; // aborts transfer
} else if ($header == 'content-length' && 206 != curl_getinfo($curl, CURLINFO_HTTP_CODE)) {
// found content-length header and this is not a 206 Partial Content response (range response)
$size = (int)$content;
return 0;
} else {
// continue
return $length;
}
});
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($curl, $data) use ($in_headers) {
if (!$in_headers) {
// shouldn't be here unless we couldn't determine file size
// abort transfer
return 0;
}
// write function is also called when reading headers
return strlen($data);
});
curl_exec($ch);
curl_getinfo($ch);
curl_close($ch);
return $size;
}

38
Zotlabs/Lib/JSalmon.php Normal file
View File

@@ -0,0 +1,38 @@
<?php
namespace Zotlabs\Lib;
class JSalmon {
static function sign($data,$key_id,$key) {
$arr = $data;
$data = json_encode($data,JSON_UNESCAPED_SLASHES);
$data = base64url_encode($data, false); // do not strip padding
$data_type = 'application/x-zot+json';
$encoding = 'base64url';
$algorithm = 'RSA-SHA256';
$data = preg_replace('/\s+/','',$data);
// precomputed base64url encoding of data_type, encoding, algorithm concatenated with periods
$precomputed = '.' . base64url_encode($data_type,false) . '.YmFzZTY0dXJs.UlNBLVNIQTI1Ng==';
$signature = base64url_encode(rsa_sign($data . $precomputed, $key), false);
return ([
'signed' => true,
'data' => $data,
'data_type' => $data_type,
'encoding' => $encoding,
'alg' => $algorithm,
'sigs' => [
'value' => $signature,
'key_id' => base64url_encode($key_id)
]
]);
}
}

View File

@@ -0,0 +1,135 @@
<?php
namespace Zotlabs\Lib;
require_once('library/jsonld/jsonld.php');
class LDSignatures {
static function verify($data,$pubkey) {
$ohash = self::hash(self::signable_options($data['signature']));
$dhash = self::hash(self::signable_data($data));
$x = rsa_verify($ohash . $dhash,base64_decode($data['signature']['signatureValue']), $pubkey);
logger('LD-verify: ' . intval($x));
return $x;
}
static function dopplesign(&$data,$channel) {
// remove for the time being - performance issues
// $data['magicEnv'] = self::salmon_sign($data,$channel);
return self::sign($data,$channel);
}
static function sign($data,$channel) {
$options = [
'type' => 'RsaSignature2017',
'nonce' => random_string(64),
'creator' => z_root() . '/channel/' . $channel['channel_address'] . '/public_key_pem',
'created' => datetime_convert('UTC','UTC', 'now', 'Y-m-d\Th:i:s\Z')
];
$ohash = self::hash(self::signable_options($options));
$dhash = self::hash(self::signable_data($data));
$options['signatureValue'] = base64_encode(rsa_sign($ohash . $dhash,$channel['channel_prvkey']));
$signed = array_merge([
'@context' => [
ACTIVITYSTREAMS_JSONLD_REV,
'https://w3id.org/security/v1' ],
],$options);
return $signed;
}
static function signable_data($data) {
$newdata = [];
if($data) {
foreach($data as $k => $v) {
if(! in_array($k,[ 'signature' ])) {
$newdata[$k] = $v;
}
}
}
return json_encode($newdata,JSON_UNESCAPED_SLASHES);
}
static function signable_options($options) {
$newopts = [ '@context' => 'https://w3id.org/identity/v1' ];
if($options) {
foreach($options as $k => $v) {
if(! in_array($k,[ 'type','id','signatureValue' ])) {
$newopts[$k] = $v;
}
}
}
return json_encode($newopts,JSON_UNESCAPED_SLASHES);
}
static function hash($obj) {
return hash('sha256',self::normalise($obj));
}
static function normalise($data) {
if(is_string($data)) {
$data = json_decode($data);
}
if(! is_object($data))
return '';
jsonld_set_document_loader('jsonld_document_loader');
try {
$d = jsonld_normalize($data,[ 'algorithm' => 'URDNA2015', 'format' => 'application/nquads' ]);
}
catch (\Exception $e) {
logger('normalise error:' . print_r($e,true));
logger('normalise error: ' . print_r($data,true));
}
return $d;
}
static function salmon_sign($data,$channel) {
$arr = $data;
$data = json_encode($data,JSON_UNESCAPED_SLASHES);
$data = base64url_encode($data, false); // do not strip padding
$data_type = 'application/activity+json';
$encoding = 'base64url';
$algorithm = 'RSA-SHA256';
$keyhash = base64url_encode(z_root() . '/channel/' . $channel['channel_address']);
$data = str_replace(array(" ","\t","\r","\n"),array("","","",""),$data);
// precomputed base64url encoding of data_type, encoding, algorithm concatenated with periods
$precomputed = '.' . base64url_encode($data_type,false) . '.YmFzZTY0dXJs.UlNBLVNIQTI1Ng==';
$signature = base64url_encode(rsa_sign($data . $precomputed,$channel['channel_prvkey']));
return ([
'id' => $arr['id'],
'meData' => $data,
'meDataType' => $data_type,
'meEncoding' => $encoding,
'meAlgorithm' => $algorithm,
'meCreator' => z_root() . '/channel/' . $channel['channel_address'] . '/public_key_pem',
'meSignatureValue' => $signature
]);
}
}

View File

@@ -0,0 +1,132 @@
<?php
namespace Zotlabs\Lib;
/**
* @brief MarkdownSoap class.
*
* Purify Markdown for storage
* @code{.php}
* $x = new MarkdownSoap($string_to_be_cleansed);
* $text = $x->clean();
* @endcode
* What this does:
* 1. extracts code blocks and privately escapes them from processing
* 2. Run html purifier on the content
* 3. put back the code blocks
* 4. run htmlspecialchars on the entire content for safe storage
*
* At render time:
* @code{.php}
* $markdown = \Zotlabs\Lib\MarkdownSoap::unescape($text);
* $html = \Michelf\MarkdownExtra::DefaultTransform($markdown);
* @endcode
*/
class MarkdownSoap {
/**
* @var string
*/
private $str;
/**
* @var string
*/
private $token;
function __construct($s) {
$this->str = $s;
$this->token = random_string(20);
}
function clean() {
$x = $this->extract_code($this->str);
$x = $this->purify($x);
$x = $this->putback_code($x);
$x = $this->escape($x);
return $x;
}
/**
* @brief Extracts code blocks and privately escapes them from processing.
*
* @see encode_code()
* @see putback_code()
*
* @param string $s
* @return string
*/
function extract_code($s) {
$text = preg_replace_callback('{
(?:\n\n|\A\n?)
( # $1 = the code block -- one or more lines, starting with a space/tab
(?>
[ ]{'.'4'.'} # Lines must start with a tab or a tab-width of spaces
.*\n+
)+
)
((?=^[ ]{0,'.'4'.'}\S)|\Z) # Lookahead for non-space at line-start, or end of doc
}xm',
[ $this , 'encode_code' ], $s);
return $text;
}
function encode_code($matches) {
return $this->token . ';' . base64_encode($matches[0]) . ';' ;
}
function decode_code($matches) {
return base64_decode($matches[1]);
}
/**
* @brief Put back the code blocks.
*
* @see extract_code()
* @see decode_code()
*
* @param string $s
* @return string
*/
function putback_code($s) {
$text = preg_replace_callback('{' . $this->token . '\;(.*?)\;}xm', [ $this, 'decode_code' ], $s);
return $text;
}
function purify($s) {
$s = $this->protect_autolinks($s);
$s = purify_html($s);
$s = $this->unprotect_autolinks($s);
return $s;
}
function protect_autolinks($s) {
$s = preg_replace('/\<(https?\:\/\/)(.*?)\>/', '[$1$2]($1$2)', $s);
return $s;
}
function unprotect_autolinks($s) {
return $s;
}
function escape($s) {
return htmlspecialchars($s, ENT_QUOTES, 'UTF-8', false);
}
/**
* @brief Converts special HTML entities back to characters.
*
* @param string $s
* @return string
*/
static public function unescape($s) {
return htmlspecialchars_decode($s, ENT_QUOTES);
}
}

View File

@@ -0,0 +1,79 @@
<?php
namespace Zotlabs\Lib;
class MessageFilter {
static public function evaluate($item,$incl,$excl) {
require_once('include/html2plain.php');
unobscure($item);
$text = prepare_text($item['body'],$item['mimetype']);
$text = html2plain(($item['title']) ? $item['title'] . ' ' . $text : $text);
$lang = null;
if((strpos($incl,'lang=') !== false) || (strpos($excl,'lang=') !== false)) {
$lang = detect_language($text);
}
$tags = ((is_array($item['term']) && count($item['term'])) ? $item['term'] : false);
// exclude always has priority
$exclude = (($excl) ? explode("\n",$excl) : null);
if($exclude) {
foreach($exclude as $word) {
$word = trim($word);
if(! $word)
continue;
if(substr($word,0,1) === '#' && $tags) {
foreach($tags as $t)
if((($t['ttype'] == TERM_HASHTAG) || ($t['ttype'] == TERM_COMMUNITYTAG)) && (($t['term'] === substr($word,1)) || (substr($word,1) === '*')))
return false;
}
elseif((strpos($word,'/') === 0) && preg_match($word,$text))
return false;
elseif((strpos($word,'lang=') === 0) && ($lang) && (strcasecmp($lang,trim(substr($word,5))) == 0))
return false;
elseif(stristr($text,$word) !== false)
return false;
}
}
$include = (($incl) ? explode("\n",$incl) : null);
if($include) {
foreach($include as $word) {
$word = trim($word);
if(! $word)
continue;
if(substr($word,0,1) === '#' && $tags) {
foreach($tags as $t)
if((($t['ttype'] == TERM_HASHTAG) || ($t['ttype'] == TERM_COMMUNITYTAG)) && (($t['term'] === substr($word,1)) || (substr($word,1) === '*')))
return true;
}
elseif((strpos($word,'/') === 0) && preg_match($word,$text))
return true;
elseif((strpos($word,'lang=') === 0) && ($lang) && (strcasecmp($lang,trim(substr($word,5))) == 0))
return true;
elseif(stristr($text,$word) !== false)
return true;
}
}
else {
return true;
}
return false;
}
}

View File

@@ -18,11 +18,18 @@ class NativeWiki {
if($wikis) {
foreach($wikis as &$w) {
$w['json_allow_cid'] = acl2json($w['allow_cid']);
$w['json_allow_gid'] = acl2json($w['allow_gid']);
$w['json_deny_cid'] = acl2json($w['deny_cid']);
$w['json_deny_gid'] = acl2json($w['deny_gid']);
$w['rawName'] = get_iconfig($w, 'wiki', 'rawName');
$w['htmlName'] = escape_tags($w['rawName']);
$w['urlName'] = urlencode(urlencode($w['rawName']));
$w['mimeType'] = get_iconfig($w, 'wiki', 'mimeType');
$w['lock'] = (($w['item_private'] || $w['allow_cid'] || $w['allow_gid'] || $w['deny_cid'] || $w['deny_gid']) ? true : false);
$w['typelock'] = get_iconfig($w, 'wiki', 'typelock');
$w['lockstate'] = (($w['allow_cid'] || $w['allow_gid'] || $w['deny_cid'] || $w['deny_gid']) ? 'lock' : 'unlock');
}
}
// TODO: query db for wikis the observer can access. Return with two lists, for read and write access
@@ -84,7 +91,9 @@ class NativeWiki {
if(! set_iconfig($arr, 'wiki', 'mimeType', $wiki['mimeType'], true)) {
return array('item' => null, 'success' => false);
}
set_iconfig($arr,'wiki','typelock',$wiki['typelock'],true);
$post = item_store($arr);
$item_id = $post['item_id'];
@@ -98,19 +107,87 @@ class NativeWiki {
}
}
function update_wiki($channel_id, $observer_hash, $arr, $acl) {
$w = self::get_wiki($channel_id, $observer_hash, $arr['resource_id']);
$item = $w['wiki'];
if(! $item) {
return array('item' => null, 'success' => false);
}
$x = $acl->get();
$item['allow_cid'] = $x['allow_cid'];
$item['allow_gid'] = $x['allow_gid'];
$item['deny_cid'] = $x['deny_cid'];
$item['deny_gid'] = $x['deny_gid'];
$item['item_private'] = intval($acl->is_private());
$update_title = false;
if($item['title'] !== $arr['updateRawName']) {
$update_title = true;
$item['title'] = $arr['updateRawName'];
}
$update = item_store_update($item);
$item_id = $update['item_id'];
// update acl for any existing wiki pages
q("update item set allow_cid = '%s', allow_gid = '%s', deny_cid = '%s', deny_gid = '%s', item_private = %d where resource_type = 'nwikipage' and resource_id = '%s'",
dbesc($item['allow_cid']),
dbesc($item['allow_gid']),
dbesc($item['deny_cid']),
dbesc($item['deny_gid']),
dbesc($item['item_private']),
dbesc($arr['resource_id'])
);
if($update['item_id']) {
info( t('Wiki updated successfully'));
if($update_title) {
// Update the wiki name information using iconfig.
if(! set_iconfig($update['item_id'], 'wiki', 'rawName', $arr['updateRawName'], true)) {
return array('item' => null, 'success' => false);
}
}
return array('item' => $update['item'], 'item_id' => $update['item_id'], 'success' => $update['success']);
}
else {
return array('item' => null, 'success' => false);
}
}
static public function sync_a_wiki_item($uid,$id,$resource_id) {
$r = q("SELECT * from item WHERE uid = %d AND ( id = %d OR ( resource_type = '%s' and resource_id = %d )) ",
$r = q("SELECT * from item WHERE uid = %d AND ( id = %d OR ( resource_type = '%s' and resource_id = '%s' )) ",
intval($uid),
intval($id),
dbesc(NWIKI_ITEM_RESOURCE_TYPE),
intval($resource_id)
dbesc($resource_id)
);
if($r) {
$q = q("select * from item where resource_type = 'nwikipage' and resource_id = '%s'",
dbesc($r[0]['resource_id'])
);
if($q) {
$r = array_merge($r,$q);
}
xchan_query($r);
$sync_item = fetch_post_tags($r);
build_sync_packet($uid,array('wiki' => array(encode_item($sync_item[0],true))));
if($sync_item) {
$pkt = [];
foreach($sync_item as $w) {
$pkt[] = encode_item($w,true);
}
build_sync_packet($uid,array('wiki' => $pkt));
}
}
}
@@ -150,13 +227,15 @@ class NativeWiki {
// Get wiki metadata
$rawName = get_iconfig($w, 'wiki', 'rawName');
$mimeType = get_iconfig($w, 'wiki', 'mimeType');
$typelock = get_iconfig($w, 'wiki', 'typelock');
return array(
'wiki' => $w,
'rawName' => $rawName,
'wiki' => $w,
'rawName' => $rawName,
'htmlName' => escape_tags($rawName),
'urlName' => urlencode(urlencode($rawName)),
'mimeType' => $mimeType
'urlName' => urlencode(urlencode($rawName)),
'mimeType' => $mimeType,
'typelock' => $typelock
);
}
}

View File

@@ -21,19 +21,30 @@ class NativeWikiPage {
$sql_extra = item_permissions_sql($channel_id,$observer_hash);
$r = q("select * from item where resource_type = 'nwikipage' and resource_id = '%s' and uid = %d and item_deleted = 0
$sql_extra group by mid",
$sql_extra order by title asc",
dbesc($resource_id),
intval($channel_id)
);
if($r) {
$items = fetch_post_tags($r,true);
$x = [];
$y = [];
foreach($r as $rv) {
if(! in_array($rv['mid'],$x)) {
$y[] = $rv;
$x[] = $rv['mid'];
}
}
$items = fetch_post_tags($y,true);
foreach($items as $page_item) {
$title = get_iconfig($page_item['id'],'nwikipage','pagetitle',t('(No Title)'));
if(urldecode($title) !== 'Home') {
$pages[] = [
'resource_id' => $resource_id,
'title' => escape_tags($title),
'url' => urlencode(urlencode($title)),
'url' => str_replace('%2F','/',urlencode(str_replace('%2F','/',urlencode($title)))),
'link_id' => 'id_' . substr($resource_id, 0, 10) . '_' . $page_item['id']
];
}
@@ -44,7 +55,12 @@ class NativeWikiPage {
}
static public function create_page($channel_id, $observer_hash, $name, $resource_id) {
static public function create_page($channel_id, $observer_hash, $name, $resource_id, $mimetype = 'text/bbcode') {
logger('mimetype: ' . $mimetype);
if(! in_array($mimetype,[ 'text/markdown','text/bbcode','text/plain','text/html' ]))
$mimetype = 'text/markdown';
$w = Zlib\NativeWiki::get_wiki($channel_id, $observer_hash, $resource_id);
@@ -52,11 +68,16 @@ class NativeWikiPage {
return array('content' => null, 'message' => 'Error reading wiki', 'success' => false);
}
// backslashes won't work well in the javascript functions
$name = str_replace('\\','',$name);
// create an empty activity
$arr = [];
$arr['uid'] = $channel_id;
$arr['author_xchan'] = $observer_hash;
$arr['mimetype'] = $mimetype;
$arr['title'] = $name;
$arr['resource_type'] = 'nwikipage';
$arr['resource_id'] = $resource_id;
$arr['allow_cid'] = $w['wiki']['allow_cid'];
@@ -122,8 +143,14 @@ class NativeWikiPage {
if($ic) {
foreach($ic as $c) {
set_iconfig($c['item_id'],'nwikipage','pagetitle',$pageNewName);
$ids[] = $c['item_id'];
}
$str_ids = implode(',', $ids);
q("update item set title = '%s' where id in ($str_ids)",
dbesc($pageNewName)
);
$page = [
'rawName' => $pageNewName,
'htmlName' => escape_tags($pageNewName),
@@ -156,10 +183,11 @@ class NativeWikiPage {
$content = $item['body'];
return [
'content' => json_encode($content),
'mimeType' => $w['mimeType'],
'message' => '',
'success' => true
'content' => $content,
'mimeType' => $w['mimeType'],
'pageMimeType' => $item['mimetype'],
'message' => '',
'success' => true
];
}
@@ -307,56 +335,32 @@ class NativeWikiPage {
return null;
}
static public function prepare_content($s) {
$text = preg_replace_callback('{
(?:\n\n|\A\n?)
( # $1 = the code block -- one or more lines, starting with a space/tab
(?>
[ ]{'.'4'.'} # Lines must start with a tab or a tab-width of spaces
.*\n+
)+
)
((?=^[ ]{0,'.'4'.'}\S)|\Z) # Lookahead for non-space at line-start, or end of doc
}xm',
'self::nwiki_prepare_content_callback', $s);
return $text;
}
static public function nwiki_prepare_content_callback($matches) {
$codeblock = $matches[1];
$codeblock = htmlspecialchars($codeblock, ENT_NOQUOTES, UTF8, false);
return "\n\n" . $codeblock ;
}
static public function save_page($arr) {
$pageUrlName = ((array_key_exists('pageUrlName',$arr)) ? $arr['pageUrlName'] : '');
$content = ((array_key_exists('content',$arr)) ? purify_html(Zlib\NativeWikiPage::prepare_content($arr['content'])) : '');
$resource_id = ((array_key_exists('resource_id',$arr)) ? $arr['resource_id'] : '');
$pageUrlName = ((array_key_exists('pageUrlName',$arr)) ? $arr['pageUrlName'] : '');
$content = ((array_key_exists('content',$arr)) ? $arr['content'] : '');
$resource_id = ((array_key_exists('resource_id',$arr)) ? $arr['resource_id'] : '');
$observer_hash = ((array_key_exists('observer_hash',$arr)) ? $arr['observer_hash'] : '');
$channel_id = ((array_key_exists('channel_id',$arr)) ? $arr['channel_id'] : 0);
$revision = ((array_key_exists('revision',$arr)) ? $arr['revision'] : 0);
$revision = ((array_key_exists('revision',$arr)) ? $arr['revision'] : 0);
$w = Zlib\NativeWiki::get_wiki($channel_id, $observer_hash, $resource_id);
if (!$w['wiki']) {
return array('message' => t('Error reading wiki'), 'success' => false);
}
// fetch the most recently saved revision.
$item = self::load_page($arr);
if(! $item) {
return array('message' => t('Page not found'), 'success' => false);
}
$mimetype = $item['mimetype'];
// change just the fields we need to change to create a revision;
unset($item['id']);
@@ -367,6 +371,7 @@ class NativeWikiPage {
$item['author_xchan'] = $observer_hash;
$item['revision'] = (($arr['revision']) ? intval($arr['revision']) + 1 : intval($item['revision']) + 1);
$item['edited'] = datetime_convert();
$item['mimetype'] = $mimetype;
if($item['iconfig'] && is_array($item['iconfig']) && count($item['iconfig'])) {
for($x = 0; $x < count($item['iconfig']); $x ++) {
@@ -534,6 +539,29 @@ class NativeWikiPage {
}
return $s;
}
static public function render_page_history($arr) {
$pageUrlName = ((array_key_exists('pageUrlName', $arr)) ? $arr['pageUrlName'] : '');
$resource_id = ((array_key_exists('resource_id', $arr)) ? $arr['resource_id'] : '');
$pageHistory = self::page_history([
'channel_id' => \App::$profile_uid,
'observer_hash' => get_observer_hash(),
'resource_id' => $resource_id,
'pageUrlName' => $pageUrlName
]);
return replace_macros(get_markup_template('nwiki_page_history.tpl'), array(
'$pageHistory' => $pageHistory['history'],
'$permsWrite' => $arr['permsWrite'],
'$name_lbl' => t('Name'),
'$msg_label' => t('Message','wiki_history')
));
}
/**
* Replace the instances of the string [toc] with a list element that will be populated by
@@ -590,10 +618,13 @@ class NativeWikiPage {
}
static public function get_file_ext($arr) {
if($arr['mimeType'] == 'text/bbcode')
if($arr['mimetype'] === 'text/bbcode')
return '.bb';
else
elseif($arr['mimetype'] === 'text/markdown')
return '.md';
elseif($arr['mimetype'] === 'text/plain')
return '.txt';
}
// This function is derived from

View File

@@ -1,8 +1,21 @@
<?php /** @file */
<?php
namespace Zotlabs\Lib;
/**
* @brief Class for handling channel specific configurations.
*
* <b>PConfig</b> is used for channel specific configurations and takes a
* <i>channel_id</i> as identifier. It stores for example which features are
* enabled per channel. The storage is of size MEDIUMTEXT.
*
* @code{.php}$var = Zotlabs\Lib\PConfig::Get('uid', 'category', 'key');
* // with default value for non existent key
* $var = Zotlabs\Lib\PConfig::Get('uid', 'category', 'unsetkey', 'defaultvalue');@endcode
*
* The old (deprecated?) way to access a PConfig value is:
* @code{.php}$var = get_pconfig(local_channel(), 'category', 'key');@endcode
*/
class PConfig {
/**
@@ -13,18 +26,18 @@ class PConfig {
*
* @param string $uid
* The channel_id
* @return void|false Nothing or false if $uid is false
* @return void|false Nothing or false if $uid is null or false
*/
static public function Load($uid) {
if(is_null($uid) || $uid === false)
return false;
if(! array_key_exists($uid, \App::$config))
\App::$config[$uid] = array();
if(! is_array(\App::$config)) {
btlogger('App::$config not an array: ' . $uid);
btlogger('App::$config not an array');
}
if(! array_key_exists($uid, \App::$config)) {
\App::$config[$uid] = array();
}
if(! is_array(\App::$config[$uid])) {
@@ -63,11 +76,11 @@ class PConfig {
* The category of the configuration value
* @param string $key
* The configuration key to query
* @param boolean $instore (deprecated, without function)
* @param mixed $default (optional, default false)
* Default value to return if key does not exist
* @return mixed Stored value or false if it does not exist
*/
static public function Get($uid,$family,$key,$default = false) {
static public function Get($uid, $family, $key, $default = false) {
if(is_null($uid) || $uid === false)
return $default;
@@ -78,11 +91,10 @@ class PConfig {
if((! array_key_exists($family, \App::$config[$uid])) || (! array_key_exists($key, \App::$config[$uid][$family])))
return $default;
return ((! is_array(\App::$config[$uid][$family][$key])) && (preg_match('|^a:[0-9]+:{.*}$|s', \App::$config[$uid][$family][$key]))
return ((! is_array(\App::$config[$uid][$family][$key])) && (preg_match('|^a:[0-9]+:{.*}$|s', \App::$config[$uid][$family][$key]))
? unserialize(\App::$config[$uid][$family][$key])
: \App::$config[$uid][$family][$key]
);
}
/**
@@ -101,12 +113,11 @@ class PConfig {
* The value to store
* @return mixed Stored $value or false
*/
static public function Set($uid, $family, $key, $value) {
// this catches subtle errors where this function has been called
// this catches subtle errors where this function has been called
// with local_channel() when not logged in (which returns false)
// and throws an error in array_key_exists below.
// and throws an error in array_key_exists below.
// we provide a function backtrace in the logs so that we can find
// and fix the calling function.
@@ -119,7 +130,7 @@ class PConfig {
$dbvalue = ((is_array($value)) ? serialize($value) : $value);
$dbvalue = ((is_bool($dbvalue)) ? intval($dbvalue) : $dbvalue);
if(get_pconfig($uid, $family, $key) === false) {
if(self::Get($uid, $family, $key) === false) {
if(! array_key_exists($uid, \App::$config))
\App::$config[$uid] = array();
if(! array_key_exists($family, \App::$config[$uid]))
@@ -131,7 +142,6 @@ class PConfig {
dbesc($key),
dbesc($dbvalue)
);
}
else {
@@ -141,7 +151,6 @@ class PConfig {
dbesc($family),
dbesc($key)
);
}
// keep a separate copy for all variables which were
@@ -177,7 +186,6 @@ class PConfig {
* The configuration key to delete
* @return mixed
*/
static public function Delete($uid, $family, $key) {
if(is_null($uid) || $uid === false)
@@ -185,12 +193,12 @@ class PConfig {
$ret = false;
if(array_key_exists($uid,\App::$config)
&& is_array(\App::$config['uid'])
&& array_key_exists($family,\App::$config['uid'])
if(array_key_exists($uid,\App::$config)
&& is_array(\App::$config['uid'])
&& array_key_exists($family,\App::$config['uid'])
&& array_key_exists($key, \App::$config[$uid][$family]))
unset(\App::$config[$uid][$family][$key]);
$ret = q("DELETE FROM pconfig WHERE uid = %d AND cat = '%s' AND k = '%s'",
intval($uid),
dbesc($family),
@@ -201,4 +209,3 @@ class PConfig {
}
}

View File

@@ -2,12 +2,36 @@
namespace Zotlabs\Lib;
use \Zotlabs\Access as Zaccess;
use Zotlabs\Access\PermissionRoles;
use Zotlabs\Access\Permissions;
/**
* @brief Permission Categories. Permission rules for various classes of connections.
*
* Connection permissions answer the question "Can Joe view my photos?"
*
* Some permissions may be inherited from the channel's "privacy settings"
* (@ref ::Zotlabs::Access::PermissionLimits "PermissionLimits") "Who can view my
* photos (at all)?" which have higher priority than individual connection settings.
* We evaluate permission limits first, and then fall through to connection
* permissions if the permission limits didn't already make a definitive decision.
*
* After PermissionLimits and connection permissions are evaluated, individual
* content ACLs are evaluated (@ref ::Zotlabs::Access::AccessList "AccessList").
* These answer the question "Can Joe view *this* album/photo?".
*/
class Permcat {
/**
* @var array
*/
private $permcats = [];
/**
* @brief Permcat constructor.
*
* @param int $channel_id
*/
public function __construct($channel_id) {
$perms = [];
@@ -16,16 +40,16 @@ class Permcat {
$role = get_pconfig($channel_id,'system','permissions_role');
if($role) {
$x = Zaccess\PermissionRoles::role_perms($role);
$x = PermissionRoles::role_perms($role);
if($x['perms_connect']) {
$perms = Zaccess\Permissions::FilledPerms($x['perms_connect']);
$perms = Permissions::FilledPerms($x['perms_connect']);
}
}
// if no role perms it may be a custom role, see if there any autoperms
if(! $perms) {
$perms = Zaccess\Permissions::FilledAutoPerms($channel_id);
$perms = Permissions::FilledAutoPerms($channel_id);
}
// if no autoperms it may be a custom role with manual perms
@@ -50,13 +74,13 @@ class Permcat {
// nothing was found - create a filled permission array where all permissions are 0
if(! $perms) {
$perms = Zaccess\Permissions::FilledPerms([]);
$perms = Permissions::FilledPerms([]);
}
$this->permcats[] = [
'name' => 'default',
'localname' => t('default','permcat'),
'perms' => Zaccess\Permissions::Operms($perms),
'perms' => Permissions::Operms($perms),
'system' => 1
];
@@ -67,26 +91,39 @@ class Permcat {
$this->permcats[] = [
'name' => $p[$x][0],
'localname' => $p[$x][1],
'perms' => Zaccess\Permissions::Operms(Zaccess\Permissions::FilledPerms($p[$x][2])),
'perms' => Permissions::Operms(Permissions::FilledPerms($p[$x][2])),
'system' => intval($p[$x][3])
];
}
}
}
/**
* @brief Return array with permcats.
*
* @return array
*/
public function listing() {
return $this->permcats;
}
/**
* @brief
*
* @param string $name
* @return array
* * \e array with permcats
* * \e bool \b error if $name not found in permcats true
*/
public function fetch($name) {
if($name && $this->permcats) {
foreach($this->permcats as $permcat) {
if(strcasecmp($permcat['name'],$name) === 0) {
if(strcasecmp($permcat['name'], $name) === 0) {
return $permcat;
}
}
}
return ['error' => true];
}
@@ -118,29 +155,32 @@ class Permcat {
$permcats[] = [ $xv['k'], $xv['k'], $value, 0 ];
}
}
}
}
call_hooks('permcats',$permcats);
/**
* @hooks permcats
* * \e array
*/
call_hooks('permcats', $permcats);
return $permcats;
}
static public function find_permcat($arr,$name) {
static public function find_permcat($arr, $name) {
if((! $arr) || (! $name))
return false;
foreach($arr as $p)
if($p['name'] == $name)
return $p['value'];
}
static public function update($channel_id, $name,$permarr) {
PConfig::Set($channel_id,'permcat',$name,$permarr);
static public function update($channel_id, $name, $permarr) {
PConfig::Set($channel_id, 'permcat', $name, $permarr);
}
static public function delete($channel_id,$name) {
PConfig::Delete($channel_id,'permcat',$name);
static public function delete($channel_id, $name) {
PConfig::Delete($channel_id, 'permcat', $name);
}
}

View File

@@ -1,19 +0,0 @@
<?php /** @file */
namespace Zotlabs\Lib;
/*
* Abstraction class for dealing with alternate networks (which of course do not exist, hence the abstraction)
*/
abstract class ProtoDriver {
abstract protected function discover($channel,$location);
abstract protected function deliver($item,$channel,$recipients);
abstract protected function collect($channel,$connection);
abstract protected function change_permissions($permissions,$channel,$recipient);
abstract protected function acknowledge_permissions($permissions,$channel,$recipient);
abstract protected function deliver_private($item,$channel,$recipients);
abstract protected function collect_private($channel,$connection);
}

28
Zotlabs/Lib/SConfig.php Normal file
View File

@@ -0,0 +1,28 @@
<?php
namespace Zotlabs\Lib;
/**
* @brief Account configuration storage is built on top of the under-utilised xconfig.
*
* @see XConfig
*/
class SConfig {
static public function Load($server_id) {
return XConfig::Load('s_' . $server_id);
}
static public function Get($server_id,$family,$key,$default = false) {
return XConfig::Get('s_' . $server_id,$family,$key, $default);
}
static public function Set($server_id,$family,$key,$value) {
return XConfig::Set('s_' . $server_id,$family,$key,$value);
}
static public function Delete($server_id,$family,$key) {
return XConfig::Delete('s_' . $server_id,$family,$key);
}
}

143
Zotlabs/Lib/Share.php Normal file
View File

@@ -0,0 +1,143 @@
<?php
namespace Zotlabs\Lib;
class Share {
private $item = null;
public function __construct($post_id) {
if(! $post_id)
return;
if(! (local_channel() || remote_channel()))
return;
$r = q("SELECT * from item left join xchan on author_xchan = xchan_hash WHERE id = %d LIMIT 1",
intval($post_id)
);
if(! $r)
return;
if(($r[0]['item_private']) && ($r[0]['xchan_network'] !== 'rss'))
return;
$sql_extra = item_permissions_sql($r[0]['uid']);
$r = q("select * from item where id = %d $sql_extra",
intval($post_id)
);
if(! $r)
return;
if($r[0]['mimetype'] !== 'text/bbcode')
return;
/** @FIXME eventually we want to post remotely via rpost on your home site */
// When that works remove this next bit:
if(! local_channel())
return;
xchan_query($r);
$this->item = $r[0];
return;
}
public function obj() {
$obj = [];
if(! $this->item)
return $obj;
$obj['type'] = $this->item['obj_type'];
$obj['id'] = $this->item['mid'];
$obj['content'] = $this->item['body'];
$obj['content_type'] = $this->item['mimetype'];
$obj['title'] = $this->item['title'];
$obj['created'] = $this->item['created'];
$obj['edited'] = $this->item['edited'];
$obj['author'] = [
'name' => $this->item['author']['xchan_name'],
'address' => $this->item['author']['xchan_addr'],
'network' => $this->item['author']['xchan_network'],
'link' => [
[
'rel' => 'alternate',
'type' => 'text/html',
'href' => $this->item['author']['xchan_url']
],
[
'rel' => 'photo',
'type' => $this->item['author']['xchan_photo_mimetype'],
'href' => $this->item['author']['xchan_photo_m']
]
]
];
$obj['owner'] = [
'name' => $this->item['owner']['xchan_name'],
'address' => $this->item['owner']['xchan_addr'],
'network' => $this->item['owner']['xchan_network'],
'link' => [
[
'rel' => 'alternate',
'type' => 'text/html',
'href' => $this->item['owner']['xchan_url']
],
[
'rel' => 'photo',
'type' => $this->item['owner']['xchan_photo_mimetype'],
'href' => $this->item['owner']['xchan_photo_m']
]
]
];
$obj['link'] = [
'rel' => 'alternate',
'type' => 'text/html',
'href' => $this->item['plink']
];
return $obj;
}
public function bbcode() {
$bb = EMPTY_STR;
if(! $this->item)
return $bb;
$is_photo = (($this->item['obj_type'] === ACTIVITY_OBJ_PHOTO) ? true : false);
if($is_photo) {
$object = json_decode($this->item['obj'],true);
$photo_bb = $object['body'];
}
if (strpos($this->item['body'], "[/share]") !== false) {
$pos = strpos($this->item['body'], "[share");
$bb = substr($this->item['body'], $pos);
} else {
$bb = "[share author='".urlencode($this->item['author']['xchan_name']).
"' profile='" . $this->item['author']['xchan_url'] .
"' avatar='" . $this->item['author']['xchan_photo_s'] .
"' link='" . $this->item['plink'] .
"' auth='" . (($this->item['author']['network'] === 'zot') ? 'true' : 'false') .
"' posted='" . $this->item['created'] .
"' message_id='" . $this->item['mid'] .
"']";
if($this->item['title'])
$bb .= '[b]'.$this->item['title'].'[/b]'."\r\n";
$bb .= (($is_photo) ? $photo_bb . "\r\n" . $this->item['body'] : $this->item['body']);
$bb .= "[/share]";
}
return $bb;
}
}

View File

@@ -19,6 +19,9 @@ class System {
static public function get_project_version() {
if(is_array(\App::$config) && is_array(\App::$config['system']) && \App::$config['system']['hide_version'])
return '';
if(is_array(\App::$config) && is_array(\App::$config['system']) && array_key_exists('std_version',\App::$config['system']))
return \App::$config['system']['std_version'];
return self::get_std_version();
}
@@ -51,15 +54,18 @@ class System {
static public function get_project_srclink() {
if(is_array(\App::$config) && is_array(\App::$config['system']) && \App::$config['system']['project_srclink'])
return \App::$config['system']['project_srclink'];
return 'https://github.com/redmatrix/hubzilla';
return 'https://framagit.org/hubzilla/core.git';
}
static public function get_server_role() {
return 'pro';
}
static public function get_server_role() {
if(is_array(\App::$config) && is_array(\App::$config['system']) && \App::$config['system']['server_role'])
return \App::$config['system']['server_role'];
return 'standard';
static public function get_zot_revision() {
$x = [ 'revision' => ZOT_REVISION ];
call_hooks('zot_revision',$x);
return $x['revision'];
}
static public function get_std_version() {
@@ -72,11 +78,8 @@ class System {
if(get_directory_realm() != DIRECTORY_REALM)
return true;
foreach(['hubzilla','zap'] as $t) {
if(stristr($p,$t))
return true;
}
if(in_array(strtolower($p),['hubzilla','zap','red']))
return true;
return false;
}
}

View File

@@ -7,12 +7,12 @@ class Techlevels {
static public function levels() {
$techlevels = [
'0' => t('Beginner/Basic'),
'1' => t('Novice - not skilled but willing to learn'),
'2' => t('Intermediate - somewhat comfortable'),
'3' => t('Advanced - very comfortable'),
'4' => t('Expert - I can write computer code'),
'5' => t('Wizard - I probably know more than you do')
'0' => t('0. Beginner/Basic'),
'1' => t('1. Novice - not skilled but willing to learn'),
'2' => t('2. Intermediate - somewhat comfortable'),
'3' => t('3. Advanced - very comfortable'),
'4' => t('4. Expert - I can write computer code'),
'5' => t('5. Wizard - I probably know more than you do')
];
return $techlevels;
}

View File

@@ -29,6 +29,7 @@ class ThreadItem {
private $visiting = false;
private $channel = null;
private $display_mode = 'normal';
private $reload = '';
public function __construct($data) {
@@ -37,7 +38,7 @@ class ThreadItem {
$this->toplevel = ($this->get_id() == $this->get_data_value('parent'));
// Prepare the children
if(count($data['children'])) {
if($data['children']) {
foreach($data['children'] as $item) {
/*
@@ -82,7 +83,8 @@ class ThreadItem {
$dropping = false;
$star = false;
$isstarred = "unstarred fa-star-o";
$indent = '';
$is_comment = false;
$is_item = false;
$osparkle = '';
$total_children = $this->count_descendants();
$unseen_comments = (($item['real_uid']) ? 0 : $this->count_unseen_descendants());
@@ -100,10 +102,30 @@ class ThreadItem {
if($item['author']['xchan_network'] === 'rss')
$shareable = true;
$privacy_warning = false;
if(($item['item_private'] == 1) && ($item['owner']['xchan_network'] === 'activitypub')) {
$recips = get_iconfig($item['parent'], 'activitypub', 'recips');
if(! in_array($observer['xchan_url'], $recips['to']))
$privacy_warning = true;
}
$mode = $conv->get_mode();
switch($item['item_type']) {
case ITEM_TYPE_CARD:
$edlink = 'card_edit';
break;
case ITEM_TYPE_ARTICLE:
$edlink = 'article_edit';
break;
default:
$edlink = 'editpost';
break;
}
if(local_channel() && $observer['xchan_hash'] === $item['author_xchan'])
$edpost = array(z_root()."/editpost/".$item['id'], t("Edit"));
$edpost = array(z_root() . '/' . $edlink . '/' . $item['id'], t('Edit'));
else
$edpost = false;
@@ -126,6 +148,10 @@ class ThreadItem {
'delete' => t('Delete'),
);
}
elseif(is_site_admin()) {
$drop = [ 'dropping' => true, 'delete' => t('Admin Delete') ];
}
// FIXME
if($observer_is_pageowner) {
$multidrop = array(
@@ -152,7 +178,7 @@ class ThreadItem {
$response_verbs[] = 'attendyes';
$response_verbs[] = 'attendno';
$response_verbs[] = 'attendmaybe';
if($this->is_commentable()) {
if($this->is_commentable() && $observer) {
$isevent = true;
$attend = array( t('I will attend'), t('I will not attend'), t('I might attend'));
}
@@ -163,7 +189,7 @@ class ThreadItem {
$response_verbs[] = 'agree';
$response_verbs[] = 'disagree';
$response_verbs[] = 'abstain';
if($this->is_commentable()) {
if($this->is_commentable() && $observer) {
$conlabels = array( t('I agree'), t('I disagree'), t('I abstain'));
$canvote = true;
}
@@ -181,9 +207,9 @@ class ThreadItem {
$like_count = ((x($conv_responses['like'],$item['mid'])) ? $conv_responses['like'][$item['mid']] : '');
$like_list = ((x($conv_responses['like'],$item['mid'])) ? $conv_responses['like'][$item['mid'] . '-l'] : '');
if (count($like_list) > MAX_LIKERS) {
if (($like_list) && (count($like_list) > MAX_LIKERS)) {
$like_list_part = array_slice($like_list, 0, MAX_LIKERS);
array_push($like_list_part, '<a href="#" data-toggle="modal" data-target="#likeModal-' . $this->get_id() . '"><b>' . t('View all') . '</b></a>');
array_push($like_list_part, '<a class="dropdown-item" href="#" data-toggle="modal" data-target="#likeModal-' . $this->get_id() . '"><b>' . t('View all') . '</b></a>');
} else {
$like_list_part = '';
}
@@ -193,9 +219,9 @@ class ThreadItem {
$dislike_count = ((x($conv_responses['dislike'],$item['mid'])) ? $conv_responses['dislike'][$item['mid']] : '');
$dislike_list = ((x($conv_responses['dislike'],$item['mid'])) ? $conv_responses['dislike'][$item['mid'] . '-l'] : '');
$dislike_button_label = tt('Dislike','Dislikes',$dislike_count,'noun');
if (count($dislike_list) > MAX_LIKERS) {
if (($dislike_list) && (count($dislike_list) > MAX_LIKERS)) {
$dislike_list_part = array_slice($dislike_list, 0, MAX_LIKERS);
array_push($dislike_list_part, '<a href="#" data-toggle="modal" data-target="#dislikeModal-' . $this->get_id() . '"><b>' . t('View all') . '</b></a>');
array_push($dislike_list_part, '<a class="dropdown-item" href="#" data-toggle="modal" data-target="#dislikeModal-' . $this->get_id() . '"><b>' . t('View all') . '</b></a>');
} else {
$dislike_list_part = '';
}
@@ -217,22 +243,15 @@ class ThreadItem {
// FIXME check this permission
if(($conv->get_profile_owner() == local_channel()) && (! array_key_exists('real_uid',$item))) {
// FIXME we don't need all this stuff, some can be done in the template
$star = array(
'do' => t("Add Star"),
'undo' => t("Remove Star"),
'toggle' => t("Toggle Star Status"),
'classdo' => (intval($item['item_starred']) ? "hidden" : ""),
'classundo' => (intval($item['item_starred']) ? "" : "hidden"),
'isstarred' => (intval($item['item_starred']) ? "starred fa-star" : "unstarred fa-star-o"),
'starred' => t('starred'),
'isstarred' => ((intval($item['item_starred'])) ? true : false),
);
}
}
else {
$indent = 'comment';
$is_comment = true;
}
@@ -250,8 +269,6 @@ class ThreadItem {
);
}
$server_role = get_config('system','server_role');
$has_bookmarks = false;
if(is_array($item['term'])) {
foreach($item['term'] as $t) {
@@ -264,7 +281,7 @@ class ThreadItem {
if(($item['obj_type'] === ACTIVITY_OBJ_EVENT) && $conv->get_profile_owner() == local_channel())
$has_event = true;
if($this->is_commentable()) {
if($this->is_commentable() && $observer) {
$like = array( t("I like this \x28toggle\x29"), t("like"));
$dislike = array( t("I don't like this \x28toggle\x29"), t("dislike"));
}
@@ -276,13 +293,13 @@ class ThreadItem {
$keep_reports = intval(get_config('system','expire_delivery_reports'));
if($keep_reports === 0)
$keep_reports = 30;
$keep_reports = 10;
if((! get_config('system','disable_dreport')) && strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC',"now - $keep_reports days")) > 0)
$dreport = t('Delivery Report');
if(strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC','now - 12 hours')) > 0)
$indent .= ' shiny';
$is_new = true;
localize_item($item);
@@ -300,7 +317,7 @@ class ThreadItem {
$comment_count_txt = sprintf( tt('%d comment','%d comments',$total_children),$total_children );
$list_unseen_txt = (($unseen_comments) ? sprintf('%d unseen',$unseen_comments) : '');
@@ -310,7 +327,8 @@ class ThreadItem {
$tmp_item = array(
'template' => $this->get_template(),
'mode' => $mode,
'mode' => $mode,
'item_type' => intval($item['item_type']),
'type' => implode("",array_slice(explode("/",$item['verb']),-1)),
'body' => $body['html'],
'tags' => $body['tags'],
@@ -337,7 +355,6 @@ class ThreadItem {
'profile_url' => $profile_link,
'thread_action_menu' => thread_action_menu($item,$conv->get_mode()),
'thread_author_menu' => thread_author_menu($item,$conv->get_mode()),
'item_photo_menu' => item_photo_menu($item),
'dreport' => $dreport,
'name' => $profile_name,
'thumb' => $profile_avatar,
@@ -353,15 +370,18 @@ class ThreadItem {
'editedtime' => (($item['edited'] != $item['created']) ? sprintf( t('last edited: %s'), datetime_convert('UTC', date_default_timezone_get(), $item['edited'], 'r')) : ''),
'expiretime' => (($item['expires'] > NULL_DATE) ? sprintf( t('Expires: %s'), datetime_convert('UTC', date_default_timezone_get(), $item['expires'], 'r')):''),
'lock' => $lock,
'privacy_warning' => $privacy_warning,
'verified' => $verified,
'unverified' => $unverified,
'forged' => $forged,
'location' => $location,
'divider' => get_pconfig($conv->get_profile_owner(),'system','item_divider'),
'attend_label' => t('Attend'),
'attend_title' => t('Attendance Options'),
'vote_label' => t('Vote'),
'vote_title' => t('Voting Options'),
'indent' => $indent,
'is_comment' => $is_comment,
'is_new' => $is_new,
'owner_url' => $this->get_owner_url(),
'owner_photo' => $this->get_owner_photo(),
'owner_name' => $this->get_owner_name(),
@@ -370,7 +390,7 @@ class ThreadItem {
'has_tags' => $has_tags,
'reactions' => $this->reactions,
// Item toolbar buttons
'emojis' => (($this->is_toplevel() && $this->is_commentable() && feature_enabled($conv->get_profile_owner(),'emojis')) ? '1' : ''),
'emojis' => (($this->is_toplevel() && $this->is_commentable() && $observer && feature_enabled($conv->get_profile_owner(),'emojis')) ? '1' : ''),
'like' => $like,
'dislike' => ((feature_enabled($conv->get_profile_owner(),'dislike')) ? $dislike : ''),
'share' => $share,
@@ -407,9 +427,10 @@ class ThreadItem {
'showlike' => $showlike,
'showdislike' => $showdislike,
'comment' => $this->get_comment_box($indent),
'previewing' => ($conv->is_preview() ? ' preview ' : ''),
'previewing' => ($conv->is_preview() ? true : false ),
'preview_lbl' => t('This is an unsaved preview'),
'wait' => t('Please wait'),
'submid' => str_replace(['+','='], ['',''], base64_encode(substr($item['mid'],0,32))),
'submid' => str_replace(['+','='], ['',''], base64_encode($item['mid'])),
'thread_level' => $thread_level
);
@@ -480,6 +501,14 @@ class ThreadItem {
return $this->threaded;
}
public function set_reload($val) {
$this->reload = $val;
}
public function get_reload() {
return $this->reload;
}
public function set_commentable($val) {
$this->commentable = $val;
foreach($this->get_children() as $child)
@@ -706,22 +735,19 @@ class ThreadItem {
$observer = $conv->get_observer();
$qc = ((local_channel()) ? get_pconfig(local_channel(),'system','qcomment') : null);
$qcomment = (($qc) ? explode("\n",$qc) : null);
$arr = array('comment_buttons' => '','id' => $this->get_id());
call_hooks('comment_buttons',$arr);
$comment_buttons = $arr['comment_buttons'];
$feature_auto_save_draft = ((feature_enabled($conv->get_profile_owner(), 'auto_save_draft')) ? "true" : "false");
$comment_box = replace_macros($template,array(
'$return_path' => '',
'$threaded' => $this->is_threaded(),
'$jsreload' => '', //(($conv->get_mode() === 'display') ? $_SESSION['return_url'] : ''),
'$jsreload' => $conv->reload,
'$type' => (($conv->get_mode() === 'channel') ? 'wall-comment' : 'net-comment'),
'$id' => $this->get_id(),
'$parent' => $this->get_id(),
'$qcomment' => $qcomment,
'$comment_buttons' => $comment_buttons,
'$profile_uid' => $conv->get_profile_owner(),
'$mylink' => $observer['xchan_url'],
@@ -735,15 +761,22 @@ class ThreadItem {
'$edquote' => t('Quote'),
'$edcode' => t('Code'),
'$edimg' => t('Image'),
'$edatt' => t('Attach/Upload file'),
'$edurl' => t('Insert Link'),
'$edvideo' => t('Video'),
'$preview' => t('Preview'), // ((feature_enabled($conv->get_profile_owner(),'preview')) ? t('Preview') : ''),
'$indent' => $indent,
'$can_upload' => (perm_is_allowed($conv->get_profile_owner(),get_observer_hash(),'write_storage') && $conv->is_uploadable()),
'$feature_encrypt' => ((feature_enabled($conv->get_profile_owner(),'content_encrypt')) ? true : false),
'$encrypt' => t('Encrypt text'),
'$cipher' => $conv->get_cipher(),
'$sourceapp' => \App::$sourcename
'$sourceapp' => \App::$sourcename,
'$observer' => get_observer_hash(),
'$anoncomments' => ((($conv->get_mode() === 'channel' || $conv->get_mode() === 'display') && perm_is_allowed($conv->get_profile_owner(),'','post_comments')) ? true : false),
'$anonname' => [ 'anonname', t('Your full name (required)') ],
'$anonmail' => [ 'anonmail', t('Your email address (required)') ],
'$anonurl' => [ 'anonurl', t('Your website URL (optional)') ],
'$auto_save_draft' => $feature_auto_save_draft,
));
return $comment_box;

View File

@@ -18,18 +18,21 @@ class ThreadStream {
private $observer = null;
private $writable = false;
private $commentable = false;
private $uploadable = false;
private $profile_owner = 0;
private $preview = false;
private $prepared_item = '';
public $reload = '';
private $cipher = 'aes256';
// $prepared_item is for use by alternate conversation structures such as photos
// wherein we've already prepared a top level item which doesn't look anything like
// a normal "post" item
public function __construct($mode, $preview, $prepared_item = '') {
public function __construct($mode, $preview, $uploadable, $prepared_item = '') {
$this->set_mode($mode);
$this->preview = $preview;
$this->uploadable = $uploadable;
$this->prepared_item = $prepared_item;
$c = ((local_channel()) ? get_pconfig(local_channel(),'system','default_cipher') : '');
if($c)
@@ -51,15 +54,34 @@ class ThreadStream {
$this->profile_owner = local_channel();
$this->writable = true;
break;
case 'pubstream':
$this->profile_owner = local_channel();
$this->writable = ((local_channel()) ? true : false);
break;
case 'hq':
$this->profile_owner = local_channel();
$this->writable = true;
break;
case 'channel':
$this->profile_owner = \App::$profile['profile_uid'];
$this->writable = perm_is_allowed($this->profile_owner,$ob_hash,'post_comments');
break;
case 'cards':
$this->profile_owner = \App::$profile['profile_uid'];
$this->writable = perm_is_allowed($this->profile_owner,$ob_hash,'post_comments');
$this->reload = $_SESSION['return_url'];
break;
case 'articles':
$this->profile_owner = \App::$profile['profile_uid'];
$this->writable = perm_is_allowed($this->profile_owner,$ob_hash,'post_comments');
$this->reload = $_SESSION['return_url'];
break;
case 'display':
// in this mode we set profile_owner after initialisation (from conversation()) and then
// pull some trickery which allows us to re-invoke this function afterward
// it's an ugly hack so @FIXME
$this->writable = perm_is_allowed($this->profile_owner,$ob_hash,'post_comments');
$this->uploadable = perm_is_allowed($this->profile_owner,$ob_hash,'write_storage');
break;
case 'page':
$this->profile_owner = \App::$profile['uid'];
@@ -91,6 +113,11 @@ class ThreadStream {
return $this->commentable;
}
public function is_uploadable() {
return $this->uploadable;
}
/**
* Check if page is a preview
*/
@@ -158,13 +185,17 @@ class ThreadStream {
if(intval($item->get_data_value('item_nocomment'))) {
$item->set_commentable(false);
}
elseif(($this->observer) && (! $item->is_commentable())) {
elseif(! $item->is_commentable()) {
if((array_key_exists('owner',$item->data)) && intval($item->data['owner']['abook_self']))
$item->set_commentable(perm_is_allowed($this->profile_owner,$ob_hash,'post_comments'));
else
$item->set_commentable(can_comment_on_post($ob_hash,$item->data));
}
}
if($this->mode === 'pubstream' && (! local_channel())) {
$item->set_commentable(false);
}
require_once('include/channel.php');
$item->set_conversation($this);

63
Zotlabs/Lib/Verify.php Normal file
View File

@@ -0,0 +1,63 @@
<?php
namespace Zotlabs\Lib;
class Verify {
function create($type,$channel_id,$token,$meta) {
return q("insert into verify ( vtype, channel, token, meta, created ) values ( '%s', %d, '%s', '%s', '%s' )",
dbesc($type),
intval($channel_id),
dbesc($token),
dbesc($meta),
dbesc(datetime_convert())
);
}
function match($type,$channel_id,$token,$meta) {
$r = q("select id from verify where vtype = '%s' and channel = %d and token = '%s' and meta = '%s' limit 1",
dbesc($type),
intval($channel_id),
dbesc($token),
dbesc($meta)
);
if($r) {
q("delete from verify where id = %d",
intval($r[0]['id'])
);
return true;
}
return false;
}
function get_meta($type,$channel_id,$token) {
$r = q("select id, meta from verify where vtype = '%s' and channel = %d and token = '%s' limit 1",
dbesc($type),
intval($channel_id),
dbesc($token)
);
if($r) {
q("delete from verify where id = %d",
intval($r[0]['id'])
);
return $r[0]['meta'];
}
return false;
}
/**
* @brief Purge entries of a verify-type older than interval.
*
* @param string $type Verify type
* @param string $interval SQL compatible time interval
*/
function purge($type, $interval) {
q("delete from verify where vtype = '%s' and created < %s - INTERVAL %s",
dbesc($type),
db_utcnow(),
db_quoteinterval($interval)
);
}
}

View File

@@ -2,7 +2,26 @@
namespace Zotlabs\Lib;
/**
* @brief Class for handling observer's config.
*
* <b>XConfig</b> is comparable to <i>PConfig</i>, except that it uses <i>xchan</i>
* (an observer hash) as an identifier.
*
* <b>XConfig</b> is used for observer specific configurations and takes a
* <i>xchan</i> as identifier.
* The storage is of size MEDIUMTEXT.
*
* @code{.php}$var = Zotlabs\Lib\XConfig::Get('xchan', 'category', 'key');
* // with default value for non existent key
* $var = Zotlabs\Lib\XConfig::Get('xchan', 'category', 'unsetkey', 'defaultvalue');@endcode
*
* The old (deprecated?) way to access a XConfig value is:
* @code{.php}$observer = App::get_observer_hash();
* if ($observer) {
* $var = get_xconfig($observer, 'category', 'key');
* }@endcode
*/
class XConfig {
/**
@@ -15,7 +34,6 @@ class XConfig {
* The observer's hash
* @return void|false Returns false if xchan is not set
*/
static public function Load($xchan) {
if(! $xchan)
@@ -56,9 +74,9 @@ class XConfig {
* The category of the configuration value
* @param string $key
* The configuration key to query
* @param boolean $default (optional) default false
* @return mixed Stored $value or false if it does not exist
*/
static public function Get($xchan, $family, $key, $default = false) {
if(! $xchan)
@@ -70,7 +88,7 @@ class XConfig {
if((! array_key_exists($family, \App::$config[$xchan])) || (! array_key_exists($key, \App::$config[$xchan][$family])))
return $default;
return ((! is_array(\App::$config[$xchan][$family][$key])) && (preg_match('|^a:[0-9]+:{.*}$|s', \App::$config[$xchan][$family][$key]))
return ((! is_array(\App::$config[$xchan][$family][$key])) && (preg_match('|^a:[0-9]+:{.*}$|s', \App::$config[$xchan][$family][$key]))
? unserialize(\App::$config[$xchan][$family][$key])
: \App::$config[$xchan][$family][$key]
);
@@ -82,7 +100,6 @@ class XConfig {
* Stores a config value ($value) in the category ($family) under the key ($key)
* for the observer's $xchan hash.
*
*
* @param string $xchan
* The observer's hash
* @param string $family
@@ -93,7 +110,6 @@ class XConfig {
* The value to store
* @return mixed Stored $value or false
*/
static public function Set($xchan, $family, $key, $value) {
// manage array value
@@ -106,7 +122,7 @@ class XConfig {
if(! array_key_exists($family, \App::$config[$xchan]))
\App::$config[$xchan][$family] = array();
$ret = q("INSERT INTO xconfig ( xchan, cat, k, v ) VALUES ( '%s', '%s', '%s', '%s' ) ",
$ret = q("INSERT INTO xconfig ( xchan, cat, k, v ) VALUES ( '%s', '%s', '%s', '%s' )",
dbesc($xchan),
dbesc($family),
dbesc($key),
@@ -126,6 +142,7 @@ class XConfig {
if($ret)
return $value;
return $ret;
}
@@ -143,11 +160,11 @@ class XConfig {
* The configuration key to delete
* @return mixed
*/
static public function Delete($xchan, $family, $key) {
if(x(\App::$config[$xchan][$family], $key))
unset(\App::$config[$xchan][$family][$key]);
$ret = q("DELETE FROM xconfig WHERE xchan = '%s' AND cat = '%s' AND k = '%s'",
dbesc($xchan),
dbesc($family),

View File

@@ -1,30 +0,0 @@
<?php /** @file */
namespace Zotlabs\Lib;
class ZotDriver extends ProtoDriver {
protected function discover($channel,$location) {
}
protected function deliver($item,$channel,$recipients) {
}
protected function collect($channel,$connection) {
}
protected function change_permissions($permissions,$channel,$recipient) {
}
protected function acknowledge_permissions($permissions,$channel,$recipient) {
}
protected function deliver_private($item,$channel,$recipients) {
}
protected function collect_private($channel,$connection) {
}
}

View File

@@ -1,38 +1,42 @@
<?php
namespace Zotlabs\Module;
/*
* ACL selector json backend
require_once 'include/acl_selectors.php';
require_once 'include/group.php';
/**
* @brief ACL selector json backend.
*
* This module provides JSON lists of connections and local/remote channels
* (xchans) to populate various tools such as the ACL (AccessControlList) popup
* and various auto-complete functions (such as email recipients, search, and
* and various auto-complete functions (such as email recipients, search, and
* mention targets.
*
* There are two primary output structural formats. One for the ACL widget and
* the other for auto-completion.
* Many of the behaviour variations are triggered on the use of single character keys
* however this functionality has grown in an ad-hoc manner and has gotten quite messy over time.
*
* Many of the behaviour variations are triggered on the use of single character
* keys however this functionality has grown in an ad-hoc manner and has gotten
* quite messy over time.
*/
require_once("include/acl_selectors.php");
require_once("include/group.php");
class Acl extends \Zotlabs\Web\Controller {
function init() {
// logger('mod_acl: ' . print_r($_REQUEST,true));
// logger('mod_acl: ' . print_r($_GET,true),LOGGER_DATA);
$start = (x($_REQUEST,'start') ? $_REQUEST['start'] : 0);
$count = (x($_REQUEST,'count') ? $_REQUEST['count'] : 500);
$search = (x($_REQUEST,'search') ? $_REQUEST['search'] : '');
$type = (x($_REQUEST,'type') ? $_REQUEST['type'] : '');
$noforums = (x($_REQUEST,'n') ? $_REQUEST['n'] : false);
$noforums = (x($_REQUEST,'n') ? $_REQUEST['n'] : false);
// $type =
// $type =
// '' => standard ACL request
// 'g' => Groups only ACL request
// 'f' => forums only ACL request
// 'c' => Connections only ACL request or editor (textarea) mention request
// $_REQUEST['search'] contains ACL search text.
@@ -56,12 +60,12 @@ class Acl extends \Zotlabs\Web\Controller {
$search = $_REQUEST['query'];
}
if( (! local_channel()) && (! ($type == 'x' || $type == 'c')))
if( (! local_channel()) && (! in_array($type, [ 'x', 'c', 'f' ])))
killme();
$permitted = [];
if(in_array($type, [ 'm', 'a', 'c' ])) {
if(in_array($type, [ 'm', 'a', 'c', 'f' ])) {
// These queries require permission checking. We'll create a simple array of xchan_hash for those with
// the requisite permissions which we can check against.
@@ -78,7 +82,7 @@ class Acl extends \Zotlabs\Web\Controller {
if($search) {
$sql_extra = " AND groups.gname LIKE " . protect_sprintf( "'%" . dbesc($search) . "%'" ) . " ";
$sql_extra2 = "AND ( xchan_name LIKE " . protect_sprintf( "'%" . dbesc($search) . "%'" ) . " OR xchan_addr LIKE " . protect_sprintf( "'%" . dbesc($search) . ((strpos($search,'@') === false) ? "%@%'" : "%'")) . ") ";
$sql_extra2 = "AND ( xchan_name LIKE " . protect_sprintf( "'%" . dbesc($search) . "%'" ) . " OR xchan_addr LIKE " . protect_sprintf( "'%" . dbesc(punify($search)) . ((strpos($search,'@') === false) ? "%@%'" : "%'")) . ") ";
// This horrible mess is needed because position also returns 0 if nothing is found.
// Would be MUCH easier if it instead returned a very large value
@@ -88,10 +92,9 @@ class Acl extends \Zotlabs\Web\Controller {
$order_extra2 = "CASE WHEN xchan_name LIKE "
. protect_sprintf( "'%" . dbesc($search) . "%'" )
. " then POSITION('" . protect_sprintf(dbesc($search))
. "' IN xchan_name) else position('" . protect_sprintf(dbesc($search)) . "' IN xchan_addr) end, ";
. "' IN xchan_name) else position('" . protect_sprintf(dbesc(punify($search))) . "' IN xchan_addr) end, ";
$col = ((strpos($search,'@') !== false) ? 'xchan_addr' : 'xchan_name' );
$sql_extra3 = "AND $col like " . protect_sprintf( "'%" . dbesc($search) . "%'" ) . " ";
$sql_extra3 = "AND ( xchan_addr like " . protect_sprintf( "'%" . dbesc(punify($search)) . "%'" ) . " OR xchan_name like " . protect_sprintf( "'%" . dbesc($search) . "%'" ) . " ) ";
}
else {
@@ -154,7 +157,7 @@ class Acl extends \Zotlabs\Web\Controller {
}
}
if($type == '' || $type == 'c') {
if($type == '' || $type == 'c' || $type === 'f') {
$extra_channels_sql = '';
@@ -175,11 +178,18 @@ class Acl extends \Zotlabs\Web\Controller {
$extra_channels_sql = " OR (abook_channel IN ($extra_channels_sql)) and abook_hidden = 0 ";
// Add atokens belonging to the local channel @TODO restrict by search
// Add atokens belonging to the local channel
if($search) {
$sql_extra_atoken = "AND ( atoken_name LIKE " . protect_sprintf( "'%" . dbesc($search) . "%'" ) . ") ";
}
else {
$sql_extra_atoken = '';
}
$r2 = null;
$r1 = q("select * from atoken where atoken_uid = %d",
$r1 = q("select * from atoken where atoken_uid = %d $sql_extra_atoken",
intval(local_channel())
);
@@ -257,15 +267,15 @@ class Acl extends \Zotlabs\Web\Controller {
});
}
}
if(intval(get_config('system','taganyone')) || intval(get_pconfig(local_channel(),'system','taganyone'))) {
if((count($r) < 100) && $type == 'c') {
$r2 = q("SELECT substr(xchan_hash,1,18) as id, xchan_hash as hash, xchan_name as name, xchan_photo_s as micro, xchan_url as url, xchan_addr as nick, 0 as abook_their_perms, 0 as abook_flags, 0 as abook_self
FROM xchan
WHERE xchan_deleted = 0 $sql_extra2 order by $order_extra2 xchan_name asc"
);
if($r2)
$r = array_merge($r,$r2);
}
if((count($r) < 100) && $type == 'c') {
$r2 = q("SELECT substr(xchan_hash,1,18) as id, xchan_hash as hash, xchan_name as name, xchan_photo_s as micro, xchan_url as url, xchan_addr as nick, 0 as abook_their_perms, 0 as abook_flags, 0 as abook_self
FROM xchan
WHERE xchan_deleted = 0 and not xchan_network in ('rss','anon','unknown') $sql_extra2 order by $order_extra2 xchan_name asc"
);
if($r2) {
$r = array_merge($r,$r2);
$r = unique_multidim_array($r,'hash');
}
}
}
elseif($type == 'm') {
@@ -307,7 +317,7 @@ class Acl extends \Zotlabs\Web\Controller {
$contacts[] = array(
"photo" => $g['photo'],
"name" => $g['name'],
"nick" => $g['address'],
"nick" => $g['address']
);
}
}
@@ -324,38 +334,45 @@ class Acl extends \Zotlabs\Web\Controller {
$r = array();
if($r) {
foreach($r as $g){
foreach($r as $g) {
// remove RSS feeds from ACLs - they are inaccessible
if(strpos($g['hash'],'/') && $type != 'a')
if(in_array($g['network'],['rss','anon','unknown']) && ($type != 'a'))
continue;
if(in_array($g['hash'],$permitted) && $type == 'c' && (! $noforums)) {
$g['hash'] = urlencode($g['hash']);
if(! $g['nick']) {
$g['nick'] = $g['url'];
}
if(in_array($g['hash'],$permitted) && $type === 'f' && (! $noforums)) {
$contacts[] = array(
"type" => "c",
"photo" => "images/twopeople.png",
"name" => $g['name'] . '+',
"id" => $g['id'] . '+',
"name" => $g['name'],
"id" => urlencode($g['id']),
"xid" => $g['hash'],
"link" => $g['nick'],
"link" => (($g['nick']) ? $g['nick'] : $g['url']),
"nick" => substr($g['nick'],0,strpos($g['nick'],'@')),
"self" => (intval($g['abook_self']) ? 'abook-self' : ''),
"taggable" => 'taggable',
"label" => t('network')
);
}
$contacts[] = array(
"type" => "c",
"photo" => $g['micro'],
"name" => $g['name'],
"id" => $g['id'],
"xid" => $g['hash'],
"link" => $g['nick'],
"nick" => (($g['nick']) ? substr($g['nick'],0,strpos($g['nick'],'@')) : t('RSS')),
"self" => (intval($g['abook_self']) ? 'abook-self' : ''),
"taggable" => '',
"label" => '',
);
if($type !== 'f') {
$contacts[] = array(
"type" => "c",
"photo" => $g['micro'],
"name" => $g['name'],
"id" => urlencode($g['id']),
"xid" => $g['hash'],
"link" => (($g['nick']) ? $g['nick'] : $g['url']),
"nick" => ((strpos($g['nick'],'@')) ? substr($g['nick'],0,strpos($g['nick'],'@')) : $g['nick']),
"self" => (intval($g['abook_self']) ? 'abook-self' : ''),
"taggable" => '',
"label" => '',
);
}
}
}
@@ -366,15 +383,13 @@ class Acl extends \Zotlabs\Web\Controller {
'count' => $count,
'items' => $items,
);
echo json_encode($o);
killme();
}
function navbar_complete(&$a) {
// logger('navbar_complete');
@@ -412,11 +427,13 @@ class Acl extends \Zotlabs\Web\Controller {
$directory = find_upstream_directory($dirmode);
$url = $directory['url'] . '/dirsearch';
}
$token = get_config('system','realm_token');
$count = (x($_REQUEST,'count') ? $_REQUEST['count'] : 100);
if($url) {
$query = $url . '?f=' ;
$query .= '&name=' . urlencode($search) . "&limit=$count" . (($address) ? '&address=' . urlencode($search) : '');
$query = $url . '?f=' . (($token) ? '&t=' . urlencode($token) : '');
$query .= '&name=' . urlencode($search) . "&limit=$count" . (($address) ? '&address=' . urlencode(punify($search)) : '');
$x = z_fetch_url($query);
if($x['success']) {
@@ -429,5 +446,5 @@ class Acl extends \Zotlabs\Web\Controller {
}
return array();
}
}

View File

@@ -52,6 +52,8 @@ class Admin extends \Zotlabs\Web\Controller {
* Page content
*/
nav_set_selected('Admin');
$o = '';
if(argc() > 1) {
@@ -91,23 +93,27 @@ class Admin extends \Zotlabs\Web\Controller {
intval(ACCOUNT_BLOCKED)
);
if ($r) {
$accounts['total'] = array('label' => t('# Accounts'), 'val' => $r[0]['total']);
$accounts['blocked'] = array('label' => t('# blocked accounts'), 'val' => $r[0]['blocked']);
$accounts['expired'] = array('label' => t('# expired accounts'), 'val' => $r[0]['expired']);
$accounts['expiring'] = array('label' => t('# expiring accounts'), 'val' => $r[0]['expiring']);
$accounts['total'] = array('label' => t('Accounts'), 'val' => $r[0]['total']);
$accounts['blocked'] = array('label' => t('Blocked accounts'), 'val' => $r[0]['blocked']);
$accounts['expired'] = array('label' => t('Expired accounts'), 'val' => $r[0]['expired']);
$accounts['expiring'] = array('label' => t('Expiring accounts'), 'val' => $r[0]['expiring']);
}
// pending registrations
$r = q("SELECT COUNT(id) AS rtotal FROM register WHERE uid != '0'");
$pending = $r[0]['rtotal'];
$pdg = q("SELECT account.*, register.hash from account left join register on account_id = register.uid where (account_flags & %d ) > 0 ",
intval(ACCOUNT_PENDING)
);
$pending = (($pdg) ? count($pdg) : 0);
// available channels, primary and clones
$channels = array();
$r = q("SELECT COUNT(*) AS total, COUNT(CASE WHEN channel_primary = 1 THEN 1 ELSE NULL END) AS main, COUNT(CASE WHEN channel_primary = 0 THEN 1 ELSE NULL END) AS clones FROM channel WHERE channel_removed = 0");
if ($r) {
$channels['total'] = array('label' => t('# Channels'), 'val' => $r[0]['total']);
$channels['main'] = array('label' => t('# primary'), 'val' => $r[0]['main']);
$channels['clones'] = array('label' => t('# clones'), 'val' => $r[0]['clones']);
$channels['total'] = array('label' => t('Channels'), 'val' => $r[0]['total']);
$channels['main'] = array('label' => t('Primary'), 'val' => $r[0]['main']);
$channels['clones'] = array('label' => t('Clones'), 'val' => $r[0]['clones']);
}
// We can do better, but this is a quick queue status
@@ -118,14 +124,11 @@ class Admin extends \Zotlabs\Web\Controller {
// If no plugins active return 0, otherwise list of plugin names
$plugins = (count(\App::$plugins) == 0) ? count(\App::$plugins) : \App::$plugins;
if(is_array($plugins))
sort($plugins);
// Could be extended to provide also other alerts to the admin
$alertmsg = '';
// annoy admin about upcoming unsupported PHP version
if (version_compare(PHP_VERSION, '5.4', '<')) {
$alertmsg = 'Your PHP version ' . PHP_VERSION . ' will not be supported with the next major release of $Projectname. You are strongly urged to upgrade to a current version.'
. '<br>PHP 5.3 has reached its <a href="http://php.net/eol.php" class="alert-link">End of Life (EOL)</a> in August 2014.'
. ' A list about current PHP versions can be found <a href="http://php.net/supported-versions.php" class="alert-link">here</a>.';
}
$vmaster = get_repository_version('master');
$vdev = get_repository_version('dev');
@@ -141,7 +144,7 @@ class Admin extends \Zotlabs\Web\Controller {
'$accounts' => array( t('Registered accounts'), $accounts),
'$pending' => array( t('Pending registrations'), $pending),
'$channels' => array( t('Registered channels'), $channels),
'$plugins' => array( t('Active plugins'), $plugins ),
'$plugins' => array( t('Active addons'), $plugins ),
'$version' => array( t('Version'), STD_VERSION),
'$vmaster' => array( t('Repository version (master)'), $vmaster),
'$vdev' => array( t('Repository version (dev)'), $vdev),

View File

@@ -16,6 +16,7 @@ class Accounts {
*/
function post() {
$pending = ( x($_POST, 'pending') ? $_POST['pending'] : array() );
$users = ( x($_POST, 'user') ? $_POST['user'] : array() );
$blocked = ( x($_POST, 'blocked') ? $_POST['blocked'] : array() );
@@ -24,7 +25,7 @@ class Accounts {
// change to switch structure?
// account block/unblock button was submitted
if (x($_POST, 'page_users_block')) {
if (x($_POST, 'page_accounts_block')) {
for ($i = 0; $i < count($users); $i++) {
// if account is blocked remove blocked bit-flag, otherwise add blocked bit-flag
$op = ($blocked[$i]) ? '& ~' : '| ';
@@ -43,13 +44,13 @@ class Accounts {
notice( sprintf( tt("%s account deleted", "%s accounts deleted", count($users)), count($users)) );
}
// registration approved button was submitted
if (x($_POST, 'page_users_approve')) {
if (x($_POST, 'page_accounts_approve')) {
foreach ($pending as $hash) {
account_allow($hash);
}
}
// registration deny button was submitted
if (x($_POST, 'page_users_deny')) {
if (x($_POST, 'page_accounts_deny')) {
foreach ($pending as $hash) {
account_deny($hash);
}
@@ -132,12 +133,13 @@ class Accounts {
$base = z_root() . '/admin/accounts?f=';
$odir = (($dir === 'asc') ? '0' : '1');
$users = q("SELECT account_id , account_email, account_lastlog, account_created, account_expires, account_service_class, ( account_flags & %d ) > 0 as blocked,
(SELECT %s FROM channel as ch WHERE ch.channel_account_id = ac.account_id and ch.channel_removed = 0 ) as channels FROM account as ac
where true $serviceclass order by $key $dir limit %d offset %d ",
where true $serviceclass and account_flags != %d order by $key $dir limit %d offset %d ",
intval(ACCOUNT_BLOCKED),
db_concat('ch.channel_address', ' '),
intval(ACCOUNT_BLOCKED | ACCOUNT_PENDING),
intval(\App::$pager['itemspage']),
intval(\App::$pager['start'])
);
@@ -202,4 +204,4 @@ class Accounts {
}
}
}

View File

@@ -0,0 +1,479 @@
<?php
namespace Zotlabs\Module\Admin;
use \Zotlabs\Storage\GitRepo;
use \Michelf\MarkdownExtra;
class Addons {
/**
* @brief
*
*/
function post() {
if(argc() > 2 && is_file("addon/" . argv(2) . "/" . argv(2) . ".php")) {
@include_once("addon/" . argv(2) . "/" . argv(2) . ".php");
if(function_exists(argv(2).'_plugin_admin_post')) {
$func = argv(2) . '_plugin_admin_post';
$func($a);
}
goaway(z_root() . '/admin/addons/' . argv(2) );
}
elseif(argc() > 2) {
switch(argv(2)) {
case 'updaterepo':
if (array_key_exists('repoName', $_REQUEST)) {
$repoName = $_REQUEST['repoName'];
}
else {
json_return_and_die(array('message' => 'No repo name provided.', 'success' => false));
}
$extendDir = 'store/[data]/git/sys/extend';
$addonDir = $extendDir . '/addon';
if (!file_exists($extendDir)) {
if (!mkdir($extendDir, 0770, true)) {
logger('Error creating extend folder: ' . $extendDir);
json_return_and_die(array('message' => 'Error creating extend folder: ' . $extendDir, 'success' => false));
}
else {
if (!symlink(realpath('extend/addon'), $addonDir)) {
logger('Error creating symlink to addon folder: ' . $addonDir);
json_return_and_die(array('message' => 'Error creating symlink to addon folder: ' . $addonDir, 'success' => false));
}
}
}
$repoDir = 'store/[data]/git/sys/extend/addon/' . $repoName;
if (!is_dir($repoDir)) {
logger('Repo directory does not exist: ' . $repoDir);
json_return_and_die(array('message' => 'Invalid addon repo.', 'success' => false));
}
if (!is_writable($repoDir)) {
logger('Repo directory not writable to web server: ' . $repoDir);
json_return_and_die(array('message' => 'Repo directory not writable to web server.', 'success' => false));
}
$git = new GitRepo('sys', null, false, $repoName, $repoDir);
try {
if ($git->pull()) {
$files = array_diff(scandir($repoDir), array('.', '..'));
foreach ($files as $file) {
if (is_dir($repoDir . '/' . $file) && $file !== '.git') {
$source = '../extend/addon/' . $repoName . '/' . $file;
$target = realpath('addon/') . '/' . $file;
unlink($target);
if (!symlink($source, $target)) {
logger('Error linking addons to /addon');
json_return_and_die(array('message' => 'Error linking addons to /addon', 'success' => false));
}
}
}
json_return_and_die(array('message' => 'Repo updated.', 'success' => true));
} else {
json_return_and_die(array('message' => 'Error updating addon repo.', 'success' => false));
}
} catch (\PHPGit\Exception\GitException $e) {
json_return_and_die(array('message' => 'Error updating addon repo.', 'success' => false));
}
case 'removerepo':
if (array_key_exists('repoName', $_REQUEST)) {
$repoName = $_REQUEST['repoName'];
} else {
json_return_and_die(array('message' => 'No repo name provided.', 'success' => false));
}
$extendDir = 'store/[data]/git/sys/extend';
$addonDir = $extendDir . '/addon';
if (!file_exists($extendDir)) {
if (!mkdir($extendDir, 0770, true)) {
logger('Error creating extend folder: ' . $extendDir);
json_return_and_die(array('message' => 'Error creating extend folder: ' . $extendDir, 'success' => false));
} else {
if (!symlink(realpath('extend/addon'), $addonDir)) {
logger('Error creating symlink to addon folder: ' . $addonDir);
json_return_and_die(array('message' => 'Error creating symlink to addon folder: ' . $addonDir, 'success' => false));
}
}
}
$repoDir = 'store/[data]/git/sys/extend/addon/' . $repoName;
if (!is_dir($repoDir)) {
logger('Repo directory does not exist: ' . $repoDir);
json_return_and_die(array('message' => 'Invalid addon repo.', 'success' => false));
}
if (!is_writable($repoDir)) {
logger('Repo directory not writable to web server: ' . $repoDir);
json_return_and_die(array('message' => 'Repo directory not writable to web server.', 'success' => false));
}
/// @TODO remove directory and unlink /addon/files
if (rrmdir($repoDir)) {
json_return_and_die(array('message' => 'Repo deleted.', 'success' => true));
} else {
json_return_and_die(array('message' => 'Error deleting addon repo.', 'success' => false));
}
case 'installrepo':
if (array_key_exists('repoURL', $_REQUEST)) {
require_once('library/PHPGit.autoload.php'); // Load PHPGit dependencies
$repoURL = $_REQUEST['repoURL'];
$extendDir = 'store/[data]/git/sys/extend';
$addonDir = $extendDir . '/addon';
if (!file_exists($extendDir)) {
if (!mkdir($extendDir, 0770, true)) {
logger('Error creating extend folder: ' . $extendDir);
json_return_and_die(array('message' => 'Error creating extend folder: ' . $extendDir, 'success' => false));
} else {
if (!symlink(realpath('extend/addon'), $addonDir)) {
logger('Error creating symlink to addon folder: ' . $addonDir);
json_return_and_die(array('message' => 'Error creating symlink to addon folder: ' . $addonDir, 'success' => false));
}
}
}
if (!is_writable($extendDir)) {
logger('Directory not writable to web server: ' . $extendDir);
json_return_and_die(array('message' => 'Directory not writable to web server.', 'success' => false));
}
$repoName = null;
if (array_key_exists('repoName', $_REQUEST) && $_REQUEST['repoName'] !== '') {
$repoName = $_REQUEST['repoName'];
} else {
$repoName = GitRepo::getRepoNameFromURL($repoURL);
}
if (!$repoName) {
logger('Invalid git repo');
json_return_and_die(array('message' => 'Invalid git repo', 'success' => false));
}
$repoDir = $addonDir . '/' . $repoName;
$tempRepoBaseDir = 'store/[data]/git/sys/temp/';
$tempAddonDir = $tempRepoBaseDir . $repoName;
if (!is_writable($addonDir) || !is_writable($tempAddonDir)) {
logger('Temp repo directory or /extend/addon not writable to web server: ' . $tempAddonDir);
json_return_and_die(array('message' => 'Temp repo directory not writable to web server.', 'success' => false));
}
rename($tempAddonDir, $repoDir);
if (!is_writable(realpath('addon/'))) {
logger('/addon directory not writable to web server: ' . $tempAddonDir);
json_return_and_die(array('message' => '/addon directory not writable to web server.', 'success' => false));
}
$files = array_diff(scandir($repoDir), array('.', '..'));
foreach ($files as $file) {
if (is_dir($repoDir . '/' . $file) && $file !== '.git') {
$source = '../extend/addon/' . $repoName . '/' . $file;
$target = realpath('addon/') . '/' . $file;
unlink($target);
if (!symlink($source, $target)) {
logger('Error linking addons to /addon');
json_return_and_die(array('message' => 'Error linking addons to /addon', 'success' => false));
}
}
}
$git = new GitRepo('sys', $repoURL, false, $repoName, $repoDir);
$repo = $git->probeRepo();
json_return_and_die(array('repo' => $repo, 'message' => '', 'success' => true));
}
case 'addrepo':
if (array_key_exists('repoURL', $_REQUEST)) {
require_once('library/PHPGit.autoload.php'); // Load PHPGit dependencies
$repoURL = $_REQUEST['repoURL'];
$extendDir = 'store/[data]/git/sys/extend';
$addonDir = $extendDir . '/addon';
$tempAddonDir = realpath('store/[data]') . '/git/sys/temp';
if (!file_exists($extendDir)) {
if (!mkdir($extendDir, 0770, true)) {
logger('Error creating extend folder: ' . $extendDir);
json_return_and_die(array('message' => 'Error creating extend folder: ' . $extendDir, 'success' => false));
} else {
if (!symlink(realpath('extend/addon'), $addonDir)) {
logger('Error creating symlink to addon folder: ' . $addonDir);
json_return_and_die(array('message' => 'Error creating symlink to addon folder: ' . $addonDir, 'success' => false));
}
}
}
if (!is_dir($tempAddonDir)) {
if (!mkdir($tempAddonDir, 0770, true)) {
logger('Error creating temp plugin repo folder: ' . $tempAddonDir);
json_return_and_die(array('message' => 'Error creating temp plugin repo folder: ' . $tempAddonDir, 'success' => false));
}
}
$repoName = null;
if (array_key_exists('repoName', $_REQUEST) && $_REQUEST['repoName'] !== '') {
$repoName = $_REQUEST['repoName'];
} else {
$repoName = GitRepo::getRepoNameFromURL($repoURL);
}
if (!$repoName) {
logger('Invalid git repo');
json_return_and_die(array('message' => 'Invalid git repo: ' . $repoName, 'success' => false));
}
$repoDir = $tempAddonDir . '/' . $repoName;
if (!is_writable($tempAddonDir)) {
logger('Temporary directory for new addon repo is not writable to web server: ' . $tempAddonDir);
json_return_and_die(array('message' => 'Temporary directory for new addon repo is not writable to web server.', 'success' => false));
}
// clone the repo if new automatically
$git = new GitRepo('sys', $repoURL, true, $repoName, $repoDir);
$remotes = $git->git->remote();
$fetchURL = $remotes['origin']['fetch'];
if ($fetchURL !== $git->url) {
if (rrmdir($repoDir)) {
$git = new GitRepo('sys', $repoURL, true, $repoName, $repoDir);
} else {
json_return_and_die(array('message' => 'Error deleting existing addon repo.', 'success' => false));
}
}
$repo = $git->probeRepo();
$repo['readme'] = $repo['manifest'] = null;
foreach ($git->git->tree('master') as $object) {
if ($object['type'] == 'blob' && (strtolower($object['file']) === 'readme.md' || strtolower($object['file']) === 'readme')) {
$repo['readme'] = MarkdownExtra::defaultTransform($git->git->cat->blob($object['hash']));
} else if ($object['type'] == 'blob' && strtolower($object['file']) === 'manifest.json') {
$repo['manifest'] = $git->git->cat->blob($object['hash']);
}
}
json_return_and_die(array('repo' => $repo, 'message' => '', 'success' => true));
} else {
json_return_and_die(array('message' => 'No repo URL provided', 'success' => false));
}
break;
default:
break;
}
}
}
/**
* @brief Addons admin page.
*
* @return string with parsed HTML
*/
function get() {
/*
* Single plugin
*/
if (\App::$argc == 3){
$plugin = \App::$argv[2];
if (!is_file("addon/$plugin/$plugin.php")){
notice( t("Item not found.") );
return '';
}
$enabled = in_array($plugin,\App::$plugins);
$info = get_plugin_info($plugin);
$x = check_plugin_versions($info);
// disable plugins which are installed but incompatible versions
if($enabled && ! $x) {
$enabled = false;
$idz = array_search($plugin, \App::$plugins);
if ($idz !== false) {
unset(\App::$plugins[$idz]);
uninstall_plugin($plugin);
set_config("system","addon", implode(", ",\App::$plugins));
}
}
$info['disabled'] = 1-intval($x);
if (x($_GET,"a") && $_GET['a']=="t"){
check_form_security_token_redirectOnErr('/admin/addons', 'admin_addons', 't');
$pinstalled = false;
// Toggle plugin status
$idx = array_search($plugin, \App::$plugins);
if ($idx !== false){
unset(\App::$plugins[$idx]);
uninstall_plugin($plugin);
$pinstalled = false;
info( sprintf( t("Plugin %s disabled."), $plugin ) );
} else {
\App::$plugins[] = $plugin;
install_plugin($plugin);
$pinstalled = true;
info( sprintf( t("Plugin %s enabled."), $plugin ) );
}
set_config("system","addon", implode(", ",\App::$plugins));
if($pinstalled) {
@require_once("addon/$plugin/$plugin.php");
if(function_exists($plugin.'_plugin_admin'))
goaway(z_root() . '/admin/addons/' . $plugin);
}
goaway(z_root() . '/admin/addons' );
}
// display plugin details
if (in_array($plugin, \App::$plugins)){
$status = 'on';
$action = t('Disable');
} else {
$status = 'off';
$action = t('Enable');
}
$readme = null;
if (is_file("addon/$plugin/README.md")){
$readme = file_get_contents("addon/$plugin/README.md");
$readme = MarkdownExtra::defaultTransform($readme);
} else if (is_file("addon/$plugin/README")){
$readme = "<pre>". file_get_contents("addon/$plugin/README") ."</pre>";
}
$admin_form = '';
$r = q("select * from addon where plugin_admin = 1 and aname = '%s' limit 1",
dbesc($plugin)
);
if($r) {
@require_once("addon/$plugin/$plugin.php");
if(function_exists($plugin.'_plugin_admin')) {
$func = $plugin.'_plugin_admin';
$func($a, $admin_form);
}
}
$t = get_markup_template('admin_plugins_details.tpl');
return replace_macros($t, array(
'$title' => t('Administration'),
'$page' => t('Addons'),
'$toggle' => t('Toggle'),
'$settings' => t('Settings'),
'$baseurl' => z_root(),
'$plugin' => $plugin,
'$status' => $status,
'$action' => $action,
'$info' => $info,
'$str_author' => t('Author: '),
'$str_maintainer' => t('Maintainer: '),
'$str_minversion' => t('Minimum project version: '),
'$str_maxversion' => t('Maximum project version: '),
'$str_minphpversion' => t('Minimum PHP version: '),
'$str_serverroles' => t('Compatible Server Roles: '),
'$str_requires' => t('Requires: '),
'$disabled' => t('Disabled - version incompatibility'),
'$admin_form' => $admin_form,
'$function' => 'addons',
'$screenshot' => '',
'$readme' => $readme,
'$form_security_token' => get_form_security_token('admin_addons'),
));
}
/*
* List plugins
*/
$plugins = array();
$files = glob('addon/*/');
if($files) {
foreach($files as $file) {
if (is_dir($file)){
list($tmp, $id) = array_map('trim', explode('/', $file));
$info = get_plugin_info($id);
$enabled = in_array($id,\App::$plugins);
$x = check_plugin_versions($info);
// disable plugins which are installed but incompatible versions
if($enabled && ! $x) {
$enabled = false;
$idz = array_search($id, \App::$plugins);
if ($idz !== false) {
unset(\App::$plugins[$idz]);
uninstall_plugin($id);
set_config("system","addon", implode(", ",\App::$plugins));
}
}
$info['disabled'] = 1-intval($x);
$plugins[] = array( $id, (($enabled)?"on":"off") , $info);
}
}
}
usort($plugins,'self::plugin_sort');
$allowManageRepos = false;
if(is_writable('extend/addon') && is_writable('store/[data]')) {
$allowManageRepos = true;
}
$admin_plugins_add_repo_form= replace_macros(
get_markup_template('admin_plugins_addrepo.tpl'), array(
'$post' => 'admin/addons/addrepo',
'$desc' => t('Enter the public git repository URL of the addon repo.'),
'$repoURL' => array('repoURL', t('Addon repo git URL'), '', ''),
'$repoName' => array('repoName', t('Custom repo name'), '', '', t('(optional)')),
'$submit' => t('Download Addon Repo')
)
);
$newRepoModalID = random_string(3);
$newRepoModal = replace_macros(
get_markup_template('generic_modal.tpl'), array(
'$id' => $newRepoModalID,
'$title' => t('Install new repo'),
'$ok' => t('Install'),
'$cancel' => t('Cancel')
)
);
$reponames = $this->listAddonRepos();
$addonrepos = [];
foreach($reponames as $repo) {
$addonrepos[] = array('name' => $repo, 'description' => '');
/// @TODO Parse repo info to provide more information about repos
}
$t = get_markup_template('admin_plugins.tpl');
return replace_macros($t, array(
'$title' => t('Administration'),
'$page' => t('Addons'),
'$submit' => t('Submit'),
'$baseurl' => z_root(),
'$function' => 'addons',
'$plugins' => $plugins,
'$disabled' => t('Disabled - version incompatibility'),
'$form_security_token' => get_form_security_token('admin_addons'),
'$allowManageRepos' => $allowManageRepos,
'$managerepos' => t('Manage Repos'),
'$installedtitle' => t('Installed Addon Repositories'),
'$addnewrepotitle' => t('Install a New Addon Repository'),
'$expandform' => false,
'$form' => $admin_plugins_add_repo_form,
'$newRepoModal' => $newRepoModal,
'$newRepoModalID' => $newRepoModalID,
'$addonrepos' => $addonrepos,
'$repoUpdateButton' => t('Update'),
'$repoBranchButton' => t('Switch branch'),
'$repoRemoveButton' => t('Remove')
));
}
function listAddonRepos() {
$addonrepos = [];
$addonDir = 'extend/addon/';
if(is_dir($addonDir)) {
if ($handle = opendir($addonDir)) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
$addonrepos[] = $entry;
}
}
closedir($handle);
}
}
return $addonrepos;
}
static public function plugin_sort($a,$b) {
return(strcmp(strtolower($a[2]['name']),strtolower($b[2]['name'])));
}
}

View File

@@ -7,36 +7,38 @@ namespace Zotlabs\Module\Admin;
class Dbsync {
function get() {
$o = '';
if(argc() > 3 && intval(argv(3)) && argv(2) === 'mark') {
set_config('database', 'update_r' . intval(argv(3)), 'success');
if(intval(get_config('system','db_version')) <= intval(argv(3)))
set_config('system','db_version',intval(argv(3)) + 1);
// remove the old style config if it exists
del_config('database', 'update_r' . intval(argv(3)));
set_config('database', '_' . intval(argv(3)), 'success');
if(intval(get_config('system','db_version')) < intval(argv(3)))
set_config('system','db_version',intval(argv(3)));
info( t('Update has been marked successful') . EOL);
goaway(z_root() . '/admin/dbsync');
}
if(argc() > 2 && intval(argv(2))) {
require_once('install/update.php');
$func = 'update_r' . intval(argv(2));
if(function_exists($func)) {
$retval = $func();
$x = intval(argv(2));
$s = '_' . $x;
$cls = '\\Zotlabs\Update\\' . $s ;
if(class_exists($cls)) {
$c = new $cls();
$retval = $c->run();
if($retval === UPDATE_FAILED) {
$o .= sprintf( t('Executing %s failed. Check system logs.'), $func);
$o .= sprintf( t('Executing %s failed. Check system logs.'), $s);
}
elseif($retval === UPDATE_SUCCESS) {
$o .= sprintf( t('Update %s was successfully applied.'), $func);
set_config('database',$func, 'success');
$o .= sprintf( t('Update %s was successfully applied.'), $s);
set_config('database',$s, 'success');
}
else
$o .= sprintf( t('Update %s did not return a status. Unknown if it succeeded.'), $func);
$o .= sprintf( t('Update %s did not return a status. Unknown if it succeeded.'), $s);
}
else
$o .= sprintf( t('Update function %s could not be found.'), $func);
$o .= sprintf( t('Update function %s could not be found.'), $s);
return $o;
}
@@ -45,23 +47,25 @@ class Dbsync {
$r = q("select * from config where cat = 'database' ");
if(count($r)) {
foreach($r as $rr) {
$upd = intval(substr($rr['k'],8));
$upd = intval(substr($rr['k'],-4));
if($rr['v'] === 'success')
continue;
$failed[] = $upd;
}
}
if(! count($failed))
return '<div class="generic-content-wrapper-styled"><h3>' . t('No failed updates.') . '</h3></div>';
$o = replace_macros(get_markup_template('failed_updates.tpl'),array(
'$base' => z_root(),
'$banner' => t('Failed Updates'),
'$desc' => '',
'$mark' => t('Mark success (if update was manually applied)'),
'$apply' => t('Attempt to execute this update step automatically'),
'$failed' => $failed
if(count($failed)) {
$o = replace_macros(get_markup_template('failed_updates.tpl'),array(
'$base' => z_root(),
'$banner' => t('Failed Updates'),
'$desc' => '',
'$mark' => t('Mark success (if update was manually applied)'),
'$apply' => t('Attempt to execute this update step automatically'),
'$failed' => $failed
));
}
else {
return '<div class="generic-content-wrapper-styled"><h3>' . t('No failed updates.') . '</h3></div>';
}
return $o;
}

View File

@@ -1,475 +0,0 @@
<?php
namespace Zotlabs\Module\Admin;
use \Zotlabs\Storage\GitRepo as GitRepo;
class Plugins {
function post() {
if(argc() > 2 && is_file("addon/" . argv(2) . "/" . argv(2) . ".php")) {
@include_once("addon/" . argv(2) . "/" . argv(2) . ".php");
if(function_exists(argv(2).'_plugin_admin_post')) {
$func = argv(2) . '_plugin_admin_post';
$func($a);
}
goaway(z_root() . '/admin/plugins/' . argv(2) );
}
elseif(argc() > 2) {
switch(argv(2)) {
case 'updaterepo':
if (array_key_exists('repoName', $_REQUEST)) {
$repoName = $_REQUEST['repoName'];
}
else {
json_return_and_die(array('message' => 'No repo name provided.', 'success' => false));
}
$extendDir = 'store/[data]/git/sys/extend';
$addonDir = $extendDir . '/addon';
if (!file_exists($extendDir)) {
if (!mkdir($extendDir, 0770, true)) {
logger('Error creating extend folder: ' . $extendDir);
json_return_and_die(array('message' => 'Error creating extend folder: ' . $extendDir, 'success' => false));
}
else {
if (!symlink(realpath('extend/addon'), $addonDir)) {
logger('Error creating symlink to addon folder: ' . $addonDir);
json_return_and_die(array('message' => 'Error creating symlink to addon folder: ' . $addonDir, 'success' => false));
}
}
}
$repoDir = 'store/[data]/git/sys/extend/addon/' . $repoName;
if (!is_dir($repoDir)) {
logger('Repo directory does not exist: ' . $repoDir);
json_return_and_die(array('message' => 'Invalid addon repo.', 'success' => false));
}
if (!is_writable($repoDir)) {
logger('Repo directory not writable to web server: ' . $repoDir);
json_return_and_die(array('message' => 'Repo directory not writable to web server.', 'success' => false));
}
$git = new GitRepo('sys', null, false, $repoName, $repoDir);
try {
if ($git->pull()) {
$files = array_diff(scandir($repoDir), array('.', '..'));
foreach ($files as $file) {
if (is_dir($repoDir . '/' . $file) && $file !== '.git') {
$source = '../extend/addon/' . $repoName . '/' . $file;
$target = realpath('addon/') . '/' . $file;
unlink($target);
if (!symlink($source, $target)) {
logger('Error linking addons to /addon');
json_return_and_die(array('message' => 'Error linking addons to /addon', 'success' => false));
}
}
}
json_return_and_die(array('message' => 'Repo updated.', 'success' => true));
} else {
json_return_and_die(array('message' => 'Error updating addon repo.', 'success' => false));
}
} catch (\PHPGit\Exception\GitException $e) {
json_return_and_die(array('message' => 'Error updating addon repo.', 'success' => false));
}
case 'removerepo':
if (array_key_exists('repoName', $_REQUEST)) {
$repoName = $_REQUEST['repoName'];
} else {
json_return_and_die(array('message' => 'No repo name provided.', 'success' => false));
}
$extendDir = 'store/[data]/git/sys/extend';
$addonDir = $extendDir . '/addon';
if (!file_exists($extendDir)) {
if (!mkdir($extendDir, 0770, true)) {
logger('Error creating extend folder: ' . $extendDir);
json_return_and_die(array('message' => 'Error creating extend folder: ' . $extendDir, 'success' => false));
} else {
if (!symlink(realpath('extend/addon'), $addonDir)) {
logger('Error creating symlink to addon folder: ' . $addonDir);
json_return_and_die(array('message' => 'Error creating symlink to addon folder: ' . $addonDir, 'success' => false));
}
}
}
$repoDir = 'store/[data]/git/sys/extend/addon/' . $repoName;
if (!is_dir($repoDir)) {
logger('Repo directory does not exist: ' . $repoDir);
json_return_and_die(array('message' => 'Invalid addon repo.', 'success' => false));
}
if (!is_writable($repoDir)) {
logger('Repo directory not writable to web server: ' . $repoDir);
json_return_and_die(array('message' => 'Repo directory not writable to web server.', 'success' => false));
}
// TODO: remove directory and unlink /addon/files
if (rrmdir($repoDir)) {
json_return_and_die(array('message' => 'Repo deleted.', 'success' => true));
} else {
json_return_and_die(array('message' => 'Error deleting addon repo.', 'success' => false));
}
case 'installrepo':
require_once('library/markdown.php');
if (array_key_exists('repoURL', $_REQUEST)) {
require_once('library/PHPGit.autoload.php'); // Load PHPGit dependencies
$repoURL = $_REQUEST['repoURL'];
$extendDir = 'store/[data]/git/sys/extend';
$addonDir = $extendDir . '/addon';
if (!file_exists($extendDir)) {
if (!mkdir($extendDir, 0770, true)) {
logger('Error creating extend folder: ' . $extendDir);
json_return_and_die(array('message' => 'Error creating extend folder: ' . $extendDir, 'success' => false));
} else {
if (!symlink(realpath('extend/addon'), $addonDir)) {
logger('Error creating symlink to addon folder: ' . $addonDir);
json_return_and_die(array('message' => 'Error creating symlink to addon folder: ' . $addonDir, 'success' => false));
}
}
}
if (!is_writable($extendDir)) {
logger('Directory not writable to web server: ' . $extendDir);
json_return_and_die(array('message' => 'Directory not writable to web server.', 'success' => false));
}
$repoName = null;
if (array_key_exists('repoName', $_REQUEST) && $_REQUEST['repoName'] !== '') {
$repoName = $_REQUEST['repoName'];
} else {
$repoName = GitRepo::getRepoNameFromURL($repoURL);
}
if (!$repoName) {
logger('Invalid git repo');
json_return_and_die(array('message' => 'Invalid git repo', 'success' => false));
}
$repoDir = $addonDir . '/' . $repoName;
$tempRepoBaseDir = 'store/[data]/git/sys/temp/';
$tempAddonDir = $tempRepoBaseDir . $repoName;
if (!is_writable($addonDir) || !is_writable($tempAddonDir)) {
logger('Temp repo directory or /extend/addon not writable to web server: ' . $tempAddonDir);
json_return_and_die(array('message' => 'Temp repo directory not writable to web server.', 'success' => false));
}
rename($tempAddonDir, $repoDir);
if (!is_writable(realpath('addon/'))) {
logger('/addon directory not writable to web server: ' . $tempAddonDir);
json_return_and_die(array('message' => '/addon directory not writable to web server.', 'success' => false));
}
$files = array_diff(scandir($repoDir), array('.', '..'));
foreach ($files as $file) {
if (is_dir($repoDir . '/' . $file) && $file !== '.git') {
$source = '../extend/addon/' . $repoName . '/' . $file;
$target = realpath('addon/') . '/' . $file;
unlink($target);
if (!symlink($source, $target)) {
logger('Error linking addons to /addon');
json_return_and_die(array('message' => 'Error linking addons to /addon', 'success' => false));
}
}
}
$git = new GitRepo('sys', $repoURL, false, $repoName, $repoDir);
$repo = $git->probeRepo();
json_return_and_die(array('repo' => $repo, 'message' => '', 'success' => true));
}
case 'addrepo':
require_once('library/markdown.php');
if (array_key_exists('repoURL', $_REQUEST)) {
require_once('library/PHPGit.autoload.php'); // Load PHPGit dependencies
$repoURL = $_REQUEST['repoURL'];
$extendDir = 'store/[data]/git/sys/extend';
$addonDir = $extendDir . '/addon';
$tempAddonDir = realpath('store/[data]') . '/git/sys/temp';
if (!file_exists($extendDir)) {
if (!mkdir($extendDir, 0770, true)) {
logger('Error creating extend folder: ' . $extendDir);
json_return_and_die(array('message' => 'Error creating extend folder: ' . $extendDir, 'success' => false));
} else {
if (!symlink(realpath('extend/addon'), $addonDir)) {
logger('Error creating symlink to addon folder: ' . $addonDir);
json_return_and_die(array('message' => 'Error creating symlink to addon folder: ' . $addonDir, 'success' => false));
}
}
}
if (!is_dir($tempAddonDir)) {
if (!mkdir($tempAddonDir, 0770, true)) {
logger('Error creating temp plugin repo folder: ' . $tempAddonDir);
json_return_and_die(array('message' => 'Error creating temp plugin repo folder: ' . $tempAddonDir, 'success' => false));
}
}
$repoName = null;
if (array_key_exists('repoName', $_REQUEST) && $_REQUEST['repoName'] !== '') {
$repoName = $_REQUEST['repoName'];
} else {
$repoName = GitRepo::getRepoNameFromURL($repoURL);
}
if (!$repoName) {
logger('Invalid git repo');
json_return_and_die(array('message' => 'Invalid git repo: ' . $repoName, 'success' => false));
}
$repoDir = $tempAddonDir . '/' . $repoName;
if (!is_writable($tempAddonDir)) {
logger('Temporary directory for new addon repo is not writable to web server: ' . $tempAddonDir);
json_return_and_die(array('message' => 'Temporary directory for new addon repo is not writable to web server.', 'success' => false));
}
// clone the repo if new automatically
$git = new GitRepo('sys', $repoURL, true, $repoName, $repoDir);
$remotes = $git->git->remote();
$fetchURL = $remotes['origin']['fetch'];
if ($fetchURL !== $git->url) {
if (rrmdir($repoDir)) {
$git = new GitRepo('sys', $repoURL, true, $repoName, $repoDir);
} else {
json_return_and_die(array('message' => 'Error deleting existing addon repo.', 'success' => false));
}
}
$repo = $git->probeRepo();
$repo['readme'] = $repo['manifest'] = null;
foreach ($git->git->tree('master') as $object) {
if ($object['type'] == 'blob' && (strtolower($object['file']) === 'readme.md' || strtolower($object['file']) === 'readme')) {
$repo['readme'] = Markdown($git->git->cat->blob($object['hash']));
} else if ($object['type'] == 'blob' && strtolower($object['file']) === 'manifest.json') {
$repo['manifest'] = $git->git->cat->blob($object['hash']);
}
}
json_return_and_die(array('repo' => $repo, 'message' => '', 'success' => true));
} else {
json_return_and_die(array('message' => 'No repo URL provided', 'success' => false));
}
break;
default:
break;
}
}
}
function get() {
/*
* Single plugin
*/
if (\App::$argc == 3){
$plugin = \App::$argv[2];
if (!is_file("addon/$plugin/$plugin.php")){
notice( t("Item not found.") );
return '';
}
$enabled = in_array($plugin,\App::$plugins);
$info = get_plugin_info($plugin);
$x = check_plugin_versions($info);
// disable plugins which are installed but incompatible versions
if($enabled && ! $x) {
$enabled = false;
$idz = array_search($plugin, \App::$plugins);
if ($idz !== false) {
unset(\App::$plugins[$idz]);
uninstall_plugin($plugin);
set_config("system","addon", implode(", ",\App::$plugins));
}
}
$info['disabled'] = 1-intval($x);
if (x($_GET,"a") && $_GET['a']=="t"){
check_form_security_token_redirectOnErr('/admin/plugins', 'admin_plugins', 't');
$pinstalled = false;
// Toggle plugin status
$idx = array_search($plugin, \App::$plugins);
if ($idx !== false){
unset(\App::$plugins[$idx]);
uninstall_plugin($plugin);
$pinstalled = false;
info( sprintf( t("Plugin %s disabled."), $plugin ) );
} else {
\App::$plugins[] = $plugin;
install_plugin($plugin);
$pinstalled = true;
info( sprintf( t("Plugin %s enabled."), $plugin ) );
}
set_config("system","addon", implode(", ",\App::$plugins));
if($pinstalled) {
@require_once("addon/$plugin/$plugin.php");
if(function_exists($plugin.'_plugin_admin'))
goaway(z_root() . '/admin/plugins/' . $plugin);
}
goaway(z_root() . '/admin/plugins' );
}
// display plugin details
require_once('library/markdown.php');
if (in_array($plugin, \App::$plugins)){
$status = 'on';
$action = t('Disable');
} else {
$status = 'off';
$action = t('Enable');
}
$readme = null;
if (is_file("addon/$plugin/README.md")){
$readme = file_get_contents("addon/$plugin/README.md");
$readme = Markdown($readme);
} else if (is_file("addon/$plugin/README")){
$readme = "<pre>". file_get_contents("addon/$plugin/README") ."</pre>";
}
$admin_form = '';
$r = q("select * from addon where plugin_admin = 1 and aname = '%s' limit 1",
dbesc($plugin)
);
if($r) {
@require_once("addon/$plugin/$plugin.php");
if(function_exists($plugin.'_plugin_admin')) {
$func = $plugin.'_plugin_admin';
$func($a, $admin_form);
}
}
$t = get_markup_template('admin_plugins_details.tpl');
return replace_macros($t, array(
'$title' => t('Administration'),
'$page' => t('Plugins'),
'$toggle' => t('Toggle'),
'$settings' => t('Settings'),
'$baseurl' => z_root(),
'$plugin' => $plugin,
'$status' => $status,
'$action' => $action,
'$info' => $info,
'$str_author' => t('Author: '),
'$str_maintainer' => t('Maintainer: '),
'$str_minversion' => t('Minimum project version: '),
'$str_maxversion' => t('Maximum project version: '),
'$str_minphpversion' => t('Minimum PHP version: '),
'$str_serverroles' => t('Compatible Server Roles: '),
'$str_requires' => t('Requires: '),
'$disabled' => t('Disabled - version incompatibility'),
'$admin_form' => $admin_form,
'$function' => 'plugins',
'$screenshot' => '',
'$readme' => $readme,
'$form_security_token' => get_form_security_token('admin_plugins'),
));
}
/*
* List plugins
*/
$plugins = array();
$files = glob('addon/*/');
if($files) {
foreach($files as $file) {
if (is_dir($file)){
list($tmp, $id) = array_map('trim', explode('/', $file));
$info = get_plugin_info($id);
$enabled = in_array($id,\App::$plugins);
$x = check_plugin_versions($info);
// disable plugins which are installed but incompatible versions
if($enabled && ! $x) {
$enabled = false;
$idz = array_search($id, \App::$plugins);
if ($idz !== false) {
unset(\App::$plugins[$idz]);
uninstall_plugin($id);
set_config("system","addon", implode(", ",\App::$plugins));
}
}
$info['disabled'] = 1-intval($x);
$plugins[] = array( $id, (($enabled)?"on":"off") , $info);
}
}
}
usort($plugins,'self::plugin_sort');
$allowManageRepos = false;
if(is_writable('extend/addon') && is_writable('store/[data]')) {
$allowManageRepos = true;
}
$admin_plugins_add_repo_form= replace_macros(
get_markup_template('admin_plugins_addrepo.tpl'), array(
'$post' => 'admin/plugins/addrepo',
'$desc' => t('Enter the public git repository URL of the plugin repo.'),
'$repoURL' => array('repoURL', t('Plugin repo git URL'), '', ''),
'$repoName' => array('repoName', t('Custom repo name'), '', '', t('(optional)')),
'$submit' => t('Download Plugin Repo')
)
);
$newRepoModalID = random_string(3);
$newRepoModal = replace_macros(
get_markup_template('generic_modal.tpl'), array(
'$id' => $newRepoModalID,
'$title' => t('Install new repo'),
'$ok' => t('Install'),
'$cancel' => t('Cancel')
)
);
$reponames = $this->listAddonRepos();
$addonrepos = [];
foreach($reponames as $repo) {
$addonrepos[] = array('name' => $repo, 'description' => '');
// TODO: Parse repo info to provide more information about repos
}
$t = get_markup_template('admin_plugins.tpl');
return replace_macros($t, array(
'$title' => t('Administration'),
'$page' => t('Plugins'),
'$submit' => t('Submit'),
'$baseurl' => z_root(),
'$function' => 'plugins',
'$plugins' => $plugins,
'$disabled' => t('Disabled - version incompatibility'),
'$form_security_token' => get_form_security_token('admin_plugins'),
'$allowManageRepos' => $allowManageRepos,
'$managerepos' => t('Manage Repos'),
'$installedtitle' => t('Installed Plugin Repositories'),
'$addnewrepotitle' => t('Install a New Plugin Repository'),
'$expandform' => false,
'$form' => $admin_plugins_add_repo_form,
'$newRepoModal' => $newRepoModal,
'$newRepoModalID' => $newRepoModalID,
'$addonrepos' => $addonrepos,
'$repoUpdateButton' => t('Update'),
'$repoBranchButton' => t('Switch branch'),
'$repoRemoveButton' => t('Remove')
));
}
function listAddonRepos() {
$addonrepos = [];
$addonDir = 'extend/addon/';
if(is_dir($addonDir)) {
if ($handle = opendir($addonDir)) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
$addonrepos[] = $entry;
}
}
closedir($handle);
}
}
return $addonrepos;
}
static public function plugin_sort($a,$b) {
return(strcmp(strtolower($a[2]['name']),strtolower($b[2]['name'])));
}
}

View File

@@ -9,17 +9,37 @@ class Profs {
if(array_key_exists('basic',$_REQUEST)) {
$arr = explode(',',$_REQUEST['basic']);
for($x = 0; $x < count($arr); $x ++)
if(trim($arr[$x]))
$arr[$x] = trim($arr[$x]);
set_config('system','profile_fields_basic',$arr);
array_walk($arr,'array_trim');
$narr = [];
if(count($arr)) {
foreach($arr as $a) {
if(strlen($a)) {
$narr[] = $a;
}
}
}
if(! $narr)
del_config('system','profile_fields_basic');
else
set_config('system','profile_fields_basic',$narr);
if(array_key_exists('advanced',$_REQUEST)) {
$arr = explode(',',$_REQUEST['advanced']);
for($x = 0; $x < count($arr); $x ++)
if(trim($arr[$x]))
$arr[$x] = trim($arr[$x]);
set_config('system','profile_fields_advanced',$arr);
array_walk($arr,'array_trim');
$narr = [];
if(count($arr)) {
foreach($arr as $a) {
if(strlen($a)) {
$narr[] = $a;
}
}
}
if(! $narr)
del_config('system','profile_fields_advanced');
else
set_config('system','profile_fields_advanced',$narr);
}
goaway(z_root() . '/admin/profs');
}
@@ -98,6 +118,7 @@ class Profs {
$basic = '';
$barr = array();
$fields = get_profile_fields_basic();
if(! $fields)
$fields = get_profile_fields_basic(1);
if($fields) {

View File

@@ -16,7 +16,13 @@ class Security {
$block_public = ((x($_POST,'block_public')) ? True : False);
set_config('system','block_public',$block_public);
$cloud_noroot = ((x($_POST,'cloud_noroot')) ? 1 : 0);
set_config('system','cloud_disable_siteroot',1 - $cloud_noroot);
$cloud_disksize = ((x($_POST,'cloud_disksize')) ? 1 : 0);
set_config('system','cloud_report_disksize',$cloud_disksize);
$ws = $this->trim_array_elems(explode("\n",$_POST['whitelisted_sites']));
set_config('system','whitelisted_sites',$ws);
@@ -52,24 +58,24 @@ class Security {
function get() {
$whitesites = get_config('system','whitelisted_sites');
$whitesites_str = ((is_array($whitesites)) ? implode($whitesites,"\n") : '');
$whitesites_str = ((is_array($whitesites)) ? implode("\n",$whitesites) : '');
$blacksites = get_config('system','blacklisted_sites');
$blacksites_str = ((is_array($blacksites)) ? implode($blacksites,"\n") : '');
$blacksites_str = ((is_array($blacksites)) ? implode("\n",$blacksites) : '');
$whitechannels = get_config('system','whitelisted_channels');
$whitechannels_str = ((is_array($whitechannels)) ? implode($whitechannels,"\n") : '');
$whitechannels_str = ((is_array($whitechannels)) ? implode("\n",$whitechannels) : '');
$blackchannels = get_config('system','blacklisted_channels');
$blackchannels_str = ((is_array($blackchannels)) ? implode($blackchannels,"\n") : '');
$blackchannels_str = ((is_array($blackchannels)) ? implode("\n",$blackchannels) : '');
$whiteembeds = get_config('system','embed_allow');
$whiteembeds_str = ((is_array($whiteembeds)) ? implode($whiteembeds,"\n") : '');
$whiteembeds_str = ((is_array($whiteembeds)) ? implode("\n",$whiteembeds) : '');
$blackembeds = get_config('system','embed_deny');
$blackembeds_str = ((is_array($blackembeds)) ? implode($blackembeds,"\n") : '');
$blackembeds_str = ((is_array($blackembeds)) ? implode("\n",$blackembeds) : '');
$embed_coop = intval(get_config('system','embed_coop'));
@@ -87,6 +93,8 @@ class Security {
'$page' => t('Security'),
'$form_security_token' => get_form_security_token('admin_security'),
'$block_public' => array('block_public', t("Block public"), get_config('system','block_public'), t("Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated.")),
'$cloud_noroot' => [ 'cloud_noroot', t('Provide a cloud root directory'), 1 - intval(get_config('system','cloud_disable_siteroot')), t('The cloud root directory lists all channel names which provide public files') ],
'$cloud_disksize' => [ 'cloud_disksize', t('Show total disk space available to cloud uploads'), intval(get_config('system','cloud_report_disksize')), '' ],
'$transport_security' => array('transport_security', t('Set "Transport Security" HTTP header'),intval(get_config('system','transport_security_header')),''),
'$content_security' => array('content_security', t('Set "Content Security Policy" HTTP header'),intval(get_config('system','content_security_policy')),''),
'$allowed_email' => array('allowed_email', t("Allowed email domains"), get_config('system','allowed_email'), t("Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains")),

View File

@@ -17,7 +17,6 @@ class Site {
check_form_security_token_redirectOnErr('/admin/site', 'admin_site');
$sitename = ((x($_POST,'sitename')) ? notags(trim($_POST['sitename'])) : '');
$server_role = ((x($_POST,'server_role')) ? notags(trim($_POST['server_role'])) : 'standard');
$banner = ((x($_POST,'banner')) ? trim($_POST['banner']) : false);
@@ -25,28 +24,43 @@ class Site {
$siteinfo = ((x($_POST,'siteinfo')) ? trim($_POST['siteinfo']) : '');
$language = ((x($_POST,'language')) ? notags(trim($_POST['language'])) : '');
$theme = ((x($_POST,'theme')) ? notags(trim($_POST['theme'])) : '');
$theme_mobile = ((x($_POST,'theme_mobile')) ? notags(trim($_POST['theme_mobile'])) : '');
// $theme_mobile = ((x($_POST,'theme_mobile')) ? notags(trim($_POST['theme_mobile'])) : '');
// $site_channel = ((x($_POST,'site_channel')) ? notags(trim($_POST['site_channel'])) : '');
$maximagesize = ((x($_POST,'maximagesize')) ? intval(trim($_POST['maximagesize'])) : 0);
$register_policy = ((x($_POST,'register_policy')) ? intval(trim($_POST['register_policy'])) : 0);
$minimum_age = ((x($_POST,'minimum_age')) ? intval(trim($_POST['minimum_age'])) : 13);
$access_policy = ((x($_POST,'access_policy')) ? intval(trim($_POST['access_policy'])) : 0);
$invite_only = ((x($_POST,'invite_only')) ? True : False);
$abandon_days = ((x($_POST,'abandon_days')) ? intval(trim($_POST['abandon_days'])) : 0);
$register_text = ((x($_POST,'register_text')) ? notags(trim($_POST['register_text'])) : '');
$site_sellpage = ((x($_POST,'site_sellpage')) ? notags(trim($_POST['site_sellpage'])) : '');
$site_location = ((x($_POST,'site_location')) ? notags(trim($_POST['site_location'])) : '');
$frontpage = ((x($_POST,'frontpage')) ? notags(trim($_POST['frontpage'])) : '');
$firstpage = ((x($_POST,'firstpage')) ? notags(trim($_POST['firstpage'])) : 'profiles');
$first_page = ((x($_POST,'first_page')) ? notags(trim($_POST['first_page'])) : 'profiles');
// check value after trim
if(! $first_page) {
$first_page = 'profiles';
}
$mirror_frontpage = ((x($_POST,'mirror_frontpage')) ? intval(trim($_POST['mirror_frontpage'])) : 0);
$directory_server = ((x($_POST,'directory_server')) ? trim($_POST['directory_server']) : '');
$allowed_sites = ((x($_POST,'allowed_sites')) ? notags(trim($_POST['allowed_sites'])) : '');
$force_publish = ((x($_POST,'publish_all')) ? True : False);
$disable_discover_tab = ((x($_POST,'disable_discover_tab')) ? False : True);
$site_firehose = ((x($_POST,'site_firehose')) ? True : False);
$open_pubstream = ((x($_POST,'open_pubstream')) ? True : False);
$login_on_homepage = ((x($_POST,'login_on_homepage')) ? True : False);
$enable_context_help = ((x($_POST,'enable_context_help')) ? True : False);
$global_directory = ((x($_POST,'directory_submit_url')) ? notags(trim($_POST['directory_submit_url'])) : '');
$no_community_page = !((x($_POST,'no_community_page')) ? True : False);
$default_expire_days = ((array_key_exists('default_expire_days',$_POST)) ? intval($_POST['default_expire_days']) : 0);
$active_expire_days = ((array_key_exists('active_expire_days',$_POST)) ? intval($_POST['active_expire_days']) : 7);
$reply_address = ((array_key_exists('reply_address',$_POST) && trim($_POST['reply_address'])) ? trim($_POST['reply_address']) : 'noreply@' . \App::get_hostname());
$from_email = ((array_key_exists('from_email',$_POST) && trim($_POST['from_email'])) ? trim($_POST['from_email']) : 'Administrator@' . \App::get_hostname());
$from_email_name = ((array_key_exists('from_email_name',$_POST) && trim($_POST['from_email_name'])) ? trim($_POST['from_email_name']) : \Zotlabs\Lib\System::get_site_name());
$verifyssl = ((x($_POST,'verifyssl')) ? True : False);
$proxyuser = ((x($_POST,'proxyuser')) ? notags(trim($_POST['proxyuser'])) : '');
@@ -58,27 +72,48 @@ class Site {
$maxloadavg = ((x($_POST,'maxloadavg')) ? intval(trim($_POST['maxloadavg'])) : 50);
$feed_contacts = ((x($_POST,'feed_contacts')) ? intval($_POST['feed_contacts']) : 0);
$verify_email = ((x($_POST,'verify_email')) ? 1 : 0);
$techlevel_lock = ((x($_POST,'techlock')) ? intval($_POST['techlock']) : 0);
$techlevel_lock = ((x($_POST,'techlock')) ? intval($_POST['techlock']) : 0);
$imagick_path = ((x($_POST,'imagick_path')) ? trim($_POST['imagick_path']) : '');
$thumbnail_security = ((x($_POST,'thumbnail_security')) ? intval($_POST['thumbnail_security']) : 0);
$force_queue = ((intval($_POST['force_queue']) > 0) ? intval($_POST['force_queue']) : 3000);
$pub_incl = escape_tags(trim($_POST['pub_incl']));
$pub_excl = escape_tags(trim($_POST['pub_excl']));
$permissions_role = escape_tags(trim($_POST['permissions_role']));
$techlevel = null;
if(array_key_exists('techlevel', $_POST))
$techlevel = intval($_POST['techlevel']);
set_config('system', 'server_role', $server_role);
set_config('system', 'feed_contacts', $feed_contacts);
set_config('system', 'delivery_interval', $delivery_interval);
set_config('system', 'delivery_batch_count', $delivery_batch_count);
set_config('system', 'poll_interval', $poll_interval);
set_config('system', 'maxloadavg', $maxloadavg);
set_config('system', 'frontpage', $frontpage);
set_config('system', 'sellpage', $site_sellpage);
set_config('system', 'workflow_channel_next', $first_page);
set_config('system', 'site_location', $site_location);
set_config('system', 'mirror_frontpage', $mirror_frontpage);
set_config('system', 'sitename', $sitename);
set_config('system', 'login_on_homepage', $login_on_homepage);
set_config('system', 'enable_context_help', $enable_context_help);
set_config('system', 'verify_email', $verify_email);
set_config('system', 'default_expire_days', $default_expire_days);
set_config('system', 'active_expire_days', $active_expire_days);
set_config('system', 'reply_address', $reply_address);
set_config('system', 'from_email', $from_email);
set_config('system', 'from_email_name' , $from_email_name);
set_config('system', 'imagick_convert_path' , $imagick_path);
set_config('system', 'thumbnail_security' , $thumbnail_security);
set_config('system', 'default_permissions_role', $permissions_role);
set_config('system', 'pubstream_incl',$pub_incl);
set_config('system', 'pubstream_excl',$pub_excl);
set_config('system', 'techlevel_lock', $techlevel_lock);
if(! is_null($techlevel))
set_config('system', 'techlevel', $techlevel);
@@ -101,15 +136,16 @@ class Site {
set_config('system','siteinfo',$siteinfo);
set_config('system', 'language', $language);
set_config('system', 'theme', $theme);
if ( $theme_mobile === '---' ) {
del_config('system', 'mobile_theme');
} else {
set_config('system', 'mobile_theme', $theme_mobile);
}
// if ( $theme_mobile === '---' ) {
// del_config('system', 'mobile_theme');
// } else {
// set_config('system', 'mobile_theme', $theme_mobile);
// }
// set_config('system','site_channel', $site_channel);
set_config('system','maximagesize', $maximagesize);
set_config('system','register_policy', $register_policy);
set_config('system','minimum_age', $minimum_age);
set_config('system','invitation_only', $invite_only);
set_config('system','access_policy', $access_policy);
set_config('system','account_abandon_days', $abandon_days);
@@ -117,6 +153,9 @@ class Site {
set_config('system','allowed_sites', $allowed_sites);
set_config('system','publish_all', $force_publish);
set_config('system','disable_discover_tab', $disable_discover_tab);
set_config('system','site_firehose', $site_firehose);
set_config('system','open_pubstream', $open_pubstream);
set_config('system','force_queue_threshold', $force_queue);
if ($global_directory == '') {
del_config('system', 'directory_submit_url');
} else {
@@ -195,9 +234,10 @@ class Site {
$realm = get_directory_realm();
// directory server should not be set or settable unless we are a directory client
// avoid older redmatrix servers which don't have modern encryption
if($dirmode == DIRECTORY_MODE_NORMAL) {
$x = q("select site_url from site where site_flags in (%d,%d) and site_realm = '%s'",
$x = q("select site_url from site where site_flags in (%d,%d) and site_realm = '%s' and site_dead = 0 and site_project != 'redmatrix'",
intval(DIRECTORY_MODE_SECONDARY),
intval(DIRECTORY_MODE_PRIMARY),
dbesc($realm)
@@ -237,18 +277,13 @@ class Site {
);
$discover_tab = get_config('system','disable_discover_tab');
// $disable public streams by default
if($discover_tab === false)
$discover_tab = 1;
// now invert the logic for the setting.
$discover_tab = (1 - $discover_tab);
$server_roles = [
'basic' => t('Basic/Minimal Social Networking'),
'standard' => t('Standard Configuration (default)'),
'pro' => t('Professional')
];
$techlevels = [
'0' => t('Beginner/Basic'),
'1' => t('Novice - not skilled but willing to learn'),
@@ -258,6 +293,12 @@ class Site {
'5' => t('Wizard - I probably know more than you do')
];
$perm_roles = \Zotlabs\Access\PermissionRoles::roles();
$default_role = get_config('system','default_permissions_role','social');
$role = array('permissions_role' , t('Default permission role for new accounts'), $default_role, t('This role will be used for the first channel created after registration.'),$perm_roles);
$homelogin = get_config('system','login_on_homepage');
$enable_context_help = get_config('system','enable_context_help');
@@ -275,25 +316,25 @@ class Site {
// name, label, value, help string, extra data...
'$sitename' => array('sitename', t("Site name"), htmlspecialchars(get_config('system','sitename'), ENT_QUOTES, 'UTF-8'),''),
'$server_role' => array('server_role', t("Server Configuration/Role"), get_config('system','server_role'),'',$server_roles),
'$techlevel' => [ 'techlevel', t('Site default technical skill level'), get_config('system','techlevel'), t('Used to provide a member experience matched to technical comfort level'), $techlevels ],
'$techlock' => [ 'techlock', t('Lock the technical skill level setting'), get_config('system','techlevel_lock'), t('Members can set their own technical comfort level by default') ],
'$banner' => array('banner', t("Banner/Logo"), $banner, ""),
'$banner' => array('banner', t("Banner/Logo"), $banner, t('Unfiltered HTML/CSS/JS is allowed')),
'$admininfo' => array('admininfo', t("Administrator Information"), $admininfo, t("Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here")),
'$siteinfo' => array('siteinfo', t('Site Information'), get_config('system','siteinfo'), t("Publicly visible description of this site. Displayed on siteinfo page. BBCode can be used here")),
'$language' => array('language', t("System language"), get_config('system','language'), "", $lang_choices),
'$theme' => array('theme', t("System theme"), get_config('system','theme'), t("Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"), $theme_choices),
'$theme_mobile' => array('theme_mobile', t("Mobile system theme"), get_config('system','mobile_theme'), t("Theme for mobile devices"), $theme_choices_mobile),
// '$theme_mobile' => array('theme_mobile', t("Mobile system theme"), get_config('system','mobile_theme'), t("Theme for mobile devices"), $theme_choices_mobile),
// '$site_channel' => array('site_channel', t("Channel to use for this website's static pages"), get_config('system','site_channel'), t("Site Channel")),
'$feed_contacts' => array('feed_contacts', t('Allow Feeds as Connections'),get_config('system','feed_contacts'),t('(Heavy system resource usage)')),
'$maximagesize' => array('maximagesize', t("Maximum image size"), intval(get_config('system','maximagesize')), t("Maximum size in bytes of uploaded images. Default is 0, which means no limits.")),
'$register_policy' => array('register_policy', t("Does this site allow new member registration?"), get_config('system','register_policy'), "", $register_choices),
'$invite_only' => array('invite_only', t("Invitation only"), get_config('system','invitation_only'), t("Only allow new member registrations with an invitation code. Above register policy must be set to Yes.")),
'$minimum_age' => array('minimum_age', t("Minimum age"), (x(get_config('system','minimum_age'))?get_config('system','minimum_age'):13), t("Minimum age (in years) for who may register on this site.")),
'$access_policy' => array('access_policy', t("Which best describes the types of account offered by this hub?"), get_config('system','access_policy'), "This is displayed on the public server site list.", $access_choices),
'$register_text' => array('register_text', t("Register text"), htmlspecialchars(get_config('system','register_text'), ENT_QUOTES, 'UTF-8'), t("Will be displayed prominently on the registration page.")),
'$role' => $role,
'$frontpage' => array('frontpage', t("Site homepage to show visitors (default: login box)"), get_config('system','frontpage'), t("example: 'public' to show public stream, 'page/sys/home' to show a system webpage called 'home' or 'include:home.html' to include a file.")),
'$mirror_frontpage' => array('mirror_frontpage', t("Preserve site homepage URL"), get_config('system','mirror_frontpage'), t('Present the site homepage in a frame at the original location instead of redirecting')),
'$abandon_days' => array('abandon_days', t('Accounts abandoned after x days'), get_config('system','account_abandon_days'), t('Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit.')),
@@ -301,9 +342,19 @@ class Site {
'$verify_email' => array('verify_email', t("Verify Email Addresses"), get_config('system','verify_email'), t("Check to verify email addresses used in account registration (recommended).")),
'$force_publish' => array('publish_all', t("Force publish"), get_config('system','publish_all'), t("Check to force all profiles on this site to be listed in the site directory.")),
'$disable_discover_tab' => array('disable_discover_tab', t('Import Public Streams'), $discover_tab, t('Import and allow access to public content pulled from other sites. Warning: this content is unmoderated.')),
'$site_firehose' => array('site_firehose', t('Site only Public Streams'), get_config('system','site_firehose'), t('Allow access to public content originating only from this site if Imported Public Streams are disabled.')),
'$open_pubstream' => array('open_pubstream', t('Allow anybody on the internet to access the Public streams'), get_config('system','open_pubstream',1), t('Disable to require authentication before viewing. Warning: this content is unmoderated.')),
'$incl' => array('pub_incl',t('Only import Public stream posts with this text'), get_config('system','pubstream_incl'),t('words one per line or #tags or /patterns/ or lang=xx, leave blank to import all posts')),
'$excl' => array('pub_excl',t('Do not import Public stream posts with this text'), get_config('system','pubstream_excl'),t('words one per line or #tags or /patterns/ or lang=xx, leave blank to import all posts')),
'$login_on_homepage' => array('login_on_homepage', t("Login on Homepage"),((intval($homelogin) || $homelogin === false) ? 1 : '') , t("Present a login box to visitors on the home page if no other content has been configured.")),
'$enable_context_help' => array('enable_context_help', t("Enable context help"),((intval($enable_context_help) === 1 || $enable_context_help === false) ? 1 : 0) , t("Display contextual help for the current page when the help button is pressed.")),
'$reply_address' => [ 'reply_address', t('Reply-to email address for system generated email.'), get_config('system','reply_address','noreply@' . \App::get_hostname()),'' ],
'$from_email' => [ 'from_email', t('Sender (From) email address for system generated email.'), get_config('system','from_email','Administrator@' . \App::get_hostname()),'' ],
'$from_email_name' => [ 'from_email_name', t('Name of email sender for system generated email.'), get_config('system','from_email_name',\Zotlabs\Lib\System::get_site_name()),'' ],
'$directory_server' => (($dir_choices) ? array('directory_server', t("Directory Server URL"), get_config('system','directory_server'), t("Default directory server"), $dir_choices) : null),
'$proxyuser' => array('proxyuser', t("Proxy user"), get_config('system','proxyuser'), ""),
@@ -311,9 +362,20 @@ class Site {
'$timeout' => array('timeout', t("Network timeout"), (x(get_config('system','curl_timeout'))?get_config('system','curl_timeout'):60), t("Value is in seconds. Set to 0 for unlimited (not recommended).")),
'$delivery_interval' => array('delivery_interval', t("Delivery interval"), (x(get_config('system','delivery_interval'))?get_config('system','delivery_interval'):2), t("Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers.")),
'$delivery_batch_count' => array('delivery_batch_count', t('Deliveries per process'),(x(get_config('system','delivery_batch_count'))?get_config('system','delivery_batch_count'):1), t("Number of deliveries to attempt in a single operating system process. Adjust if necessary to tune system performance. Recommend: 1-5.")),
'$force_queue' => array('force_queue', t("Queue Threshold"), get_config('system','force_queue_threshold',3000), t("Always defer immediate delivery if queue contains more than this number of entries.")),
'$poll_interval' => array('poll_interval', t("Poll interval"), (x(get_config('system','poll_interval'))?get_config('system','poll_interval'):2), t("Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval.")),
'$imagick_path' => array('imagick_path', t("Path to ImageMagick convert program"), get_config('system','imagick_convert_path'), t("If set, use this program to generate photo thumbnails for huge images ( > 4000 pixels in either dimension), otherwise memory exhaustion may occur. Example: /usr/bin/convert")),
'$thumbnail_security' => array('thumbnail_security', t("Allow SVG thumbnails in file browser"), get_config('system','thumbnail_security',0), t("WARNING: SVG images may contain malicious code.")),
'$maxloadavg' => array('maxloadavg', t("Maximum Load Average"), ((intval(get_config('system','maxloadavg')) > 0)?get_config('system','maxloadavg'):50), t("Maximum system load before delivery and poll processes are deferred - default 50.")),
'$default_expire_days' => array('default_expire_days', t('Expiration period in days for imported (grid/network) content'), intval(get_config('system','default_expire_days')), t('0 for no expiration of imported content')),
'$active_expire_days' => array('active_expire_days', t('Do not expire any posts which have comments less than this many days ago'), intval(get_config('system','active_expire_days',7)), ''),
'$sellpage' => array('site_sellpage', t('Public servers: Optional landing (marketing) webpage for new registrants'), get_config('system','sellpage',''), sprintf( t('Create this page first. Default is %s/register'),z_root())),
'$first_page' => array('first_page', t('Page to display after creating a new channel'), get_config('system','workflow_channel_next','profiles'), t('Default: profiles')),
'$location' => array('site_location', t('Optional: site location'), get_config('system','site_location',''), t('Region or country')),
'$form_security_token' => get_form_security_token("admin_site"),
));
}

View File

@@ -2,38 +2,41 @@
namespace Zotlabs\Module\Admin;
use \Michelf\MarkdownExtra;
/**
* @brief Admin area theme settings.
*/
class Themes {
/**
* @brief
*
*/
function post() {
$theme = argv(2);
if (is_file("view/theme/$theme/php/config.php")){
require_once("view/theme/$theme/php/config.php");
// fixme add parent theme if derived
if (function_exists("theme_admin_post")){
/// @FIXME add parent theme if derived
if (function_exists('theme_admin_post')){
theme_admin_post($a);
}
}
info(t('Theme settings updated.'));
if(is_ajax())
if(is_ajax())
return;
goaway(z_root() . '/admin/themes/' . $theme );
}
/**
* @brief Themes admin page.
*
* @return string
* @return string with parsed HTML
*/
function get(){
$allowed_themes_str = get_config('system', 'allowed_themes');
$allowed_themes_raw = explode(',', $allowed_themes_str);
$allowed_themes = array();
@@ -41,7 +44,7 @@ class Themes {
foreach($allowed_themes_raw as $x)
if(strlen(trim($x)))
$allowed_themes[] = trim($x);
$themes = array();
$files = glob('view/theme/*');
if($files) {
@@ -53,56 +56,55 @@ class Themes {
$themes[] = array('name' => $f, 'experimental' => $is_experimental, 'supported' => $is_supported, 'allowed' => $is_allowed);
}
}
if(! count($themes)) {
notice( t('No themes found.'));
return '';
}
/*
* Single theme
*/
if (\App::$argc == 3){
$theme = \App::$argv[2];
if(! is_dir("view/theme/$theme")){
notice( t("Item not found.") );
return '';
}
if (x($_GET,"a") && $_GET['a']=="t"){
check_form_security_token_redirectOnErr('/admin/themes', 'admin_themes', 't');
// Toggle theme status
$this->toggle_theme($themes, $theme, $result);
$s = $this->rebuild_theme_table($themes);
if($result)
info( sprintf('Theme %s enabled.', $theme));
else
info( sprintf('Theme %s disabled.', $theme));
set_config('system', 'allowed_themes', $s);
goaway(z_root() . '/admin/themes' );
}
// display theme details
require_once('library/markdown.php');
if ($this->theme_status($themes,$theme)) {
$status="on"; $action= t("Disable");
} else {
$status="off"; $action= t("Enable");
}
$readme=Null;
if (is_file("view/theme/$theme/README.md")){
$readme = file_get_contents("view/theme/$theme/README.md");
$readme = Markdown($readme);
$readme = MarkdownExtra::defaultTransform($readme);
} else if (is_file("view/theme/$theme/README")){
$readme = "<pre>". file_get_contents("view/theme/$theme/README") ."</pre>";
$readme = '<pre>'. file_get_contents("view/theme/$theme/README") .'</pre>';
}
$admin_form = '';
if (is_file("view/theme/$theme/php/config.php")){
require_once("view/theme/$theme/php/config.php");
@@ -110,11 +112,11 @@ class Themes {
$admin_form = theme_admin($a);
}
}
$screenshot = array( get_theme_screenshot($theme), t('Screenshot'));
if(! stristr($screenshot[0],$theme))
$screenshot = null;
$t = get_markup_template('admin_plugins_details.tpl');
return replace_macros($t, array(
'$title' => t('Administration'),
@@ -122,7 +124,7 @@ class Themes {
'$toggle' => t('Toggle'),
'$settings' => t('Settings'),
'$baseurl' => z_root(),
'$plugin' => $theme,
'$status' => $status,
'$action' => $action,
@@ -133,22 +135,22 @@ class Themes {
'$str_maintainer' => t('Maintainer: '),
'$screenshot' => $screenshot,
'$readme' => $readme,
'$form_security_token' => get_form_security_token('admin_themes'),
));
}
/*
* List themes
*/
$xthemes = array();
if($themes) {
foreach($themes as $th) {
$xthemes[] = array($th['name'],(($th['allowed']) ? "on" : "off"), get_theme_info($th['name']));
}
}
$t = get_markup_template('admin_plugins.tpl');
return replace_macros($t, array(
'$title' => t('Administration'),
@@ -162,13 +164,14 @@ class Themes {
'$form_security_token' => get_form_security_token('admin_themes'),
));
}
/**
* @param array $themes
* @param string $th
* @param int $result
* @brief Toggle a theme.
*
* @param array &$themes
* @param[in] string $th
* @param[out] int &$result
*/
function toggle_theme(&$themes, $th, &$result) {
for($x = 0; $x < count($themes); $x ++) {
@@ -184,7 +187,7 @@ class Themes {
}
}
}
/**
* @param array $themes
* @param string $th
@@ -203,8 +206,7 @@ class Themes {
}
return 0;
}
/**
* @param array $themes
* @return string
@@ -222,12 +224,5 @@ class Themes {
}
return $o;
}
}

View File

@@ -39,10 +39,12 @@ class Api extends \Zotlabs\Web\Controller {
// get consumer/client from request token
try {
$request = OAuth1Request::from_request();
$request = \OAuth1Request::from_request();
}
catch(\Exception $e) {
echo "<pre>"; var_dump($e); killme();
logger('OAuth exception: ' . print_r($e,true));
// echo "<pre>"; var_dump($e);
killme();
}
@@ -52,7 +54,7 @@ class Api extends \Zotlabs\Web\Controller {
if (is_null($app))
return "Invalid request. Unknown token.";
$consumer = new OAuth1Consumer($app['client_id'], $app['pw'], $app['redirect_uri']);
$consumer = new \OAuth1Consumer($app['client_id'], $app['pw'], $app['redirect_uri']);
$verifier = md5($app['secret'] . local_channel());
set_config('oauth', $verifier, local_channel());
@@ -63,7 +65,7 @@ class Api extends \Zotlabs\Web\Controller {
$glue = '?';
if(strstr($consumer->callback_url,$glue))
$glue = '?';
goaway($consumer->callback_url . $glue . "oauth_token=" . OAuth1Util::urlencode_rfc3986($params['oauth_token']) . "&oauth_verifier=" . OAuth1Util::urlencode_rfc3986($verifier));
goaway($consumer->callback_url . $glue . "oauth_token=" . \OAuth1Util::urlencode_rfc3986($params['oauth_token']) . "&oauth_verifier=" . \OAuth1Util::urlencode_rfc3986($verifier));
killme();
}

View File

@@ -25,6 +25,7 @@ class Appman extends \Zotlabs\Web\Controller {
'photo' => escape_tags($_REQUEST['photo']),
'version' => escape_tags($_REQUEST['version']),
'price' => escape_tags($_REQUEST['price']),
'page' => escape_tags($_REQUEST['page']),
'requires' => escape_tags($_REQUEST['requires']),
'system' => intval($_REQUEST['system']),
'plugin' => escape_tags($_REQUEST['plugin']),
@@ -64,7 +65,11 @@ class Appman extends \Zotlabs\Web\Controller {
}
if($_POST['feature']) {
Zlib\Apps::app_feature(local_channel(),$papp);
Zlib\Apps::app_feature(local_channel(), $papp, $_POST['feature']);
}
if($_POST['pin']) {
Zlib\Apps::app_feature(local_channel(), $papp, $_POST['pin']);
}
if($_SESSION['return_url'])
@@ -84,6 +89,20 @@ class Appman extends \Zotlabs\Web\Controller {
}
$channel = \App::get_channel();
if(argc() > 2) {
if(argv(2) === 'moveup') {
Zlib\Apps::moveup(local_channel(),argv(1));
}
if(argv(2) === 'movedown') {
Zlib\Apps::movedown(local_channel(),argv(1));
}
goaway(z_root() . '/apporder');
}
$app = null;
$embed = null;
if($_REQUEST['appid']) {

View File

@@ -0,0 +1,51 @@
<?php
namespace Zotlabs\Module;
use \Zotlabs\Lib as Zlib;
class Apporder extends \Zotlabs\Web\Controller {
function post() {
}
function get() {
if(! local_channel())
return;
nav_set_selected('Order Apps');
$syslist = array();
$list = Zlib\Apps::app_list(local_channel(), false, ['nav_featured_app', 'nav_pinned_app']);
if($list) {
foreach($list as $li) {
$syslist[] = Zlib\Apps::app_encode($li);
}
}
Zlib\Apps::translate_system_apps($syslist);
usort($syslist,'Zotlabs\\Lib\\Apps::app_name_compare');
$syslist = Zlib\Apps::app_order(local_channel(),$syslist);
foreach($syslist as $app) {
if(strpos($app['categories'],'nav_pinned_app') !== false) {
$navbar_apps[] = Zlib\Apps::app_render($app,'nav-order');
}
else {
$nav_apps[] = Zlib\Apps::app_render($app,'nav-order');
}
}
return replace_macros(get_markup_template('apporder.tpl'),
[
'$header' => [t('Change Order of Pinned Navbar Apps'), t('Change Order of App Tray Apps')],
'$desc' => [t('Use arrows to move the corresponding app left (top) or right (bottom) in the navbar'), t('Use arrows to move the corresponding app up or down in the app tray')],
'$nav_apps' => $nav_apps,
'$navbar_apps' => $navbar_apps
]
);
}
}

View File

@@ -7,12 +7,16 @@ use \Zotlabs\Lib as Zlib;
class Apps extends \Zotlabs\Web\Controller {
function get() {
nav_set_selected('Apps');
if(argc() == 2 && argv(1) == 'edit')
$mode = 'edit';
else
$mode = 'list';
$available = ((argc() == 2 && argv(1) === 'available') ? true : false);
$_SESSION['return_url'] = \App::$query_string;
$apps = array();
@@ -20,7 +24,8 @@ class Apps extends \Zotlabs\Web\Controller {
if(local_channel()) {
Zlib\Apps::import_system_apps();
$syslist = array();
$list = Zlib\Apps::app_list(local_channel(), (($mode == 'edit') ? true : false), $_GET['cat']);
$cat = ((array_key_exists('cat',$_GET) && $_GET['cat']) ? [ escape_tags($_GET['cat']) ] : '');
$list = Zlib\Apps::app_list((($available) ? 0 : local_channel()), (($mode == 'edit') ? true : false), $cat);
if($list) {
foreach($list as $x) {
$syslist[] = Zlib\Apps::app_encode($x);
@@ -36,16 +41,16 @@ class Apps extends \Zotlabs\Web\Controller {
// logger('apps: ' . print_r($syslist,true));
foreach($syslist as $app) {
$apps[] = Zlib\Apps::app_render($app,$mode);
$apps[] = Zlib\Apps::app_render($app,(($available) ? 'install' : $mode));
}
return replace_macros(get_markup_template('myapps.tpl'), array(
'$sitename' => get_config('system','sitename'),
'$cat' => ((array_key_exists('cat',$_GET) && $_GET['cat']) ? escape_tags($_GET['cat']) : ''),
'$cat' => $cat,
'$title' => t('Apps'),
'$apps' => $apps,
'$authed' => ((local_channel()) ? true : false),
'$manage' => t('Manage apps'),
'$manage' => (($available) ? '' : t('Manage apps')),
'$create' => (($mode == 'edit') ? t('Create new app') : '')
));

View File

@@ -0,0 +1,139 @@
<?php
namespace Zotlabs\Module;
require_once('include/channel.php');
require_once('include/acl_selectors.php');
require_once('include/conversation.php');
class Article_edit extends \Zotlabs\Web\Controller {
function get() {
// Figure out which post we're editing
$post_id = ((argc() > 1) ? intval(argv(1)) : 0);
if(! $post_id) {
notice( t('Item not found') . EOL);
return;
}
$itm = q("SELECT * FROM item WHERE id = %d and item_type = %d LIMIT 1",
intval($post_id),
intval(ITEM_TYPE_ARTICLE)
);
if($itm) {
$item_id = q("select * from iconfig where cat = 'system' and k = 'ARTICLE' and iid = %d limit 1",
intval($itm[0]['id'])
);
if($item_id)
$card_title = $item_id[0]['v'];
}
else {
notice( t('Item not found') . EOL);
return;
}
$owner = $itm[0]['uid'];
$uid = local_channel();
$observer = \App::get_observer();
$channel = channelx_by_n($owner);
if(! $channel) {
notice( t('Channel not found.') . EOL);
return;
}
$ob_hash = (($observer) ? $observer['xchan_hash'] : '');
if(! perm_is_allowed($owner,$ob_hash,'write_pages')) {
notice( t('Permission denied.') . EOL);
return;
}
$is_owner = (($uid && $uid == $owner) ? true : false);
$o = '';
$category = '';
$catsenabled = ((feature_enabled($owner,'categories')) ? 'categories' : '');
if ($catsenabled){
$itm = fetch_post_tags($itm);
$cats = get_terms_oftype($itm[0]['term'], TERM_CATEGORY);
foreach ($cats as $cat) {
if (strlen($category))
$category .= ', ';
$category .= $cat['term'];
}
}
if($itm[0]['attach']) {
$j = json_decode($itm[0]['attach'],true);
if($j) {
foreach($j as $jj) {
$itm[0]['body'] .= "\n" . '[attachment]' . basename($jj['href']) . ',' . $jj['revision'] . '[/attachment]' . "\n";
}
}
}
$mimetype = $itm[0]['mimetype'];
$content = $itm[0]['body'];
$rp = 'articles/' . $channel['channel_address'];
$x = array(
'nickname' => $channel['channel_address'],
'bbco_autocomplete'=> 'bbcode',
'return_path' => $rp,
'webpage' => ITEM_TYPE_ARTICLE,
'button' => t('Edit'),
'writefiles' => perm_is_allowed($owner, get_observer_hash(), 'write_pages'),
'weblink' => t('Insert web link'),
'hide_voting' => false,
'hide_future' => false,
'hide_location' => false,
'hide_expire' => false,
'showacl' => true,
'acl' => populate_acl($itm[0],false,\Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_pages')),
'permissions' => $itm[0],
'lockstate' => (($itm[0]['allow_cid'] || $itm[0]['allow_gid'] || $itm[0]['deny_cid'] || $itm[0]['deny_gid']) ? 'lock' : 'unlock'),
'ptyp' => $itm[0]['type'],
'mimeselect' => false,
'mimetype' => $itm[0]['mimetype'],
'body' => undo_post_tagging($content),
'post_id' => $post_id,
'visitor' => true,
'title' => htmlspecialchars($itm[0]['title'],ENT_COMPAT,'UTF-8'),
'placeholdertitle' => t('Title (optional)'),
'pagetitle' => $card_title,
'profile_uid' => (intval($channel['channel_id'])),
'catsenabled' => $catsenabled,
'category' => $category,
'bbcode' => (($mimetype == 'text/bbcode') ? true : false)
);
$editor = status_editor($a, $x);
$o .= replace_macros(get_markup_template('edpost_head.tpl'), array(
'$title' => t('Edit Article'),
'$delete' => ((($itm[0]['author_xchan'] === $ob_hash) || ($itm[0]['owner_xchan'] === $ob_hash)) ? t('Delete') : false),
'$id' => $itm[0]['id'],
'$cancel' => t('Cancel'),
'$editor' => $editor
));
return $o;
}
}

200
Zotlabs/Module/Articles.php Normal file
View File

@@ -0,0 +1,200 @@
<?php
namespace Zotlabs\Module;
require_once('include/channel.php');
require_once('include/conversation.php');
require_once('include/acl_selectors.php');
class Articles extends \Zotlabs\Web\Controller {
function init() {
if(argc() > 1)
$which = argv(1);
else
return;
profile_load($which);
}
function get($update = 0, $load = false) {
if(observer_prohibited(true)) {
return login();
}
if(! \App::$profile) {
notice( t('Requested profile is not available.') . EOL );
\App::$error = 404;
return;
}
if(! feature_enabled(\App::$profile_uid,'articles')) {
return;
}
nav_set_selected(t('Articles'));
head_add_link([
'rel' => 'alternate',
'type' => 'application/json+oembed',
'href' => z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . \App::$query_string),
'title' => 'oembed'
]);
$category = (($_REQUEST['cat']) ? escape_tags(trim($_REQUEST['cat'])) : '');
if($category) {
$sql_extra2 .= protect_sprintf(term_item_parent_query(\App::$profile['profile_uid'],'item', $category, TERM_CATEGORY));
}
$which = argv(1);
$selected_card = ((argc() > 2) ? argv(2) : '');
$_SESSION['return_url'] = \App::$query_string;
$uid = local_channel();
$owner = \App::$profile_uid;
$observer = \App::get_observer();
$ob_hash = (($observer) ? $observer['xchan_hash'] : '');
if(! perm_is_allowed($owner,$ob_hash,'view_pages')) {
notice( t('Permission denied.') . EOL);
return;
}
$is_owner = ($uid && $uid == $owner);
$channel = channelx_by_n($owner);
if($channel) {
$channel_acl = array(
'allow_cid' => $channel['channel_allow_cid'],
'allow_gid' => $channel['channel_allow_gid'],
'deny_cid' => $channel['channel_deny_cid'],
'deny_gid' => $channel['channel_deny_gid']
);
}
else {
$channel_acl = [ 'allow_cid' => '', 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '' ];
}
if(perm_is_allowed($owner,$ob_hash,'write_pages')) {
$x = [
'webpage' => ITEM_TYPE_ARTICLE,
'is_owner' => true,
'content_label' => t('Add Article'),
'button' => t('Create'),
'nickname' => $channel['channel_address'],
'lockstate' => (($channel['channel_allow_cid'] || $channel['channel_allow_gid']
|| $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'),
'acl' => (($is_owner) ? populate_acl($channel_acl, false,
\Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_pages')) : ''),
'permissions' => $channel_acl,
'showacl' => (($is_owner) ? true : false),
'visitor' => true,
'body' => '[summary][/summary]',
'hide_location' => false,
'hide_voting' => false,
'profile_uid' => intval($owner),
'mimetype' => 'text/bbcode',
'mimeselect' => false,
'layoutselect' => false,
'expanded' => false,
'novoting' => false,
'catsenabled' => feature_enabled($owner,'categories'),
'bbco_autocomplete' => 'bbcode',
'bbcode' => true
];
if($_REQUEST['title'])
$x['title'] = $_REQUEST['title'];
if($_REQUEST['body'])
$x['body'] = $_REQUEST['body'];
$editor = status_editor($a,$x);
}
else {
$editor = '';
}
$itemspage = get_pconfig(local_channel(),'system','itemspage');
\App::set_pager_itemspage(((intval($itemspage)) ? $itemspage : 20));
$pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(\App::$pager['itemspage']), intval(\App::$pager['start']));
$sql_extra = item_permissions_sql($owner);
$sql_item = '';
if($selected_card) {
$r = q("select * from iconfig where iconfig.cat = 'system' and iconfig.k = 'ARTICLE' and iconfig.v = '%s' limit 1",
dbesc($selected_card)
);
if($r) {
$sql_item = "and item.id = " . intval($r[0]['iid']) . " ";
}
}
$r = q("select * from item
where item.uid = %d and item_type = %d
$sql_extra $sql_item order by item.created desc $pager_sql",
intval($owner),
intval(ITEM_TYPE_ARTICLE)
);
$item_normal = " and item.item_hidden = 0 and item.item_type in (0,7) and item.item_deleted = 0
and item.item_unpublished = 0 and item.item_delayed = 0 and item.item_pending_remove = 0
and item.item_blocked = 0 ";
if($r) {
$pager_total = count($r);
$parents_str = ids_to_querystr($r,'id');
$items = q("SELECT item.*, item.id AS item_id
FROM item
WHERE item.uid = %d $item_normal
AND item.parent IN ( %s )
$sql_extra $sql_extra2 ",
intval(\App::$profile['profile_uid']),
dbesc($parents_str)
);
if($items) {
xchan_query($items);
$items = fetch_post_tags($items, true);
$items = conv_sort($items,'updated');
}
else
$items = [];
}
$mode = 'articles';
if(get_pconfig(local_channel(),'system','articles_list_mode') && (! $selected_card))
$page_mode = 'pager_list';
else
$page_mode = 'traditional';
$content = conversation($items,$mode,false,$page_mode);
$o = replace_macros(get_markup_template('cards.tpl'), [
'$title' => t('Articles'),
'$editor' => $editor,
'$content' => $content,
'$pager' => alt_pager($pager_total)
]);
return $o;
}
}

View File

@@ -31,7 +31,7 @@ class Attach extends \Zotlabs\Web\Controller {
$unsafe_types = array('text/html','text/css','application/javascript');
if(in_array($r['data']['filetype'],$unsafe_types)) {
if(in_array($r['data']['filetype'],$unsafe_types) && (! channel_codeallowed($r['data']['uid']))) {
header('Content-type: text/plain');
}
else {

View File

@@ -0,0 +1,96 @@
<?php
namespace Zotlabs\Module;
use Zotlabs\Identity\OAuth2Storage;
class Authorize extends \Zotlabs\Web\Controller {
function get() {
if (!local_channel()) {
return login();
} else {
// TODO: Fully implement the dynamic client registration protocol:
// OpenID Connect Dynamic Client Registration 1.0 Client Metadata
// http://openid.net/specs/openid-connect-registration-1_0.html
$app = array(
'name' => (x($_REQUEST, 'client_name') ? urldecode($_REQUEST['client_name']) : t('Unknown App')),
'icon' => (x($_REQUEST, 'logo_uri') ? urldecode($_REQUEST['logo_uri']) : z_root() . '/images/icons/plugin.png'),
'url' => (x($_REQUEST, 'client_uri') ? urldecode($_REQUEST['client_uri']) : ''),
);
$o .= replace_macros(get_markup_template('oauth_authorize.tpl'), array(
'$title' => t('Authorize'),
'$authorize' => sprintf( t('Do you authorize the app %s to access your channel data?'), '<a style="float: none;" href="' . $app['url'] . '">' . $app['name'] . '</a> '),
'$app' => $app,
'$yes' => t('Allow'),
'$no' => t('Deny'),
'$client_id' => (x($_REQUEST, 'client_id') ? $_REQUEST['client_id'] : ''),
'$redirect_uri' => (x($_REQUEST, 'redirect_uri') ? $_REQUEST['redirect_uri'] : ''),
'$state' => (x($_REQUEST, 'state') ? $_REQUEST['state'] : ''),
));
return $o;
}
}
function post() {
if (! local_channel()) {
return;
}
$storage = new OAuth2Storage(\DBA::$dba->db);
$s = new \Zotlabs\Identity\OAuth2Server($storage);
// TODO: The automatic client registration protocol below should adhere more
// closely to "OAuth 2.0 Dynamic Client Registration Protocol" defined
// at https://tools.ietf.org/html/rfc7591
// If no client_id was provided, generate a new one.
if (x($_POST, 'client_id')) {
$client_id = $_POST['client_id'];
} else {
$client_id = $_POST['client_id'] = random_string(16);
}
// If no redirect_uri was provided, generate a fake one.
if (x($_POST, 'redirect_uri')) {
$redirect_uri = $_POST['redirect_uri'];
} else {
$redirect_uri = $_POST['redirect_uri'] = 'https://fake.example.com/oauth';
}
$request = \OAuth2\Request::createFromGlobals();
$response = new \OAuth2\Response();
// If the client is not registered, add to the database
if (!$client = $storage->getClientDetails($client_id)) {
$client_secret = random_string(16);
// Client apps are registered per channel
$user_id = local_channel();
$storage->setClientDetails($client_id, $client_secret, $redirect_uri, 'authorization_code', null, $user_id);
}
if (!$client = $storage->getClientDetails($client_id)) {
// There was an error registering the client.
$response->send();
killme();
}
$response->setParameter('client_secret', $client['client_secret']);
// validate the authorize request
if (!$s->validateAuthorizeRequest($request, $response)) {
$response->send();
killme();
}
// print the authorization code if the user has authorized your client
$is_authorized = ($_POST['authorize'] === 'allow');
$s->handleAuthorizeRequest($request, $response, $is_authorized, local_channel());
if ($is_authorized) {
$code = substr($response->getHttpHeader('Location'), strpos($response->getHttpHeader('Location'), 'code=') + 5, 40);
logger('Authorization Code: ' . $code);
}
$response->send();
killme();
}
}

View File

@@ -3,8 +3,6 @@ namespace Zotlabs\Module;
require_once('include/items.php');
require_once('include/conversation.php');
require_once('include/page_widgets.php');
class Block extends \Zotlabs\Web\Controller {

View File

@@ -7,6 +7,9 @@ class Bookmarks extends \Zotlabs\Web\Controller {
function init() {
if(! local_channel())
return;
nav_set_selected('View Bookmarks');
$item_id = intval($_REQUEST['item']);
$burl = trim($_REQUEST['burl']);
@@ -68,7 +71,8 @@ class Bookmarks extends \Zotlabs\Web\Controller {
$channel = \App::get_channel();
$o = profile_tabs($a,true,$channel['channel_address']);
//$o = profile_tabs($a,true,$channel['channel_address']);
$o = '';
$o .= '<div class="generic-content-wrapper-styled">';

View File

@@ -69,6 +69,8 @@ class Cal extends \Zotlabs\Web\Controller {
notice( t('Permissions denied.') . EOL);
return;
}
nav_set_selected('Calendar');
$sql_extra = permissions_sql($channel['channel_id'],get_observer_hash(),'event');
@@ -86,7 +88,8 @@ class Cal extends \Zotlabs\Web\Controller {
$o = '';
$tabs = profile_tabs($a, True, $channel['channel_address']);
//$tabs = profile_tabs($a, True, $channel['channel_address']);
$tabs = '';
$mode = 'view';
$y = 0;

View File

@@ -0,0 +1,139 @@
<?php
namespace Zotlabs\Module;
require_once('include/channel.php');
require_once('include/acl_selectors.php');
require_once('include/conversation.php');
class Card_edit extends \Zotlabs\Web\Controller {
function get() {
// Figure out which post we're editing
$post_id = ((argc() > 1) ? intval(argv(1)) : 0);
if(! $post_id) {
notice( t('Item not found') . EOL);
return;
}
$itm = q("SELECT * FROM item WHERE id = %d and item_type = %d LIMIT 1",
intval($post_id),
intval(ITEM_TYPE_CARD)
);
if($itm) {
$item_id = q("select * from iconfig where cat = 'system' and k = 'CARD' and iid = %d limit 1",
intval($itm[0]['id'])
);
if($item_id)
$card_title = $item_id[0]['v'];
}
else {
notice( t('Item not found') . EOL);
return;
}
$owner = $itm[0]['uid'];
$uid = local_channel();
$observer = \App::get_observer();
$channel = channelx_by_n($owner);
if(! $channel) {
notice( t('Channel not found.') . EOL);
return;
}
$ob_hash = (($observer) ? $observer['xchan_hash'] : '');
if(! perm_is_allowed($owner,$ob_hash,'write_pages')) {
notice( t('Permission denied.') . EOL);
return;
}
$is_owner = (($uid && $uid == $owner) ? true : false);
$o = '';
$category = '';
$catsenabled = ((feature_enabled($owner,'categories')) ? 'categories' : '');
if ($catsenabled){
$itm = fetch_post_tags($itm);
$cats = get_terms_oftype($itm[0]['term'], TERM_CATEGORY);
foreach ($cats as $cat) {
if (strlen($category))
$category .= ', ';
$category .= $cat['term'];
}
}
if($itm[0]['attach']) {
$j = json_decode($itm[0]['attach'],true);
if($j) {
foreach($j as $jj) {
$itm[0]['body'] .= "\n" . '[attachment]' . basename($jj['href']) . ',' . $jj['revision'] . '[/attachment]' . "\n";
}
}
}
$mimetype = $itm[0]['mimetype'];
$content = $itm[0]['body'];
$rp = 'cards/' . $channel['channel_address'];
$x = array(
'nickname' => $channel['channel_address'],
'bbco_autocomplete'=> 'bbcode',
'return_path' => $rp,
'webpage' => ITEM_TYPE_CARD,
'button' => t('Edit'),
'writefiles' => perm_is_allowed($owner, get_observer_hash(), 'write_pages'),
'weblink' => t('Insert web link'),
'hide_voting' => false,
'hide_future' => false,
'hide_location' => false,
'hide_expire' => false,
'showacl' => true,
'acl' => populate_acl($itm[0],false,\Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_pages')),
'permissions' => $itm[0],
'lockstate' => (($itm[0]['allow_cid'] || $itm[0]['allow_gid'] || $itm[0]['deny_cid'] || $itm[0]['deny_gid']) ? 'lock' : 'unlock'),
'ptyp' => $itm[0]['type'],
'mimeselect' => false,
'mimetype' => $itm[0]['mimetype'],
'body' => undo_post_tagging($content),
'post_id' => $post_id,
'visitor' => true,
'title' => htmlspecialchars($itm[0]['title'],ENT_COMPAT,'UTF-8'),
'placeholdertitle' => t('Title (optional)'),
'pagetitle' => $card_title,
'profile_uid' => (intval($channel['channel_id'])),
'catsenabled' => $catsenabled,
'category' => $category,
'bbcode' => (($mimetype == 'text/bbcode') ? true : false)
);
$editor = status_editor($a, $x);
$o .= replace_macros(get_markup_template('edpost_head.tpl'), array(
'$title' => t('Edit Card'),
'$delete' => ((($itm[0]['author_xchan'] === $ob_hash) || ($itm[0]['owner_xchan'] === $ob_hash)) ? t('Delete') : false),
'$id' => $itm[0]['id'],
'$cancel' => t('Cancel'),
'$editor' => $editor
));
return $o;
}
}

203
Zotlabs/Module/Cards.php Normal file
View File

@@ -0,0 +1,203 @@
<?php
namespace Zotlabs\Module;
require_once('include/channel.php');
require_once('include/conversation.php');
require_once('include/acl_selectors.php');
class Cards extends \Zotlabs\Web\Controller {
function init() {
if(argc() > 1)
$which = argv(1);
else
return;
profile_load($which);
}
/**
* {@inheritDoc}
* @see \Zotlabs\Web\Controller::get()
*/
function get($update = 0, $load = false) {
if(observer_prohibited(true)) {
return login();
}
if(! \App::$profile) {
notice( t('Requested profile is not available.') . EOL );
\App::$error = 404;
return;
}
if(! feature_enabled(\App::$profile_uid, 'cards')) {
return;
}
nav_set_selected(t('Cards'));
head_add_link([
'rel' => 'alternate',
'type' => 'application/json+oembed',
'href' => z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . \App::$query_string),
'title' => 'oembed'
]);
$category = (($_REQUEST['cat']) ? escape_tags(trim($_REQUEST['cat'])) : '');
if($category) {
$sql_extra2 .= protect_sprintf(term_item_parent_query(\App::$profile['profile_uid'], 'item', $category, TERM_CATEGORY));
}
$which = argv(1);
$selected_card = ((argc() > 2) ? argv(2) : '');
$_SESSION['return_url'] = \App::$query_string;
$uid = local_channel();
$owner = \App::$profile_uid;
$observer = \App::get_observer();
$ob_hash = (($observer) ? $observer['xchan_hash'] : '');
if(! perm_is_allowed($owner, $ob_hash, 'view_pages')) {
notice( t('Permission denied.') . EOL);
return;
}
$is_owner = ($uid && $uid == $owner);
$channel = channelx_by_n($owner);
if($channel) {
$channel_acl = [
'allow_cid' => $channel['channel_allow_cid'],
'allow_gid' => $channel['channel_allow_gid'],
'deny_cid' => $channel['channel_deny_cid'],
'deny_gid' => $channel['channel_deny_gid']
];
}
else {
$channel_acl = [ 'allow_cid' => '', 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '' ];
}
if(perm_is_allowed($owner, $ob_hash, 'write_pages')) {
$x = [
'webpage' => ITEM_TYPE_CARD,
'is_owner' => true,
'content_label' => t('Add Card'),
'button' => t('Create'),
'nickname' => $channel['channel_address'],
'lockstate' => (($channel['channel_allow_cid'] || $channel['channel_allow_gid']
|| $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'),
'acl' => (($is_owner) ? populate_acl($channel_acl, false,
\Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_pages')) : ''),
'permissions' => $channel_acl,
'showacl' => (($is_owner) ? true : false),
'visitor' => true,
'hide_location' => false,
'hide_voting' => false,
'profile_uid' => intval($owner),
'mimetype' => 'text/bbcode',
'mimeselect' => false,
'layoutselect' => false,
'expanded' => false,
'novoting' => false,
'catsenabled' => feature_enabled($owner, 'categories'),
'bbco_autocomplete' => 'bbcode',
'bbcode' => true
];
if($_REQUEST['title'])
$x['title'] = $_REQUEST['title'];
if($_REQUEST['body'])
$x['body'] = $_REQUEST['body'];
$editor = status_editor($a, $x);
}
else {
$editor = '';
}
$itemspage = get_pconfig(local_channel(),'system','itemspage');
\App::set_pager_itemspage(((intval($itemspage)) ? $itemspage : 20));
$pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(\App::$pager['itemspage']), intval(\App::$pager['start']));
$sql_extra = item_permissions_sql($owner);
$sql_item = '';
if($selected_card) {
$r = q("select * from iconfig where iconfig.cat = 'system' and iconfig.k = 'CARD' and iconfig.v = '%s' limit 1",
dbesc($selected_card)
);
if($r) {
$sql_item = "and item.id = " . intval($r[0]['iid']) . " ";
}
}
$r = q("select * from item
where uid = %d and item_type = %d
$sql_extra $sql_item order by item.created desc $pager_sql",
intval($owner),
intval(ITEM_TYPE_CARD)
);
$item_normal = " and item.item_hidden = 0 and item.item_type in (0,6) and item.item_deleted = 0
and item.item_unpublished = 0 and item.item_delayed = 0 and item.item_pending_remove = 0
and item.item_blocked = 0 ";
$items_result = [];
if($r) {
$pager_total = count($r);
$parents_str = ids_to_querystr($r, 'id');
$items = q("SELECT item.*, item.id AS item_id
FROM item
WHERE item.uid = %d $item_normal
AND item.parent IN ( %s )
$sql_extra $sql_extra2 ",
intval(\App::$profile['profile_uid']),
dbesc($parents_str)
);
if($items) {
xchan_query($items);
$items = fetch_post_tags($items, true);
$items_result = conv_sort($items, 'updated');
}
}
$mode = 'cards';
if(get_pconfig(local_channel(),'system','articles_list_mode') && (! $selected_card))
$page_mode = 'pager_list';
else
$page_mode = 'traditional';
$content = conversation($items_result, $mode, false, $page_mode);
$o = replace_macros(get_markup_template('cards.tpl'), [
'$title' => t('Cards'),
'$editor' => $editor,
'$content' => $content,
'$pager' => alt_pager($pager_total)
]);
return $o;
}
}

1259
Zotlabs/Module/Cdav.php Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,88 @@
<?php
namespace Zotlabs\Module;
class Changeaddr extends \Zotlabs\Web\Controller {
function post() {
if(! local_channel())
return;
if($_SESSION['delegate'])
return;
if((! x($_POST,'qxz_password')) || (! strlen(trim($_POST['qxz_password']))))
return;
if((! x($_POST,'verify')) || (! strlen(trim($_POST['verify']))))
return;
if($_POST['verify'] !== $_SESSION['remove_account_verify'])
return;
$account = \App::get_account();
$channel = \App::get_channel();
$x = account_verify_password($account['account_email'],$_POST['qxz_password']);
if(! ($x && $x['account']))
return;
if($account['account_password_changed'] > NULL_DATE) {
$d1 = datetime_convert('UTC','UTC','now - 48 hours');
if($account['account_password_changed'] > d1) {
notice( t('Channel name changes are not allowed within 48 hours of changing the account password.') . EOL);
return;
}
}
$new_address = trim($_POST['newname']);
if($new_address === $channel['channel_address'])
return;
if($new_address === 'sys') {
notice( t('Reserved nickname. Please choose another.') . EOL);
return;
}
if(check_webbie(array($new_address)) !== $new_address) {
notice( t('Nickname has unsupported characters or is already being used on this site.') . EOL);
return $ret;
}
channel_change_address($channel,$new_address);
goaway(z_root() . '/changeaddr');
}
function get() {
if(! local_channel())
goaway(z_root());
$channel = \App::get_channel();
$hash = random_string();
$_SESSION['remove_account_verify'] = $hash;
$tpl = get_markup_template('channel_rename.tpl');
$o .= replace_macros($tpl, array(
'$basedir' => z_root(),
'$hash' => $hash,
'$title' => t('Change channel nickname/address'),
'$desc' => array(t('WARNING: '), t('Any/all connections on other networks will be lost!')),
'$passwd' => t('Please enter your password for verification:'),
'$newname' => array('newname', t('New channel address'),$channel['channel_address'], ''),
'$submit' => t('Rename Channel')
));
return $o;
}
}

View File

@@ -18,6 +18,9 @@ class Channel extends \Zotlabs\Web\Controller {
function init() {
if(in_array(substr($_GET['search'],0,1),[ '@', '!', '?']))
goaway('search' . '?f=&search=' . $_GET['search']);
$which = null;
if(argc() > 1)
$which = argv(1);
@@ -82,7 +85,9 @@ class Channel extends \Zotlabs\Web\Controller {
$category = ((x($_REQUEST,'cat')) ? $_REQUEST['cat'] : '');
$hashtags = ((x($_REQUEST,'tag')) ? $_REQUEST['tag'] : '');
$order = ((x($_GET,'order')) ? notags($_GET['order']) : 'post');
$static = ((array_key_exists('static',$_REQUEST)) ? intval($_REQUEST['static']) : 0);
$search = ((x($_GET,'search')) ? $_GET['search'] : EMPTY_STR);
$groups = array();
@@ -92,11 +97,6 @@ class Channel extends \Zotlabs\Web\Controller {
// Ensure we've got a profile owner if updating.
\App::$profile['profile_uid'] = \App::$profile_uid = $update;
}
else {
if(\App::$profile['profile_uid'] == local_channel()) {
nav_set_selected('home');
}
}
$is_owner = (((local_channel()) && (\App::$profile['profile_uid'] == local_channel())) ? true : false);
@@ -119,11 +119,16 @@ class Channel extends \Zotlabs\Web\Controller {
if(! $update) {
nav_set_selected('Channel Home');
$static = channel_manual_conv_update(\App::$profile['profile_uid']);
$o .= profile_tabs($a, $is_owner, \App::$profile['channel_address']);
$o .= common_friends_visitor_widget(\App::$profile['profile_uid']);
// search terms header
if($search) {
$o .= replace_macros(get_markup_template("section_title.tpl"),array(
'$title' => t('Search Results For:') . ' ' . htmlspecialchars($search, ENT_COMPAT,'UTF-8')
));
}
if($channel && $is_owner) {
$channel_acl = array(
@@ -155,7 +160,8 @@ class Channel extends \Zotlabs\Web\Controller {
'editor_autocomplete' => true,
'bbco_autocomplete' => 'bbcode',
'bbcode' => true,
'jotnets' => true
'jotnets' => true,
'reset' => t('Reset form')
);
$o .= status_editor($a,$x);
@@ -169,6 +175,7 @@ class Channel extends \Zotlabs\Web\Controller {
*/
$item_normal = item_normal();
$item_normal_update = item_normal_update();
$sql_extra = item_permissions_sql(\App::$profile['profile_uid']);
if(get_pconfig(\App::$profile['profile_uid'],'system','channel_list_mode') && (! $mid))
@@ -180,7 +187,25 @@ class Channel extends \Zotlabs\Web\Controller {
$simple_update = (($update) ? " AND item_unseen = 1 " : '');
\App::$page['htmlhead'] .= "\r\n" . '<link rel="alternate" type="application/json+oembed" href="' . z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . \App::$query_string) . '" title="oembed" />' . "\r\n";
if($search) {
$search = escape_tags($search);
if(strpos($search,'#') === 0) {
$sql_extra .= term_query('item',substr($search,1),TERM_HASHTAG,TERM_COMMUNITYTAG);
}
else {
$sql_extra .= sprintf(" AND item.body like '%s' ",
dbesc(protect_sprintf('%' . $search . '%'))
);
}
}
head_add_link([
'rel' => 'alternate',
'type' => 'application/json+oembed',
'href' => z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . \App::$query_string),
'title' => 'oembed'
]);
if($update && $_SESSION['loadtime'])
$simple_update = " AND (( item_unseen = 1 AND item.changed > '" . datetime_convert('UTC','UTC',$_SESSION['loadtime']) . "' ) OR item.changed > '" . datetime_convert('UTC','UTC',$_SESSION['loadtime']) . "' ) ";
@@ -188,12 +213,12 @@ class Channel extends \Zotlabs\Web\Controller {
$simple_update = '';
if($static && $simple_update)
$simple_update .= " and item_thread_top = 0 and author_xchan = '" . protect_sprintf(get_observer_hash()) . "' ";
$simple_update .= " and author_xchan = '" . protect_sprintf(get_observer_hash()) . "' ";
if(($update) && (! $load)) {
if($mid) {
$r = q("SELECT parent AS item_id from item where mid like '%s' and uid = %d $item_normal
$r = q("SELECT parent AS item_id from item where mid like '%s' and uid = %d $item_normal_update
AND item_wall = 1 $simple_update $sql_extra limit 1",
dbesc($mid . '%'),
intval(\App::$profile['profile_uid'])
@@ -201,9 +226,9 @@ class Channel extends \Zotlabs\Web\Controller {
$_SESSION['loadtime'] = datetime_convert();
}
else {
$r = q("SELECT distinct parent AS item_id, created from item
$r = q("SELECT parent AS item_id from item
left join abook on ( item.owner_xchan = abook.abook_xchan $abook_uids )
WHERE uid = %d $item_normal
WHERE uid = %d $item_normal_update
AND item_wall = 1 $simple_update
AND (abook.abook_blocked = 0 or abook.abook_flags is null)
$sql_extra
@@ -217,28 +242,39 @@ class Channel extends \Zotlabs\Web\Controller {
else {
if(x($category)) {
$sql_extra .= protect_sprintf(term_query('item', $category, TERM_CATEGORY));
$sql_extra2 .= protect_sprintf(term_item_parent_query(\App::$profile['profile_uid'],'item', $category, TERM_CATEGORY));
}
if(x($hashtags)) {
$sql_extra .= protect_sprintf(term_query('item', $hashtags, TERM_HASHTAG, TERM_COMMUNITYTAG));
$sql_extra2 .= protect_sprintf(term_item_parent_query(\App::$profile['profile_uid'],'item', $hashtags, TERM_HASHTAG, TERM_COMMUNITYTAG));
}
if($datequery) {
$sql_extra2 .= protect_sprintf(sprintf(" AND item.created <= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery))));
$order = 'post';
}
if($datequery2) {
$sql_extra2 .= protect_sprintf(sprintf(" AND item.created >= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery2))));
}
if($datequery || $datequery2) {
$sql_extra2 .= " and item.item_thread_top != 0 ";
}
if($order === 'post')
$ordering = "created";
else
$ordering = "commented";
$itemspage = get_pconfig(local_channel(),'system','itemspage');
\App::set_pager_itemspage(((intval($itemspage)) ? $itemspage : 20));
$pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(\App::$pager['itemspage']), intval(\App::$pager['start']));
if($load || ($checkjs->disabled())) {
if($mid) {
$r = q("SELECT parent AS item_id from item where mid = '%s' and uid = %d $item_normal
$r = q("SELECT parent AS item_id from item where mid like '%s' and uid = %d $item_normal
AND item_wall = 1 $sql_extra limit 1",
dbesc($mid),
dbesc($mid . '%'),
intval(\App::$profile['profile_uid'])
);
if (! $r) {
@@ -246,13 +282,13 @@ class Channel extends \Zotlabs\Web\Controller {
}
}
else {
$r = q("SELECT distinct id AS item_id, created FROM item
left join abook on item.author_xchan = abook.abook_xchan
WHERE uid = %d $item_normal
AND item_wall = 1 and item_thread_top = 1
AND (abook_blocked = 0 or abook.abook_flags is null)
$sql_extra $sql_extra2
ORDER BY created DESC $pager_sql ",
$r = q("SELECT DISTINCT item.parent AS item_id, $ordering FROM item
left join abook on ( item.author_xchan = abook.abook_xchan $abook_uids )
WHERE true and item.uid = %d $item_normal
AND (abook.abook_blocked = 0 or abook.abook_flags is null)
AND item.item_wall = 1 AND item.item_thread_top = 1
$sql_extra $sql_extra2
ORDER BY $ordering DESC $pager_sql ",
intval(\App::$profile['profile_uid'])
);
}
@@ -261,7 +297,6 @@ class Channel extends \Zotlabs\Web\Controller {
$r = array();
}
}
if($r) {
$parents_str = ids_to_querystr($r,'item_id');
@@ -277,7 +312,7 @@ class Channel extends \Zotlabs\Web\Controller {
xchan_query($items);
$items = fetch_post_tags($items, true);
$items = conv_sort($items,'created');
$items = conv_sort($items,$ordering);
if($load && $mid && (! count($items))) {
// This will happen if we don't have sufficient permissions
@@ -309,8 +344,8 @@ class Channel extends \Zotlabs\Web\Controller {
'$uid' => ((\App::$profile['profile_uid']) ? \App::$profile['profile_uid'] : '0'),
'$gid' => '0',
'$cid' => '0',
'$cmin' => '0',
'$cmax' => '0',
'$cmin' => '(-1)',
'$cmax' => '(-1)',
'$star' => '0',
'$liked' => '0',
'$conv' => '0',
@@ -320,14 +355,16 @@ class Channel extends \Zotlabs\Web\Controller {
'$fh' => '0',
'$static' => $static,
'$page' => ((\App::$pager['page'] != 1) ? \App::$pager['page'] : 1),
'$search' => '',
'$order' => '',
'$search' => $search,
'$xchan' => '',
'$order' => $order,
'$list' => ((x($_REQUEST,'list')) ? intval($_REQUEST['list']) : 0),
'$file' => '',
'$cats' => (($category) ? $category : ''),
'$tags' => (($hashtags) ? $hashtags : ''),
'$cats' => (($category) ? urlencode($category) : ''),
'$tags' => (($hashtags) ? urlencode($hashtags) : ''),
'$mid' => $mid,
'$verb' => '',
'$net' => '',
'$dend' => $datequery,
'$dbegin' => $datequery2
));
@@ -357,21 +394,26 @@ class Channel extends \Zotlabs\Web\Controller {
}
if($is_owner && $update_unseen) {
$r = q("UPDATE item SET item_unseen = 0 where item_unseen = 1 and item_wall = 1 AND uid = %d $update_unseen",
intval(local_channel())
);
$x = [ 'channel_id' => local_channel(), 'update' => 'unset' ];
call_hooks('update_unseen',$x);
if($x['update'] === 'unset' || intval($x['update'])) {
$r = q("UPDATE item SET item_unseen = 0 where item_unseen = 1 and item_wall = 1 AND uid = %d $update_unseen",
intval(local_channel())
);
}
}
$mode = (($search) ? 'search' : 'channel');
if($checkjs->disabled()) {
$o .= conversation($a,$items,'channel',$update,'traditional');
$o .= conversation($items,$mode,$update,'traditional');
}
else {
$o .= conversation($a,$items,'channel',$update,$page_mode);
$o .= conversation($items,$mode,$update,$page_mode);
}
if((! $update) || ($checkjs->disabled())) {
$o .= alt_pager($a,count($items));
$o .= alt_pager(count($items));
if ($mid && $items[0]['title'])
\App::$page['title'] = $items[0]['title'] . " - " . \App::$page['title'];
}

View File

@@ -19,7 +19,7 @@ class Chanview extends \Zotlabs\Web\Controller {
}
if($_REQUEST['address']) {
$r = q("select * from xchan where xchan_addr = '%s' limit 1",
dbesc($_REQUEST['address'])
dbesc(punify($_REQUEST['address']))
);
}
elseif(local_channel() && intval($_REQUEST['cid'])) {
@@ -102,27 +102,32 @@ class Chanview extends \Zotlabs\Web\Controller {
}
$is_zot = false;
$connected = false;
if (\App::$poi) {
$url = \App::$poi['xchan_url'];
if(\App::$poi['xchan_network'] === 'zot') {
$is_zot = true;
}
if(local_channel()) {
$c = q("select abook_id from abook where abook_channel = %d and abook_xchan = '%s' limit 1",
intval(local_channel()),
dbesc(\App::$poi['xchan_hash'])
);
if($c)
$connected = true;
}
}
// We will load the chanview template if it's a foreign network,
// just so that we can provide a connect button along with a profile
// photo. Chances are we can't load the remote profile into an iframe
// because of cross-domain security headers. So provide a link to
// the remote profile.
// If we are already connected, just go to the profile.
// Zot channels will usually have a connect link.
// If it isn't zot, 'pro' members won't be able to use the connect
// button as it is a foreign network so just send them to the remote
// profile.
if($is_zot || \Zotlabs\Lib\System::get_server_role() === 'pro') {
if($is_zot || $connected) {
if($is_zot && $observer) {
$url = zid($url);
}

View File

@@ -89,9 +89,11 @@ class Chat extends \Zotlabs\Web\Controller {
function get() {
if(local_channel())
if(local_channel()) {
$channel = \App::get_channel();
nav_set_selected('My Chatrooms');
}
$ob = \App::get_observer();
$observer = get_observer_hash();
if(! $observer) {
@@ -210,7 +212,8 @@ class Chat extends \Zotlabs\Web\Controller {
require_once('include/conversation.php');
$o = profile_tabs($a,((local_channel() && local_channel() == \App::$profile['profile_uid']) ? true : false),\App::$profile['channel_address']);
//$o = profile_tabs($a,((local_channel() && local_channel() == \App::$profile['profile_uid']) ? true : false),\App::$profile['channel_address']);
$o = '';
if(! feature_enabled(\App::$profile['profile_uid'],'ajaxchat')) {
notice( t('Feature disabled.') . EOL);

View File

@@ -60,7 +60,7 @@ class Chatsvc extends \Zotlabs\Web\Controller {
intval(\App::$data['chat']['room_id']),
dbesc(get_observer_hash()),
dbesc(datetime_convert()),
dbesc($arr['chat_text'])
dbesc(str_rot47(base64url_encode($arr['chat_text'])))
);
$ret['success'] = true;
@@ -119,10 +119,10 @@ class Chatsvc extends \Zotlabs\Web\Controller {
$rv['xchan_network'] = 'unknown';
$rv['xchan_url'] = z_root();
$rv['xchan_hidden'] = 1;
$rv['xchan_photo_mimetype'] = 'image/jpeg';
$rv['xchan_photo_l'] = get_default_profile_photo(300);
$rv['xchan_photo_m'] = get_default_profile_photo(80);
$rv['xchan_photo_s'] = get_default_profile_photo(48);
$rv['xchan_photo_mimetype'] = 'image/png';
$rv['xchan_photo_l'] = z_root() . '/' . get_default_profile_photo(300);
$rv['xchan_photo_m'] = z_root() . '/' . get_default_profile_photo(80);
$rv['xchan_photo_s'] = z_root() . '/' . get_default_profile_photo(48);
}
@@ -157,7 +157,7 @@ class Chatsvc extends \Zotlabs\Web\Controller {
'name' => $rr['xchan_name'],
'isotime' => datetime_convert('UTC', date_default_timezone_get(), $rr['created'], 'c'),
'localtime' => datetime_convert('UTC', date_default_timezone_get(), $rr['created'], 'r'),
'text' => zidify_links(smilies(bbcode($rr['chat_text']))),
'text' => zidify_links(smilies(bbcode(base64url_decode(str_rot47($rr['chat_text']))))),
'self' => ((get_observer_hash() == $rr['chat_xchan']) ? 'self' : '')
);
}

View File

@@ -35,11 +35,20 @@ class Cloud extends \Zotlabs\Web\Controller {
if (argc() > 1)
$which = argv(1);
if (argc() < 2 && intval(get_config('system','cloud_disable_siteroot'))) {
notice( t('Permission denied.') . EOL);
construct_page();
killme();
}
$profile = 0;
if ($which)
profile_load( $which, $profile);
$auth = new \Zotlabs\Storage\BasicAuth();
$ob_hash = get_observer_hash();
@@ -57,14 +66,18 @@ class Cloud extends \Zotlabs\Web\Controller {
$auth->observer = $ob_hash;
}
// if we arrived at this path with any query parameters in the url, build a clean url without
// them and redirect.
$_SERVER['QUERY_STRING'] = str_replace(array('?f=', '&f='), array('', ''), $_SERVER['QUERY_STRING']);
$_SERVER['QUERY_STRING'] = strip_zids($_SERVER['QUERY_STRING']);
$_SERVER['QUERY_STRING'] = preg_replace('/[\?&]davguest=(.*?)([\?&]|$)/ism', '', $_SERVER['QUERY_STRING']);
if(! array_key_exists('cloud_sort',$_SESSION)) {
$_SESSION['cloud_sort'] = 'name';
}
$_SERVER['REQUEST_URI'] = str_replace(array('?f=', '&f='), array('', ''), $_SERVER['REQUEST_URI']);
$_SERVER['REQUEST_URI'] = strip_zids($_SERVER['REQUEST_URI']);
$_SERVER['REQUEST_URI'] = preg_replace('/[\?&]davguest=(.*?)([\?&]|$)/ism', '', $_SERVER['REQUEST_URI']);
$_SESSION['cloud_sort'] = (($_REQUEST['sort']) ? trim(notags($_REQUEST['sort'])) : $_SESSION['cloud_sort']);
$x = clean_query_string();
if($x !== \App::$query_string)
goaway(z_root() . '/' . $x);
$rootDirectory = new \Zotlabs\Storage\Directory('/', $auth);
@@ -85,16 +98,45 @@ class Cloud extends \Zotlabs\Web\Controller {
$server->addPlugin($browser);
// Experimental QuotaPlugin
// require_once('\Zotlabs\Storage/QuotaPlugin.php');
// $server->addPlugin(new \Zotlabs\Storage\\QuotaPlugin($auth));
// require_once('\Zotlabs\Storage/QuotaPlugin.php');
// $server->addPlugin(new \Zotlabs\Storage\\QuotaPlugin($auth));
// over-ride the default XML output on thrown exceptions
$server->on('exception', [ $this, 'DAVException' ]);
ob_start();
// All we need to do now, is to fire up the server
$server->exec();
ob_end_flush();
if($browser->build_page)
construct_page();
killme();
}
function DAVException($err) {
if($err instanceof \Sabre\DAV\Exception\NotFound) {
notice( t('Not found') . EOL);
}
elseif($err instanceof \Sabre\DAV\Exception\Forbidden) {
notice( t('Permission denied') . EOL);
}
elseif($err instanceof \Sabre\DAV\Exception\NotImplemented) {
notice( t('Please refresh page') . EOL);
}
else {
notice( t('Unknown error') . EOL);
}
construct_page();
killme();
}
}

View File

@@ -0,0 +1,21 @@
<?php
namespace Zotlabs\Module;
class Cloud_tiles extends \Zotlabs\Web\Controller {
function init() {
if(intval($_SESSION['cloud_tiles']))
$_SESSION['cloud_tiles'] = 0;
else
$_SESSION['cloud_tiles'] = 1;
if(local_channel()) {
set_pconfig(local_channel(),'system','cloud_tiles',$_SESSION['cloud_tiles']);
}
goaway(z_root() . '/' . hex2bin(argv(1)));
}
}

View File

@@ -25,7 +25,7 @@ class Common extends \Zotlabs\Web\Controller {
}
function get() {
function get() {
$o = '';
@@ -34,38 +34,37 @@ class Common extends \Zotlabs\Web\Controller {
$observer_hash = get_observer_hash();
if(! perm_is_allowed(\App::$profile['profile_uid'],$observer_hash,'view_contacts')) {
notice( t('Permission denied.') . EOL);
return;
}
$o .= '<h2>' . t('Common connections') . '</h2>';
$t = count_common_friends(\App::$profile['profile_uid'],$observer_hash);
if(! $t) {
notice( t('No connections in common.') . EOL);
return $o;
return;
}
$r = common_friends(\App::$profile['profile_uid'],$observer_hash);
if($r) {
$tpl = get_markup_template('common_friends.tpl');
foreach($r as $rr) {
$o .= replace_macros($tpl,array(
'$url' => $rr['xchan_url'],
'$name' => $rr['xchan_name'],
'$photo' => $rr['xchan_photo_m'],
'$tags' => ''
));
$items[] = [
'url' => $rr['xchan_url'],
'name' => $rr['xchan_name'],
'photo' => $rr['xchan_photo_m'],
'tags' => ''
];
}
$o .= cleardiv();
}
$tpl = get_markup_template('common_friends.tpl');
$o = replace_macros($tpl, [
'$title' => t('View Common Connections'),
'$items' => $items
]);
return $o;
}

View File

@@ -5,10 +5,6 @@ namespace Zotlabs\Module;
require_once('include/socgraph.php');
require_once('include/selectors.php');
require_once('include/group.php');
require_once('include/contact_widgets.php');
require_once('include/zot.php');
require_once('include/widgets.php');
class Connections extends \Zotlabs\Web\Controller {
@@ -23,7 +19,7 @@ class Connections extends \Zotlabs\Web\Controller {
}
function get() {
function get() {
$sort_type = 0;
$o = '';
@@ -33,7 +29,10 @@ class Connections extends \Zotlabs\Web\Controller {
notice( t('Permission denied.') . EOL);
return login();
}
nav_set_selected('Connections');
$active = false;
$blocked = false;
$hidden = false;
$ignored = false;
@@ -46,11 +45,16 @@ class Connections extends \Zotlabs\Web\Controller {
if(! $_REQUEST['aj'])
$_SESSION['return_url'] = \App::$query_string;
$search_flags = '';
$search_flags = "";
$head = '';
if(argc() == 2) {
switch(argv(1)) {
case 'active':
$search_flags = " and abook_blocked = 0 and abook_ignored = 0 and abook_hidden = 0 and abook_archived = 0 AND abook_not_here = 0 ";
$head = t('Active');
$active = true;
break;
case 'blocked':
$search_flags = " and abook_blocked = 1 ";
$head = t('Blocked');
@@ -67,15 +71,14 @@ class Connections extends \Zotlabs\Web\Controller {
$hidden = true;
break;
case 'archived':
$search_flags = " and abook_archived = 1 ";
$head = t('Archived');
$search_flags = " and ( abook_archived = 1 OR abook_not_here = 1) ";
$head = t('Archived/Unreachable');
$archived = true;
break;
case 'pending':
$search_flags = " and abook_pending = 1 ";
$head = t('New');
$pending = true;
nav_set_selected('intros');
break;
case 'ifpending':
$r = q("SELECT COUNT(abook.abook_id) AS total FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash where abook_channel = %d and abook_pending = 1 and abook_self = 0 and abook_ignored = 0 and xchan_deleted = 0 and xchan_orphan = 0 ",
@@ -85,7 +88,6 @@ class Connections extends \Zotlabs\Web\Controller {
$search_flags = " and abook_pending = 1 ";
$head = t('New');
$pending = true;
nav_set_selected('intros');
\App::$argv[1] = 'pending';
}
else {
@@ -95,7 +97,6 @@ class Connections extends \Zotlabs\Web\Controller {
\App::$argc = 1;
unset(\App::$argv[1]);
}
nav_set_selected('intros');
break;
// case 'unconnected':
// $search_flags = " and abook_unconnected = 1 ";
@@ -106,8 +107,9 @@ class Connections extends \Zotlabs\Web\Controller {
case 'all':
$head = t('All');
default:
$search_flags = '';
$all = true;
$search_flags = " and abook_blocked = 0 and abook_ignored = 0 and abook_hidden = 0 and abook_archived = 0 and abook_not_here = 0 ";
$active = true;
$head = t('Active');
break;
}
@@ -134,6 +136,13 @@ class Connections extends \Zotlabs\Web\Controller {
),
*/
'active' => array(
'label' => t('Active Connections'),
'url' => z_root() . '/connections/active',
'sel' => ($active) ? 'active' : '',
'title' => t('Show active connections'),
),
'pending' => array(
'label' => t('New Connections'),
'url' => z_root() . '/connections/pending',
@@ -141,12 +150,6 @@ class Connections extends \Zotlabs\Web\Controller {
'title' => t('Show pending (new) connections'),
),
'all' => array(
'label' => t('All Connections'),
'url' => z_root() . '/connections/all',
'sel' => ($all) ? 'active' : '',
'title' => t('Show all connections'),
),
/*
array(
@@ -172,10 +175,10 @@ class Connections extends \Zotlabs\Web\Controller {
),
'archived' => array(
'label' => t('Archived'),
'label' => t('Archived/Unreachable'),
'url' => z_root() . '/connections/archived',
'sel' => ($archived) ? 'active' : '',
'title' => t('Only show archived connections'),
'title' => t('Only show archived/unreachable connections'),
),
'hidden' => array(
@@ -192,6 +195,13 @@ class Connections extends \Zotlabs\Web\Controller {
// 'title' => t('Only show one-way connections'),
// ),
'all' => array(
'label' => t('All Connections'),
'url' => z_root() . '/connections',
'sel' => ($all) ? 'active' : '',
'title' => t('Show all connections'),
),
);
@@ -237,18 +247,25 @@ class Connections extends \Zotlabs\Web\Controller {
if($rr['xchan_url']) {
if(($rr['vcard']) && is_array($rr['vcard']['tels']) && $rr['vcard']['tels'][0]['nr'])
$phone = ((\App::$is_mobile || \App::$is_tablet) ? $rr['vcard']['tels'][0]['nr'] : '');
$phone = $rr['vcard']['tels'][0]['nr'];
else
$phone = '';
$status_str = '';
$status = array(
((intval($rr['abook_active'])) ? t('Active') : ''),
((intval($rr['abook_pending'])) ? t('Pending approval') : ''),
((intval($rr['abook_archived'])) ? t('Archived') : ''),
((intval($rr['abook_hidden'])) ? t('Hidden') : ''),
((intval($rr['abook_ignored'])) ? t('Ignored') : ''),
((intval($rr['abook_blocked'])) ? t('Blocked') : '')
((intval($rr['abook_blocked'])) ? t('Blocked') : ''),
((intval($rr['abook_not_here'])) ? t('Not connected at this location') : '')
);
$oneway = false;
if(! intval(get_abconfig(local_channel(),$rr['xchan_hash'],'their_perms','post_comments'))) {
$oneway = true;
}
foreach($status as $str) {
if(!$str)
@@ -261,11 +278,12 @@ class Connections extends \Zotlabs\Web\Controller {
$contacts[] = array(
'img_hover' => sprintf( t('%1$s [%2$s]'),$rr['xchan_name'],$rr['xchan_url']),
'edit_hover' => t('Edit connection'),
'edit' => t('Edit'),
'delete_hover' => t('Delete connection'),
'id' => $rr['abook_id'],
'thumb' => $rr['xchan_photo_m'],
'name' => $rr['xchan_name'],
'classes' => (intval($rr['abook_archived']) ? 'archived' : ''),
'classes' => ((intval($rr['abook_archived']) || intval($rr['abook_not_here'])) ? 'archived' : ''),
'link' => z_root() . '/connedit/' . $rr['abook_id'],
'deletelink' => z_root() . '/connedit/' . intval($rr['abook_id']) . '/drop',
'delete' => t('Delete'),
@@ -286,7 +304,8 @@ class Connections extends \Zotlabs\Web\Controller {
'ignore_hover' => t('Ignore connection'),
'ignore' => ((! $rr['abook_ignored']) ? t('Ignore') : false),
'recent_label' => t('Recent activity'),
'recentlink' => z_root() . '/network/?f=&cid=' . intval($rr['abook_id'])
'recentlink' => z_root() . '/network/?f=&cid=' . intval($rr['abook_id']),
'oneway' => $oneway
);
}
}
@@ -307,7 +326,7 @@ class Connections extends \Zotlabs\Web\Controller {
killme();
}
else {
$o .= "<script> var page_query = '" . $_GET['q'] . "'; var extra_args = '" . extra_query_args() . "' ; </script>";
$o .= "<script> var page_query = '" . escape_tags($_GET['q']) . "'; var extra_args = '" . extra_query_args() . "' ; </script>";
$o .= replace_macros(get_markup_template('connections.tpl'),array(
'$header' => t('Connections') . (($head) ? ': ' . $head : ''),
'$tabs' => $tabs,

View File

@@ -11,9 +11,6 @@ namespace Zotlabs\Module;
require_once('include/socgraph.php');
require_once('include/selectors.php');
require_once('include/group.php');
require_once('include/contact_widgets.php');
require_once('include/zot.php');
require_once('include/widgets.php');
require_once('include/photos.php');
@@ -251,6 +248,10 @@ class Connedit extends \Zotlabs\Web\Controller {
notice( t('Failed to update connection record.') . EOL);
if(! intval(\App::$poi['abook_self'])) {
if($new_friend) {
\Zotlabs\Daemon\Master::Summon( [ 'Notifier', 'permission_accept', $contact_id ] );
}
\Zotlabs\Daemon\Master::Summon( [
'Notifier',
(($new_friend) ? 'permission_create' : 'permission_update'),
@@ -391,30 +392,22 @@ class Connedit extends \Zotlabs\Web\Controller {
$section = ((array_key_exists('section',$_REQUEST)) ? $_REQUEST['section'] : '');
$channel = \App::get_channel();
$my_perms = get_channel_default_perms(local_channel());
$role = get_pconfig(local_channel(),'system','permissions_role');
if($role) {
$x = \Zotlabs\Access\PermissionRoles::role_perms($role);
if($x['perms_connect'])
$my_perms = $x['perms_connect'];
}
$yes_no = array(t('No'),t('Yes'));
if($my_perms) {
$o .= "<script>function connectDefaultShare() {
\$('.abook-edit-me').each(function() {
if(! $(this).is(':disabled'))
$(this).prop('checked', false);
});\n\n";
$perms = get_perms();
foreach($perms as $p => $v) {
if($my_perms & $v[1]) {
$o .= "\$('#me_id_perms_" . $p . "').prop('checked', true); \n";
}
$connect_perms = \Zotlabs\Access\Permissions::connect_perms(local_channel());
$o .= "<script>function connectDefaultShare() {
\$('.abook-edit-me').each(function() {
if(! $(this).is(':disabled'))
$(this).prop('checked', false);
});\n\n";
foreach($connect_perms['perms'] as $p => $v) {
if($v) {
$o .= "\$('#me_id_perms_" . $p . "').prop('checked', true); \n";
}
$o .= " }\n</script>\n";
}
$o .= " }\n</script>\n";
if(argc() == 3) {
@@ -441,6 +434,34 @@ class Connedit extends \Zotlabs\Web\Controller {
goaway(z_root() . '/connedit/' . $contact_id);
}
if($cmd === 'fetchvc') {
$url = str_replace('/channel/','/profile/',$orig_record[0]['xchan_url']) . '/vcard';
$recurse = 0;
$x = z_fetch_url(zid($url),false,$recurse,['session' => true]);
if($x['success']) {
$h = new \Zotlabs\Web\HTTPHeaders($x['header']);
$fields = $h->fetch();
if($fields) {
foreach($fields as $y) {
if(array_key_exists('content-type',$y)) {
$type = explode(';',trim($y['content-type']));
if($type && $type[0] === 'text/vcard' && $x['body']) {
$vc = \Sabre\VObject\Reader::read($x['body']);
$vcard = $vc->serialize();
if($vcard) {
set_abconfig(local_channel(),$orig_record[0]['abook_xchan'],'system','vcard',$vcard);
$this->connedit_clone($a);
}
}
}
}
}
}
goaway(z_root() . '/connedit/' . $contact_id);
}
if($cmd === 'resetphoto') {
q("update xchan set xchan_photo_date = '2001-01-01 00:00:00' where xchan_hash = '%s'",
dbesc($orig_record[0]['xchan_hash'])
@@ -546,7 +567,7 @@ class Connedit extends \Zotlabs\Web\Controller {
$contact_id = \App::$poi['abook_id'];
$contact = \App::$poi;
$cn = q("SELECT abook_id, xchan_name from abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d and abook_self = 0 order by xchan_name",
$cn = q("SELECT abook_id, xchan_name from abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d and abook_self = 0 and xchan_deleted = 0 order by xchan_name",
intval(local_channel())
);
@@ -582,6 +603,13 @@ class Connedit extends \Zotlabs\Web\Controller {
'sel' => '',
'title' => t('Fetch updated permissions'),
),
'rephoto' => array(
'label' => t('Refresh Photo'),
'url' => z_root() . '/connedit/' . $contact['abook_id'] . '/resetphoto',
'sel' => '',
'title' => t('Fetch updated photo'),
),
'recent' => array(
'label' => t('Recent Activity'),
@@ -631,6 +659,17 @@ class Connedit extends \Zotlabs\Web\Controller {
);
if($contact['xchan_network'] === 'zot') {
$tools['fetchvc'] = [
'label' => t('Fetch Vcard'),
'url' => z_root() . '/connedit/' . $contact['abook_id'] . '/fetchvc',
'sel' => '',
'title' => t('Fetch electronic calling card for this connection')
];
}
$sections = [];
$sections['perms'] = [
@@ -787,40 +826,41 @@ class Connedit extends \Zotlabs\Web\Controller {
}
}
$locstr = '';
$locstr = locations_by_netid($contact['xchan_hash']);
if(! $locstr)
$locstr = unpunify($contact['xchan_url']);
$locs = q("select hubloc_addr as location from hubloc left join site on hubloc_url = site_url where hubloc_hash = '%s'
and hubloc_deleted = 0 and site_dead = 0",
dbesc($contact['xchan_hash'])
);
if($locs) {
foreach($locs as $l) {
if(!($l['location']))
continue;
if(strpos($locstr,$l['location']) !== false)
continue;
if(strlen($locstr))
$locstr .= ', ';
$locstr .= $l['location'];
}
$clone_warn = '';
$clonable = (in_array($contact['xchan_network'],['zot','rss']) ? true : false);
if(! $clonable) {
$clone_warn = '<strong>';
$clone_warn .= ((intval($contact['abook_not_here']))
? t('This connection is unreachable from this location.')
: t('This connection may be unreachable from other channel locations.')
);
$clone_warn .= '</strong><br>' . t('Location independence is not supported by their network.');
}
else
$locstr = t('none');
if(intval($contact['abook_not_here']) && $unclonable)
$not_here = t('This connection is unreachable from this location. Location independence is not supported by their network.');
$o .= replace_macros($tpl, [
'$header' => (($self) ? t('Connection Default Permissions') : sprintf( t('Connection: %s'),$contact['xchan_name'])),
'$autoperms' => array('autoperms',t('Apply these permissions automatically'), ((get_pconfig(local_channel(),'system','autoperms')) ? 1 : 0), t('Connection requests will be approved without your interaction'), $yes_no),
'$permcat' => [ 'permcat', t('Permission role'), '', '',$permcats ],
'$permcat' => [ 'permcat', t('Permission role'), '', '<span class="loading invisible">' . t('Loading') . '<span class="jumping-dots"><span class="dot-1">.</span><span class="dot-2">.</span><span class="dot-3">.</span></span></span>',$permcats ],
'$permcat_new' => t('Add permission role'),
'$permcat_enable' => feature_enabled(local_channel(),'permcats'),
'$addr' => $contact['xchan_addr'],
'$addr' => unpunify($contact['xchan_addr']),
'$primeurl' => unpunify($contact['xchan_url']),
'$section' => $section,
'$sections' => $sections,
'$vcard' => $vcard,
'$addr_text' => t('This connection\'s primary address is'),
'$loc_text' => t('Available locations:'),
'$locstr' => $locstr,
'$unclonable' => $clone_warn,
'$notself' => (($self) ? '' : '1'),
'$self' => (($self) ? '1' : ''),
'$autolbl' => t('The permissions indicated on this page will be applied to all new connections.'),
@@ -855,7 +895,6 @@ class Connedit extends \Zotlabs\Web\Controller {
'$permnote_self' => t('Some permissions may be inherited from your channel\'s <a href="settings"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can change those settings here but they wont have any impact unless the inherited setting changes.'),
'$lastupdtext' => t('Last update:'),
'$last_update' => relative_date($contact['abook_connected']),
'$is_mobile' => ((\App::$is_mobile || \App::$is_tablet) ? true : false),
'$profile_select' => contact_profile_assign($contact['abook_profile']),
'$multiprofs' => $multiprofs,
'$contact_id' => $contact['abook_id'],

View File

@@ -9,6 +9,7 @@ namespace Zotlabs\Module;
require_once('include/photo/photo_driver.php');
require_once('include/channel.php');
require_once('include/photos.php');
@@ -23,19 +24,17 @@ require_once('include/channel.php');
class Cover_photo extends \Zotlabs\Web\Controller {
function init() {
if(! local_channel()) {
return;
}
$channel = \App::get_channel();
profile_load($channel['channel_address']);
profile_load($channel['channel_address']);
}
/* @brief Evaluate posted values
/**
* @brief Evaluate posted values
*
* @param $a Current application
* @return void
*
*/
@@ -66,12 +65,12 @@ class Cover_photo extends \Zotlabs\Web\Controller {
$image_id = substr($image_id,0,-2);
}
$srcX = $_POST['xstart'];
$srcY = $_POST['ystart'];
$srcW = $_POST['xfinal'] - $srcX;
$srcH = $_POST['yfinal'] - $srcY;
$srcX = intval($_POST['xstart']);
$srcY = intval($_POST['ystart']);
$srcW = intval($_POST['xfinal']) - $srcX;
$srcH = intval($_POST['yfinal']) - $srcY;
$r = q("select gender from profile where uid = %d and is_default = 1 limit 1",
intval(local_channel())
@@ -86,10 +85,41 @@ class Cover_photo extends \Zotlabs\Web\Controller {
);
if($r) {
$base_image = $r[0];
$base_image['content'] = (($r[0]['os_storage']) ? @file_get_contents(dbunescbin($base_image['content'])) : dbunescbin($base_image['content']));
$max_thumb = intval(get_config('system','max_thumbnail',1600));
$iscaled = false;
if(intval($r[0]['height']) > $max_thumb || intval($r[0]['width']) > $max_thumb) {
$imagick_path = get_config('system','imagick_convert_path');
if($imagick_path && @file_exists($imagick_path) && intval($r[0]['os_storage'])) {
$fname = dbunescbin($r[0]['content']);
$tmp_name = $fname . '-001';
$newsize = photo_calculate_scale(array_merge(getimagesize($fname),['max' => $max_thumb]));
$cmd = $imagick_path . ' ' . escapeshellarg(PROJECT_BASE . '/' . $fname) . ' -resize ' . $newsize . ' ' . escapeshellarg(PROJECT_BASE . '/' . $tmp_name);
// logger('imagick thumbnail command: ' . $cmd);
for($x = 0; $x < 4; $x ++) {
exec($cmd);
if(file_exists($tmp_name)) {
break;
}
}
if(file_exists($tmp_name)) {
$base_image = $r[0];
$gis = getimagesize($tmp_name);
logger('gis: ' . print_r($gis,true));
$base_image['width'] = $gis[0];
$base_image['height'] = $gis[1];
$base_image['content'] = @file_get_contents($tmp_name);
$iscaled = true;
@unlink($tmp_name);
}
}
}
if(! $iscaled) {
$base_image = $r[0];
$base_image['content'] = (($r[0]['os_storage']) ? @file_get_contents(dbunescbin($base_image['content'])) : dbunescbin($base_image['content']));
}
$im = photo_factory($base_image['content'], $base_image['mimetype']);
if($im->is_valid()) {
@@ -121,17 +151,24 @@ class Cover_photo extends \Zotlabs\Web\Controller {
intval(local_channel())
);
$orig_srcx = ( $r[0]['width'] / $scaled_width ) * $srcX;
$orig_srcy = ( $r[0]['height'] / $scaled_height ) * $srcY;
$orig_srcw = ( $srcW / $scaled_width ) * $r[0]['width'];
$orig_srch = ( $srcH / $scaled_height ) * $r[0]['height'];
$orig_srcx = ( $base_image['width'] / $scaled_width ) * $srcX;
$orig_srcy = ( $base_image['height'] / $scaled_height ) * $srcY;
$orig_srcw = ( $srcW / $scaled_width ) * $base_image['width'];
$orig_srch = ( $srcH / $scaled_height ) * $base_image['height'];
$im->cropImageRect(1200,435,$orig_srcx, $orig_srcy, $orig_srcw, $orig_srch);
$aid = get_account_id();
$p = array('aid' => $aid, 'uid' => local_channel(), 'resource_id' => $base_image['resource_id'],
'filename' => $base_image['filename'], 'album' => t('Cover Photos'));
$p = [
'aid' => $aid,
'uid' => local_channel(),
'resource_id' => $base_image['resource_id'],
'filename' => $base_image['filename'],
'album' => t('Cover Photos'),
'os_path' => $base_image['os_path'],
'display_path' => $base_image['display_path']
];
$p['imgscale'] = 7;
$p['photo_usage'] = PHOTO_COVER;
@@ -195,15 +232,14 @@ class Cover_photo extends \Zotlabs\Web\Controller {
$os_storage = false;
foreach($i as $ii) {
$smallest = intval($ii['imgscale']);
$smallest = intval($ii['imgscale']);
$os_storage = intval($ii['os_storage']);
$imagedata = $ii['content'];
$filetype = $ii['mimetype'];
$imagedata = $ii['content'];
$filetype = $ii['mimetype'];
}
}
$imagedata = (($os_storage) ? @file_get_contents($imagedata) : $imagedata);
$imagedata = (($os_storage) ? @file_get_contents(dbunescbin($imagedata)) : dbunescbin($imagedata));
$ph = photo_factory($imagedata, $filetype);
if(! $ph->is_valid()) {
@@ -263,10 +299,10 @@ class Cover_photo extends \Zotlabs\Web\Controller {
}
/* @brief Generate content of profile-photo view
/**
* @brief Generate content of profile-photo view
*
* @param $a Current application
* @return void
* @return string
*
*/
@@ -350,15 +386,28 @@ class Cover_photo extends \Zotlabs\Web\Controller {
$tpl = get_markup_template('cover_photo.tpl');
$o .= replace_macros($tpl,array(
'$user' => \App::$channel['channel_address'],
'$lbl_upfile' => t('Upload File:'),
'$lbl_profiles' => t('Select a profile:'),
'$title' => t('Upload Cover Photo'),
'$submit' => t('Upload'),
'$profiles' => $profiles,
'$user' => \App::$channel['channel_address'],
'$info' => t('Your cover photo may be visible to anybody on the internet'),
'$existing' => get_cover_photo(local_channel(),'array',PHOTO_RES_COVER_850),
'$lbl_upfile' => t('Upload File:'),
'$lbl_profiles' => t('Select a profile:'),
'$title' => t('Change Cover Photo'),
'$submit' => t('Upload'),
'$profiles' => $profiles,
'$embedPhotos' => t('Use a photo from your albums'),
'$embedPhotosModalTitle' => t('Use a photo from your albums'),
'$embedPhotosModalCancel' => t('Cancel'),
'$embedPhotosModalOK' => t('OK'),
'$modalchooseimages' => t('Choose images to embed'),
'$modalchoosealbum' => t('Choose an album'),
'$modaldiffalbum' => t('Choose a different album'),
'$modalerrorlist' => t('Error getting album list'),
'$modalerrorlink' => t('Error getting photo link'),
'$modalerroralbum' => t('Error getting album'),
'$form_security_token' => get_form_security_token("cover_photo"),
// FIXME - yuk
'$select' => sprintf('%s %s', t('or'), ($newuser) ? '<a href="' . z_root() . '">' . t('skip this step') . '</a>' : '<a href="'. z_root() . '/photos/' . \App::$channel['channel_address'] . '">' . t('select a photo from your photo albums') . '</a>')
/// @FIXME - yuk
'$select' => t('Select existing photo'),
));
call_hooks('cover_photo_content_end', $o);
@@ -370,14 +419,14 @@ class Cover_photo extends \Zotlabs\Web\Controller {
$resolution = 3;
$tpl = get_markup_template("cropcover.tpl");
$o .= replace_macros($tpl,array(
'$filename' => $filename,
'$profile' => intval($_REQUEST['profile']),
'$resource' => \App::$data['imagecrop'] . '-3',
'$image_url' => z_root() . '/photo/' . $filename,
'$title' => t('Crop Image'),
'$desc' => t('Please adjust the image cropping for optimum viewing.'),
'$filename' => $filename,
'$profile' => intval($_REQUEST['profile']),
'$resource' => \App::$data['imagecrop'] . '-3',
'$image_url' => z_root() . '/photo/' . $filename,
'$title' => t('Crop Image'),
'$desc' => t('Please adjust the image cropping for optimum viewing.'),
'$form_security_token' => get_form_security_token("cover_photo"),
'$done' => t('Done Editing')
'$done' => t('Done Editing')
));
return $o;
}
@@ -393,8 +442,6 @@ class Cover_photo extends \Zotlabs\Web\Controller {
*
*/
function cover_photo_crop_ui_head(&$a, $ph, $hash, $smallest){
$max_length = get_config('system','max_image_length');

View File

@@ -12,6 +12,9 @@ use \Sabre\DAV as SDAV;
use \Zotlabs\Storage;
require_once('include/attach.php');
require_once('include/auth.php');
require_once('include/security.php');
class Dav extends \Zotlabs\Web\Controller {
@@ -21,22 +24,65 @@ class Dav extends \Zotlabs\Web\Controller {
*/
function init() {
// workaround for HTTP-auth in CGI mode
if (x($_SERVER, 'REDIRECT_REMOTE_USER')) {
$userpass = base64_decode(substr($_SERVER["REDIRECT_REMOTE_USER"], 6)) ;
if(strlen($userpass)) {
list($name, $password) = explode(':', $userpass);
$_SERVER['PHP_AUTH_USER'] = $name;
$_SERVER['PHP_AUTH_PW'] = $password;
}
}
foreach([ 'REDIRECT_REMOTE_USER', 'HTTP_AUTHORIZATION' ] as $head) {
if (x($_SERVER, 'HTTP_AUTHORIZATION')) {
$userpass = base64_decode(substr($_SERVER["HTTP_AUTHORIZATION"], 6)) ;
if(strlen($userpass)) {
list($name, $password) = explode(':', $userpass);
$_SERVER['PHP_AUTH_USER'] = $name;
$_SERVER['PHP_AUTH_PW'] = $password;
/* Basic authentication */
if(array_key_exists($head,$_SERVER) && substr(trim($_SERVER[$head]),0,5) === 'Basic') {
$userpass = @base64_decode(substr(trim($_SERVER[$head]),6)) ;
if(strlen($userpass)) {
list($name, $password) = explode(':', $userpass);
$_SERVER['PHP_AUTH_USER'] = $name;
$_SERVER['PHP_AUTH_PW'] = $password;
}
break;
}
/* Signature authentication */
if(array_key_exists($head,$_SERVER) && substr(trim($_SERVER[$head]),0,9) === 'Signature') {
if($head !== 'HTTP_AUTHORIZATION') {
$_SERVER['HTTP_AUTHORIZATION'] = $_SERVER[$head];
continue;
}
$sigblock = \Zotlabs\Web\HTTPSig::parse_sigheader($_SERVER[$head]);
if($sigblock) {
$keyId = str_replace('acct:','',$sigblock['keyId']);
if($keyId) {
$r = q("select * from hubloc where hubloc_addr = '%s' limit 1",
dbesc($keyId)
);
if($r) {
$c = channelx_by_hash($r[0]['hubloc_hash']);
if($c) {
$a = q("select * from account where account_id = %d limit 1",
intval($c['channel_account_id'])
);
if($a) {
$record = [ 'channel' => $c, 'account' => $a[0] ];
$channel_login = $c['channel_id'];
}
}
}
if(! $record)
continue;
if($record) {
$verified = \Zotlabs\Web\HTTPSig::verify('',$record['channel']['channel_pubkey']);
if(! ($verified && $verified['header_signed'] && $verified['header_valid'])) {
$record = null;
}
if($record['account']) {
authenticate_success($record['account']);
if($channel_login) {
change_channel($channel_login);
}
}
break;
}
}
}
}
}

267
Zotlabs/Module/Defperms.php Normal file
View File

@@ -0,0 +1,267 @@
<?php
namespace Zotlabs\Module;
require_once('include/socgraph.php');
require_once('include/selectors.php');
require_once('include/group.php');
require_once('include/photos.php');
class Defperms extends \Zotlabs\Web\Controller {
/* @brief Initialize the connection-editor
*
*
*/
function init() {
if(! local_channel())
return;
$r = q("SELECT abook.*, xchan.*
FROM abook left join xchan on abook_xchan = xchan_hash
WHERE abook_self = 1 and abook_channel = %d LIMIT 1",
intval(local_channel())
);
if($r) {
\App::$poi = $r[0];
}
$channel = \App::get_channel();
if($channel)
head_set_icon($channel['xchan_photo_s']);
}
/* @brief Evaluate posted values and set changes
*
*/
function post() {
if(! local_channel())
return;
$contact_id = intval(argv(1));
if(! $contact_id)
return;
$channel = \App::get_channel();
$orig_record = q("SELECT * FROM abook WHERE abook_id = %d AND abook_channel = %d LIMIT 1",
intval($contact_id),
intval(local_channel())
);
if(! $orig_record) {
notice( t('Could not access contact record.') . EOL);
goaway(z_root() . '/connections');
return; // NOTREACHED
}
if(intval($orig_record[0]['abook_self'])) {
$autoperms = intval($_POST['autoperms']);
$is_self = true;
}
else {
$autoperms = null;
$is_self = false;
}
$all_perms = \Zotlabs\Access\Permissions::Perms();
if($all_perms) {
foreach($all_perms as $perm => $desc) {
$checkinherited = \Zotlabs\Access\PermissionLimits::Get(local_channel(),$perm);
$inherited = (($checkinherited & PERMS_SPECIFIC) ? false : true);
if(array_key_exists('perms_' . $perm, $_POST)) {
set_abconfig($channel['channel_id'],$orig_record[0]['abook_xchan'],'my_perms',$perm,
intval($_POST['perms_' . $perm]));
if($autoperms) {
set_pconfig($channel['channel_id'],'autoperms',$perm,intval($_POST['perms_' . $perm]));
}
}
else {
set_abconfig($channel['channel_id'],$orig_record[0]['abook_xchan'],'my_perms',$perm,0);
if($autoperms) {
set_pconfig($channel['channel_id'],'autoperms',$perm,0);
}
}
}
}
if(! is_null($autoperms))
set_pconfig($channel['channel_id'],'system','autoperms',$autoperms);
notice( t('Settings updated.') . EOL);
// Refresh the structure in memory with the new data
$r = q("SELECT abook.*, xchan.*
FROM abook left join xchan on abook_xchan = xchan_hash
WHERE abook_channel = %d and abook_id = %d LIMIT 1",
intval(local_channel()),
intval($contact_id)
);
if($r) {
\App::$poi = $r[0];
}
$this->defperms_clone($a);
goaway(z_root() . '/defperms');
return;
}
/* @brief Clone connection
*
*
*/
function defperms_clone(&$a) {
if(! \App::$poi)
return;
$channel = \App::get_channel();
$r = q("SELECT abook.*, xchan.*
FROM abook left join xchan on abook_xchan = xchan_hash
WHERE abook_channel = %d and abook_id = %d LIMIT 1",
intval(local_channel()),
intval(\App::$poi['abook_id'])
);
if($r) {
\App::$poi = array_shift($r);
}
$clone = \App::$poi;
unset($clone['abook_id']);
unset($clone['abook_account']);
unset($clone['abook_channel']);
$abconfig = load_abconfig($channel['channel_id'],$clone['abook_xchan']);
if($abconfig)
$clone['abconfig'] = $abconfig;
build_sync_packet(0 /* use the current local_channel */, array('abook' => array($clone)));
}
/* @brief Generate content of connection default permissions page
*
*
*/
function get() {
$sort_type = 0;
$o = '';
if(! local_channel()) {
notice( t('Permission denied.') . EOL);
return login();
}
$section = ((array_key_exists('section',$_REQUEST)) ? $_REQUEST['section'] : '');
$channel = \App::get_channel();
$yes_no = array(t('No'),t('Yes'));
$connect_perms = \Zotlabs\Access\Permissions::connect_perms(local_channel());
$o .= "<script>function connectDefaultShare() {
\$('.abook-edit-me').each(function() {
if(! $(this).is(':disabled'))
$(this).prop('checked', false);
});\n\n";
foreach($connect_perms['perms'] as $p => $v) {
if($v) {
$o .= "\$('#me_id_perms_" . $p . "').prop('checked', true); \n";
}
}
$o .= " }\n</script>\n";
if(\App::$poi) {
$sections = [];
$self = false;
$tpl = get_markup_template('defperms.tpl');
$perms = array();
$channel = \App::get_channel();
$contact = \App::$poi;
$global_perms = \Zotlabs\Access\Permissions::Perms();
$existing = get_all_perms(local_channel(),$contact['abook_xchan']);
$hidden_perms = [];
foreach($global_perms as $k => $v) {
$thisperm = get_abconfig(local_channel(),$contact['abook_xchan'],'my_perms',$k);
$checkinherited = \Zotlabs\Access\PermissionLimits::Get(local_channel(),$k);
$inherited = (($checkinherited & PERMS_SPECIFIC) ? false : true);
$perms[] = [ 'perms_' . $k, $v, intval($thisperm), '', $yes_no, (($inherited) ? ' disabled="disabled" ' : '') ];
if($inherited) {
$hidden_perms[] = [ 'perms_' . $k, intval($thisperm) ];
}
}
$pcat = new \Zotlabs\Lib\Permcat(local_channel());
$pcatlist = $pcat->listing();
$permcats = [];
if($pcatlist) {
foreach($pcatlist as $pc) {
$permcats[$pc['name']] = $pc['localname'];
}
}
$o .= replace_macros($tpl, [
'$header' => t('Connection Default Permissions'),
'$autoperms' => array('autoperms',t('Apply these permissions automatically'), ((get_pconfig(local_channel(),'system','autoperms')) ? 1 : 0), t('If enabled, connection requests will be approved without your interaction'), $yes_no),
'$permcat' => [ 'permcat', t('Permission role'), '', '<span class="loading invisible">' . t('Loading') . '<span class="jumping-dots"><span class="dot-1">.</span><span class="dot-2">.</span><span class="dot-3">.</span></span></span>',$permcats ],
'$permcat_new' => t('Add permission role'),
'$permcat_enable' => feature_enabled(local_channel(),'permcats'),
'$section' => $section,
'$sections' => $sections,
'$autolbl' => t('The permissions indicated on this page will be applied to all new connections.'),
'$autoapprove' => t('Automatic approval settings'),
'$unapproved' => $unapproved,
'$inherited' => t('inherited'),
'$submit' => t('Submit'),
'$me' => t('My Settings'),
'$perms' => $perms,
'$hidden_perms' => $hidden_perms,
'$permlbl' => t('Individual Permissions'),
'$permnote_self' => t('Some individual permissions may have been preset or locked based on your channel type and privacy settings.'),
'$contact_id' => $contact['abook_id'],
'$name' => $contact['xchan_name'],
]);
$arr = array('contact' => $contact,'output' => $o);
call_hooks('contact_edit', $arr);
return $arr['output'];
}
}
}

View File

@@ -4,7 +4,6 @@ namespace Zotlabs\Module;
require_once('include/socgraph.php');
require_once('include/dir_fns.php');
require_once('include/widgets.php');
require_once('include/bbcode.php');
@@ -18,7 +17,7 @@ class Directory extends \Zotlabs\Web\Controller {
intval(local_channel()),
dbesc($_GET['ignore'])
);
goaway(z_root() . '/directory?suggest=1');
goaway(z_root() . '/directory?f=&suggest=1');
}
$observer = get_observer_hash();
@@ -65,6 +64,11 @@ class Directory extends \Zotlabs\Web\Controller {
return;
}
if(get_config('system','block_public_directory',false) && (! get_observer_hash())) {
notice( t('Public access denied.') . EOL);
return;
}
$observer = get_observer_hash();
$globaldir = get_directory_setting($observer, 'globaldir');
@@ -78,7 +82,7 @@ class Directory extends \Zotlabs\Web\Controller {
$pubforums = get_directory_setting($observer, 'pubforums');
$o = '';
nav_set_selected('directory');
nav_set_selected('Directory');
if(x($_POST,'search'))
$search = notags(trim($_POST['search']));
@@ -97,13 +101,18 @@ class Directory extends \Zotlabs\Web\Controller {
if($suggest) {
$r = suggestion_query(local_channel(),get_observer_hash());
if(! $r) {
notice( t('No default suggestions were found.') . EOL);
return;
}
// Remember in which order the suggestions were
$addresses = array();
$common = array();
$index = 0;
foreach($r as $rr) {
$common[$rr['xchan_addr']] = $rr['total'];
$common[$rr['xchan_addr']] = ((intval($rr['total']) > 0) ? intval($rr['total']) - 1 : 0);
$addresses[$rr['xchan_addr']] = $index++;
}
@@ -234,7 +243,7 @@ class Directory extends \Zotlabs\Web\Controller {
$age = '';
if(strlen($rr['birthday'])) {
if(($years = age($rr['birthday'],'UTC','')) != 0)
if(($years = age($rr['birthday'],'UTC','')) > 0)
$age = $years;
}
@@ -290,9 +299,9 @@ class Directory extends \Zotlabs\Web\Controller {
if(strlen($out))
$out .= ', ';
if($marr && in_arrayi($k,$marr))
$out .= '<strong>' . $k . '</strong>';
$out .= '<a href="' . z_root() . '/directory/f=&keywords=' . urlencode($k) .'"><strong>' . $k . '</strong></a>';
else
$out .= $k;
$out .= '<a href="' . z_root() . '/directory/f=&keywords=' . urlencode($k) .'">' . $k . '</a>';
}
}
@@ -335,7 +344,7 @@ class Directory extends \Zotlabs\Web\Controller {
'ignlink' => $suggest ? z_root() . '/directory?ignore=' . $rr['hash'] : '',
'ignore_label' => t('Don\'t suggest'),
'common_friends' => (($common[$rr['address']]) ? intval($common[$rr['address']]) : ''),
'common_label' => t('Common connections:'),
'common_label' => t('Common connections (estimated):'),
'common_count' => intval($common[$rr['address']]),
'safe' => $safe_mode
);
@@ -386,7 +395,7 @@ class Directory extends \Zotlabs\Web\Controller {
$dirtitle = (($globaldir) ? t('Global Directory') : t('Local Directory'));
$o .= "<script> var page_query = '" . $_GET['q'] . "'; var extra_args = '" . extra_query_args() . "' ; divmore_height = " . intval($maxheight) . "; </script>";
$o .= "<script> var page_query = '" . escape_tags($_GET['q']) . "'; var extra_args = '" . extra_query_args() . "' ; divmore_height = " . intval($maxheight) . "; </script>";
$o .= replace_macros($tpl, array(
'$search' => $search,
'$desc' => t('Find'),
@@ -395,7 +404,7 @@ class Directory extends \Zotlabs\Web\Controller {
'$entries' => $entries,
'$dirlbl' => $suggest ? t('Channel Suggestions') : $dirtitle,
'$submit' => t('Find'),
'$next' => alt_pager($a,$j['records'], t('next page'), t('previous page')),
'$next' => alt_pager($j['records'], t('next page'), t('previous page')),
'$sort' => t('Sort options'),
'$normal' => t('Alphabetic'),
'$reverse' => t('Reverse Alphabetic'),

View File

@@ -97,7 +97,10 @@ class Dirsearch extends \Zotlabs\Web\Controller {
else
$sync = false;
if(($dirmode == DIRECTORY_MODE_STANDALONE) && (! $hub)) {
$hub = \App::get_hostname();
}
if($hub)
$hub_query = " and xchan_hash in (select hubloc_hash from hubloc where hubloc_host = '" . protect_sprintf(dbesc($hub)) . "') ";
else
@@ -254,7 +257,7 @@ class Dirsearch extends \Zotlabs\Web\Controller {
else {
$r = q("SELECT xchan.*, xprof.* from xchan left join xprof on xchan_hash = xprof_hash
where ( $logic $sql_extra ) $hub_query and xchan_network = 'zot' and xchan_hidden = 0 and xchan_orphan = 0 and xchan_deleted = 0
where ( $logic $sql_extra ) $hub_query and xchan_network = 'zot' and xchan_system = 0 and xchan_hidden = 0 and xchan_orphan = 0 and xchan_deleted = 0
$safesql $order $qlimit "
);
@@ -313,7 +316,7 @@ class Dirsearch extends \Zotlabs\Web\Controller {
$ret['results'] = $entries;
if($kw) {
$k = dir_tagadelic($kw);
$k = dir_tagadelic($kw, $hub);
if($k) {
$ret['keywords'] = array();
foreach($k as $kv) {

View File

@@ -12,25 +12,36 @@ class Display extends \Zotlabs\Web\Controller {
function get($update = 0, $load = false) {
$module_format = 'html';
if(argc() > 1) {
$module_format = substr(argv(1),strrpos(argv(1),'.') + 1);
if(! in_array($module_format,['atom','zot','json']))
$module_format = 'html';
}
$checkjs = new \Zotlabs\Web\CheckJS(1);
if($load)
$_SESSION['loadtime'] = datetime_convert();
if(observer_prohibited()) {
notice( t('Public access denied.') . EOL);
return;
}
if(argc() > 1 && argv(1) !== 'load')
if(argc() > 1) {
$item_hash = argv(1);
if($module_format !== 'html') {
$item_hash = substr($item_hash,0,strrpos($item_hash,'.'));
}
}
if($_REQUEST['mid'])
$item_hash = $_REQUEST['mid'];
if(! $item_hash) {
if(! $item_hash) {
\App::$error = 404;
notice( t('Item not found.') . EOL);
return;
@@ -38,45 +49,41 @@ class Display extends \Zotlabs\Web\Controller {
$observer_is_owner = false;
$updateable = false;
if(local_channel() && (! $update)) {
$channel = \App::get_channel();
$channel_acl = array(
'allow_cid' => $channel['channel_allow_cid'],
'allow_gid' => $channel['channel_allow_gid'],
'deny_cid' => $channel['channel_deny_cid'],
'deny_gid' => $channel['channel_deny_gid']
'deny_cid' => $channel['channel_deny_cid'],
'deny_gid' => $channel['channel_deny_gid']
);
$x = array(
'is_owner' => true,
'allow_location' => ((intval(get_pconfig($channel['channel_id'],'system','use_browser_location'))) ? '1' : ''),
'default_location' => $channel['channel_location'],
'nickname' => $channel['channel_address'],
'lockstate' => (($group || $cid || $channel['channel_allow_cid'] || $channel['channel_allow_gid'] || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'),
'acl' => populate_acl($channel_acl),
'permissions' => $channel_acl,
'bang' => '',
'visitor' => true,
'profile_uid' => local_channel(),
'return_path' => 'channel/' . $channel['channel_address'],
'expanded' => true,
'is_owner' => true,
'allow_location' => ((intval(get_pconfig($channel['channel_id'],'system','use_browser_location'))) ? '1' : ''),
'default_location' => $channel['channel_location'],
'nickname' => $channel['channel_address'],
'lockstate' => (($group || $cid || $channel['channel_allow_cid'] || $channel['channel_allow_gid'] || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'),
'acl' => populate_acl($channel_acl,true, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_stream'), get_post_aclDialogDescription(), 'acl_dialog_post'),
'permissions' => $channel_acl,
'bang' => '',
'visitor' => true,
'profile_uid' => local_channel(),
'return_path' => 'channel/' . $channel['channel_address'],
'expanded' => true,
'editor_autocomplete' => true,
'bbco_autocomplete' => 'bbcode',
'bbcode' => true,
'jotnets' => true
'bbco_autocomplete' => 'bbcode',
'bbcode' => true,
'jotnets' => true,
'reset' => t('Reset form')
);
$o = '<div id="jot-popup">';
$o .= status_editor($a,$x);
$o .= '</div>';
}
// This page can be viewed by anybody so the query could be complicated
@@ -95,14 +102,26 @@ class Display extends \Zotlabs\Web\Controller {
if($decoded)
$item_hash = $decoded;
$r = q("select id, uid, mid, parent_mid, item_type, item_deleted from item where mid like '%s' limit 1",
dbesc($item_hash . '%'),
dbesc($decoded . '%')
$r = q("select id, uid, mid, parent_mid, thr_parent, verb, item_type, item_deleted, author_xchan, item_blocked from item where mid like '%s' limit 1",
dbesc($item_hash . '%')
);
if($r) {
$target_item = $r[0];
}
$x = q("select * from xchan where xchan_hash = '%s' limit 1",
dbesc($target_item['author_xchan'])
);
if($x) {
// not yet ready for prime time
// \App::$poi = $x[0];
}
//if the item is to be moderated redirect to /moderate
if($target_item['item_blocked'] == ITEM_MODERATED) {
goaway(z_root() . '/moderate/' . $target_item['id']);
}
$r = null;
@@ -113,7 +132,7 @@ class Display extends \Zotlabs\Web\Controller {
$y = q("select * from iconfig left join item on iconfig.iid = item.id
where item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'WEBPAGE' and item.id = %d limit 1",
intval($target_item['uid']),
intval($target_item['id'])
intval($target_item['parent'])
);
if($x && $y) {
goaway(z_root() . '/page/' . $x[0]['channel_address'] . '/' . $y[0]['v']);
@@ -123,6 +142,41 @@ class Display extends \Zotlabs\Web\Controller {
return '';
}
}
if($target_item['item_type'] == ITEM_TYPE_ARTICLE) {
$x = q("select * from channel where channel_id = %d limit 1",
intval($target_item['uid'])
);
$y = q("select * from iconfig left join item on iconfig.iid = item.id
where item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'ARTICLE' and item.id = %d limit 1",
intval($target_item['uid']),
intval($target_item['parent'])
);
if($x && $y) {
goaway(z_root() . '/articles/' . $x[0]['channel_address'] . '/' . $y[0]['v']);
}
else {
notice( t('Page not found.') . EOL);
return '';
}
}
if($target_item['item_type'] == ITEM_TYPE_CARD) {
$x = q("select * from channel where channel_id = %d limit 1",
intval($target_item['uid'])
);
$y = q("select * from iconfig left join item on iconfig.iid = item.id
where item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'CARD' and item.id = %d limit 1",
intval($target_item['uid']),
intval($target_item['parent'])
);
if($x && $y) {
goaway(z_root() . '/cards/' . $x[0]['channel_address'] . '/' . $y[0]['v']);
}
else {
notice( t('Page not found.') . EOL);
return '';
}
}
$static = ((array_key_exists('static',$_REQUEST)) ? intval($_REQUEST['static']) : 0);
@@ -138,59 +192,75 @@ class Display extends \Zotlabs\Web\Controller {
$simple_update .= " and item_thread_top = 0 and author_xchan = '" . protect_sprintf(get_observer_hash()) . "' ";
if((! $update) && (! $load)) {
$static = ((local_channel()) ? channel_manual_conv_update(local_channel()) : 0);
$static = ((local_channel()) ? channel_manual_conv_update(local_channel()) : 1);
// if the target item is not a post (eg a like) we want to address its thread parent
$mid = ((($target_item['verb'] == ACTIVITY_LIKE) || ($target_item['verb'] == ACTIVITY_DISLIKE)) ? $target_item['thr_parent'] : $target_item['mid']);
// if we got a decoded hash we must encode it again before handing to javascript
if($decoded)
$mid = 'b64.' . base64url_encode($mid);
$o .= '<div id="live-display"></div>' . "\r\n";
$o .= "<script> var profile_uid = " . ((intval(local_channel())) ? local_channel() : (-1))
. "; var netargs = '?f='; var profile_page = " . \App::$pager['page'] . "; </script>\r\n";
\App::$page['htmlhead'] .= replace_macros(get_markup_template("build_query.tpl"),array(
'$baseurl' => z_root(),
'$pgtype' => 'display',
'$uid' => '0',
'$gid' => '0',
'$cid' => '0',
'$cmin' => '0',
'$cmax' => '99',
'$star' => '0',
'$liked' => '0',
'$conv' => '0',
'$spam' => '0',
'$fh' => '0',
'$pgtype' => 'display',
'$uid' => '0',
'$gid' => '0',
'$cid' => '0',
'$cmin' => '(-1)',
'$cmax' => '(-1)',
'$star' => '0',
'$liked' => '0',
'$conv' => '0',
'$spam' => '0',
'$fh' => '0',
'$nouveau' => '0',
'$wall' => '0',
'$static' => $static,
'$page' => ((\App::$pager['page'] != 1) ? \App::$pager['page'] : 1),
'$list' => ((x($_REQUEST,'list')) ? intval($_REQUEST['list']) : 0),
'$search' => '',
'$order' => '',
'$file' => '',
'$cats' => '',
'$tags' => '',
'$dend' => '',
'$dbegin' => '',
'$verb' => '',
'$mid' => $item_hash
'$wall' => '0',
'$static' => $static,
'$page' => ((\App::$pager['page'] != 1) ? \App::$pager['page'] : 1),
'$list' => ((x($_REQUEST,'list')) ? intval($_REQUEST['list']) : 0),
'$search' => '',
'$xchan' => '',
'$order' => '',
'$file' => '',
'$cats' => '',
'$tags' => '',
'$dend' => '',
'$dbegin' => '',
'$verb' => '',
'$net' => '',
'$mid' => $mid
));
head_add_link([
'rel' => 'alternate',
'type' => 'application/json+oembed',
'href' => z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . \App::$query_string),
'title' => 'oembed'
]);
}
$observer_hash = get_observer_hash();
$item_normal = item_normal();
$item_normal_update = item_normal_update();
$sql_extra = public_permissions_sql($observer_hash);
if(($update && $load) || ($checkjs->disabled())) {
if(($update && $load) || ($checkjs->disabled()) || ($module_format !== 'html')) {
$pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(\App::$pager['itemspage']),intval(\App::$pager['start']));
if($load || ($checkjs->disabled())) {
if($load || ($checkjs->disabled()) || ($module_format !== 'html')) {
$r = null;
require_once('include/channel.php');
$sys = get_sys_channel();
$sysid = $sys['channel_id'];
@@ -206,25 +276,22 @@ class Display extends \Zotlabs\Web\Controller {
);
if($r) {
$updateable = true;
}
}
if($r === null) {
if(! $r) {
// in case somebody turned off public access to sys channel content using permissions
// make that content unsearchable by ensuring the owner_xchan can't match
// make that content unsearchable by ensuring the owner uid can't match
if(! perm_is_allowed($sysid,$observer_hash,'view_stream'))
$sysid = 0;
$r = q("SELECT item.id as item_id from item
WHERE mid = '%s'
AND (((( item.allow_cid = '' AND item.allow_gid = '' AND item.deny_cid = ''
AND item.deny_gid = '' AND item_private = 0 )
and owner_xchan in ( " . stream_perms_xchans(($observer_hash) ? (PERMS_NETWORK|PERMS_PUBLIC) : PERMS_PUBLIC) . " ))
and uid in ( " . stream_perms_api_uids(($observer_hash) ? (PERMS_NETWORK|PERMS_PUBLIC) : PERMS_PUBLIC) . " ))
OR uid = %d )
$sql_extra )
$item_normal
@@ -232,14 +299,13 @@ class Display extends \Zotlabs\Web\Controller {
dbesc($target_item['parent_mid']),
intval($sysid)
);
}
}
}
elseif($update && !$load) {
$r = null;
require_once('include/channel.php');
$sys = get_sys_channel();
$sysid = $sys['channel_id'];
@@ -248,7 +314,7 @@ class Display extends \Zotlabs\Web\Controller {
$r = q("SELECT item.parent AS item_id from item
WHERE uid = %d
and parent_mid = '%s'
$item_normal
$item_normal_update
$simple_update
limit 1",
intval(local_channel()),
@@ -259,20 +325,19 @@ class Display extends \Zotlabs\Web\Controller {
}
}
if($r === null) {
if(! $r) {
// in case somebody turned off public access to sys channel content using permissions
// make that content unsearchable by ensuring the owner_xchan can't match
if(! perm_is_allowed($sysid,$observer_hash,'view_stream'))
$sysid = 0;
$r = q("SELECT item.parent AS item_id from item
WHERE parent_mid = '%s'
AND (((( item.allow_cid = '' AND item.allow_gid = '' AND item.deny_cid = ''
AND item.deny_gid = '' AND item_private = 0 )
and owner_xchan in ( " . stream_perms_xchans(($observer_hash) ? (PERMS_NETWORK|PERMS_PUBLIC) : PERMS_PUBLIC) . " ))
and uid in ( " . stream_perms_api_uids(($observer_hash) ? (PERMS_NETWORK|PERMS_PUBLIC) : PERMS_PUBLIC) . " ))
OR uid = %d )
$sql_extra )
$item_normal
$item_normal_update
$simple_update
limit 1",
dbesc($target_item['parent_mid']),
@@ -287,32 +352,78 @@ class Display extends \Zotlabs\Web\Controller {
}
if($r) {
$parents_str = ids_to_querystr($r,'item_id');
if($parents_str) {
$items = q("SELECT item.*, item.id AS item_id
FROM item
WHERE parent in ( %s ) $item_normal ",
dbesc($parents_str)
);
xchan_query($items);
$items = fetch_post_tags($items,true);
$items = conv_sort($items,'created');
}
} else {
}
else {
$items = array();
}
if ($checkjs->disabled()) {
$o .= conversation($a, $items, 'display', $update, 'traditional');
if ($items[0]['title'])
\App::$page['title'] = $items[0]['title'] . " - " . \App::$page['title'];
}
else {
$o .= conversation($a, $items, 'display', $update, 'client');
switch($module_format) {
case 'html':
if ($checkjs->disabled()) {
$o .= conversation($items, 'display', $update, 'traditional');
if ($items[0]['title'])
\App::$page['title'] = $items[0]['title'] . " - " . \App::$page['title'];
}
else {
$o .= conversation($items, 'display', $update, 'client');
}
break;
case 'atom':
$atom = replace_macros(get_markup_template('atom_feed.tpl'), array(
'$version' => xmlify(\Zotlabs\Lib\System::get_project_version()),
'$generator' => xmlify(\Zotlabs\Lib\System::get_platform_name()),
'$generator_uri' => 'https://hubzilla.org',
'$feed_id' => xmlify(\App::$cmd),
'$feed_title' => xmlify(t('Article')),
'$feed_updated' => xmlify(datetime_convert('UTC', 'UTC', 'now', ATOM_TIME)),
'$author' => '',
'$owner' => '',
'$profile_page' => xmlify(z_root() . '/display/' . $target_item['mid']),
));
$x = [ 'xml' => $atom, 'channel' => $channel, 'observer_hash' => $observer_hash, 'params' => $params ];
call_hooks('atom_feed_top',$x);
$atom = $x['xml'];
// a much simpler interface
call_hooks('atom_feed', $atom);
if($items) {
$type = 'html';
foreach($items as $item) {
if($item['item_private'])
continue;
$atom .= atom_entry($item, $type, null, '', true, '', false);
}
}
call_hooks('atom_feed_end', $atom);
$atom .= '</feed>' . "\r\n";
header('Content-type: application/atom+xml');
echo $atom;
killme();
}
if($updateable) {
@@ -323,17 +434,13 @@ class Display extends \Zotlabs\Web\Controller {
}
$o .= '<div id="content-complete"></div>';
return $o;
/*
elseif((! $update) && (! {
if((($update && $load) || $checkjs->disabled()) && (! $items)) {
$r = q("SELECT id, item_flags FROM item WHERE id = '%s' OR mid = '%s' LIMIT 1",
dbesc($item_hash),
$r = q("SELECT id, item_deleted FROM item WHERE mid = '%s' LIMIT 1",
dbesc($item_hash)
);
if($r) {
if(intval($r[0]['item_deleted'])) {
notice( t('Item has been removed.') . EOL );
@@ -347,8 +454,9 @@ class Display extends \Zotlabs\Web\Controller {
}
}
*/
return $o;
}
}

View File

@@ -98,6 +98,11 @@ class Editblock extends \Zotlabs\Web\Controller {
$mimetype = $itm[0]['mimetype'];
$content = $itm[0]['body'];
if($itm[0]['mimetype'] === 'text/markdown')
$content = \Zotlabs\Lib\MarkdownSoap::unescape($itm[0]['body']);
$rp = 'blocks/' . $channel['channel_address'];
$x = array(
@@ -117,7 +122,7 @@ class Editblock extends \Zotlabs\Web\Controller {
'ptyp' => $itm[0]['type'],
'mimeselect' => true,
'mimetype' => $itm[0]['mimetype'],
'body' => undo_post_tagging($itm[0]['body']),
'body' => undo_post_tagging($content),
'post_id' => $post_id,
'visitor' => true,
'title' => htmlspecialchars($itm[0]['title'],ENT_COMPAT,'UTF-8'),
@@ -133,6 +138,7 @@ class Editblock extends \Zotlabs\Web\Controller {
'$title' => t('Edit Block'),
'$delete' => ((($itm[0]['author_xchan'] === $ob_hash) || ($itm[0]['owner_xchan'] === $ob_hash)) ? t('Delete') : false),
'$id' => $itm[0]['id'],
'$cancel' => t('Cancel'),
'$editor' => $editor
));

View File

@@ -119,6 +119,7 @@ class Editlayout extends \Zotlabs\Web\Controller {
'hide_weblink' => true,
'hide_attach' => true,
'hide_preview' => true,
'disable_comments' => true,
'ptyp' => $itm[0]['obj_type'],
'body' => undo_post_tagging($itm[0]['body']),
'post_id' => $post_id,
@@ -136,6 +137,7 @@ class Editlayout extends \Zotlabs\Web\Controller {
'$title' => t('Edit Layout'),
'$delete' => ((($itm[0]['author_xchan'] === $ob_hash) || ($itm[0]['owner_xchan'] === $ob_hash)) ? t('Delete') : false),
'$id' => $itm[0]['id'],
'$cancel' => t('Cancel'),
'$editor' => $editor
));

View File

@@ -31,7 +31,15 @@ class Editpost extends \Zotlabs\Web\Controller {
dbesc(get_observer_hash())
);
if(! count($itm)) {
// don't allow web editing of potentially binary content (item_obscured = 1)
// @FIXME how do we do it instead?
if((! $itm) || intval($itm[0]['item_obscured'])) {
notice( t('Item is not editable') . EOL);
return;
}
if($itm[0]['resource_type'] === 'photo' && $itm[0]['resource_id']) {
notice( t('Item is not editable') . EOL);
return;
}
@@ -44,14 +52,6 @@ class Editpost extends \Zotlabs\Web\Controller {
$channel = \App::get_channel();
if(intval($itm[0]['item_obscured'])) {
$key = get_config('system','prvkey');
if($itm[0]['title'])
$itm[0]['title'] = crypto_unencapsulate(json_decode($itm[0]['title'],true),$key);
if($itm[0]['body'])
$itm[0]['body'] = crypto_unencapsulate(json_decode($itm[0]['body'],true),$key);
}
$category = '';
$catsenabled = ((feature_enabled($owner_uid,'categories')) ? 'categories' : '');
@@ -82,7 +82,7 @@ class Editpost extends \Zotlabs\Web\Controller {
'editor_autocomplete'=> true,
'bbco_autocomplete'=> 'bbcode',
'return_path' => $_SESSION['return_url'],
'button' => t('Edit'),
'button' => t('Submit'),
'hide_voting' => true,
'hide_future' => true,
'hide_location' => true,
@@ -106,6 +106,7 @@ class Editpost extends \Zotlabs\Web\Controller {
$o .= replace_macros(get_markup_template('edpost_head.tpl'), array(
'$title' => t('Edit post'),
'$cancel' => t('Cancel'),
'$editor' => $editor
));

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